Для изменения пароля я могу выполнить следующее
echo "user:$npasswd" | chpasswd.
... но после выполнения этого это просит, чтобы я ввел текущий пароль.
Существует ли способ автоматически предоставить ему текущий пароль?
как пользователь:
$ 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
как корень:
root@schijfwereld:~# echo "rinzwind:1" | /usr/sbin/chpasswd
root@schijfwereld:~#
Необходимо сделать это как "корень". Любой другой метод, конечно, попросит текущий пароль. Это была бы проблема безопасности, если Вы могли бы изменить его
Когда Вы делаете это как "корень", это также принимает короткие пароли, как Вы видите. Установка "1" как пароль не позволяется по умолчанию от нормальной подсказки.
Можно сделать
$ echo -e "1\naaaabbbb\naaaabbbb" | passwd rinzwind
где 1 старый пароль, и aaaabbbb является новым паролем. Поток passwd: старый пароль, войдите, новый пароль, войдите, новый пароль. Следите за этим, пароль видим (если только в течение краткого момента) в processlist.