이 후에도 여전히 sudo로 종료를 실행해야 하는 이유는 무엇입니까?

이 후에도 여전히 sudo로 종료를 실행해야 하는 이유는 무엇입니까?

저는 리눅스 민트 17.3을 사용하고 있습니다.

기본적으로 종료 또는 기타 명령(예: 재부팅, 전원 끄기)을 실행하려면 루트 권한이 필요합니다.

그래서 다음 줄을 추가했습니다.

lesaff_b ALL=(ALL) NOPASSWD:/sbin/poweroff、/sbin/reboot、/sbin/shutdown

나는 여전히 이 명령을 sudo로 실행해야 한다는 것을 알고 있지만 암호를 묻지 않으므로 각 명령에 대한 별칭을 만들었습니다.

처음에는 제대로 작동했지만 작동이 중단되었으므로 이제 이 명령을 sudo로 실행하고 비밀번호를 입력해야 합니다. sudo를 사용하지 않고 이러한 명령을 실행하는 다른 방법이 있다는 것을 알고 있지만 왜 작동해야 할 때 작동하지 않는가? 그리고 가장 중요한 것은 애초에 작동하는 이유는 무엇입니까?

답변1

우리가 댓글에서 배운 내용을 고려하면 다음과 같습니다.

  1. 일부 명령을 실행합니다 sudo(Q에 인용된 NOPASSWD 행을 추가하기 위해 sudoer를 편집할 수도 있음).
  2. timestamp_timeoutsudo는 이러한 자격 증명을 캐시하여 재부팅 또는 종료를 실행할 수 있도록 합니다(기본적으로 5분이라고 생각합니다).
  3. 그러나 재부팅 후(이상 timestamp_timeout) 기존 ALL:ALL sudo 규칙이 있기 때문에 이러한 명령에 대한 비밀번호를 묻는 메시지가 다시 표시됩니다.아니요NOPASSWD 플래그 - 추가하지 않았지만 멈췄습니다. 왜냐하면sudo는 마지막 일치 규칙을 사용합니다., 예기치 않게 메시지가 표시됩니다.

여기서 해결 방법은 기존 ALL:ALL 규칙 아래로 규칙을 이동하는 것입니다(또는 원하는 경우 기존 ALL:ALL 규칙에 NOPASSWD 플래그를 추가).

관련 정보