Alterar senha de root via script falha, mas relata sucesso

2

Eu tenho um projeto que requer que eu faça um script / seqüência de comandos para alterar a senha do root em uma instalação do CentOS 7.

Eu posso supor que o usuário que estará executando o script já é root.

Atualmente, estou usando o seguinte e recebendo uma mensagem de sucesso:

[root@localhost]# echo -e ‘password\npassword’ | (passwd --stdin root)
Changing password for user root.
passwd: all authentication tokens updated successfully.

No entanto, isso não altera a senha. Após uma inspeção adicional (configuração manual da senha), percebo que a senha password falha na verificação do dicionário, mas ainda relata sucesso no final:

[root@localhost]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.

Uma solução possível é testar a hashing da senha fornecida com base no método e no sal fornecido em /etc/shadow , mas eu gostaria de evitar uma solução excessivamente complicada. Eu também poderia verificar se o valor em /etc/shadow realmente mudou, mas isso ignora o caso em que a senha é definida para o que já era, o que eu gostaria de apoiar.

Alguém tem uma sugestão de tentar validar a senha antes de configurá-la, ou, de preferência, obter a saída FULL de passwd ?

    
por example6 10.10.2016 / 21:03

2 respostas

3

Ao usar passwd --stdin , você só precisará enviar a senha uma vez. Então a versão correta é

echo password | passwd --stdin

Se o seu exemplo de código é preciso então (a) você tem aspas inteligentes quando você precisa de cotações diretas e (b) a senha provavelmente está sendo definida para algo como 'password \ npassword' (possivelmente com citações inteligentes lado).

    
por 10.10.2016 / 21:34
0

Fazer as coisas funcionarem com o comando passwd é impressionante, já que tradicionalmente é interativo e difícil de automatizar. (Sim, para a geração do gnu, por torná-lo relativamente indolor.) Mas se você está fazendo automação, por que não usar comandos que são mais amigáveis à automação, como chpasswd ?

echo root:password | chpasswd

fará o que você está fazendo acima. E se você quiser fazer 50 de uma só vez, basta enviar mais linhas de username:password .

    
por 14.10.2016 / 02:35