chpasswd e openssl

3

Estou tentando passar uma senha MD5 para o chpasswd, mas parece que não funciona.

echo username:$(openssl passwd -1 -salt salt password)

Então eu tento passar isso para chpasswd para alterar a senha

echo 'username:$1$salt$aldkjflsfj' | /usr/sbin/chpasswd -e

No entanto, quando faço isso, a alteração da senha não parece ter efeito - /etc/shadow é atualizado, mas se eu tentar usar a senha, isso não funcionará.

Isso funciona:

echo username:password | /usr/sbin/chpasswd

passwd também funciona

Mais informações:

$ S=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1)
$ echo username:$(openssl passwd -1 -salt "$S" password)
 username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/
$ echo 'username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/' | chpasswd -e
$  grep username /etc/shadow
username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/:16722:0:99999:7:::
    
por 에이바 14.10.2015 / 21:12

1 resposta

2

Os argumentos devem ser citados, caso contrário, o shell valida caracteres especiais dentro desses argumentos:

echo "username:"$(openssl passwd -1 -salt "$salt" "$password")

Use aspas duplas aqui, que o shell avalia as variáveis.

Agora, o comando echo deve ser citado também:

echo 'username:$1$salt$aldkjflsfj' | ...

Use aspas simples aqui, porque os sinalizadores $ fazem parte da entrada e devem persistir.

Aviso : não recomendo alterar a senha como esta. Esses comandos e, portanto, as senhas simples, podem ser vistas nas listagens de ps e top , por exemplo. openssl tem um mecanismo para tais casos, para ler a senha de um arquivo.

    
por 14.10.2015 / 22:17