sudo:即使设置了 NOPASSWD,也会提示密码

sudo:即使设置了 NOPASSWD,也会提示密码
~/bin$ cat setbrightness 
id
echo $1 > /sys/class/backlight/intel_backlight/brightness

~/bin$ whoami
rag


~/bin$ sudo -l
Matching Defaults entries for rag on this host:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User rag may run the following commands on this host:
    (root) NOPASSWD: /home/rag/bin/setbrightness
    (ALL : ALL) ALL

编辑:/etc/sudoers

Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification
Cmnd_Alias   SETBRIGHTNESS = /home/rag/bin/setbrightness

# User privilege specification
root    ALL=(ALL:ALL) ALL
rag ALL=NOPASSWD:SETBRIGHTNESS

# 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:

#includedir /etc/sudoers.d

运行命令

~/bin$ sudo /home/rag/bin/setbrightness 3000
[sudo] password for rag:

有人可以指出为什么运行sudo该命令时会提示输入密码吗?

答案1

这是顺序 - 如果我使用以下命令复制您的 sudoers 文件:

Cmnd_Alias   TESTCOMM = /bin/more
root    ALL=(ALL:ALL) ALL
dave    ALL=NOPASSWD:TESTCOMM
%admin  ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

我得到相同的行为,例如执行 sudo more 要求输入密码,与 sudo 相同。

然而...

Cmnd_Alias   TESTCOMM = /bin/more
root    ALL=(ALL:ALL) ALL
%admin  ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
dave    ALL=NOPASSWD:TESTCOMM

让我在没有密码的情况下使用更多,只是提示输入其他内容。

我想这是由于 sudo 中检查的顺序(从下到上)造成的。

答案2

您是如何编辑 sudoers 文件的?要验证 sudoers 文件是否有效,请始终使用该visudo命令,切勿直接编辑 sudoers 文件。这似乎是其中一种情况。

相关内容