この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
apacheなどユーザー変更できないユーザーへの切り替え
サーバーを運用しているとユーザーを切り替えて作業を行うときが多くあります。そのとき apache ユーザーをはじめ、www-data、postfix など通常の「su」コマンドでユーザー変更できないユーザーを存在します。
今回はsuできないユーザーに切り替える方法を確認してみます。
ユーザーを切り替える方法
結論から先に記載すると
su -s /bin/bash (切り替えたいユーザー)
で強制的にユーザーを切り替えることができます。
apacheユーザーに切り替えた実行例
1 2 3 |
root@hostname:# su -s /bin/bash apache bash-4.2$ whoami apache |
もしユーザーの切り替えが上手くいかないときは、下記のユーザーを切り替えることができない原因をご確認の上、実行するコマンドを調整してください。
ユーザーを切り替えられない原因
まずは su コマンドを通常で実行してみます。
1 2 |
root@hostname:# su apache This account is currently not available. |
エラーを見る限り、「このアカウントは利用できません」とのことです。
そこでユーザーのログイン方法を記載しているファイル「/etc/passwd」の中を確認してみると原因が分かります。
su でユーザーを切り替えることができない理由は「/usr/sbin/nologin」と、該当のアカウントでログインできない設定がされているためです。このときは先ほど見た「This account is currently not available.」が表示されます。
1 2 |
root@hostname:# cat /etc/passwd | grep apache apache:x:52:52:apache:/var/www:/usr/sbin/nologin |
ちなみに root ユーザーは「/bin/bash」でログインできるいうことです。
1 2 |
root@hostname:# cat /etc/passwd | grep root root:x:0:0:root:/root:/bin/bash |
上記の理由から
su -s /bin/bash (切り替えたいユーザー)
を実行することにより、root ユーザーと同じログイン形式で apache に切り替える…という意味になります。
※root ユーザーのログイン形式が「/bin/bash」ではなく「/usr/bin/bash」などの異なる記述であれば、ご自身の環境に合わせた設定が必要になります。