sudoers 文件更改不起作用?

sudoers 文件更改不起作用?

我使用的是 Ubuntu 18.04LTS,我想更改 sudoers 文件以sudo shutdown -h now无需密码即可执行(对于my_username)。我采取的步骤是:

我的用户my_username打开终端:

sudo visudo

我添加的行:

my_username ALL=(ALL) NOPASSWD: /sbin/shutdown

第一部分(用户和 ALL 之间)只有一个制表符,其余都是空格。用户是它id在终端中出现的那个用户。之后,以防万一我重新启动系统,并键入sudo shutdown -h now但它一直要求输入密码。

我做错了什么?

- - -编辑 - - -

好吧,我不知道添加行的顺序很重要,所以按照要求我添加了完整的文件(这是一个非常简单的 sudoers 配置)。

#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) 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
# See sudoers(5) for more information on "#include" directives:
my_username ALL=(ALL) NOPASSWD: /sbin/shutdown
#includedir /etc/sudoers.d

这样它对我来说非常有效。问题是我在 root 行之后添加了该行。

答案1

在 sudoers 手册页中(男人 5 sudoers)已被提及

当多个条目与一个用户匹配时,它们将按顺序应用。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。

所以无论你的配置是否具体。

还要考虑您是否有sudoers组(例如wheel基于 Red Hat 的发行版)该行

%wheel ALL=(ALL) ALL应该在之前NOPASSWD

答案2

配置

my_username ALL=(ALL) NOPASSWD: /sbin/shutdown

允许用户在有或没有参数的情况下my_username运行/sbin/shutdown,并且无需提供密码,但他们必须使用/sbin/shutdown,而不仅仅是shutdown(因为选择的可执行文件将取决于$PATH)。

相关内容