web-dev-qa-db-ja.com

「NOPASSWD:ALL」が/ etc / sudoersに記述されていない場合でも、「Sudo」を実行するためにrootがパスワードを必要としないのはなぜですか

/etc/sudoersには、常に次のものが含まれます。

root    ALL=(ALL:ALL) ALL

ただし、rootユーザー(UID 0)は、Sudo commandを実行するときにパスワードを入力する必要はありません。

他のユーザーの場合、エントリにNOPASSWDが含まれていないか、以前の認証がタイムアウトしていない限り、パスワードが必要です。

user    ALL=(ALL:ALL) NOPASSWD:ALL
                      ^^^^^^^^
6
iBug

Sudoを使用すると、ユーザーは構成方法に基づいてUID 0(または他のユーザー)としてコマンドを実行できます。すでにUID 0であるため、コマンドをUID 0として実行するためにrootにパスワードを要求する必要はありません。

さらに、rootは任意のユーザーにsuすることもできるため、Sudo -u userをUID 0として実行するときにパスワードの入力を求める必要はありません。

注:suを使用する場合、ターゲットユーザーのパスワードを提供するためにrootを必要とするPAM設定があると思います。

6
Peschke

これは興味深い矛盾ですが。 rootにはCAP_SETUIDおよびCAP_SETGIDの機能があるため、Sudoは必要ないため、rootを停止しても意味がありません。何でもやりたいことができます。

Sudoがルートをチェックしていて、これらの機能をチェックしていない場合は、潜在的なバグがある可能性があります。機能のないルートがエスカレートする可能性があります(コードを調べたりテストしたりしていないことはわかりません)。

3
ctrl-alt-delor