O usuário não pode efetuar login depois que eu configurei manualmente o hash MD5

1

Estou usando o Puppet para gerenciar senhas de usuários. (Sim, eu sei que o LDAP é melhor, mas me disseram que os superiores usam o Puppet.) Eu tenho essa classe que, quando executada como root, altera a senha do bob para "bobs_new_password". Deve idealmente solicitar uma nova senha quando bob a executa, mas eu devo poder adicionar essa funcionalidade mais tarde. Quando eu executo como root com puppet agent --test , ele diz que tudo corre bem e me notifica sobre o novo hash, então sei que ele foi configurado corretamente no arquivo /etc/shadow . No momento, estou trabalhando apenas com usuários de teste em VMs, por isso não estou preocupado com o risco de segurança de notificar o hash; essa linha será obviamente retirada para a versão de trabalho do código. O que eu tenho até agora é isso:

class pwdchange ($newpwd = 'bobs_new_password', $targetuser = "bob") {
  $temp = inline_template("<%= Digest::MD5.digest(scope.lookupvar('newpwd'))%>")
   $hashtypeidentifier = '$1$' #'$1' for MD5, '$6' for sha512.
   user {"$targetuser":
     ensure   => present,
     password => "${hashtypeidentifier}${temp}",
  }
   notify {"${temp}":}
}

No entanto, quando vou para ssh na VM como bob, nem a senha antiga nem a nova senha são aceitas. O que estou fazendo de errado? Por que não está aceitando senhas e o que posso fazer para corrigir isso?

    
por Seri 23.07.2013 / 16:04

1 resposta

3

As senhas MD5 no arquivo de sombra são do formato $1$salt$hash , não vejo sal em seu código.

Veja também Como gerar uma senha compatível com / etc / shadow para o Ubuntu 10.04?

Veja também a função crypt() do Ruby que gerará a string completa do arquivo shadow para você.

    
por 23.07.2013 / 16:14