su できないユーザーへsu する
ログインシェルに、/sbin/nologin のようなシェルが指定されていると、そのアカウントは、ログインや、su でのスイッチができません。この様なユーザーにsuする手順を説明します。
Last Update : 2014年02月03日
su できないユーザーへsu する
phpや、cgi等、apacheユーザーの権限で実行されるスクリプトの動作を調べる際に、apacheユーザーへsuして処理を試そうとしましたが、 ログインシェルに、/sbin/nologin が指定されていて、suでのスイッチ、ログインができませんでした。
この様なユーザーにsuする手順を説明します。
1. apacheユーザーのログインシェルを確認してみる
apacheユーザーのログインシェルを確認してみます
# grep apache /etc/passwd
apache:x:48:48:Apache:/var/www:/sbin/nologin ← ログインシェルがnologinでログインできない
この状態で、そのままsuしようとするとエラーとなります。
[root@sandbox1 ~]# su - apache
This account is currently not available. ← 利用できないと言われる。
2. 指定したシェルでsuする
こんな場合はnologinシェルではない別のシェルを指定してsuしてあげれば問題なくスイッチできます。ここでは、bashを指定してみます。
# su -s /bin/bash apache ← ログインシェルにbashを指定してsuする。 bash-4.1$ pwd /root bash-4.1$ id uid=48(apache) gid=48(apache) 所属グループ=48(apache) ↑ apacheユーザーになれた。
# su -s /bin/bash - apache ← 「-」付きでsu。(現在の環境変数を解除してそのユーザーでログイン) -bash-4.1$ id uid=48(apache) gid=48(apache) 所属グループ=48(apache) -bash-4.1$ pwd /var/www ← apacheユーザーのホームディレクトリ