귀하의 의견을 올바르게 이해하면 여기서 문제는 sudo 기본값으로 요청하는 비밀번호를 입력 할 수있는 연결을 통해 명령이 발행된다는 것입니다. 또한 많은 OS 배포판에서 sudo는 기본적으로이 프로그램에는없는 TTY를 요구합니다.
그러나 sudo는 매우 세분화 된 권한 구조를 가질 수 있으므로 한 명 이상의 사용자가 암호 및 TTY없이 하나의 특정 명령을 실행할 수 있습니다. 아래에는 필요에 따라이를 구성하는 세 가지 방법이 나와 있습니다. 어느 것을 선택하든 사용자는 이제 sudo rndc reload
비밀번호를 입력하지 않고도 명령을 실행할 수 있습니다.
(또한,이 불필요 할 수도 있지만 ... 제발 당신이 백업으로 되돌릴 경우에있어 루트 개방을 필요로 쉘을 유지하기, 편집하기 전에 당신의 sudoers 파일의 백업 복사본을 만들 기억하고 편집을 그것을 사용하는 visudo
대신에 sudo vi /etc/sudoers
더 잘 가지고 반대보다 그들을 필요로하지 ... 희망이 예방 조치가 필요 할 것이다.하지만!)
1. 요청에 대해 TTY가 필요하지 않은 경우
가장 쉬운 방법은 (있는 경우) 확인 라인으로 시작 있는지 확인하는 것입니다 TTY 요구 사항을 제거하기 Defaults
에 /etc/sudoers
단어를 포함하지 않는 requiretty
대신, 그것은 포함한다 - !requiretty
. 그러나 이렇게하면 sudo 명령에 tty가 필요 하지 않습니다 .
또한 라인을 추가해야합니다
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2.이 사용자를 제외한 모든 사용자에게 TTY가 필요한 경우
다음과 같이이 한 명의 사용자에 대한 기본값을 설정하여 수행 할 수 있습니다.
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3.이 한 명의 사용자가이 한 가지 명령을 제외한 모든 명령에 대해 TTY를 요구하려면
sudoers 파일의 구문으로 인해 조금 더 복잡합니다. 명령에 대한 명령 별명을 작성하고 다음과 같이 해당 명령 별명에 대한 기본값을 설정해야합니다.
Cmnd_Alias RNDC_CMD = /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
Defaults!RNDC_CMD !requiretty
rndcuser ALL = (root) NOPASSWD: RNDC_CMD
sudo
목적입니다. 이것에 대한 당신의 사업 반대 의견은 무엇입니까sudo
?