sudoers-간단한 설명 요청


24

내가 sudoer너무 많은 시간 을 필요로하는 무언가를 실행할 수 있기를 원할 때마다 그것을 /etc/sudoers작성하는 올바른 방법이 무엇인지 다시 상기시키기 위해 구글 형식을 지정해야 합니다.

이제 sudoers파일 에 다른 글쓰기 스타일이 표시되어 몇 달 동안 Google 검색 결과가 달라졌습니다. 또한 두 번째 예 (아래)가 XFCE에서는 작동하지만 Cinnamon (Gnome 3)에서는 작동하지 않는 것으로 나타났습니다. 이것은 완전히 관련이 없을 수 있지만 그럼에도 불구하고 sudoer 줄의 올바른 문법은 무엇이며 주어진 예제의 차이점은 무엇입니까?

  1. redsandro ALL=NOPASSWD:/path/to/command
  2. redsandro ALL=(ALL) NOPASSWD:/path/to/command
  3. redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

또한 무엇을 ALL위한 것입니까? 한 명의 사용자, 한 개의 명령이지만 ALL키워드를 최대 3 번 사용해야 합니까? 내가 잘못하고 있습니까?

물론, 생략 NOPASSWD:명령을 실행하도록 허용하기 전에 차종 비밀 번호를 입력하지만, 혼란의 1 점의 사용 인 =:중 하나가 앞에 추가 할 수있는 라인의 대상이 최종 명령에 대해, =, :, , 또는 ), 유사한 의미론에 대한 혼란스러운 문법.


3
나는 또한 sudoers구문에 좌절감을 느낀다 . 매뉴얼 페이지를 읽는 것이 훨씬 실망 스러웠습니다. 소위 간결하고 정확한 EBNF 언어를 설명합니다. 따라서이 파일과 관련하여 너무 많은 스레드를 찾는 것이 놀랍지 않습니다.
m-ric

1
고마워 몇 년 전에 sudoers 파일을 발견 한 이후로이 질문을하고 싶었습니다. :-)
vahidg

답변:


35

단순한 사용자와 명령 이상의 것입니다.


redsandro host=(user:group) tag:commands
  • host이 줄이 유효한 호스트 이름을 지정합니다. ALL"모든 호스트"를 의미 하는 특수한 값을 사용하여 다른 규칙을 필요로하는 다른 호스트간에 asudoers 파일을 공유하지 않는 한 좋은 선택입니다.

  • user-u옵션을 사용 하여 명령을 실행할 수있는 사용자를 지정합니다 . 이것을 생략하면 -u옵션을 사용할 수 없습니다 .

  • group-g옵션 과 함께 사용할 수있는 그룹을 지정합니다 . 생략하면 -g옵션을 사용할 수 없습니다 .

모두 usergroup특수 값 이해 ALL"모든 사용자 / 그룹"등을

당신은 전체 생략하면 (user:group)일을 당신이 사용할 수 -u하고 -g있지만 루트로 명령을 실행합니다.

  • tag 당신이 같은 몇 가지 옵션을 지정할 수 있습니다 NOPASSWD

따라서 첫 번째 예에서는 루트로 명령을 실행할 수 있지만 다른 사용자 또는 그룹으로 사용 -u하고 -g실행할 수는 없습니다.

예 2에서는 명령을 root -u로 실행 하거나 다른 사용자로 실행할 수 있습니다.

3. 사용하면 루트 또는 사용과 같은 명령을 실행 -u하거나 -g다른 사용자 또는 그룹으로 명령을 실행합니다.


이것이 바로 내가 찾던 것입니다. 나는 당신의 대답을 받아들이고 당신의 노력에 감사드립니다.
Redsandro

1
마지막 생각, 내가 사용할 수 있습니다 127.0.0.1또는 localhost같은 host사소한 보안을 강화하기 위해?
Redsandro

5
맨 페이지에는 'Note sudo
Florian Diesch

1
감사. sudoersfile을 여러 시스템에 복사 할 수 있기 때문에 특히 호스트 이름이 없습니다. ALL그것은.
Redsandro

9

이것을 하나로합시다.
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

redsandro는 권한을 부여한 사용자 이름입니다. 그룹에 적용하려면 앞에 %를 넣으십시오.

ALL은이 규칙의 이름입니다. Sudoers는 전역 권한을 부여하는 것 이상을 할 수 있습니다. 그것은 그것이 복잡 해지는 곳입니다.

= 설명이 필요 없습니다

ALL : ALL은 (who_to_run_it_as : what_group_to_run_it_as)로 읽습니다. 이렇게하면 특정 사용자 나 그룹의 상황에서만 명령을 실행할 수 있습니다.

NOPASSWD : 암호 프롬프트를 끄도록 지시합니다.

/ path / to / command를 사용하면 특정 명령 path_to_commmand, another_command를 지정할 수 있습니다

기억해야 할 것은 sudo는 대부분 가정용 사용자 가 루트 권한으로 에스컬레이션하는 데 사용되지만 특정 명령에 대한 액세스를 훨씬 더 세밀하게 제어하는 ​​데 사용됩니다.


1
추가 %, another_command메모 주셔서 감사 합니다. 이제 %wheelFedora 기반 배포판의 내용을 이해합니다 .
Redsandro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.