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 》编写了以下程序用于非交互式修改密码:
编译:
gcc -g change_password.c -o change_password -lcrypt
运行:
./change_password root 123456
参考: