~/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 文件。这似乎是其中一种情况。