修改“Security.PasswordQualityControl”后无法更改 ESXi 6.7 上的密码

修改“Security.PasswordQualityControl”后无法更改 ESXi 6.7 上的密码

请参阅下面的编辑以获取解决方法和可能的解释

根据 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

相关内容