为什么 root 不受 pam 约束

为什么 root 不受 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 可以为其他用户设置弱密码?

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

在较新(并向后移植到 RHEL 6)版本的 PAM 中,您可以pam_cracklib添加一个选项 — enforce_for_root。默认情况下此功能处于关闭状态。只需将其添加到该行即可。

当然,如果没有很多其他限制(比如 SELinux),root 总是可以绕过 PAM 并以另一种方式设置密码(例如,直接写入适当的文件),所以考虑这更多的是让自己保持诚实的一种方式比固体限制。

为什么它会这样工作而不是期望堆栈来处理这种事情?我认为这只是一个灵活性问题,尤其是当 PAM 控制值只是简单的必需/必需/足够/可选时 — 您必须设置以上pam_rootok的控制值sufficient全部root 会忽略的检查,但仅限于这些。由于作为 root 成功的选项是内置的pam_cracklib,所以这是没有必要的(假设需要允许 root 跳过检查,这显然是,即使不是在您的情况下)。

相关内容