SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【linux】 suできないユーザーへsuする

問題

あるユーザーに suしようとしたら、suできなかった。このユーザーにはどうしてもなれないの?

# su - apache
This account is currently not available.

su

答え

/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

関連するメモ

コメント