「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