Eu tenho um script que é executado no host e cria / inicia / para um contêiner de docker. Eu gostaria que o script alterasse a senha do usuário root dentro do contêiner.
Como o contêiner é um servidor ssh, tentei:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
mas não funciona. Antes de seguir em frente e gastar mais tempo depurando, gostaria de saber se existe uma maneira mais inteligente de fazer isso.
Entendo que a "maneira do docker" adequada é criar um script que seja executado pelo Dockerfile, que extrai a senha de um volume compartilhado e a define como a senha raiz. Isso parece complicado, mas eu sei como fazê-lo e funciona bem para outra imagem do docker que eu uso. Mas não quero fazer isso por este.
Eu só preciso de um comando que use o Docker ou o ssh para alterar a senha de um usuário de maneira não interativa.
echo username:newpassword | chpasswd
Isso não está relacionado ao Docker. Você precisa dizer explicitamente
passwd
que fornecerá a senha destdin
.fonte
--stdin
foi depreciado em sistemas Linux mais recentes. Emchpasswd
vez disso, use :echo username:newpassword | chpasswd
Isso funciona perfeitamente no Ubuntu 14.04.4 LTS:
No script que reconstrói o contêiner (que deve estar em execução no "host"), adicione estas linhas:
fonte
usermod
vez depasswd
.