linux - 在 docker 中使用 passwd 出现错误 "passwords do not match"

标签 linux docker passwd

我想在 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/

相关文章:

linux - 将所有以逗号分隔的单词放在新行中

java - 使用 JAVA 更改 UNIX 密码

java - 无法从 PHP 的 exec 运行 java

linux - 我如何从 bar 0 读取数据,从用户空间,在 linux 的 pci-e 卡上?

linux - 从邮件头解析发件人原始IP的Perl脚本

nginx - 解析 HTTP 404 响应正文时出错 : invalid character '<' looking for beginning of value docker

android - Gradle依赖关系下载Jars

docker - 用于批处理作业的 swarm、kubernetes 或 mesos

ubuntu - 在 Linux Snappy Ubuntu Core 上更改密码

linux - 无法在装载/etc/passwd 和/etc/shadow 的docker 容器中添加新用户