linux非交互方式修改用户密码

linux下的 passwd 命令是交互式运行的(密码需要由用户使用键盘输入),后台程序如果要改用户密码需要一定的技巧。

如:以下命令可以将 root 帐号的密码改为 123456

(echo '123456'; sleep 1; echo '123456') | passwd 'root' > /dev/null

但是,此时也不好判断密码是否改成功了,需要验证一下。

linux 系统的密码编码(不可逆)后存储在 /etc/shadow(以前是 /etc/passwd) 文件里。

参考文章《Check Linux user password in C 》编写了以下程序用于非交互式修改密码:

change_password.c

编译:

gcc -g change_password.c -o change_password -lcrypt

运行:

./change_password root 123456

参考:


linux