dポイントプレゼントキャンペーン実施中!

Ubuntuで、suとsudoの違いが分かりません。
いつもは
sudo su
と、やってroot権限に入るのですが、
su
と、やってroot権限に入るのと何が違うのでしょうか?

A 回答 (4件)

sudoコマンドは、1980年代には開発されていた技術で


ぼくやLinusが高校生だった頃
Mark Shuttleworthが宇宙に憧れる中学生だったであろう頃から
sudoコマンドはあったということになるようです。

一般化していない理由は、たぶん業務用のUNIXサーバーやワークステーションでは
root権限を使う機会がほとんど無く、必要となる状況は
管理者がある程度のメンテナンスを行なう場合に限られるため…
su -でrootになるほうが合理的だからだと思います。

それに比べれば、パーソナルなLinuxデスクトップでは
root権限を要する機会は多いと言えます。

そういった機会に、suでrootになって処理をするなら…処理を終えたら
exitで一般ユーザーに戻る必要があります。
そそっかしい人は、うっかりroot権限のまま、次の作業を行なうなど
suコマンドの弊害といえるものはあると思います。

sudoであれば、そういったミスはおきません。
またsudoを繰り返し利用する状況でも
パスワード入力を一定時間キャッシュする機構によって使いやすくなっています。
(よく使うと言っても、数時間に渡ってroot権限が必要なことはごく稀です)

これはWindowsでよく行なわれているような
「慣れていない人が、管理者権限を常用する」という悪習を
封じるようなシステムデザインを行いながら
扱いやすいroot権限作業を実現するための合理的な仕様です。


sudoと似たようなコマンドとして、Ubuntuにはgksuが使われます。
これはコマンドラインやALT+F2から、GUIの管理ツールを呼び出す際に
root権限を以って起動するためのコマンドです。
ssh -Xで入ったPCの管理ツールを起動することもできます。


gksuを日常的に利用していれば、suよりも
sudoのほうが、考え方として扱い易く感じると思います。
(オートロックのマンションの安心感をイメージしてみましょう)

ネットでの文字による操作アドバイスにおいても
「su -でrootになってからapt-get install ...」よりも
「sudo apt-get install ...」のほうが簡潔でスマートだと思っています。

もちろん「…した後、一旦exitで一般ユーザーに戻ってから…」みたいな
まどろっこしい説明を行なう必要がありません。
;でコマンドを連続実行したりする際にも応用は広いでしょう。
    • good
    • 1

伝統的なUnixでは、su ないし su - でroot権限になってから各種コマンドを実行するのが普通でした。



ところがroot権限のシェルでいろいろコマンドを打つと間違えたときの被害が大きいので、通常は一般ユーザ権限で作業して、どうしてもroot権限でないと実行出来ない場合だけそのコマンドをsudoを前置して実行するような方法が考えられました。例えば、ソースからプログラムをインストールする場合は、
$ tar xvfz program.tar.gz
$ cd program
$ ./configure
$ make
$ make test
$ sudo make install
のように、コンパイルは一般ユーザで行ってインストールだけsudoを使います。
どのユーザがどのコマンドをsudoで実行出来るかは/etc/sudoersに書いてあります。
root権限のシェルで作業したいときは sudo -s で出来ますが、本来はそうせずに、必要最小限のコマンドだけをsudoで実行すべきです。

あと、sudo su と su の違いとしては、パスワードで保護されている場合、sudo su で入れるのは今ログインしている一般ユーザのパスワード、su はrootのパスワードという違いがあります。/etc/sudoers の設定でsudoする際にパスワード不要にも出来ます。
    • good
    • 1

Ubuntuは、本来のUNIXから外れた特殊な仕様だから、確かに使い勝手はそう感じられるのは当然です。


本来は、
su
su -
ですむところをsudoとかの紛らわしいコマンドでUNIXの基本を打ち消しているので、使いづらいです。
UBUNTUだけでしよう。
やはり、最初は、Vine Linux等他のLinuxを経験しないと、戸惑います。
Vine Linuxは、RPMのパッケージ管理もしっかりしているし、最初は、Vine Linuxからはじめるのが良いと思いますけど。
人気の方が先になり、リリーズ製品テストも当方は信用していないので、リリーズすぐはインストールを控えています。
年明けくらいに、Ubuntu10.10をインストールするかもしれません。
    • good
    • 0

Ubuntuが例外です。



通常、Linuxを含めたUnix系OSでroot権限になるために使うのがsuコマンドなのですが
Ubuntuではセキュリティ上の理由で一般ユーザー権限ではsuコマンド単独では動作しないように制限がかかっています。
(Ubuntuでもroot権限であればsuコマンドは実行可能です)

一方sudoコマンドは、その後に書いたコマンドをroot権限で実行するコマンドです。
この方法だと、sudoコマンドの後に書いたコマンドしかroot権限でしか実行できないもので
Ubuntuでは一般ユーザー権限で呼び出せるのがこちらのみに制限されています。


そのため、Ubuntuで継続的にroot権限でコマンド実行したい場合に使うのが
sudo su
という方法です。

一般ユーザー権限で呼び出せるsudoコマンドで、suコマンドをroot権限で実行するため
継続的にroot権限を得ることができます。


---
便宜上省きましたが、suコマンドは
root権限(スーパーユーザー)に限らず自分以外の別のユーザーの権限に切り替えるためのコマンドです。

同様にsudoコマンドは
root権限(スーパーユーザー)に限らず自分以外の別のユーザーの権限で、sudoの後に書いたコマンドを実行するためのコマンドです。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!