「sudo」はどのユーザーのパスワードを要求しますか?


10
$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 136808 Jul  4  2017 /usr/bin/sudo

そのためsudo、すべてのユーザーが実行でき、実行するすべてのユーザーはsudo、set-user-idビット/usr/bin/sudoが設定されているため、プロセスの実効ユーザーIDとしてrootを持ちます。

https://unix.stackexchange.com/a/11287/674から

sudoとsuの最も明白な違いは、sudoはユーザーのパスワードを必要とし、suはrootのパスワードを必要とすることです。

  1. どのユーザーのパスワードがsudo要求しますか?プロセスの実際のユーザーIDで表されるユーザーですか?

    はいの場合、実行sudoしてから自分のパスワードを入力することで、どのユーザーもスーパーユーザー権限を取得できますか?Linuxは一部のユーザーに対してそれを制限できますか?

  2. それはそれが正しいsudoパスワードを要求した後に execve()実行を開始するmain()/usr/bin/sudo

    プロセスのeuidがrootに変更されたため(/ usr / bin / sudoのset-user-idビットが設定されているため)、後でsudoがパスワードを要求するポイントは何ですか?

ありがとう。

https://unix.stackexchange.com/a/80350/674を読みましたが、上記の質問には答えません。


3
ユーザーではなく、sudoersリストに含まれているユーザーのみです。
ロドリゴ

1
@ロドリゴそれは答えのように聞こえますが、コメントではなく答えに入れてください。
フィリップケンドール

2
@PhilipKendallそれはOPの疑問の一部だけに答えました。
ロドリゴ

回答:


22
  1. 最も一般的な構成でsudoは、実行して いるユーザーsudo(つまり、プロセスの実際のユーザーIDに対応するユーザー)のパスワードを要求します。のポイントはsudo、特定のユーザーに追加の権限を付与することです(の設定で決定sudoers)。これらのユーザーは、自分以外の認証を提供する必要はありません。しかし、sudo ないユーザーが実行していることをチェックがsudo本当に彼らがあると主張する人であり、それは彼らのパスワードを要求することにより(または任意の認証メカニズムのために設定されていることを行いsudo、通常はPAMを使用して、 -そう、これは指紋を必要とすることができ、または二要素認証など)。

    sudorootになる権利を必ずしも与え​​るわけではなく、さまざまな特権を与えることができます。rootになることを許可されているユーザーはsudoers、自分の認証のみを使用してrootになることができます。しかし、許可されていないユーザーはできません(少なくとも、を使用することではできませんsudo)。これはLinux自体ではなく、sudo(およびその認証設定によって)強制されます。

  2. sudo実際に実行を開始した後でパスワードを要求します。それ以外の場合は実行できません(つまり、実行を開始するに何も実行できません)。sudorootであってもパスワードを要求するポイントは、(通常の構成で)実行中のユーザーのIDを確認することです。


12

sudoこれは設定可能ですが、通常はそれを実行しているユーザーのパスワードを要求します

とは異なりsu(1)sudoers認証が必要な場合 は、ターゲットユーザー(またはルート)の資格情報ではなく、呼び出し元のユーザーの資格情報を検証します。これは、を介して変更することができrootpwtargetpwかつrunaspw後述する、旗。

設定rootpwsudo常にrootのパスワードをtargetpw要求し、ユーザーのパスワードを要求し、sudo最終的にはプログラムを実行し、でrunaspw設定したユーザーのパスワードを要求しますrunas_default

このsudoようなバイナリ設定は、実際に任意のユーザーがroot権限で開始できます。sudo認証コードにバグがないと仮定すると、それ自体はあまり問題になりません。

同様に、システムコールを呼び出すことにより、どのプロセスもカーネルモードでコードを実行できますopen()。(これはrootのユーザースペースコードとは異なります。)カーネルにバグがない限り、任意のコードを実行することはできません。


8

の最初の行からman sudo

説明
sudoにより、許可されたユーザーは、セキュリティポリシーで指定されているように、スーパーユーザーまたは別のユーザーとしてコマンドを実行できます。呼び出し元のユーザーの実際の(有効ではない)ユーザーIDを使用して、セキュリティポリシーを照会するユーザー名を決定します。

そう:

  1. 呼び出しユーザーの実際の(有効ではない)ユーザーIDが使用されます...
  2. はい、すべての(許可された)ユーザーは、sudoを実行して必要な(構成された)認証を提供することにより、スーパーユーザー(またはその他の)追加の特権を取得できます。許可と構成の両方がsudoersファイルで設定されています。

  3. Linuxは一部のユーザーに対してそれを制限できますか?
    はい、できますが、できません。Linuxは、sudoバイナリがsudoプログラム内およびファイル内の一連のルール(セキュリティポリシー)に基づいて決定できるように設定されています/etc/sudoers。通常、他のファイルも(または代わりに)使用できます。

からman setresuid

説明
setresuid()は、呼び出しプロセスの実際のユーザーID、実効ユーザーID、および保存されたset-user-IDを設定します。

  1. カーネルによって付与されたスーパーユーザー権限を取得する唯一の方法は、プログラムsuidを実行することです。それ以外の場合はできません。これは、Linuxがスーパーユーザー権限を付与するために選択した方法です。

  2. カーネルが他のユーザーが変更できない実行可能ファイル(rootが所有し、rootだけが書き込み可能なファイルとディレクトリ)をロードした、実行可能ファイル自体(sudo)は、パスワード(または構成された他の何か)を要求してユーザーを認証します。付与する権限と権限を決定します。


-1

についての他の良い答えへの追加sudo

su効果的に別のユーザーになることができます。自分のコンピューターでは、日常的に使用するために管理者として実行することはありません。つまり、特に(直接)使用することはできませんsudo。を使用したい場合はsudo、を使用suして管理者ユーザーに「なり」、その役割でを使用できますsudo。そのような状況では、Adminアカウントのパスワードを2回入力することになります。1回は実行su時、もう1回は実行時ですsudo

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.