Sudoers:2番目のコマンドリストにglob *があり、最初のコマンドリストを拒否する2つのコマンドリストを実行できません。

Sudoers:2番目のコマンドリストにglob *があり、最初のコマンドリストを拒否する2つのコマンドリストを実行できません。

私が望むもの:

  • /sbin/print/managequeue.sh -p app1 --viewパスワードを要求せずに他のユーザーとして実行する機能。
  • /sbin/print/managequeue.sh -p app1 --cancel 他のユーザー(または--delete、またはなど)で実行できますが、--pauseパスワードが必要です。

Cmnd_Alias可能なすべてのパラメータを含むオブジェクトを作成したくありません。だから私は次の3つのエイリアスとユーザー仕様を試しました。

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.

明らかに、私の2番目のコマンドは(printop2:printop2) PASSWD: APP1PMD私の最初のコマンドを無視し、(printop2:printop2) NOPASSWD: APP1PMV引数--viewを完全に拒否します。

この問題を説明できますか?

答え1

に基づいてsudoers(v1.8.25)説明:

複数の項目がユーザーと一致する場合は、順次適用されます。一致する項目が複数ある場合は、最後の項目が使用されます(最も具体的なものである必要はありません)。

--view...コマンドのバージョンが最後にリストされるように順序を変更する必要があります。

関連情報