Como você altera uma senha de usuário em um script com o BusyBox e o OpenSSL?
-
20-09-2019 - |
Pergunta
Preciso sincronizar uma conta de usuário e senha com uma fonte externa em um sistema com Busybox e OpenSSL instalado. Quando a fonte externa diz ao meu sistema para atualizar as credenciais, como altero a senha do usuário em um script? Terei a senha em texto simples.
Isso deve ser automatizado e, pelo que posso dizer, o BusyBox Passwd é interativo e não quero escrever um script de expectativa para o passagem, se isso for possível. Parece que o OpenSSL pode gerar hashes de senha (OpenSSL Passwd -1 -Salt "abcdefgh" {senha}), mas terei que modificar /etc /sombra diretamente?
Busybox tem esses comandos disponíveis.
Solução
Você pode escrever um pequeno script como este para atualizar a senha. Coloque o seguinte texto em um arquivo e execute -o. Isso mudará sua senha.
#!/bin/sh
passwd << eof
u003Cold password>
u003Cnew password>
u003Cnew password>
Eof
Outras dicas
Acontece que as versões atuais do BusyBox têm Chpasswd (Código fonte). Chpasswd pega um nome de usuário do par de cólon: senha no stdin. Não sei se posso atualizar o BusyBox no meu sistema, mas deixarei essa resposta caso alguém venha procurar.
Da documentação do BusyBox:
chpasswd
chpasswd [--md5|--encrypted]
Read user:password from stdin and update /etc/passwd
Options:
-e,--encrypted Supplied passwords are in encrypted form
-m,--md5 Use MD5 encryption instead of DES