如何在不向 /etc/sudoers 添加 `sudo -l` 的情况下启用 sudo 权限的无密码列表(`sudo -l`)?

Shu*_*eng 2 linux debian sudo

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

有什么方法可以在不添加的情况下允许这样ALL ALL=(ALL) NOPASSWD: /usr/bin/sudo -l/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:
Run Code Online (Sandbox Code Playgroud)

roa*_*ima 5

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

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

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

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

假设你想避免NOPASSWD,你会设置listpw=never

Defaults listpw=never
Run Code Online (Sandbox Code Playgroud)

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


不幸的是,它似乎是一个错误中sudo,这是固定在28年8月1日,可能会忽略listpw=never设置。在这种情况下,您不能使用listpw=never,而是创建一个其他无意义的条目,例如

ALL ALL=(ALL) NOPASSWD: /bin/false
Run Code Online (Sandbox Code Playgroud)

最终结果应该是sudo -l任何条目具有NOPASSWD规则时触发,您将实现您的要求。