尝试删除 sudo 上的密码。我当前的 sudoers 文件:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
vidar ALL=(ALL) NOPASSWD: ALL
我退出,打开新终端(甚至重新启动),但 sudo 仍然需要密码。用户是 sudo 组的成员。
可能发生什么事?
答案1
您无需重新启动即可使更改生效。
您缺少了:ALL
该条目的一部分。
更改自:
vidar ALL=(ALL) NOPASSWD: ALL
改成:
vidar ALL=(ALL:ALL) NOPASSWD: ALL
答案2
文件中条目的顺序sudoers
很重要。您还应该检查目录/etc/sudoers.d
,因为此目录中的条目可能会覆盖您尝试在 上执行的操作sudoers
。
您还可以查看/etc/sudoers.d/README
更多信息。
答案3
只是为了详细说明和补充@Eduardo 提供的答案,文件中条目的顺序sudoers
很重要,不仅因为可能有重复的条目,而且对于组规则来说,后面的组规则可能会覆盖为属于该组的用户指定的任何先前的规则。
例如,像这样的 sudoers 文件
# User privilege specification
root ALL=(ALL:ALL) ALL
userX ALL=(ALL:ALL) NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
当 userX 属于admin
或sudo
组时可能会出现问题,因为该NOPASSWD:
规则将被应用于admin
和/或sudo
组的规则覆盖,因此您的NOPASSWD:
规则将丢失。
因此,将单独的用户规则放在目录中更安全,sudoers.d
因为这些规则将比默认组规则更晚加载。
答案4
我遇到了类似的问题。在 /etc/sudoers.d/anotherfile 中添加我的更改后,问题就解决了。
visusdo 将打开 /etc/sudoers 进行编辑,但就我而言,我还添加了 /etc/sudoers.d/anotherfile,因为 sudoers 文件中的更改未启用。