2012-12-14

「su」コマンドについてメモ

なんだかんだで使いながらも、しっかりと意味を理解していないコマンドだったので調べ直した。

■「su」は何の略称なのか まず、「su = super user」ではないよう。 「su = switch user」、つまりユーザーの切替え(switch)だった。

ただしややこしいのが、suを引数無しで使うと、super userに切り替わるということ。suに引数をつけると、そのユーザーに切り替わる。 ここがsuの混同の原因になっているような気がする。

■ 引数のハイフン(-)の意味 また、ハイフン「-」をつけると、そのユーザーに設定されている環境変数を同時に起動するので、基本的にはハイフンをつけることが推奨されている。

■ sudoとの違い これに関しては、参考になるブログ記事や用語集がいっぱいあるよう。 それなりに違うんだけど、同じようなことができる面もあるため、混同していた。

suは、さっきも言ったように「ユーザーの切替え」を行う。 それに対しsudoは、「sudo」以下に打ったコマンドを、通常の実行権限が無くても、特別に実行する。

suを使ってroot権限になった場合、セキュリティの面で危険な面が出てくる。 例えば、suを利用してrootになる時には、rootのパスワードを入力する必要があり、これがパスワードの漏洩につながる可能性があるとか。他にも、rootになるためのパスワードを全ユーザーに教えなくてはならない場合も出てくるし、それによって誤って致命的なコマンドを実行してしまうことも考えられる。

ここらへんの問題はsudoで解決できるみたい。 sudoを使ってroot権限が必要な処理を行う際、初回にパスワードの入力を求められるが、これはrootのパスワードではなくて、現在のユーザーのパスワードである。 参考:http://d.hatena.ne.jp/midori_kasugano/20090910/1252568073