【linux】 suできないユーザーへsuする
問題
あるユーザーに suしようとしたら、suできなかった。このユーザーにはどうしてもなれないの?
# su - apache This account is currently not available.
答え
/sbin/nologin などがログインシェルに指定されているユーザーには、suできない。
そんなときは、suするときにシェルも指定するとユーザーを切り替えられる。
現在のシェルの確認
# cat /etc/passwd root:x:0:0:root:/root:/bin/bash (中略) apache:x:48:48:Apache:/var/www:/sbin/nologin mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
指定したシェルでsuする
# su -s /bin/bash apache bash-4.1$ pwd /root bash-4.1$ id uid=48(apache) gid=48(apache) groups=48(apache)
# su -s /bin/bash - apache -bash-4.1$ pwd /var/www -bash-4.1$ id uid=48(apache) gid=48(apache) groups=48(apache)
suするときにシェルを指定する以外にも、そのユーザーのログインシェルの設定を変えてしまう方法もある。そうすると以後suするとき何も考えずに「su ユーザー」「su – ユーザー」できる。
# chsh apache Changing shell for apache. New shell [/sbin/nologin]: /bin/bash Shell changed.
もしくは /etc/passwd を編集して、/sbin/nologin を /bin/bash などに書き換える。
# vi /etc/passwd apache:x:48:48:Apache:/var/www:/sbin/nologin
コメント