请参阅下面的编辑以获取解决方法和可能的解释
根据 VMware 文档(以及 pam_passwdqc 文档),我应该能够编辑设置Security.PasswordQualityControl
以允许不同的密码复杂度类型。例如,我将尝试使用以下字符串来允许具有 1 个字符类型且最小长度为 20 的密码:
retry=3 min=20,16,disabled,16,16
问题是,在我进行此更改后,我无法再更改任何用户的密码。尝试更改密码时,我总是收到以下错误:
设置密码失败。您的密码可能不符合系统设置的复杂度标准。
此外,日志中还有实际的错误:
失败 - 发生了常规系统错误:passwd:严重错误 - 立即中止
请注意,这不是标准的密码复杂性警告。通常的警告类似于Weak password: too short.
。我以为我的设置字符串中有拼写错误,但在仔细阅读文档后,我确信参数是正确的。
奇怪的是,我可以随心所欲地修改最后 2 个参数(用于 3 和 4 个字符型密码),而不会出现问题。例如,这样min=disabled,disabled,disabled,4,4
就没问题,并且允许我使用 4 个字符的密码。但是,只要我尝试修改前 2 个参数,无论我尝试更改谁的密码,也无论我是否满足复杂性要求,我都会收到严重错误。就好像更改前 2 个数字会破坏某些东西一样。
有人知道我如何在不破坏 PAM 的情况下更改此设置吗?
编辑:我找到了一个解决方法目前,但我相信这种行为是由于pam_passwdqc
模块中的一个错误造成的。
手册页提到以下内容:
每个后续数字均不得大于前一个数字。
似乎模块认为“disabled”的值等于 0,因此导致上述检查在我的情况下失败。由于上面一行明确提到了“数字”,并且能够禁用密码短语的使用(第 3 个数字)同时启用其余的密码短语的使用似乎是合乎逻辑的,因此手册页中描述的行为与程序的行为不一致,我认为这是一个错误。
简而言之,以下方法可行:
min=disabled,20,20,12,12
但以下情况则不会:
min=30,20,disabled,12,12
答案1
这个发现可能是错误的。
我遇到过类似的问题,最后发现我的更改是/etc/pam.d/passwd
错误的。
ESXi 6.x 的正确应用和工作示例:
password requisite /lib/security/$ISA/pam_passwdqc.so retry=3 min=1,1,1,1,1
password sufficient /lib/security/$ISA/pam_unix.so use_authtok nullok shadow sha512
password required /lib/security/$ISA/pam_deny.so
答案2
以下设置对我有用
$ cat /etc/pam.d/passwd
#%PAM-1.0
# Change only through host advanced option "Security.PasswordQualityControl".
password requisite /lib/security/$ISA/pam_passwdqc.so retry=3 min=9,7,7,7,7
password sufficient /lib/security/$ISA/pam_unix.so
use_authtok nullok shadow sha512 password required /lib/security/$ISA/pam_deny.so