Linux “得到错误”;密码不匹配";在docker中使用passwd
我想在Docker中创建一个具有FTP随机密码的用户。Dockerfile的部分如下所示:Linux “得到错误”;密码不匹配";在docker中使用passwd,linux,docker,passwd,Linux,Docker,Passwd,我想在Docker中创建一个具有FTP随机密码的用户。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:
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
,不如看看its,它在另见一节中提到了chpasswd
passwd
命令用于交互使用,它不像大多数其他程序那样读取输入,因为输入不会回显到屏幕上。与其创造性地使用passwd
,不如看看它,它在另见一节中提到了chpasswd
passwd
命令用于交互使用,它不像大多数其他程序那样读取输入,因为输入不会回显到屏幕上。您是否在没有管道的情况下运行echo命令来测试它回显的内容?下划线和反斜杠可能会使shell很难在没有大括号分隔的情况下识别变量名的结尾。我只是猜测手边没有shell,心里想着新年快乐。你应该使用带有格式字符串的pnintf
,比如printf“%s\n'$ftppass”“$ftppass”
。但我支持罗兰的答案;不要在脚本中使用passwd
。Unix/Linux问题应该与编程相关。我建议访问。您是否在没有管道的情况下运行echo命令来测试它的回声?下划线和反斜杠可能会使shell很难在没有大括号分隔的情况下识别变量名的结尾。我只是猜测手边没有shell,心里想着新年快乐。你应该使用带有格式字符串的pnintf
,比如printf“%s\n'$ftppass”“$ftppass”
。但我支持罗兰的答案;不要在脚本中使用passwd
。Unix/Linux问题应该与编程相关。我建议访问。实际上useradd
允许您直接指定密码。实际上useradd
允许您直接指定密码。