Como o Linux pode comparar senha antiga e nova?

4

Eu sei que no Linux (pelo menos debian) todas as senhas são armazenadas em hash e armazenadas em /etc/shadow .

No entanto, graças ao libpam-cracklib , você pode adicionar algumas regras às senhas. Por exemplo, em /etc/pam.d/common-password você pode definir Difok , que é um parâmetro que indica o número de letras que podem ser as mesmas entre uma senha antiga e uma nova.

Mas como o linux pode saber quando eu digito uma nova senha, a semelhança com a minha senha antiga, pois ela não sabe minha senha real (ela só tem um hash)?

Obrigado!

    
por Peni 11.10.2017 / 17:03

1 resposta

3

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 .

    
por 11.10.2017 / 18:25