Ich habe ein Skript, das auf dem Host ausgeführt wird und einen Docker-Container erstellt / startet / stoppt. Ich möchte, dass das Skript das Kennwort des Root-Benutzers im Container ändert.
Da der Container ein SSH-Server ist, habe ich versucht:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
aber es funktioniert nicht. Bevor ich fortfahre und mehr Zeit mit dem Debuggen verbringe, möchte ich wissen, ob es einen intelligenteren Weg gibt, dies zu tun.
Ich verstehe, dass der richtige "Docker-Weg" darin besteht, ein Skript zu erstellen, das von der Docker-Datei ausgeführt wird, das das Kennwort von einem freigegebenen Volume abruft und es als Root-Kennwort festlegt. Das klingt kompliziert, aber ich weiß, wie es geht und funktioniert gut für ein anderes Docker-Image, das ich verwende. Aber ich möchte es nicht für diesen tun.
Ich brauche nur einen Befehl, der Docker oder ssh verwendet, um das Passwort eines Benutzers nicht interaktiv zu ändern.
echo username:newpassword | chpasswd
Dies hat nichts mit Docker zu tun. Sie müssen ausdrücklich angeben,
passwd
dass Sie das Kennwort von angeben möchtenstdin
.quelle
--stdin
wurde auf neueren Linux-Systemen abgeschrieben. Verwenden Siechpasswd
stattdessen:echo username:newpassword | chpasswd
Dies funktioniert einwandfrei unter Ubuntu 14.04.4 LTS:
Fügen Sie in dem Skript, das den Container neu erstellt (der auf dem "Host" ausgeführt werden soll), die folgenden Zeilen hinzu:
quelle
usermod
als es zu verwendenpasswd
.