sudoers NOPASSWD 옵션이 작동하지 않는 이유는 무엇입니까?


75

/ etc / sudoers에 NOPASSWD 줄이 있습니다 (로 편집 visudo)

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

그러나 출력은

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

이러한 종류의 명령은 OpenSuSE 시스템에서는 작동하지만 Ubuntu 11.10에서는 작동하지 않습니다. 내가 무엇을 잘못하고 있지?

참고 : 관련 시스템 로그 메시지를 찾을 수 없습니다 (예 : via) tail -f /var/log/syslog.

편집하다

다음은 / etc / sudoers입니다.

Defaults    env_reset

# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

root    ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

2
전체를 보여줄 수 있습니까? sudoers규칙의 순서는 관련이 없습니다.
enzotib 2012 년

답변:


117

매뉴얼 페이지에서 다음 과 같이 그룹에 대한 규칙이있는 행 뒤에 해당 행을 추가해야합니다 .sudosudoers

   When multiple entries match for a user, they are applied in order.
   Where there are multiple matches, the last match is used (which is not
   necessarily the most specific match).

5
추가 참고로,이뿐만 아니라 여러 그룹의 사용자에게 적용 : 예를 들어, 사용자가 그룹에 관리자 및 그룹 sudo를 위한 규칙 경우 sudo는이 이후 관리자 다음에 대한 규칙 sudo는이 에 대한 규칙보다 우선 관리자 두 그룹에서 사용자를.
Populus

2
감사! 끝에 줄을 추가 /etc/sudoers하면 이제 작동합니다. 관심있는 사람들에게 여기에 대한 전체 설명 : techglimpse.com/ubuntu-sudoers-nopasswd-option-not-working
elimisteve

4

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

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

라인 허가 권한을 삽입하십시오 : gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq

그런 다음 저장하고 종료하고 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사용하는 가장 "마지막"문자 접두사가 어떻게 될지를 결정합니다.


동의합니다. / etc / sudoers 파일을 편집 할 때 일부 논리가 반 직관적으로 보였습니다. % wheel ALL = (ALL) NOPASSWD를 얻을 수 없었습니다. /etc/sudoers.d 라인은 % SUDO 및 % WHEEL과 같은 다른 라인 앞에 있어야합니다. #include dir을 다른 그룹 권한 위에 놓으면 작업을 시작했습니다. 그래서 /do/sudoers.d/의 각 그룹에 대해 sudoers 파일과 동일한 순서로 번호를 매긴 파일을 만들었지 만 루트 ALL = (ALL) ALL은 여전히 ​​#includedir 줄 아래에 sudoers 여야했습니다. 기묘한.
AveryFreeman

실제로 나는 포함자가 sudoers의 끝에 남아 있어야한다고 생각합니다. 아마 당신이 보았던 것은 sudoers.d에있는 다른 파일 중 하나입니다 .d는 변경 사항을 취소했습니다. 휠 그룹을 제한하는 메인 파일에 줄이 더있을 수도 있습니다. sudoers는 명령이나 그룹에 적용 할 마지막 규칙이 이길 때 처리되므로보다 구체적인 도움이되지만 일반적인 ANY 명령이 끝나고 NOPASSWD가 없으면 이전 예외를 무시합니다. 그렇기 때문에 나중에 처리 할 수 ​​있도록 규칙을 별도의 파일에 보관해야합니다.
dragon788

나는 그렇게 생각하지 않는다. 그것은 아치의 새로운 설치였다. 내가 한 것은 그 한 줄을 주석 처리하고 주석을 제거하는 것입니다. 그러나 그것은 확실히 확인하는 것이 좋습니다. 감사합니다.
AveryFreeman

일부 시스템은 실제로 wheel을 사용하지 않고 대신 sudo, adm 또는 admin이라는 그룹을 사용합니다. 아치 동작을 기억할 수는 없지만 id어떤 그룹에 속해 있는지 볼 수 있습니다 .
dragon788

아치는 바퀴를 사용합니다.
AveryFreeman

4

이것도 만났다.

제 상황은 헤드리스로 실행될 원격 시스템을 설정하는 것입니다. 전체 디스크 암호화를 사용하도록 설정했습니다 (그렇지 않으면 물리적 액세스 권한을 가진 공격자가 원하는 것을 수행 할 수 있음). pub 키로 만 인증하고 싶습니다. "비밀번호를 설정 해제하여"뭔가 알고 있음 "구성표가 비밀번호가되도록합니다. protected keypair-루트 로그인은 물론 완전히 비활성화되어 있습니다)

Ubuntu 설치 관리자는 루트가 아닌 관리자에게 그룹에 추가되도록 프롬프트합니다 sudo. 그런 다음 다음을 sudoers사용 하여 파일에 직접 추가했습니다 sudo visudo.

my_username ALL=(ALL:ALL) NOPASSWD:ALL

참고 랩톱에서 nopasswd를 사용하는 경우 항상 컴퓨터를 잠가 두어야합니다. 그렇지 않으면 커피에 크림을 넣을 때 우연한 공격자가 많이 손상 될 수 있습니다.

여전히 비밀번호를 인증해야했습니다.

enzotib의 답변은 현재 진행중인 문제의 핵심입니다. sudo 그룹은 내 사용자 이름을 입력 한 후 sudoers에 나타납니다.

항목을 sudo 행 아래로 이동하지 않고 이전에 추가 한 행을 제거하고 다음 NOPASSWD항목에 추가 했습니다.%sudo

작동하는 것 같습니다. 정말로 필요한 경우에만 다시 nopasswd를 사용하십시오 (제 경우에는 sudo 활동에 암호를 요구하는 대부분의 사용자에게 가장 필요한 것이 었습니다)

추가 경고 : 항상 susers를 visudo로 편집하십시오. (sudo visudo) 또한 루트 사용자로 다른 창을 열어 놓으면 sudoers 파일을 변경하는 동안 발생할 수있는 모든 실수를 복구 할 수 있습니다.


모든 / 모든 명령에 대해 NOPASSWD를 활성화하는 것은 결코 좋은 생각이 아닙니다. 즉, 시스템에 접속하여 sudo 그룹에 사용자를 초대하는 사람은 시스템에 대한 모든 것을 매우 빠르게 수행 할 수 있습니다. LiveCD를 사용하여 몇 분만 액세스하거나 sudo요청한 명령을 실행하는 것 외에도 자신의 권한을 사용하여 다른 사용자를 sudo 그룹에 추가 하는 cmd를 실행하도록 사용자를 속여서 쉽게 할 수 있습니다 .
dragon788

2
이와 같은 담요 진술을하지 마십시오. 헤드리스 시스템에서는 로그인 암호를 전혀 설정하지 않는 것이 바람직하지 않습니다 (대신 키 페어에 의존) 전체 디스크 암호화를 활성화하여 라이브 CD와 행운을 빕니다. (그런데 sudoers 파일에 관계없이 암호화되지 않은 시스템에서 모든 종류의 재미있는 작업을 수행 할 수있게 해줍니다) 또한 PATH의 어느 위치에도 쓸 수 없으며 처음부터 쉘을 제공하지 않습니다. 당신이 시스템을 파괴하려는 시도를하지 않는다면 귀하의 보안 문제는 유효하지 않으며 단순히 구식이며 귀하가 암시하는 것처럼 보편적으로 적용 할 수 없습니다.
jorfus 2016 년

당신과 같은 보안에 대해 깊이 이해하지 못하는 사람들에게는 이런 종류의 권장 사항이 대안보다 낫지 만 이상적이지 않다는 데 동의합니다.
dragon788

@ dragon788 사실, 우리는 모든 레벨의 사용자가 더 나은 보안을 향한 발걸음을 내딛도록 응답을 편집 할 수 있습니다. 공격자가 물리적으로 액세스 할 때 손상을 방지하기 위해 전체 디스크 암호화를 활성화하는 경고를 추가하고 랩톱 사용자가 자신의 컴퓨터를 공개적으로 잠그는 것을 잊어 버린 경우 sudo nopasswd가 빠른 손상을 초래할 수 있습니다. (5 분 잠금 및 화면 잠금 빠른 키를 설정하면 실제로 보안이 향상 될 수 있습니다.)
jorfus

훌륭한 업데이트, 내 대답에는 여기에 언급되지 않은 다른 권장 사항이 없으며 전체 디스크 암호화를 사용하는 직장에서 아이러니하게도 충분히 암호를 입력하기가 쉽지 않기 때문에 NOPASSWD를 활성화했습니다. 반복적으로 유휴 시간이 짧은 후에 xautolock을 사용하여 컴퓨터를 잠급니다.
dragon788

0

원격 시스템에서 암호화를 삭제하되 "관리자"그룹에서와 같이 루트가 모든 것을 소유하게하십시오. 0이 아닙니다! 파일이 아닌 프로필 에 대한 모든 액세스 권한이 필요한
사용자로 수정할 수 있습니다 . 이제 모든 표준 스크립트는 원격에 "루트"로 액세스 할 수 있으며 보호해야하는 파일을 보호 할 수 있습니다. 또 다른 편리한 "그룹"은 브라우저 캐시에 로그인 디렉토리가있는 "샌드 박스"이며이를 자유롭게 읽을 수 있습니다. 대문자 첫 문자를 사용하십시오.#sudo -g Administratorssudo.login

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