Quando você solicita a um módulo PAM para alterar uma senha (ou participar da alteração de uma senha), o módulo pode recuperar tanto a nova senha quanto a antiga, conforme determinado pelo usuário: como Christopher aponta, passwd
pede a senha antiga, bem como a nova (a menos que você a esteja executando como root
e alterando a senha de outro usuário ). O módulo pode usar essa informação para comparar as duas senhas, sem ter que de alguma forma reverter o hash atual ou enumerar variantes.
As funções do PAM envolvidas incluem pam_sm_chauthtok
e pam_get_item
, cuja documentação (e as outras páginas mencionadas) deve ajudá-lo a entender o que está acontecendo. Você pode ver como isso é feito no código-fonte de libpam-cracklib
.