sudo su - について
unix sudo
Published: 2018-06-09

目的

$ sudo su -

というコマンドをよく使うのですが、- が何者なのか分からないので調査しました。

sudoについて

他のユーザーとしてコマンドを実行します

(以下 本より引用)

sudoコマンドで、どのユーザーとしてどのようなコマンドが実行可能かなどの制約条件は、設定ファイルsudoers(/etcや/usr/local/etcディレクトリにあります)にあらかじめ設定されていなければなりません

suについて

別のユーザー権限に切り替えます

(以下 man コマンドより引用)

     -l      Simulate a full login.  The environment is discarded except for HOME, SHELL, PATH, TERM, and
             USER.  HOME and SHELL are modified as above.  USER is set to the target login.  PATH is set to
             ``/bin:/usr/bin''.  TERM is imported from your current environment.  The invoked shell is the
             target login's, and su will change directory to the target login's home directory.

     -       (no letter) The same as -l.

要するに

$ su -

で root 権限に切り替えて、そのユーザーでログインしたのと 同じ状態にします

実験 (Vagrant環境にて)

環境変数を引き継がない場合

$ export MYABC=999
$ echo $MYABC
999
$ sudo su -
# echo $MYABC

環境変数を引き継ぐ場合

$ export MYABC=999
$ echo $MYABC
999
$ sudo su root
# echo $MYABC
999

root 権限で環境変数が引き継がれていないことが確認できます。

参考

  • [UNIXコマンド 本]()