root権限で`sudo`を付けた場合と付けない場合の違いに`su`は何の略?

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

せやかてsudo

linux系のOSなどで、root以外のユーザーがrootと同じ権限のコマンドを実行する時に使うコマンドが`sudo`というのはわかります。

しかし、root本人の場合でも`sudo`を付けて実行する理由は何だろうと疑問に思いました。

sudo は成功した命令・失敗した命令の両方を (あるいはエラーも)、 syslog(3) やログファイル (あるいはその両方) に記録できる。デフォルトで は sudo は syslog(3) を使ってログをとる。これはコンパイルの設定時または sudoers ファイルで変更できる。

つまり、「root本人であっても`sudo`を付けて実行しておくとログに記録される」という事のようです。

何で`su`か?

rootに切り替える時に`su`コマンドを利用するので、`sudo`は`su do`の組み合わせであるというのは想像に難しくありません。また`su`が`do`(実行)することからも`su`は「Super User」(スーパー・ユーザー)の略だと思い込んでいました。

同様に`su – mastodon`コマンドのようにユーザーを切り替える場合も「スーパーユーザーコマンドでマストドンに変身」的な意味だろうと無意識に捉えていました。

しかし`sudo`をつける意味を調べて見るうちに`su`コマンドは「Switch User」(スイッチ・ユーザー)の略であるという記述を見つけ、`su – mastodon`のコマンドの場合も「”mastodon”にユーザー切り替え」と捉えると確かに合点が行き、「スーパーユーザーの魔法でユーザー”mastodon”にドーン」といった意味ではないと認識しました。

意外に歴`su`あり

ところが、英語の文献を見ると`su`は何の略かが議論になっていたりして、歴代の`su`コマンドのソースコード内のコメント見ると元々は「Super User」の略でUnix v7の頃から「Substitute User」の略になったとのこと。実は「Switch User」はAT&T UNIXでは言及されたことはなく、その他のUNIX系(linuxなど)のOSでコマンドの内容にそった便宜上の略のようです。

`su`コマンドのオリジナル・ソースは1971年に”Dennis Ritchie”氏と”Ken Thompson”氏によって書かれ、その際に「Super User」と定義され、UNIX v.1〜6まで使われていたそうです。

いずれの時代もコマンドの用途は変わらないことから厳密に定義されていないようですが、歴史があって面白いですね。

`su`コマンドの略称の元の意味

  • Super User : UNIX v1〜6までの定義
  • Substitute User : UNIX v7以降での定義
  • Switch User : その他のUNIX系の説明で使われる定義

参考文献


スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告