Answers:
我发现虽然
echo user:password | chpasswd
适用于某些操作系统,但是某些操作系统(例如debian9,10)将显示错误,can not connect to /var/run/nscd/socket
因为它使用/etc/nsswitch.conf来确定密码的存储位置。
另一方面,该passwd
命令似乎不需要交互式shell,
(echo user; echo password) | passwd
适用于我在物理主机和容器中使用的各种操作系统(ubuntu xenial-bionic,debian9-10,centos75-76,coreos1855-2135)
/etc/password
包含用户帐户信息。/etc/shadow
包含加密的密码。我相信这些是唯一相关的文件。您可以通过手动编辑这些文件来更改密码,但这很麻烦。