我使用的是 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
)。