Mam skrypt, który działa na hoście i tworzy / uruchamia / zatrzymuje kontener dokera. Chciałbym, aby skrypt zmienił hasło użytkownika root w kontenerze.
Ponieważ kontener jest serwerem ssh, próbowałem:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
ale to nie działa. Zanim przejdę do przodu i poświęcę więcej czasu na debugowanie, chciałbym wiedzieć, czy jest na to mądrzejszy sposób.
Rozumiem, że właściwym „sposobem dokera” jest utworzenie skryptu uruchamianego przez plik Docker, który pobiera hasło ze wspólnego woluminu i ustawia je jako hasło roota. Brzmi skomplikowanie, ale wiem, jak to zrobić i działa dobrze w przypadku innego obrazu dokera, którego używam. Ale nie chcę tego robić w tym przypadku.
Potrzebuję tylko polecenia, które używa Dockera lub ssh do zmiany hasła użytkownika w sposób nieinteraktywny.
echo username:newpassword | chpasswd
To nie jest związane z Dockerem. Musisz wyraźnie powiedzieć,
passwd
że podasz hasłostdin
.źródło
--stdin
został amortyzowany na nowszych systemach Linux.chpasswd
Zamiast tego użyj :echo username:newpassword | chpasswd
Działa to bezbłędnie na Ubuntu 14.04.4 LTS:
W skrypcie, który odbudowuje kontener (który powinien być uruchomiony na „hoście”), dodaj następujące linie:
źródło
usermod
zamiastpasswd
.