为什么 root 不需要密码来运行“sudo”,即使 /etc/sudoers 中没有写入“NOPASSWD:ALL”

为什么 root 不需要密码来运行“sudo”,即使 /etc/sudoers 中没有写入“NOPASSWD:ALL”

/etc/sudoers,总是有:

root    ALL=(ALL:ALL) ALL

但是,root 用户(UID 0)运行时不需要输入密码sudo command

对于其他用户,需要密码,除非他们的条目包含NOPASSWD或之前的身份验证尚未超时:

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

答案1

sudo允许用户根据其配置方式以 UID 0(或其他用户)身份执行命令。无需向 root 询问密码即可以 UID 0 运行命令,因为它已经是 UID 0。

此外,root 还可以访问任何人,因此在以 UID 0su执行时无需提示输入密码。sudo -u user

注意:我确实相信有一个 PAM 设置甚至要求 root 在使用su.

答案2

虽然这是一个有趣的不一致。停止 root 是没有意义的,因为 root 具有CAP_SETUID和 的功能CAP_SETGID,因此不需要 sudo。它可以做任何它想做的事。

如果sudo检查的是root,而不是这些功能,那么可能存在一个潜在的错误:没有功能的root可能会升级(我不知道我没有查看代码或测试过)。

相关内容