我想防止使用最后的密码并保持密码复杂性。
但如果我同时使用pam_pwquality.so和pam_pwhistory.so,它就无法正常工作。
例如,我将最小长度设置为 8,并禁用 system-auth 文件中的最后两个密码。
password requisite pam_pwquality.so local_users_only retry=3 minlen=8
password requisite pam_pwhistory.so remember=2 retry=3
如果我输入最后一个符合复杂性的密码,pwhistory 会阻止我,但在此之后,可以在不复杂的情况下更改密码。 -> 如果检查传递到第二个模块,第一个模块是否会失效?
当 pwquality 和 pwhistory 颠倒时,情况类似。
password requisite pam_pwhistory.so remember=2 retry=3
password requisite pam_pwquality.so local_users_only retry=3 minlen=8
其工作原理如下。
$passwd
Enter the last password -> failed by pwhistory module
Enter short password -> failed by pwquality module
Enter the last password -> success regardless of pwhistory module
我不能同时检查复杂性和最后的密码条件吗?
答案1
我认为在与其他密码更改模块use_authtok
堆叠时需要使用该参数(例如,它更改原始选择的密码):pwhistory
pwquality
password requisite pam_pwquality.so local_users_only retry=3 minlen=8
password requisite pam_pwhistory.so remember=2 retry=3 use_authtok
pwhistory
您可以使用以下命令查看该模块的手册页
man pam_pwhistory
手册页摘录:
使用_authtok
当密码更改时,强制模块使用先前堆叠的密码模块提供的新密码(这在下面记录的 pam_cracklib 模块的堆叠示例中使用)。