在 docker 中使用密码时出现错误 "passwords do not match"

Got error "passwords do not match" using passwd in docker

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

RUN useradd web
RUN export ftppass=`cat /proc/sys/kernel/random/uuid`
RUN echo -e "$ftppass\n$ftppass" | passwd web

但是我在最后一行得到了一个错误:

New password: Retype new password: Sorry, passwords do not match.
passwd: Authentication token manipulation error
passwd: password unchanged

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


更新:

我发现 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 : ...

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


已解决,Docker文件的新部分是:

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`

谢谢大家,新年快乐~

与其创造性地使用 passwd,不如看看它的 manual page,它在“另见”部分提到了 chpasswd

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