sudoers에서 단일 명령에 대해 requiretty를 비활성화하는 방법은 무엇입니까? 수 있도록 requiretty를 비활성화하고 싶지만 모든

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



답변

requiretty특정 사용자 또는 특정 명령 (또는 특정 사용자로 실행 또는 호스트) 과 같은 옵션의 기본 설정을 무시할 수 있지만 특정 사용자로 실행될 때 특정 명령에 대해서는 기본 설정을 무시할 수 있습니다 .

예를 들어, 그 가정하면 requiretty컴파일 기본 옵션에 설정되어, 다음과 같은 sudoers파일을 모두 허용 artbristol하고 bob실행하는 /path/to/program스크립트에서 루트로. artbristol암호 bob는 필요하지 않지만 암호 를 입력해야합니다 (아마도 최근에 일부 터미널에서 암호를 tty_tickets해제하고 bob입력 한 것 같습니다).

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

답변

이 같은:

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

답변

의 파일을 사용하면 잘 작동한다는 것을 알았습니다 /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