Итак, что я хочу, это:
- чтобы иметь возможность запускать
/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
.
Кто-нибудь может объяснить, что происходит?
РЕДАКТИРОВАТЬ: мой sudo -ll
результат для пользователя app1adm1
:
sudo -ll
User app1adm1 may run the following commands on printsrv:
Sudoers entry:
RunAsUsers: root
Commands:
/sbin/app[12]/*
Sudoers entry:
RunAsUsers: printop2
RunAsGroups: printop2
Options: !authenticate
Commands:
/sbin/print/managequeue.sh -p app1 --view
Sudoers entry:
RunAsUsers: printop2
RunAsGroups: printop2
Options: authenticate
Commands:
/sbin/print/managequeue.sh -p app1 *
!/sbin/print/managequeue.sh -p app1 --view