第十八章 Linux系统用户密码管理
一、如何设置密码
管理员可以给任何用户设置密码 密码的长度没有限制
普通用户只能给自己设置密码 且是无规律的8位以上的密码
二、用户密码管理命令-passwd
1.含义
passwd命令来自于英文单词password的缩写,其功能适用于修改用户的密码值。同时也可以对用户进行锁定等操作,但需要管理员身份才可以执行。
常用格式:passwd [参数] 用户名
2.常用参数:
-d | 删除已有密码 |
---|---|
-l | 锁定用户的密码值,不允许修改 |
-u | 解锁用户的密码值,允许修改 |
-e | 下次登陆强制修改密码 |
-k | 用户在期满后能仍能使用 |
-S | 查询密码状态 |
3.常用示例
修改当前登录用户的密码值
[root@jindada ~]# passwd
Changing password for user root.
New password: 输入密码
Retype new password: 再次输入密码
passwd: all authentication tokens updated successfully.
修改指定用户的密码值
[root@jindada ~]# passwd user02
Changing password for user user02.
New password: 输入密码
Retype new password: 再次输入密码
passwd: all authentication tokens updated successfully.
锁定指定用户的密码值,不允许其进行修改
[root@jindada ~]# passwd -l user02
Locking password for user user02.
passwd: Success
解锁指定用户的密码值,允许其进行修改
[root@jindada ~]# passwd -u user02
Unlocking password for user user02.
passwd: Success
强制指定的用户在下次登陆时必须重置其密码
[root@jindada ~]# passwd -e user02
Expiring password for user user02.
passwd: Success
删除指定用户的密码值
[root@jindada ~]# passwd -d user02
Removing password for user user02.
passwd: Success
查看指定用户的密码状态:
[root@jindada ~]# passwd -S user02
user02 NP 2022-11-03 0 99999 7 -1 (Empty password.)
三、非交互式设置密码
[root@jindada ~]# echo '2' | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.
四、读取标准输入的数据命令-tee
1.含义
tee命令的功能是用于读取标准输入的数据,将其内容转交到标准输出设备中,同时保存成文件。
语法格式:tee [参数] 文件
2.常用参数:
-a | 追加写入操作 |
---|---|
-i | 忽略中断信号 |
— help | 查看帮助信息 |
— version | 显示版本信息 |
3.常用示例
将用户输入的数据同时写入到两个文件中
[root@jindada ~]# tee file1 file2
jindada.com
jindada.com
执行某个指定的命令,并将其执行结果即输出到屏幕,又写入到文件中
[root@jindada ~]# uptime | tee system.txt
16:13:43 up 1:38, 1 user, load average: 0.00, 0.00, 0.00
五、设置随机密码
1.获得随机数
[root@jindada ~]# echo $RANDOM
28241
[root@jindada ~]# echo $RANDOM | md5sum
6c8a1df9e12e9c553d0f9a397b860f4e -
[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10
64091f6823
[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10
df0676f775
2.设置密码
# 密码设置成功,但是不知道密码
[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.
3.设置随机密码并输出
[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt
b676039b3f
[root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.
[root@jindada ~]# cat pass.txt
7d53328b61
六、设置更复杂的密码-mkpasswd
1.含义
mkpasswd是make password的简写。mkpasswd命令的作用是可以生成应用用户的新密码,选择将其应用于用户。
mkpasswd命令使用前需要安装expect包。
语法格式:mkpasswd [参数] [用户]
2.安装
[root@jindada ~]# yum install -y expect
3.常用参数
-c | 定义在密码中小写字母字符的最小数目,默认值是2 |
---|---|
-C | 定义在密码中大写字母字符的最小数目,默认值是2 |
-s | 定义在密码中特殊字符的最小数目,默认值是1 |
-p | 指定程序来设置密码。默认情况下,如果存在使用/etc/yppasswd,否则使用/bin/passwd |
-d | 指定数字位数,默认值是2 |
-l | 指定的密码位数,默认值为9 |
-v | 导致密码设置互动可见 |
4.常用示例
生成随机密码同时制定长度为20
[root@linuxcool ~]# mkpasswd -l 20
生成指定数字位数的密码
[root@linuxcool ~]# mkpasswd -d 3
为用户更改随机密码
[root@jindada ~]# mkpasswd
gC}2atTf9
[root@jindada ~]# mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6
sv_^WF85J@DF5Ng5|3{f3/ng
[root@jindada ~]# mkpasswd -l 24
9px3Sesrx[ybtbvElubxxltj
[root@jindada ~]# mkpasswd -l 24
uimYw\Z4amzffhti0eljucgg
[root@jindada ~]# mkpasswd -l 24 -s 24
impossible to generate 24-character password with 2 numbers, 2 lowercase letters, 2 uppercase letters and 24 special characters.
[root@jindada ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0
$.$}+?;-~]|)>(#_),[)!#@$
[root@jindada ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0 | tee pass.txt | passwd --stdin jindada01
Changing password for user jindada01.
passwd: all authentication tokens updated successfully.
[root@jindada ~]# cat pass.txt
:{]~"/'%[,+"^*%??%,'?}~$