Na versão atual do Raspian, eu sei que é possível alterar a senha do usuário conectado atual na linha de comando da seguinte maneira:
sudo passwd
que solicitará ao usuário que digite uma nova senha duas vezes. Isso produzirá saída da seguinte forma:
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Eu queria saber se existe uma maneira possível de alterar uma senha programaticamente, como em um script de shell.
Estou tentando criar um script de configuração para implantar nos meus Raspberry Pis e não quero digitar manualmente novas senhas para eles.
sudo
. Se você usarsudo
, poderá forçar uma nova senha para qualquer usuário sem precisar saber a senha atual do usuário.expect(1)
poderia ajudar também.Respostas:
Você está procurando o
chpasswd
comando. Você faria algo assim:Observe que ele precisa ser executado como root, pelo menos com a configuração padrão do PAM. Mas, presumivelmente, executar como root não é um problema para um script de implantação do sistema.
Além disso, você pode fazer vários usuários ao mesmo tempo, alimentando várias linhas de entrada.
fonte
Outra alternativa é usar o
yes
comando no seu script.Isto irá enviar
newpassword
para opasswd
comando parayouruser
.Deve-se mencionar que definir / modificar senhas de usuários por meio de scripts pode apresentar riscos à segurança e deve ser evitado sempre que possível.
EDITAR:
Esta resposta requer acesso root. Desculpas por não mencionar isso anteriormente. É um método que eu uso ao executar tarefas de administração que exigem acesso root.
fonte
passwd
leitura emstdin
vez de um terminal (teclado), como isso funciona quandopasswd
solicita primeiro a senha antiga do usuário e depois solicita a nova?youruser
no final). Pode funcionar em algum lugar ...passwd
comando dos utilitários de sombra do Linux aceita entrada redirecionada (diferente de, por exemplo, o OpenSSHssh
). Usaryes
não é uma boa ideia: ela expõe a senha aos bisbilhoteiros que olham a lista de processos na hora errada. O usoecho
não teria esse defeito porque é um shell embutido.