在 RHEL7 服务器中,我必须实现两个可以描述为 PAM pam_pwquality 模块参数的密码策略:
- 密码必需 pam_pwquality.so try_first_pass local_users_only minlen=14
- 密码必需 pam_pwquality.so try_first_pass local_users_only dcredit=0 ucredit=0 ocredit=0 lcredit=0 minclass=3 maxsequence=1
此外,默认的 RHEL 7 PAM 配置已经包含以下 pam_pwquality 条目:
- 密码必需 pam_pwquality.so try_first_pass local_users_only retry=3
我需要将条目 3 的密码策略应用于所有用户,并将密码策略应用于名为 group1 和 group2 的两个不同的本地用户组。
为了应用这个要求,我在 /etc/pam.d/password-auth-ac 和 /etc/pam.d/system-auth-ac 默认 pam_pwquality 条目之后添加了以下代码(在这个问题中命名为 3.) :
password requisite pam_pwquality.so try_first_pass local_users_only minlen=14 # Default RHEL7 pam_pwquality.so entry
#BEGIN PWPOLICY 1
password [success=1 default=ignore] pam_succeed_if.so user notingroup group1
password requisite pam_pwquality.so try_first_pass local_users_only minlen=14 use_authtok
#END PWPOLICY 1
#BEGIN PWPOLICY 2
password [success=1 default=ignore] pam_succeed_if.so user notingroup group2
password requisite pam_pwquality.so try_first_pass local_users_only dcredit=0 ucredit=0 ocredit=0 lcredit=0 minclass=3 maxsequence=1 use_authtok
#END PWPOLICY 2
此配置按预期工作,但它的缺点是当用户(包括在 group1 和 group2 中)更改密码时,它需要重复多次,如以下示例所示:
[test@rhel7 ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
New password:
Retype new password:
Retype new password:
Retype new password:
passwd: all authentication tokens updated successfully.
我最后两个 pam_pwquality 条目中包含的选项“use_authtok”似乎被忽略了。
您知道此配置或实现这些要求的其他方法有什么问题吗?
这里的问题有两个:
pam_pwquality
旨在明确提示使用 进行密码验证pam_get_authtok_verify
,并且use_authtok
仅适用于pam_get_authtok_noverify
.pam_succeed_if
跳过并没有按照您认为的方式工作。我认为您可能想要颠倒顺序并添加并使用括号语法来实现您所追求的:
对我来说,Group #1 的政策和默认政策似乎没有任何区别。假设这不是故意的,我相信如果您确实需要所有 3 个都不同,以上应该可以工作。
另外:此解决方案假定 group1 和 group2 成员资格是互斥的。如果有人在两个组中,则 group1 优先。