Ubuntu中使用xargs修改vtm用户密码失败,求解决方法
问题分析与解决
你的命令失败的核心原因是**xargs -n1的参数拆分逻辑完全不符合passwd的使用方式**:
printf "vtm abcd12345 abcd12345"输出的内容会被xargs按空格拆成3个独立参数,然后依次执行passwd vtm、passwd abcd12345、passwd abcd12345。passwd默认是交互式工具,指定用户名后需要在终端手动输入两次密码,无法通过这种拆分参数的方式接收密码;后面两次调用passwd abcd12345更是错误的,因为abcd12345不是合法用户名。
正确的解决方案
方法1:用chpasswd(推荐,专门用于非交互式修改密码)
chpasswd接收用户名:密码格式的输入,是批量/非交互式修改密码的标准工具,命令如下:
echo "vtm:abcd12345" | sudo chpasswd
或者用printf:
printf "vtm:abcd12345\n" | sudo chpasswd
方法2:用passwd --stdin(部分Ubuntu版本支持)
如果一定要用passwd,可以通过--stdin选项让它从标准输入读取密码(需要输入两次密码,用换行分隔):
echo -e "abcd12345\nabcd12345" | sudo passwd --stdin vtm
注意:所有修改用户密码的操作都需要root权限,所以必须加上
sudo(如果当前已是root用户可省略)。
内容的提问来源于stack exchange,提问作者Vitamin
相关产品推荐
相关产品推荐

