Вопрос: Как я могу установить пароль root в контейнере докера из сценария?


У меня есть сценарий, который запускается на хосте и создает / запускает / останавливает контейнер докеров. Я хотел бы, чтобы сценарий изменил пароль пользователя root в контейнере.

Поскольку контейнер является ssh-сервером, я попытался: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

но это не сработает. Прежде чем идти вперед и тратить больше времени на отладку, я хотел бы знать, есть ли более разумный способ сделать это.

Я понимаю, что правильный «путь докеров» заключается в том, чтобы создать скрипт, выполняемый файлом Docker, который вытаскивает пароль из общего тома и устанавливает его как пароль root. Это звучит сложно, но я знаю, как это сделать и хорошо работает для другого изображения докеров, которое я использую. Но я не хочу этого делать.

Мне просто нужна команда, которая использует Docker или ssh для изменения пароля пользователя не интерактивно.


7
2018-04-27 09:16


Источник




Ответы:


Это не связано с Докером. Вы должны прямо сказать passwd что вы будете предоставлять пароль от stdin,

echo 'newpassword' |passwd root --stdin

3
2018-04-27 09:28



Спасибо за ввод. Однако -stdin не поддерживается на ubuntu. Это не работает. - Chris
--stdin был обесценен на новых Linux-системах. использование chpasswd вместо: echo username:newpassword | chpasswd - unblevable


PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

откроет всплывающее окно, попросит пароль и вернет его. В скрипте нет пароля


1
2018-03-16 09:06





Это безупречно работает на Ubuntu 14.04.4 LTS:

В скрипте, который перестраивает контейнер (который должен быть запущен на «узле»), добавьте следующие строки:

$PASS='<a-good-password>'
echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd

0
2018-06-04 10:54



Ввод фактического пароля в сценарий - очень неуверенный способ обработки паролей. Было бы гораздо безопаснее поставить корректный хэшированный пароль в скрипт и использовать usermod скорее, чем passwd, - kasperd
Хороший момент, спасибо. В этом случае я в порядке с риском, поскольку это всего лишь контейнер для докеров, который делает очень мало вещей. Если кто-то может прочитать скрипт, он уже владеет остальной частью сервера. Я буду помнить об этом в следующий раз, хотя :). - Chris