我想要的是:
- 能够以
/sbin/print/managequeue.sh -p app1 --view
其他用户身份运行而无需询问密码。 - 能够以另一个用户身份运行
/sbin/print/managequeue.sh -p app1 --cancel
(或--delete
、或--pause
等),但要求输入密码。
最好,我不想创建一个Cmnd_Alias
包含所有可能参数的对象。因此,我尝试了以下三个别名和用户规范:
Host_Alias PRINTSRVS = printsrv, printsrvbkp
Cmnd_Alias APP1PMV = /sbin/print/managequeue.sh -p app1 --view
Cmnd_Alias APP1PMD = /sbin/print/managequeue.sh -p app1 *, !APP1PMV
%app1adms, %helpdesk PRINTSRVS = (printop2:printop2) NOPASSWD: APP1PMV, \
(printop2:printop2) PASSWD: APP1PMD
当我运行时sudo -u printop2 /sbin/print/managequeue.sh -p app1 --cancel
它有效:
[sudo] password for app1adm1:
Managing queue...
但是当我运行时sudo -u printop2 /sbin/print/managequeue.sh -p app1 --view
它没有:
Sorry, user app1adm1 is not allowed to execute '/sbin/print/managequeue.sh -p app1 --view' as printop2 on printsrv.
显然我的第二个命令(printop2:printop2) PASSWD: APP1PMD
覆盖了我的第一个命令(printop2:printop2) NOPASSWD: APP1PMV
并--view
完全否认了这个论点。
您能解释一下这个问题吗?
答案1
当多个条目与一个用户匹配时,它们将按顺序应用。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。
...您需要交换顺序,以便--view
命令的版本列在最后。