Sudoers: 두 번째 명령 목록에 glob *이 있고 첫 번째 명령 목록을 거부하는 두 명령 목록을 실행할 수 없습니다.

Sudoers: 두 번째 명령 목록에 glob *이 있고 첫 번째 명령 목록을 거부하는 두 명령 목록을 실행할 수 없습니다.

내가 원하는 것은:

  • /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... 명령 버전이 마지막에 나열되도록 순서를 바꿔야 합니다 .

관련 정보