sudoers 中的更改不生效。Ubuntu 16.10 全新安装 + 一行。

sudoers 中的更改不生效。Ubuntu 16.10 全新安装 + 一行。

尝试删除 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 属于adminsudo组时可能会出现问题,因为该NOPASSWD:规则将被应用于admin和/或sudo组的规则覆盖,因此您的NOPASSWD:规则将丢失。

因此,将单独的用户规则放在目录中更安全,sudoers.d因为这些规则将比默认组规则更晚加载。

答案4

我遇到了类似的问题。在 /etc/sudoers.d/anotherfile 中添加我的更改后,问题就解决了。

visusdo 将打开 /etc/sudoers 进行编辑,但就我而言,我还添加了 /etc/sudoers.d/anotherfile,因为 sudoers 文件中的更改未启用。

相关内容