我想在 Docker 中创建一个具有 FTP 随 secret 码的用户。 Dockerfile 的部分如下所示:
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 在哪里?
已解决,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`
谢谢大家,新年快乐~
最佳答案
您不应该以创造性的方式使用passwd
,而应该查看它的 manual page ,其中在“另请参阅”部分中提到了 chpasswd
。
passwd
命令用于交互式使用,它不像大多数其他程序那样读取其输入,因为输入不会回显到屏幕上。
关于linux - 在 docker 中使用 passwd 出现错误 "passwords do not match",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59550954/