なるようにしかならん

そういうことです

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は上記の理由から利用が不可能なため、コマンドの実行の仕方を変更するか、そもそものユーザーの使い方から見直すこと。






って感じかなぁ。