Linux ユーザーであれば、おそらく sudo と su の両方への言及を見たことがあるでしょう。 How-To Geek などの記事では、Ubuntu ユーザーには sudo を使用するよう指示し、他の Linux ディストリビューションのユーザーには su を使用するように指示していますが、違いは何でしょうか?
Sudo と su は、root 権限を取得する 2 つの異なる方法です。それぞれの機能は異なり、Linux ディストリビューションごとにデフォルトで異なる構成が使用されます。
ルートユーザー
su と sudo は両方とも、root 権限でコマンドを実行するために使用されます。 root ユーザーは基本的に Windows の管理者ユーザーと同等です。root ユーザーは最大の権限を持ち、システムに対してあらゆる操作を行うことができます。 Linux 上の通常のユーザーは、制限された権限で実行されます。たとえば、ソフトウェアをインストールしたり、システム ディレクトリに書き込んだりすることはできません。
これらの権限を必要とする何かを実行するには、su または sudo を使用して権限を取得する必要があります。
スー vs 須藤
追加のオプションを指定せずに su コマンドを実行すると、スーパー ユーザー (または root ユーザー) に切り替わります。 root アカウントのパスワードを入力する必要があります。ただし、su コマンドの機能はこれだけではありません。このコマンドを使用して、任意のユーザー アカウントに切り替えることができます。 su bob コマンドを実行すると、Bob のパスワードを入力するように求められ、シェルが Bob のユーザー アカウントに切り替わります。
root シェルでコマンドの実行が完了したら、 「exit」 と入力して root シェルを終了し、特権制限モードに戻る必要があります。
Sudo は root 権限で単一のコマンドを実行します。 sudo コマンド を実行すると、root ユーザーとして コマンド を実行する前に、システムによって現在のユーザー アカウントのパスワードの入力が求められます。デフォルトでは、Ubuntu はパスワードを 15 分間記憶し、15 分が経過するまでパスワードを再度要求しません。
これが su と sudo の重要な違いです。 Su は root ユーザー アカウントに切り替え、root アカウントのパスワードを要求します。 Sudo は root 権限で 1 つのコマンドを実行します。root ユーザーに切り替わったり、別の root ユーザーのパスワードを必要としたりすることはありません。
Ubuntu と他の Linux ディストリビューション
su コマンドは、Linux で root 権限を取得する従来の方法です。 sudo コマンドは長い間存在していましたが、デフォルトで sudo のみを使用するようになった最初の人気のある Linux ディストリビューションは Ubuntu でした。 Ubuntu をインストールすると、標準の root アカウントが作成されますが、パスワードは割り当てられません。 root アカウントにパスワードを割り当てるまで、root としてログインすることはできません。
デフォルトで su の代わりに sudo を使用すると、いくつかの利点があります。 Ubuntu ユーザーは 1 つのパスワードを指定して記憶するだけで済みますが、Fedora やその他のディストリビューションでは、インストール中に root アカウントとユーザー アカウントのパスワードを個別に作成する必要があります。
もう 1 つの利点は、ユーザーが root ユーザーとしてログインすること、または su を使用して root シェルを取得すること、および通常の作業を行うために root シェルを開いたままにすることを妨げることです。 root として実行するコマンドの数を減らすと、セキュリティが向上し、システム全体の誤った変更が防止されます。
Linux Mint を含む Ubuntu ベースのディストリビューションでも、デフォルトで su の代わりに sudo が使用されます。
いくつかのトリック
Linux は柔軟性があるため、su を sudo と同じように動作させるのにそれほど手間はかかりません。また、その逆も同様です。
su を使用して root ユーザーとして単一のコマンドを実行するには、次のコマンドを実行します。
su -c ‘コマンド’
これは sudo を使用してコマンドを実行するのと似ていますが、現在のユーザー アカウントのパスワードではなく、root アカウントのパスワードが必要になります。
sudo を使用して完全な対話型 root シェルを取得するには、 sudo –i を実行します。
root アカウントのパスワードではなく、現在のユーザー アカウントのパスワードを入力する必要があります。
Ubuntu での root ユーザーの有効化
Ubuntu で root ユーザー アカウントを有効にするには、次のコマンドを使用してパスワードを設定します。 Ubuntu ではこれを推奨していないことに注意してください。
sudoパスワードルート
Sudo では、新しいパスワードを設定する前に、現在のユーザー アカウントのパスワードの入力を求められます。新しいパスワードを使用して、端末のログイン プロンプトまたは su コマンドから root としてログインします。 root ユーザーとして完全なグラフィカル環境を決して実行しないでください。これはセキュリティ上非常に不適切な行為であり、多くのプログラムが動作しなくなる可能性があります。
Sudoers ファイルへのユーザーの追加
Ubuntu の管理者タイプのアカウントのみが sudo でコマンドを実行できます。ユーザー アカウントのタイプは、ユーザー アカウント設定ウィンドウから変更できます。
Ubuntu は、インストール中に作成されたユーザー アカウントを管理者アカウントとして自動的に指定します。
別の Linux ディストリビューションを使用している場合は、root 権限で visudo コマンドを実行することで 、ユーザーに sudo を使用する権限を付与 できます (したがって、最初に su を実行するか、 su -c を使用します)。
次の行をファイルに追加し、 user を ユーザー アカウントの名前に置き換えます。
ユーザーALL=(ALL:ALL) ALL
Ctrl+X を押してから Y を 押してファイルを保存します。ファイルで指定された グループにユーザーを追加できる 場合もあります。ファイルで指定されたグループ内のユーザーには、自動的に sudo 権限が与えられます。
Su のグラフィカル バージョン
Linux は、グラフィカル バージョンの su もサポートしており、グラフィカル環境でパスワードを要求します。たとえば、次のコマンドを実行すると、グラフィカルなパスワード プロンプトが表示され、root 権限で Nautilus ファイル ブラウザを実行できます。 Alt-F2 を押すと、ターミナルを起動せずにグラフィカルな実行ダイアログからコマンドを実行します。
gksu オウムガイ
gksu コマンドには他にもいくつかの工夫が凝らされています。現在のデスクトップ設定が保存されるため、別のユーザーとしてグラフィカル プログラムを起動しても違和感がありません。 gksu などのプログラムは、root 権限でグラフィカル アプリケーションを起動するための推奨される方法です。
Gksu は、使用している Linux ディストリビューションに応じて、su または sudo ベースのバックエンドを使用します。
これで、su と sudo の両方に遭遇する準備ができたはずです。異なる Linux ディストリビューションを使用している場合は、両方の問題が発生する可能性があります。
関連: 開発者と愛好家のための最高の Linux ラップトップ





