sudo -i と sudo su- のどちらを使うべきか?

あなたは「sudo -i を使えるのに、なぜ sudo su – を使うのか?」と聞かれたら答えられますか? 答えられないなら、”sudo -i” を使うべきでしょう。

✔ sudo -i を使うべき理由
  • sudoを使えるということは管理者から明確に管理者権限を与えられている
  • su は本来rootのパスワードを知っている必要あるということ
  • sudo su は rootのパスワード知らなくてもsuする抜け道であるということ

上記だけでわからなくても大丈夫です。順番に解説します。

1. まずはこれを理解してください

ここから先の話の前提としてこれを理解してください。sudo -i は iオプションをつけて、 sudo コマンドを実行しています。一方で sudo su コマンドはsudo 権限で、su コマンドを実行しています。

重要
  1. sudo -i : sudo コマンドを実行している
  2. sudo su – : su コマンドを実行している

イメージが沸かない方は以下を見てください。sudo の後で指定されてたコマンドが実際に実行されます。

  • sudo su – : su コマンドが実行される
  • sudo hostname: hostname コマンドが実行される

2. それでなぜ、sudo -i を使うべきなのか

繰り返しになりますが、“sudo su -” は sudo権限を使った “su” コマンドの実行です。本来、 “su” は、rootユーザのパスワードを知っている人だけが使えるコマンドです。

そして、sudoは/etc/sudoersで明示的に許可された人が使える管理者権限でコマンドを実行するコマンドです。“sudo su” は管理権限で、su コマンドを実行することで、rootのパスワードを知らなくても、suが実行できる抜け穴のようなものです。

MEMO
  • su : rootのパスワードが求められる
  • sudo su: コマンドを実行したユーザーのパスワードが求められる

明示的に許可された sudo -i と同じようなコマンドなのに、あえて抜け道である sudo su – を使う理由はあるのでしょうか。あなたは玄関の鍵を持っているのに、わざわざ窓から家に入るのでしょうか。

偉そうに書いてる筆者もつい最近までポケットに鍵が入っていることを知らずに窓から家に入っていました。

補足

これから管理権限を他人に付与する場合の運用をどうしようかと考えている運用者にはもちろん rootのパスワードを教えるのではなく、sudo権限を付与することをお勧めします。理由は以下のとおりです。

  • rootのパスワードを共有する必要がない
  • 管理者権限が不要になった場合はsudo権限を削除すれば良い
  • sudoを利用した場合は操作記録が残る

以上。これからLinuxを使い始める人は、入門者向けの本で体系的に学ぶことをお勧めしておきます。

コメント