はじめに
apache
ユーザー権限で動作するスクリプトの検証をしたい場合に、su - apache
を実行しても、nologin
設定がされているため、ユーザー切り替えをすることが出来ません。
[root@localhost ~]# su - apache
Last login: Tue Mar 21 16:02:54 UTC 2017 on pts/0
This account is currently not available.
このようなユーザーにsuでユーザー切り替えする方法をまとめます。
現状
そもそもsuできない理由は、/sbin/nologin
とログイン禁止シェルが設定されており、この場合はメッセージが表示されて終了となります。
[root@localhost ~]# cat /etc/passwd | grep apache
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
vagrantのようなsuできるユーザーの場合ですと、/bin/bash
とbashが指定されています。
[root@localhost ~]# cat /etc/passwd | grep vagrant
vagrant:x:1000:1000:vagrant:/home/vagrant:/bin/bash
手順
su には -s, --shell <shell> run shell if /etc/shells allows it
というオプションがありシェルを指定することができます。現状で調べたとおりsuできないのはログインできないシェルが指定されているのが原因でしたので、bashを指定することでログインできるようになります。
[root@localhost ~]# su -s /bin/sh apache
sh-4.2$ whoami
apache