내가 원하는 것은:
/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
기반으로sudoers(v1.8.25) 설명:
여러 항목이 사용자와 일치하면 순차적으로 적용됩니다. 일치하는 항목이 여러 개인 경우 마지막 항목이 사용됩니다(가장 구체적인 항목일 필요는 없음).
--view
... 명령 버전이 마지막에 나열되도록 순서를 바꿔야 합니다 .