在 docker 中使用 passwd 出现错误“密码不匹配”

pea*_*nut 1 linux passwd docker

我想在 Docker 中为 FTP 创建一个具有随机密码的用户。Dockerfile 的部分如下所示:

RUN useradd web
RUN export ftppass=`cat /proc/sys/kernel/random/uuid`
RUN echo -e "$ftppass\n$ftppass" | passwd web
Run Code Online (Sandbox Code Playgroud)

但我在最后一行出现错误:

New password: Retype new password: Sorry, passwords do not match.
passwd: Authentication token manipulation error
passwd: password unchanged
Run Code Online (Sandbox Code Playgroud)

为什么即使我使用相同的变量密码也不匹配?


更新:

我发现输出echo -e "$ftppass\n$ftppass"是:

Step 9/15 : RUN echo -e "$ftppass\n$ftppass"
 ---> Running in ddd97df41d85
-e

Removing intermediate container ddd97df41d85
 ---> a64b606ea898
Step 10/15 : ...
Run Code Online (Sandbox Code Playgroud)

为什么它不适用于echo -e我的 $ftppass 在哪里?


已解决,Dockerfile新增部分为:

RUN useradd web
RUN cat /proc/sys/kernel/random/uuid > /etc/vsftp-password
RUN echo "web:"`cat /etc/vsftp-password` | chpasswd
RUN echo "ftp info web:"`cat /etc/vsftp-password`
Run Code Online (Sandbox Code Playgroud)

谢谢大家,新年快乐~

Rol*_*lig 5

与其passwd以创造性的方式使用,不如查看它的手册页chpasswd在另请参阅部分中提到。

passwd命令用于交互式使用,它不像大多数其他程序那样读取其输入,因为输入不会回显到屏幕上。

  • 实际上“useradd”可以让您直接指定密码。 (2认同)