为什么 sudo 告诉我我的密码错误?

Bru*_*lza 8 users password sudo openbsd useradd

我最近在我的电脑上安装了 OpenBSD 4.9,所以我可以了解一些类 Unix 操作系统的知识。我向名为 bruno 的系统添加了一个新用户。好的。当我使用“sudo”命令时,它会要求我输入密码。所以,我输入密码。但它让我告诉我密码错误,即使我确定密码正确。我在这里缺少什么?我知道如果添加

 bruno ALL = (ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

到 /etc/sudoers 文件,它停止询问密码,我可以执行 sudo 命令。我应该在这里做什么?最正确/最安全的选择是什么?如果这是一个微不足道的问题,我很抱歉。对于这个问题,我找不到很好的解释。我不仅要寻找解决方案,还要解释整个用户/权限/密码的工作原理。

Gil*_*il' 8

这是身份验证授权之间差异的说明。

Sudo 主要是一个授权工具。它的工作是确定是否允许您以提升的权限执行命令,如果允许,则执行该命令。一个条目像

bruno ALL = (ALL): ALL
Run Code Online (Sandbox Code Playgroud)

sudoers文件中允许用户bruno以任何权限执行任何命令。

为了应用这个规则,Sudo 需要知道调用它的用户确实是bruno。原则上,它可以依赖于系统的身份验证机制:如果您可以以 身份运行命令bruno,则表示您已经以 身份进行身份验证bruno。但是,由于使用 Sudo 会产生重大后果,因此 Sudo 需要一些额外的身份验证:有时您需要再次输入密码。这意味着,如果您的控制台无人看管,而路人将命令作为 运行bruno,他们将无法使用 Sudo:他们可能会损坏您的帐户,但不会损坏系统的其余部分。

请求密码的另一个优点是它会提醒您发生了异常情况。例如,应用程序无法静默调用sudo:它需要询问您的密码,而意外的密码提示会提醒您发生了一些不好的事情。

实际上,每次运行 Sudo 时都要求输入密码会很烦人。因此默认行为是妥协:每隔几分钟要求输入密码。这样,sudo仅当您在过去几分钟内运行时,路人或应用程序才会通过运行造成伤害。