sudoコマンドにrootパスワードが必要ないのはなぜですか?

sudoコマンドにrootパスワードが必要ないのはなぜですか?

私はしばらくLinuxを使用してきましたが、コマンドを入力するたびにsudoコマンドを実行するためにrootユーザーに切り替えるようです。

明らかに、これは私のユーザーアカウントのパスワードのみを必要とするので、これは本当ではありません。私は複数のユーザーと作業していないので、現実の世界ではこれに実際に気づいていないようです。

Ubuntuで最初のアカウントを設定する方法がわかりません。 rootユーザーはいますか?私は根ですか?私はインストールしたときに新しいユーザーを作成しましたが、rootアクセス権が与えられたようです。ここで少し混乱しています...

それでは、私のユーザーパスワードを使用してrootコマンドを実行できるのはなぜですか?

ベストアンサー1

詳しくは、次のように動作します。

  1. /usr/bin/sudo実行ファイルにsetuidビット他のユーザーが実行しても、ファイル所有者(この場合はroot)のユーザーIDとして実行するように設定します。

  2. sudo/etc/sudoersあなたが持っている権限と呼び出されるコマンドを実行できるかどうかをファイルで確認してください。簡単に言えば、メカニズムを使用して/etc/sudoersどのユーザーがどのコマンドを実行できるかを定義するファイルです。sudo

    私のUbuntuでは、ファイルは次のようになります。

    # User privilege specification
    root    ALL=(ALL:ALL) ALL
    
    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL
    
    # Allow members of group sudo to execute any command
    %sudo   ALL=(ALL:ALL) ALL
    

    3行目は面白いかもしれません。 「sudo」グループのすべてのユーザーがすべてのコマンドを実行できます。

    Ubuntuは、インストール中に最初のアカウントを設定すると、そのアカウントを「sudo」グループに追加します。コマンドを使用して、ユーザーが属するグループを確認できますgroup

  3. sudoパスワードを入力するように求められます。 rootパスワードではなく、ユーザーパスワードが必要であるという事実については、以下から抜粋します。sudoers マニュアル:

    認証とロギング

    sudoersセキュリティポリシーによると、ほとんどのユーザーはsudoを使用する前に認証する必要があります。呼び出し側のユーザーがroot、ターゲットユーザーが呼び出し側のユーザーと同じ、またはポリシーがユーザーまたはコマンドの認証を無効にした場合、パスワードは必要ありません。su(1)とは異なり、sudoerが認証を要求すると、ターゲットユーザー(またはrootユーザー)の資格情報ではなく、呼び出し側ユーザーの資格情報を確認します。これは、後で説明するrootpw、targetpw、およびrunaspwフラグを使用して変更できます。

    ただし、実際にはsudoユーザーパスワードは必要ありません。潜在的に危険なコマンドを呼び出す前に、あなたが実際にあなたであることを確認し、いくつかの警告(または停止する機会)を提供する必要があります。パスワードの入力をオフにするには、sudoersエントリを次のように変更します。

    %sudo   ALL=(ALL:ALL) NOPASSWD: ALL
    
  4. 認証後、sudo呼び出されたコマンドを実行する子プロセスが作成されます。子プロセスは、親プロセスであるprocessからrootユーザーIDを継承しますsudo


したがって、あなたの質問に正確に答えるには、次の手順を実行します。

コマンドを実行するためにrootユーザーに切り替えていると思いました。

あなたは正しいです。で始まるすべてのコマンドは、sudorootユーザーIDで実行されます。

rootユーザーはいますか?

はい、システムのインストール中に作成されたユーザーアカウントとは別に、rootユーザーアカウントがあります。ただし、デフォルトでは、Ubuntuは対話型端末にrootとしてログインすることはできません。

私は根ですか?

いいえ、あなたはルートではありません。あなたルートとして単一のコマンドを実行する権限のみがあります。sudo上記のメカニズムを使用します。

それでは、私のユーザーパスワードを使用してrootコマンドを実行できるのはなぜですか?

sudo内部セキュリティメカニズムのため、ユーザーパスワードを入力するだけです。簡単にドラッグできます。/usr/bin/sudo入力したパスワードではなく、setuidビットのためにroot権限を取得します。

おすすめ記事