通常,要养成定期修改操作系统用户密码的习惯,一般我们用passwd username这样的命令来进行密码修改,但是如此一来就要进入交互模式进行修改:
如图:
那么对于利用脚本更改密码的情况,反而因为交互模式而变得不简洁,所以要用另一种方式避开交互模式:
第一种:
echo "newpasswd" | passwd --stdin username
优点:方便快捷
缺点:如果你输入的指令能被别人通过history或者其它方式捕获,那么这样就是不安全的,而且,如果新密码同时含有单引号和双引号,那么就无法通过这种方式进行修改。
第二种:
chpasswd - update passwords in batch mode
- chpasswd 是一个批量更新用户口令的命令
- chpasswd 会从标准输入批量读取成对的用户名和密码,并使用这些信息来更新现有的一组
用户 - 从标准输入读取的每行数据格式应为 username:password 即用户名和密码用冒号分隔开
- 默认情况下所提供的密码必须是明文,并通过chpasswd进行加密
- chpasswd 首先在内存中更新密码,在没有任何错误的情况下才会将更改的密码更新到磁盘中
- chpasswd 的应用场景主要是在一个比较大的系统环境下,同一时间创建了多个用户的情况
- 默认的加密算法可以通过修改/etc/login.defs中ENCRYPT_METHOD变量的值(默认值SHA512),可以通过-e,-m,-c选项覆盖默认的加密算法
基本使用:
[root@prenv ~]# useradd chtest
[root@prenv ~]# chpasswd
chtest:123456
[root@prenv ~]# echo "chtest:123456" > passwd.txt
[root@prenv ~]# chpasswd < passwd.txt