如何自动更改旧密码

nit*_*981 4 password

要更改密码,我可以运行以下命令

echo "user:$npasswd" | chpasswd. 
Run Code Online (Sandbox Code Playgroud)

...但执行此操作后,它要求我输入当前密码。

有没有办法自动提供当前密码?

Rin*_*ind 5

作为用户:

$ echo "rinzwind:2" | chpasswd
Changing password for rinzwind.
chpasswd: (user rinzwind) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user rinzwind) password not changed
Run Code Online (Sandbox Code Playgroud)

作为根:

root@schijfwereld:~# echo "rinzwind:1" | /usr/sbin/chpasswd
root@schijfwereld:~# 
Run Code Online (Sandbox Code Playgroud)

您需要以“root”身份进行操作。当然,任何其他方法都会要求提供当前密码。如果您可以更改它,那将是一个安全问题

当您以“root”身份执行此操作时,它也接受短密码,如您所见。默认情况下,正常提示中不允许将“1”设置为密码。

你可以做

$ echo -e "1\naaaabbbb\naaaabbbb" | passwd rinzwind
Run Code Online (Sandbox Code Playgroud)

其中 1 是旧密码,aaaabbbb 是新密码。passwd的流程是:旧密码,回车,新密码,回车,新密码。请注意密码在进程列表中是可见的(如果只是短暂的)。