Sudoers 파일, 사용자, 모든 명령에 대해 NOPASSWD 사용


142

머리말

이것은 Sudoers 파일 및 sudo 명령과 관련된 상당히 복잡한 질문입니다.

참고 : Ubuntu Desktop 13.04를 실행하는 전용 컴퓨터에서 이러한 변경을 수행했으며 학습 목적으로 만 사용됩니다. NOPASSWD sudo를 활성화하는 것이 큰 보안 위험이라는 것을 알고 있습니다.

질문

처음에 sudoers 파일 (/ etc / sudoers)에 대한 유일한 변경 사항은 한 줄이었습니다. 사용자 사양은 'nicholsonjf'가 암호를 입력하지 않고도 sudo로 모든 명령을 실행할 수 있도록해야했습니다 ( 'nicholsonjf로 시작하는 줄 참조) ') :

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
nicholsonjf    ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

그러나 이것은 작동하지 않았으며 'nicholsonjf'라는 명령을 실행할 때마다 여전히 암호를 입력하라는 메시지가 표시되었습니다. sudo 및 admin 그룹에서 'nicholsonjf'를 제거한 후에 만 ​​sudo 명령을 'nicholsonjf'로 실행할 수있었습니다.

왜 이것이 효과가 있었는지 설명 할 수 있습니까?

사용자 'nicholsonjf'가 'admin'과 'sudo'(아래 sudoers 파일에서 볼 수 있음)의 두 그룹 사양에서 sudo 권한을 상속했기 때문에 'nicholsonjf'사용자 사양이 구성 파일?


7
참고 : ALL = NOPASSWD : ALL은 ALL = (ALL) NOPASSWD : ALL
이어야


답변:


164

추가 한 줄이 재정의되었습니다. 보낸 사람 man sudoers:

사용자에 대해 여러 항목이 일치하면 순서대로 적용됩니다. 일치하는 항목이 여러 개인 경우 마지막 일치 항목이 사용됩니다 (가장 구체적인 일치 항목은 아님).

귀하의 경우 nicholsonjf그룹의 구성원 sudo이므로 그 에게이 줄이 적용되었습니다.

%sudo   ALL=(ALL:ALL) ALL

항목을 무시 /etc/sudoers하려면 새 항목을 입력하십시오.

새로운 항목은 다음과 같아야합니다

myuser ALL=(ALL) NOPASSWD: ALL 단일 사용자의 경우

%sudo ALL=(ALL) NOPASSWD: ALL 그룹을 위해.


6
완전한 해결책 NOPASSWD
Daniel Alder

22
해결책은 다음과 같아야합니다.%sudo ALL=(ALL) NOPASSWD:ALL
Daniel Alder

3
@DanielAlder : 질문의 사양 줄 nicholsonjf ALL=NOPASSWD: ALL이 맞습니다. 내가 대답에서 설명한대로 그것은 잘못된 장소에있었습니다. ------ Runas사양 (ALL)은 선택 사항입니다. 스펙을 생략하면 명령을 실행할 root-u있으며의 -g옵션을 사용할 수 없습니다 sudo.
pabouk

여러 사용자가 암호없이 액세스 할 수 있으므로 보안 위험이 더 높습니다. 그것이 개인 PC라면 그다지 중요하지 않습니다. 나는 마지막으로 개인 라인을 움직일 것입니다.
Mark Williams

4
데비안 / 우분투 기반의 것을 사용하는 경우 수정이 아닌 추가 (일반적으로 적용 가능, 다른 곳에서는 볼 수 없음) 절대적인 최선의 방법은 /etc/sudoers.d/의 파일에 사용자 정의 명령을 추가하고 sudoers를 남겨 두는 것입니다 패키지 관리자가 관리해야합니다.
Aquarion

119

단일 사용자의 경우 sudoers파일 끝에이 줄을 추가 하여sudo visudo

superuser ALL=(ALL) NOPASSWD: ALL

그룹을 위해

%supergroup  ALL=(ALL) NOPASSWD: ALL

8
이 답변을 읽기 전에 내가 한 %sudo ALL=NOPASSWD: ALL것과 작동합니다. 내가 확장 Backus-Naur 양식을 이해하기 어려운 유일한 사람입니까?
Vince

4
@Vince 명령을 사용할 때 sudosudo 권한이없는 사용자로서 비밀번호 없이는 할 수 없습니다 . 예를 들어 sudo -u root -i작동하지만 작동 sudo -u git -i하지 않습니다.
NeverEndingQueue

이 답변은 승인 된 것보다 상당히 유용한 답변입니다. OP의 질문에는 답변하지만 대부분의 사람들이 Google을 통해이 페이지에 도달하는 것은 아닐 것입니다.
Mahmoud Al-Qudsi 2012

3

해당 사용자가 사용하는 경우 암호를 현재 사용자에게 메시지를 표시하지 않으려면 sudo어떻게

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-password

이렇게하면 파일이 생성되며 /etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password명령을 실행할 때 해당 명령을 실행 한 사용자에게 암호를 묻는 메시지가 표시되지 않습니다 sudo. Ubuntu Software 그래픽 앱 에서 항목을 설치하는 등의 다른 상황에서는 비밀번호를 묻는 메시지가 계속 표시 됩니다.

의 라인 추가를 통해 이런 식으로 일을의 장점 echo에 명령을 /etc/sudoers사용하여 sudo visudo(다른 답변에 의해 제안)입니다

  1. /etc/sudoers시스템 업데이트로 수정되는 경우도 있지만 파일 /etc/sudoers.d은 그렇지 않습니다.
  2. sudo visudo방법은 오류가 발생하기 쉬우 며 (이 질문에 의해 입증 된 것처럼) 명령 복사 / 붙여 넣기는 엉망이되기가 훨씬 어렵습니다.

sudo cat /etc/sudoers.d/README이 기능 에 따르면 (추가 sudoer 파일을 넣는 /etc/sudoers.d) 1990 년대 후반에 나온 데비안 1.7.2p1-1 이후 기본적으로 활성화되었습니다 (우분투는 데비안 기반 ).


(더 나은 파일 이름을 얻을 수 있다면 내 답변을 자유롭게 편집하십시오)
Boris

0

빈스가코멘트에 언급 ,이 라인을 사용할 수 있습니다 :

%sudo ALL=NOPASSWD: ALL

(이것에 도시 된 선 다르다 하고, 날에 대한 문제를 해결했다.)


@Eliah 이것은 다른 답변과 다르지 않습니다. supergroupFedir의 답변에서 자리 표시자를 으로 교체하기 만하면됩니다 sudo. 다음으로 그룹의 다른 사용자는 무엇입니까 wheel? 또는 사용자가 사용하는 다른 그룹이 있습니까?
muru

1
@muru "supergroupsudo Fedir 의 답변에서 자리 표시자를 대체하면 됩니다 ." 뭐? 교체 supergroupsudo라인에서 %supergroup ALL=(ALL) NOPASSWD:ALL수율 %sudo ALL=(ALL) NOPASSWD:ALL하지 %sudo ALL=NOPASSWD: ALL.
Eliah Kagan

NOPASSWD는 대상 사용자로만 루트이기 때문에 더 나쁠 것입니다. 따라서 질문에 올바르게 대답하지 않습니다!
muru

@muru 그러나 논쟁의 여지없는 것은로 대체 supergroup된다 sudo. 이것은 감사 답변이나 다른 답변의 사본이 아닌 자체 답변입니다. 하지만 그래, 난 동의 : 그들이 그렇게하지 않을 경우 , 이것은 다른 답변의 방법으로 대부분의 사용자에게 좋지 않을 것입니다. (그러나 특히 질문에 "모든 대상 사용자"가 아니라 "모든 명령"이라고 표시되어 있음을 고려하면 이것이 실제로 질문 한 질문에 대답하려고 시도하지도 않는다고 생각하지 않습니다.)
Eliah Kagan

이것은 나를 위해 일했고 다른 사용자와 공유하고 싶었습니다 :) (원하는 경우 내 의견을 제거하십시오).
E. Fortes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.