Answers:
好的,所以我按照迈克尔·汉普顿的建议去了,看了看pam_cracklib.c的代码,似乎pam_cracklib通过一个函数调用从PAM获取了旧的(又名当前的)密码(我认为完全可以,因为我只是输入该当前密码进行身份验证),然后在该旧密码和我刚输入的新密码之间执行相似性分析(距离功能)。
但是,它不会对历史记录中的所有旧密码进行此分析。这将是不可能的,因为它们仅存储为散列。对于它们,只能检查它们是否相同。因此,一切似乎都井井有条,就像我期望的那样,但是现在我确实明白了为什么……谢谢大家。
您的旧密码不会以纯文本格式存储。
相反,您的旧密码哈希/etc/security/opasswd
由PAM 存储。然后,根据您在PAM配置中指定的内容,在更改密码时进行比较。
PAM配置示例:
password required pam_unix.so sha512 remember=12 use_authtok
在这里,remember
使它记住12个以前的密码。
有关更多详细信息,请参见使用pam_cracklib的Linux密码安全性。