루트가 pam의 대상이 아닌 이유

루트가 pam의 대상이 아닌 이유

/etc/pam.d/common-password 파일에 다음 설정이 있습니다.

password        requisite                       pam_cracklib.so retry=3 lcredit=-1 ucredit=-1 dcredit=-1
password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512
password        requisite                       pam_deny.so
password        required                        pam_permit.so
password        optional        pam_ecryptfs.so

루트가 다른 사용자에 대해 취약한 비밀번호를 설정할 수 있는 이유는 무엇입니까?

root@kali:~# LANG=C passwd kali
New password: 
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is a palindrome
Retype new password: 
passwd: password updated successfully

나는 이것을 허용하는 어떤 pam 규칙도 보지 못했습니다. 내가 뭐 놓친 거 없니?

답변1

PAM의 최신 버전(및 RHEL 6으로 백포트됨)에서는 pam_cracklib옵션을 추가 할 수 있습니다 enforce_for_root. 이 기능은 기본적으로 꺼져 있습니다. 라인에 추가하면 됩니다.

물론 SELinux와 같은 다른 많은 제한 없이 루트는 항상 PAM을 우회하고 비밀번호를 다른 방법(예: 적절한 파일에 직접 쓰기)으로 설정할 수 있으므로 이를 정직하게 유지하는 문제로 더 중요하게 생각하십시오. 확실한 한계.

스택이 이런 종류의 일을 처리할 것이라고 기대하는 대신 왜 이렇게 작동합니까? 그냥 유연성 문제인 것 같아요. 특히 PAM 제어 값이 단순히 필수/필수/충분/선택일 경우 - 위의 pam_rootok제어 값을 설정해야 합니다.sufficient모두루트가 무시할지 확인하지만 이들만 무시합니다. 루트로 성공할 수 있는 옵션이 내장되어 있으므로 pam_cracklib이는 필요하지 않습니다(루트가 검사를 건너뛰도록 허용할 필요가 있다고 가정하면 이는 귀하의 경우가 아니더라도 분명히 그렇습니다).

관련 정보