未安装的话需要先装个软件,来管理密码强度
sudo apt install libpam-cracklib
1 修改旧密码的强度
$ sudo vi /etc/pam.d/common-password
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 remember=5
# 在对应行后边加上 remember=5,意思是5次之内的密码不能重复使用,5次之后才能设置之前用过的密码
# 在刚才那行上边新加一行
password requisite pam_cracklib.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
# 在对应行后后边添加一些参数,
# retry=3 表示可以输错3次 (默认参数 3)
# minlen 表示密码最短长度 (默认参数 8)
# difok=3 表示最少不同的字符(没太直观理解,默认参数3)
# ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 表示最少有一个大写字母,最少一个小写字母,最少一个数字,最少一个特殊字符
2 修改密码过期期限,但是好像这个只对新开的账户起作用
$ sudo vi /etc/login.defs
PASS_MAX_DAYS 360 # 一个密码的最长使用时间
PASS_MIN_DAYS 0 # 一个密码的最短使用时间,也就是两次密码之间的时间间隔多久
PASS_WARN_AGE 7 # 提前几天警告修改密码
3 查询某个账户的使用期限等信息
$ sudo chage -l xmodulo
Last password change : Jul 03, 2020
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
4 修改某个账户的期限信息
$ sudo chage -E 9/30/2020 -m 5 -M 360 -I 15 -W 14 kani
# 设置账户kani最小密码有效期5天,最大使用期限360天,密码过期后15天后失效,提前14天提醒
# 对应状态如下
$ sudo chage -l kani
Last password change : Jul 03, 2020
Password expires : Jun 28, 2021
Password inactive : Jul 13, 2021
Account expires : Sep 30, 2020
Minimum number of days between password change : 5
Maximum number of days between password change : 360
Number of days of warning before password expires : 14
5 -d 0 user
$ sudo chage -d 0 kani # -d 0 需要立刻修改密码
$ sudo chage -l kani
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 365
Number of days of warning before password expires : 7
6 -d 07/08/2020 user
$ sudo chage -d 07/05/2020 kani # 设置哪天密码过期(2020-7-5)
$ sudo chage -l kani
Last password change : Jul 05, 2020
Password expires : Jul 05, 2021
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 365
Number of days of warning before password expires : 7
# 注:
# 1 修改过后,Last password change和Password expires都会对应修改 2020.7.5 - 2021.7.5
# 2 修改-d是修改的Last password change,Password expires对应加Max的日子。适用于你想哪个账户指定期限内修改密码,又不想修改一个新密码的有效期限;
# 3 修改-M是指你修改密码有效期,当前用户无需修改密码,从当天算有效期后才用修改密码,不能起到约束当前用户短期内修改密码的效果;
# 4 如果之前没有密码期限之类的设置,可结合使用,-M设置有效期限,再-d设置哪天之前必须修改。一般一个新用户建立时会-d 0 让他首次登陆时就要修改密码
# 但是当你在设置的日期之前修改的话,就会更新为修改当天2020.7.4
$ sudo chage -l kani
Last password change : Jul 04, 2020
Password expires : Jul 04, 2021
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 365
Number of days of warning before password expires : 7