一般个别机器的用户密码进行修改时,敲入passwd,然后以不在屏幕回显的方式进行密码的录入。
[root@localhost ~]# passwd ftpuser
Changing password for user ftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
但是如果有比较多的机器或者大量用户需要批量修改密码时,为了提高效率,会使用利用以下方式进行修改:
[root@localhost ~]# echo ftpuser:Redhat123 |chpasswd
但是这种方式存在一个问题,就是如果使用history命令式会看到之前输入的密码,存在密码泄露的风险,必须考虑使用密文的方式进行修改。这里要利用/etc/shadow这个文件。在/etc/passwd中,x这个位置表示用户的密码位,但是这个密码并不可见。
[root@localhost ~]# cat /etc/passwd|grep ftpuser
ftpuser:x:1000:1000::/home/ftpuser:/bin/bash
然后再看看对应的/etc/shadow中,ftpuser这个用户的信息:
[root@localhost ~]# cat /etc/shadow|grep ftpuser
ftpuser:$6$rdkOY207Kw/eaApV$UtSr5upgOaU7X9Dgl6LSy8JXUEvltzwBPEBDbAx4zam2tjZTLL3jLTalCTtyRZPr4hqFVHWcNrdMMeCDWMlCG1:17954:0:99999:7:::
在第一个和第二个冒号之间的这一串,就是加密以密文显示的密码。所以下面要做的就是先设置一个密码,然后复制密文密码进行批量修改。
修改方式这里提供两种(注意:密文密码要用单引号扩起来)
1、usermod -p '$6$0Y95Q88/$l6zZ3NdC6JEzV5AJBMkD.RjM3S3Vr27sAUPtD0vSxV1QWSk0wtvvE4KUrhsFpDHyFe050uYWJMAugDlEQlc5j.' ftpuser
命令行敲入usermod -h就能理解-p参数的作用了
2、echo ftpuser:'$6$0Y95Q88/$l6zZ3NdC6JEzV5AJBMkD.RjM3S3Vr27sAUPtD0vSxV1QWSk0wtvvE4KUrhsFpDHyFe050uYWJMAugDlEQlc5j.' |chpasswd -e
(-e参数必须要有)
参考文档:
https://blog.csdn.net/snlying/article/details/6130468
另外特别感谢马哥的wiki ?