両者の技術的な違いは何でしょうか?私が気づいたのは
sudo su
独自のパスワードを入力する必要があります(root でない場合)
その間
su root
root のパスワードを入力する必要があります。ただし、どちらも root ユーザー アカウントにログインするようです。
答え1
これら 2 つには微妙な違いがあります。su root
(単に と短縮することもできますsu
) は、 su コマンドを呼び出したユーザーとしてそれを実行します。sudo
指定されたコマンド ( su
) を root として実行します。root として実行することsu
は基本的に何も行いませんが、新しいシェルを起動する可能性があります。 を実行することは、sudo -i
(私見では) よりクリーンな実行方法ですsudo su
。
また、前に指摘したように、デフォルトの Ubuntu インストールには root パスワードがないため、su
単独で呼び出すと失敗します。
答え2
2 番目のコマンドは、アカウントが有効になっていないデフォルトの Ubuntu インストールでは実行できませんroot
。
しかし、パスワードを与えてアカウントのロックを解除したと仮定するとroot
、2 つのコマンドは環境とシェル変数セットのみが異なると考えられます。 2 つの状況での の出力を比較しenv
、 の出力も比較してset
違いを確認してください。
答え3
もう一つの違いは、sudo コマンドはあなたのパスワードを使用するため、/etc/sudoers ファイルで承認される必要があることです。sudoers ファイルは、sudo を使用して実行できるコマンドを定義します。su コマンドは、ROOT パスワードを使用します。このパスワードは知っておく必要があります。
オプションに応じて、ルート環境を選択するか、独自の環境を前進させることができます。
私はルート シェルを取得するために「sudo bash」を使用します。これは「sudo -i」とほぼ同じです (同じかもしれません、よくわかりません)。環境は次のように制御されます。「sudo su - other_user」は other_user の環境を取得します。ただし、「sudo su other_user」は、other_user の UID で環境を継承します。つまり、エイリアスなどが使用可能になります。
また、su と sudo を使用する場合、監査ログの監査結果も異なります。sudo の方が追跡可能性が高くなります。最後に、su の場合、ルート パスワードが周囲に伝わるため、メンテナンスが面倒です。sudo を使用してユーザーを承認する場合は、ユーザーを追加または削除するには sudoers ファイルを更新するだけでよく、ユーザーは自分のパスワードを覚えておくだけで済みます。sudoers を使用すると、他のユーザーが実行できる操作を決定することもできます。
答え4
少なくとも 11.00 以降では sudo -i を使用する方法になりますが、それ以前や 12.04 以降についてはわかりません。
環境をother_userのUIDで転送します。前述のとおり