Итак, что я хочу, это:

  • чтобы иметь возможность запускать /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

0