sudo su - user と sudo -iu user の違い

sudo su - user と sudo -iu user の違い

私は、(環境的に?)何か違いがあるのだろうかと思っていました。

sudo su - user

そして

sudo -iu user

私が知っている限りでは、sudo su - user を使用すると、ユーザーとして新しいシェルが開き、ダッシュでユーザーの環境変数が表示されます (sudo su user では表示されません)。また、sudo -iu user も使用します (-u はユーザーを正確に指定し、-i は「初期ログインのシミュレーション」用です)。

それで、何か違いはあるのでしょうか?

ただし、最初の方法ではユーザーがrootとしてsuを実行でき、2番目の方法ではユーザーとしてbashを実行できる必要があるという点が異なります。

ありがとう !

答え1

sudoのマニュアルページには「-i」オプションについて次のように書かれています。


   -i  The -i (simulate initial login) option runs the shell specified in
       the passwd(5) entry of the user that the command is being run as.
       The command name argument given to the shell begins with a `-' to
       tell the shell to run as a login shell.  sudo attempts to change to
       that user's home directory before running the shell.  It also ini-
       tializes the environment, leaving TERM unchanged, setting HOME,
       SHELL, USER, LOGNAME, and PATH, and unsetting all other environment
       variables.  Note that because the shell to use is determined before
       the sudoers file is parsed, a runas_default setting in sudoers will
       specify the user to run the shell as but will not affect which
       shell is actually run.

これは基本的に、参照されたユーザーのシェルをシミュレートしているだけだと言っているのですが、いくつかの意図したユーザーが直接ログインした場合とまったく同じ結果にならない場合があります。「「すぐにはわかりません。ただし、sudo su - userコマンドを使用する場合は、参照されたユーザーの設定を使用して新しいシェル プロセスを起動するため、質問はありません。場合によっては、これらの 2 つのコマンドで同じ環境が実現されることもありますが、私の意見では、矛盾が発生することもあります。

関連情報