sudoers에서 단일 명령에 대한 요구 사항을 비활성화하는 방법은 무엇입니까?

sudoers에서 단일 명령에 대한 요구 사항을 비활성화하는 방법은 무엇입니까?

내 스크립트에서 sudo를 사용할 수 있도록 requiretty를 비활성화하고 싶지만 모든 명령에 대해 비활성화하는 것보다 단일 명령에 대해 비활성화하는 것이 좋습니다. sudoers 구성에서 이것이 가능합니까?

답변1

특정 사용자나 특정 명령(또는 특정 실행 중인 사용자나 호스트) 과 같은 옵션에 대한 기본 설정을 재정의할 수 있지만 requiretty특정 사용자로 실행되는 특정 명령에 대해서는 재정의할 수 없습니다.

예를 들어, 다음 파일은 requiretty컴파일 기본 옵션에 설정되어 있다고 가정하여 스크립트에서 root 로 sudoers허용 되고 실행됩니다 . 비밀번호는 필요하지 않으며 오히려 비밀번호를 입력해야 합니다(아마도 일부 터미널에서 닫혔고 최근에 입력되었을 것입니다).artbristolbob/path/to/programartbristolbobtty_ticketsbob

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

특정 매개변수를 사용하여 명령 설정을 변경하려면 명령 별칭을 사용해야 합니다(이것은 구문 제한 사항입니다). 예를 들어 다음 스니펫은 스크립트 내에서 실행될 수 있지만 artbristol다른 매개변수로는 실행될 수 없습니다./path/to/program --option/path/to/program

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty

답변2

이 같은:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

답변3

나는 그것이 나에게 효과적이라는 것을 알았습니다 /etc/sudoers.d. 확인하는 것은 매우 간단했습니다.

먼저 /etc/sudoers.d/01build다음을 만들었습니다.

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

그런 다음 작동하는지 테스트합니다.

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

/etc/sudoers.d/01build그런 다음 해당 줄을 수정 하고 삭제한 Defaults:후 다음을 얻었습니다.

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo

관련 정보