"NOPASSWD:ALL"이 /etc/sudoers에 기록되지 않았음에도 불구하고 루트가 "sudo"를 실행하는 데 비밀번호가 필요하지 않은 이유는 무엇입니까?

"NOPASSWD:ALL"이 /etc/sudoers에 기록되지 않았음에도 불구하고 루트가 "sudo"를 실행하는 데 비밀번호가 필요하지 않은 이유는 무엇입니까?

, 항상 다음이 있습니다 /etc/sudoers.

root    ALL=(ALL:ALL) ALL

그러나 루트 사용자(UID 0)는 를 실행할 때 비밀번호가 필요하지 않습니다 sudo command.

NOPASSWD다른 사용자의 경우 항목에 다음 항목이 포함되어 있거나 이전 인증 시간이 초과되지 않은 경우를 제외하고 비밀번호가 필요합니다 .

user    ALL=(ALL:ALL) NOPASSWD:ALL
                      ^^^^^^^^

답변1

sudo구성된 방식에 따라 사용자가 UID 0(또는 다른 사용자)으로 명령을 실행할 수 있도록 허용합니다. UID 0은 이미 UID 0이므로 루트에게 비밀번호를 묻지 않고도 UID 0으로 명령을 실행할 수 있습니다.

또한 루트는 누구에게나 액세스할 수 있으므로 suUID 0으로 실행할 때 비밀번호를 묻는 메시지를 표시할 필요가 없습니다.sudo -u user

참고: 루트를 사용해야 하는 PAM 설정도 있다고 생각합니다 su.

답변2

그래도 흥미로운 불일치입니다. 루트에는 CAP_SETUID다음과 같은 기능이 있으므로 루트를 중지할 필요가 없으므로 CAP_SETGIDsudo가 필요하지 않습니다. 원하는 것은 무엇이든 할 수 있습니다.

검사 중인 것이 기능이 아닌 루트 라면 sudo잠재적인 버그가 있을 수 있습니다. 기능이 없는 루트는 업그레이드될 수 있습니다(코드를 보거나 테스트하지 않고는 알 수 없습니다).

관련 정보