一行 linux sudo 更改密码

一行 linux sudo 更改密码

我需要用一行来更改密码,其中也包含 sudo。

我知道您可以像这样回显 sudo 密码:

echo "password" | sudo -S {command}

我可以像这样更改密码:

echo "user:passwd" | sudo chpasswd

我尝试了以下操作,但回声似乎没有正确执行:

echo "root_password" | echo "user:passwd" | sudo -S chpasswd

并且这有效但挂在提示上:

echo "root_password\nuser:passwd" | sudo -S chpasswd

正确执行该命令的正确组合是什么?

答案1

您必须使用嵌套外壳,因为您不能像那样堆叠管道:

echo "root_password" | sudo -S sh -c 'echo "user:passwd" | chpasswd'

保持echo "root_password" | sudo -S不变,唯一改变的是我们在 sudo 内部创建了一个新的 shell ( sh),它将字符串文字作为命令运行 ( -c 'echo "user:passwd" | chpasswd')。

答案2

只需使用echo password | sudo passwd --stdin username

相关内容