다음 줄의 차이점은 무엇입니까?
user1 ALL=(ALL) NOPASSWD: /etc/init.d/service-script
user1 ALL=NOPASSWD:/etc/init.d/service-script
두 줄 모두 정확하며 차이점이 있습니까? 서비스 스크립트를 실행하려면 user1에게 sudo 액세스 권한을 제공해야 합니다.
답변1
첫 번째 줄에는 올바른 구문이 있습니다.
user1 ALL=(ALL) NOPASSWD: /etc/init.d/service-script
즉, 이 파일을 사용하는 모든 호스트에서 user1은 /etc/sudoers
비밀번호 없이 실행할 수 있는 모든 사용자가 될 수 있습니다./etc/init.d/service-script
두 번째 줄의 구문은 적어도 최신 버전에서는 올바르지 않습니다 sudo
. /etc/sudoers
권장 visudo
명령을 사용하여 편집하면 즐겨 사용하는 편집기를 종료한 후 다음과 유사한 메시지가 표시됩니다.
File /etc/sudoers.tmp saved
>>> /etc/sudoers: syntax error near line 28 <<<
What now?
물음표를 입력하면 다음 옵션 목록이 표시됩니다.
Options are:
(e)dit sudoers file again
e(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)
What now?
"e"를 선택하고 잘못된 줄을 삭제하거나 "x"를 선택하여 이번에 수행한 모든 편집 내용을 취소하는 것이 좋습니다.
/etc/sudoers
올바른 구문을 상기시키기 위해 파일에 다음과 같은 주석을 입력할 수 있습니다 .
# WHO WHERE = (AS WHOM) WHAT
(AS WHOM)
섹션 과 섹션 사이에 WHAT
프로세스의 일부 세부 사항에 영향을 줄 수 있는 콜론으로 끝나는 일부 표시를 선택적으로 추가할 수 있습니다.
서비스 스크립트는 /etc/init.d에 있으므로 분명히 루트로 실행되도록 되어 있습니다. 따라서 "최고의" /etc/sudoers 라인은 다음과 같습니다:
user1 ALL=(root) NOPASSWD: /etc/init.d/service-script
사용자는 이를 다음과 같이 실행해야 합니다.
sudo /etc/init.d/service-script
또는 명시적으로
sudo -u root /etc/init.d/service-script
명령줄 끝에 매개변수를 추가할 수 있습니다.
답변2
두 가지 모두 예상한 대로 수행됩니다. 단, 첫 번째 경우 user1이 다른 사용자처럼 명령을 실행할 수 있습니다. 두 번째 명령에서는 명령이 루트로 실행됩니다(예상한 것과 더 유사함).