Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux “得到错误”;密码不匹配";在docker中使用passwd_Linux_Docker_Passwd - Fatal编程技术网

Linux “得到错误”;密码不匹配";在docker中使用passwd

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:

我想在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: 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
允许您直接指定密码。