kazmax - Linux で自宅サーバー

su できないユーザーへsu する

ログインシェルに、/sbin/nologin のようなシェルが指定されていると、そのアカウントは、ログインや、su でのスイッチができません。この様なユーザーにsuする手順を説明します。

Last Update : 2014年02月03日

su できないユーザーへsu する

phpや、cgi等、apacheユーザーの権限で実行されるスクリプトの動作を調べる際に、apacheユーザーへsuして処理を試そうとしましたが、 ログインシェルに、/sbin/nologin が指定されていて、suでのスイッチ、ログインができませんでした。

この様なユーザーにsuする手順を説明します。

  1. apacheユーザーのログインシェルを確認してみる
  2. 指定したシェルで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ユーザーのホームディレクトリ