これらのコマンドの主な違いは、機能へのアクセスを制限する方法にあります。
su (これは「代替ユーザー」または「ユーザー切り替え」を意味します) -まさにそれを行い、ターゲットユーザーの権限で別のシェルインスタンスを起動します。それを行う権利があることを確認するために、ターゲットユーザーのパスワードを要求します。そのため、rootになるには、rootパスワードを知る必要があります。rootとしてコマンドを実行する必要があるマシン上に複数のユーザーがいる場合、すべてのユーザーがrootパスワードを知っている必要があります-同じパスワードになることに注意してください。ユーザーの1人から管理者権限を取り消す必要がある場合は、rootパスワードを変更し、アクセスを維持する必要のある人だけに伝える必要があります。
sudo (うーん...ニーモニックとは何ですか?スーパーユーザーDO?)はまったく異なります。呼び出されたときに特定のアクション(などルート、などのコマンドを実行)する権限を持っているユーザーを一覧表示し、設定ファイル(の/ etc / sudoersファイル)を使用して、それがために要求することを開始したユーザーのパスワード -で人を確保するために、ターミナルは、実際にリストされて/etc/sudoersいるのと同じ「ジョー」です。個人の管理者権限を取り消すには、構成ファイルを編集するだけです(または、その構成にリストされているグループからユーザーを削除します)。これにより、特権の管理がよりクリーンになります。
この結果、多くのDebianベースのシステムでは、rootユーザーはパスワードを設定していません。つまり、rootとして直接ログインすることはできません。
また、/etc/sudoersいくつかの追加オプションを指定できます。つまり、ユーザーXはプログラムYなどしか実行できません。
頻繁に使用されるsudo su次のように組み合わせは動作します:最初のsudoをお願いしますあなたのパスワード、そして、あなたがそうすることを許可している場合、(次のコマンドを起動suスーパーユーザーとして)。suによって呼び出されるためroot、ターゲットユーザーのパスワードを入力する必要はありません。そのsudo suため、/etc/sudoersファイルによるスーパーユーザーアクセスが許可されている場合、別のユーザー(ルートを含む)としてシェルを開くことができます。
su user信頼できないシェルからのログインには使用しないでくださいsu - user。参照してくださいunix.stackexchange.com/q/7013/8250