sudoとsuの違いを深く理解する



Deep Understanding Difference Between Sudo



sudoとsuの違いを深く理解する

2つのコマンドの最大の違いは次のとおりです。

sudoコマンドには現在のユーザーのパスワードが必要であり、suコマンドにはrootユーザーのパスワードが必要です。もう1つの違いは、デフォルトの動作です。 sudoコマンドでは、昇格された特権で1つのコマンドのみを実行できますが、suコマンドでは、新しいシェルが開始され、ログインが明示的にログアウトされるまで、できるだけ多くのコマンドをroot特権で実行できます。



Linuxsuコマンド

suコマンドの主な目的は、ログインしたセッションで別のユーザーに切り替えることができるようにすることです。つまり、このツールを使用すると、現在のユーザーからログアウトせずに、別のユーザーとしてログインできます。
suコマンドはスーパーユーザーまたはrootに切り替えるためによく使用されます(コマンドラインでの作業にはroot権限が必要になることが多いため)が、前述のように、suコマンドはroot以外のユーザーに切り替えるためにも使用できます。
suコマンドを使用してrootユーザーに切り替える方法は、ターミナルに直接suと入力するだけです。
その
コマンドライン引数なしのsuコマンド
上記のように、suコマンドに必要なパスワードはrootユーザーのパスワードです。したがって、一般的なsuコマンドでは、ターゲットユーザーのパスワードを入力する必要があります。正しいパスワードを入力した後、suコマンドは端末の現在のセッションでサブセッションを開きます。
その-
rootユーザーに切り替える別の方法があります:su--コマンドを実行します
su-コマンド
では、suコマンドとsu-コマンドの違いは何ですか?前者はrootユーザーに切り替えた後も古い(または元のユーザーの)環境を維持し、後者は新しい環境(rootユーザー〜/ .bashrcファイルによって設定された環境)を作成します。これはrootユーザーを使用するのと同じです。ログイン(ログイン画面からログイン)。
sudo vs.その
suコマンドの基本について説明したので、次はsudoコマンドとsuコマンドの違いを調べます。



パスワードについて

2つのコマンドの最大の違いは、sudoコマンドには現在のユーザーのパスワードが必要であり、suコマンドにはrootユーザーのパスワードが必要なことです。
明らかに、sudoコマンドはセキュリティの点で優れています。たとえば、ルートアクセスを必要とする複数のユーザーが使用するコンピューターについて考えてみます。この場合、suを使用するということは、rootパスワードを他のユーザーと共有することを意味しますが、これは明らかに良い習慣ではありません。
さらに、特定のユーザーのスーパーユーザー/ rootユーザーへのアクセスを取り消す場合、これを行う唯一の方法は、rootパスワードを変更してから、他のすべてのユーザーに新しいrootパスワードを通知することです。
sudoコマンドの使用は同じではありません。上記の両方を処理できます。 sudoコマンドでは他のユーザー自身のパスワードを入力する必要があるため、rootパスワードを共有する必要はありません。また、特定のユーザーがroot権限にアクセスできないようにするには、sudoersファイルで適切な構成を調整するだけです。

デフォルトの動作

2つのコマンドのもう1つの違いは、デフォルトの動作です。 sudoコマンドでは、昇格された特権で1つのコマンドのみを実行できますが、suコマンドでは、新しいシェルが開始され、ログインが明示的にログアウトされるまで、できるだけ多くのコマンドをroot特権で実行できます。




したがって、suコマンドのデフォルトの動作は危険です。これは、ユーザーがrootとして作業していることを忘れて、誤って回復不能な変更を加えたためです。 (例:間違ったディレクトリに対してrm -rfコマンドを実行してください!)。ルートとしての作業が推奨されない理由の詳細については、[3]を参照してください。

ロギング

sudoコマンドはターゲットユーザー(デフォルトではrootユーザー)としてコマンドを実行しますが、コマンドを実行したユーザーを記録するためにsudoerによって構成されたユーザー名を使用します。 suコマンドは、rootユーザーに切り替えた後にユーザーが行ったことを直接追跡することはできません。



柔軟性

sudoユーザーがアクセスできるコマンドを制限することもできるため、sudoコマンドはsuコマンドよりもはるかに柔軟性があります。つまり、ユーザーはsudoコマンドを操作するために必要なコマンドにのみアクセスできます。 suコマンドは、ユーザーに何でもする権限を与えます。
sudo su
おそらく、suコマンドを使用したり、rootとして直接ログインしたりするのは危険であるため、一部のLinuxディストリビューション(Ubuntuなど)では、デフォルトでrootユーザーアカウントが無効になっています。 root権限が必要な場合は、sudoコマンドを使用することをお勧めします。
ただし、rootユーザーのパスワードを入力しなくてもsuコマンドを正常に実行できます。次のコマンドを実行します。
sudo su
sudoを使用してコマンドを実行するため、現在のユーザーのパスワードを入力するだけで済みます。したがって、操作が完了すると、suコマンドはrootとして実行されます。つまり、パスワードは不要になります。
PS:システムでrootユーザーアカウントを有効にする場合(sudoコマンドまたはsudo suコマンドを使用できるため強く反対)、rootパスワードを手動で設定する必要があります。次のコマンドを使用できます::

sudo passwd root

詳細な写真をご覧ください: