답변:
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/
파일에 추가 할 때이 편집이 효과적 이었습니다. CentOS 7.1
/etc/sudoers.d/
. CentOS 7.5 :(
의 파일을 사용하면 잘 작동한다는 것을 알았습니다 /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
/etc/sudoers
하지만/etc/sudoers.d/
파일 에서는 작동하지 않는 것 같습니다.