私が望むもの:
/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
...コマンドのバージョンが最後にリストされるように順序を変更する必要があります。