我最近在我的电脑上安装了 OpenBSD 4.9,这样我就可以了解一些类 Unix 操作系统的知识。我向系统添加了一个名为 bruno 的新用户。好的。当我使用“sudo”命令时,它会要求我输入密码。所以,我输入密码。但它总是告诉我密码错误,即使我确信密码是正确的。我在这里缺少什么?我知道如果添加
bruno ALL = (ALL) NOPASSWD: ALL
到 /etc/sudoers 文件,它不再询问密码,我可以执行 sudo 命令。我应该在这里做什么?最正确/最安全的选择是什么?如果这是一个微不足道的问题,我很抱歉。对于这个问题我找不到很好的解释。我不仅在寻找解决方案,而且在寻找整个用户/权限/密码的工作原理的解释。
答案1
Sudo 主要是一个授权工具。它的作用是确定您是否被允许以提升的权限执行命令,如果被允许,则执行该命令。类似
bruno ALL = (ALL): ALL
文件中的sudoers
内容允许用户bruno
以任何权限执行任何命令。
为了应用此规则,Sudo 需要知道调用它的用户确实是bruno
.原则上,它可以依赖于系统的身份验证机制:如果您可以运行命令 as bruno
,则意味着您已经通过了身份验证bruno
。但是,由于使用 Sudo 可能会产生重大后果,因此 Sudo 需要一些额外的身份验证:有时您需要再次输入密码。这意味着,如果您让控制台无人看管并且路人可以运行命令 as bruno
,他们将无法使用 Sudo:他们可能会损坏您的帐户,但不会损坏系统的其余部分。
请求密码的另一个优点是它会提醒您正在发生异常情况。例如,应用程序不能静默调用sudo
:它需要询问您的密码,并且意外的密码提示会提醒您正在发生一些不好的事情。
实际上,每次运行 Sudo 时都要求输入密码会很烦人。因此,默认行为是妥协:每隔几分钟询问一次密码。这样,sudo
只有当您在过去几分钟内运行时,路人或应用程序才可能通过运行造成伤害。
答案2
您应该阅读手册:(man sudo
另外这里),我不确定规则是什么,但在大多数 UNIX 系统上 sudo 只允许wheel
组中的用户使用。因此,您应该为这个需要密码的新用户制定规则,或者将该用户添加到wheel组。 (使用usermod -a -G wheel bruno
)