首先,我已经成功地从所有应用程序中删除了 sudo 密码:我在 /etc/sudoers.d 中创建了一个新文件,其中包含sudo visudo -f /etc/sudors.myfile
以下行:
ghegheg ALL= NOPASSWD: ALL
它适用于所有非 ssh 应用程序。但出于安全原因,我只想为安装在 /home/ghegheg/Install/amdgpu-pro-fans/amdgpu-pro-fans.sh 中的 amdgpu-pro-fans.sh 应用程序逃脱 sudo 密码,但它不起作用。我在 myfile 中输入了以下行:
ghegheg ALL= NOPASSWD: /home/ghegheg/Install/amdgpu-pro-fans/amdgpu-pro-fans.sh
但在输入命令后,/home/ghegheg/Install/amdgpu-pro-fans/amdgpu-pro-fans.sh -s 50
系统会询问 sudo 密码。我尝试了其他应用程序,例如:visudo,
ghegheg ALL= NOPASSWD: /usr/sbin/visudo /sbin/visudo
并且他们同样要求输入 sudo 密码,如果之前NOPASSWD: ALL
没有要求输入任何密码的话。我不知道该怎么办!我在下面列出了sudo -l
命令的输出:
User ghegheg may run the following commands on ...
(ALL : ALL) ALL
(root) NOPASSWD: /home/ghegheg/Install/amdgpu-pro-fans/amdgpu-pro-fans.sh
答案1
我相信 Sudo 会从上到下读取权限,并在找到匹配项后立即停止,根据上面 sudo -l 的输出,ghegheg 是与先前的权限规则匹配的组的一部分,该规则授予 sudo 访问权限, (ALL : ALL) ALL
因此它会提示您输入密码,要么从之前的匹配中删除 ghegheg,要么重新排列规则以使其首先匹配您的 NOPASSWORD:规则。