如何启用 sudo 权限的无密码列表(`sudo -l`)而不将 `sudo -l` 添加到 /etc/sudoers?

如何启用 sudo 权限的无密码列表(`sudo -l`)而不将 `sudo -l` 添加到 /etc/sudoers?

我希望所有用户都能够sudo在不输入密码的情况下查看他们的权限。

有什么方法可以允许这样做而不添加ALL ALL=(ALL) NOPASSWD: /usr/bin/sudo -lto/etc/sudoers吗?

bob@cad50ee0931e:/$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for bob:

答案1

sudoers文件 ( )的文档man sudoers提供了这些建议

默认情况下,sudo要求用户在运行命令之前对自己进行身份验证。 [...]如果该NOPASSWD标签应用于任何当前主机上用户的条目中,他或她将能够在sudo -l没有密码的情况下运行。此行为可以通过 [...] 选项覆盖listpw

listpwsudo此选项控制当用户使用该选项运行时何时需要密码-l。它有以下可能的值:

  • allsudoers-当前主机的所有用户条目都必须NOPASSWD设置标志以避免输入密码
  • always- 用户必须始终输入密码才能使用该-l选项。
  • anysudoers-当前主机的用户条目中至少一项必须NOPASSWD设置标志以避免输入密码。
  • never- 用户无需输入密码即可使用该-l选项。

假设您想避免NOPASSWD,您可以设置listpw=never

Defaults listpw=never

用于visudo编辑和检查文件sudoers(提示:EDITOR=nano visudo如果您想用于nano编辑sudoers file instead ofvi`,请使用)。更好的是,在测试时保持另一个 root shell 打开,这样您就不会失去访问权限。


不幸的是,似乎中的一个错误sudo,即已在 1.8.28 中修复,可能会忽略该listpw=never设置。在这种情况下你一定不使用listpw=never,而是创建一个无意义的条目,例如这样

ALL ALL=(ALL) NOPASSWD: /bin/false

最终结果应该是sudo -l会触发任何条目都有NOPASSWD规则,你就会达到你的要求。

相关内容