~/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
Run Code Online (Sandbox Code Playgroud)
编辑:/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
Run Code Online (Sandbox Code Playgroud)
运行命令
~/bin$ sudo /home/rag/bin/setbrightness 3000
[sudo] password for rag:
Run Code Online (Sandbox Code Playgroud)
有人可以指出为什么在运行sudo
该命令时提示密码吗?
Dav*_*e C 17
这是顺序 - 如果我复制你的 sudoers 文件:
Cmnd_Alias TESTCOMM = /bin/more
root ALL=(ALL:ALL) ALL
dave ALL=NOPASSWD:TESTCOMM
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
我得到相同的行为,例如执行 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
Run Code Online (Sandbox Code Playgroud)
让我在没有密码的情况下使用更多,只是提示输入其他内容。
我想这是由于在 sudo (从下到上)检查的顺序。