sudo と su と nologin
お題
sudo -u $username "command" sudo su - $username "command"
の違いについて。よく理解できてなかったので。
sudo -u $usernameの場合
sudo -u $username "command"
sudoコマンドを使い、$usernameで指定されたユーザーとしてcommandを実行する
sudoで必要になるパスワードは、現在このコマンドを実行しようとしているユーザーのパスワード
sudo su - $usernameの場合
sudo su - $username "command"
$usernameに切り替えて、commandを実行する(のを、rootとしてやる)
su でユーザーの変更を行う場合は、切り替え先のユーザーのパスワードが必要(なのでsudoでrootとして実行)
nologinユーザにおける挙動
- 1.の場合
ログインシェルを切り替えないため、ログインシェルが/sbin/nologinであってもコマンドの実行が可能
- 2.の場合
ログインシェルの切り替えを行うため、/sbin/nologinだと切り替えができず、コマンドは失敗
結論
- 目的にあった方法を選ぶこと。
- ログインシェルが/sbin/nologinであれば、sudo su - $usernameは上記の理由から利用が不可能なため、コマンドの実行の仕方を変更するか、そもそものユーザーの使い方から見直すこと。
って感じかなぁ。