/ etc / sudoers에 NOPASSWD를 추가해도 작동하지 않습니다


45

14.04에 여기. 내 컴퓨터에 SSH로 연결하여 다음 줄을 추가했습니다 /etc/sudoers.

myuser   ALL=NOPASSWD: ALL

그런 다음 실행을 시도했습니다.

sudo mkdir /etc/blah

... 암호를 묻습니다. 왜?!?

나는 할 수 없습니다 이 작업을 수행 할 때 비밀번호를 입력해야하고 싶습니다. 달리면 다음과 같은 결과가 나타납니다 ls -ltr /.

drwxr-xr-x 94 root root  4096 Jul 30 13:28 etc

그러나 나는 자신을 "책임자"로 설정했기 때문에 이것이 중요하다고 생각하지 않습니까?

더 중요한 것은 비밀번호를 묻지 않고 sudo mkdir /etc/blah현재 사용자 ( myuser) 로 실행할 수 있도록하려면 어떻게해야 합니까?

내 전체 /etc/sudoers파일은 다음과 같습니다 .

#
# 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
fizzbuzz  ALL=NOPASSWD: ALL
chadmin   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

sudoers 파일을 게시 할 수 있습니까? 지시문은 맞지만 상황으로 인해 작동하지 않았습니다.
Lety

감사합니다 @Letizia-내 업데이트를 참조하십시오.
Zac

나는 또한 내가 않았다는 것을주의해야한다 생각 하지 사용하는 visudo작업을-N-붙여 복사되지 않은이 파일을 사용하지만 직접 수정, 나는있는 그대로 모든 것을 입력했습니다. 그러나이 visudo파일 이외의 다른 파일을 편집합니까? 그럴 수도 있습니다.
Zac


또한, 모든 파일을 확인 /etc/sudoers.d/그들은에서 일을 오버라이드 (override) 할 수있다,/etc/sudoers
tokland

답변:


68

이를 발생시킨 규칙의 순서 / 순서입니다. 마지막 규칙이 우선합니다.

문제를 해결하려면 간단히 라인을 이동하십시오.

fizzbuzz  ALL=NOPASSWD: ALL
chadmin   ALL=NOPASSWD: ALL

로부터 sudoers파일

sudo visudo -f /etc/sudoers.d/myOverrides 

sudoers일반 텍스트 편집기로 파일을 편집하는 것보다이 방법이 더 좋습니다 . 실수로 파일에 오류를 삽입하면 더 이상 실행할 수 없습니다 sudo. visudo구문을 확인하고 실수에 대한 경고를 받으려면 항상을 사용하십시오 !

귀하의 지시문은 다음에 의해 무시되므로 작동하지 않습니다.

%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

groups명령 을 실행하면 사용자가이 그룹에 속한다는 것을 알 수 있습니다.


파일 이름은 nn-somename예를 들어/etc/sudoers.d/20-myoverrides
shimatai

물론 두 개 이상의 파일이있는 경우 파일이 사전 어휘 순서대로 구문 분석되므로 숫자를 사용하는 것이 좋으며 해당 순서를 쉽게 알 수 있습니다.
Lety

21

경우 참고 MyUser가sudo는 그룹 3 선이 1 일보다 우선하기 때문에, 다음 라인의 순서는 (플로리안 Diesch에 의해 언급 된 바와 같이) 암호없이 액세스를 제공하지 않습니다.

myuser    ALL=(www-data:www-data) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

따라서이 순서대로 줄을 넣으십시오.

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
myuser    ALL=(www-data:www-data) NOPASSWD: ALL

아래 참고 MyUser의 계정 사용 sudo -l권한을 확인할 수 있습니다 참고 MyUser가 있습니다.


10

사용자에 대해 여러 항목이 일치하면 마지막 항목 이 사용됩니다. 그래서 만약 fizzbuzzchadmin그룹의 구성원 admin또는 sudo그들은 여전히 암호를 입력해야합니다.

줄 끝에 sudoers파일 끝에 두 줄을 넣습니다 #includedir.


실제로 @Letizia와 답변의 조합이 가장 좋습니다 . 기본적으로 #includedir마지막 항목 이기 때문 sudoers입니다.
muru

0

이상적으로 실행할 수있는 명령을 사용자 정의하는 경우 파일을 직접 편집하는 대신 sudo별도의 파일에서 이러한 변경 /etc/sudoers.d/을 수행해야 sudoers합니다. 또한 visudo파일을 편집 할 때는 항상 사용해야 합니다. 당신은 부여해서는 안 NOPASSWDALL명령.

예: sudo visudo -f /etc/sudoers.d/mynotriskycommand

라인 허가 권한을 삽입하십시오 : myuser ALL= NOPASSWD: /bin/mkdir

그런 다음 저장하고 종료하고 visudo구문 오류가 있으면 경고합니다.

출력에 명령이 표시 되기 전에 sudo -l사용자 특정 NOPASSWD명령이 표시 %groupyouarein ALL=(ALL) ALL되면 암호를 입력하라는 메시지가 표시되면 사용자에게 부여 된 권한을 확인하기 위해 실행할 수 있습니다 .

이 sudoers.d 파일을 많이 만들면 사용자별로 이름이 지정된 파일을 만들어보다 쉽게 ​​시각화 할 수 있습니다. 파일 이름과 파일 내 규칙의 순서는 매우 중요합니다.로드 된 마지막 항목이 이전 항목보다 많거나 적을 지 여부에 관계없이 가장 먼저로드됩니다.

접두사 00-99 또는 aa / bb / cc를 사용하여 파일 이름 순서를 제어 할 수 있지만 숫자 접두사가없는 파일이 있으면 번호가 매겨진 파일 뒤에로드되어 재정의됨을 명심하십시오. 설정. 언어 설정에 따라 셸에서 "어휘 정렬"이 먼저 정렬 번호를 사용한 다음 "오름차순"으로 정렬 할 때 대문자와 소문자가 인터리브 될 수 있기 때문입니다.

실행 해 printf '%s\n' {{0..99},{A-Z},{a-z}} | sortprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort현재의 언어 인쇄 여부를 확인하는 AaBbCc등 또는 ABC다음은 abc사용에 최적의 "마지막"문자 접두사가 어떻게 될지를 결정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.