CentOS7/RHEL7 开始使用pam_pwquality模块进行密码复杂度策略的控制管理。pam_pwquality替换了原来Centos6/RHEL6中的pam_cracklib模块,并向后兼容。
使用pam_pwquality模块设置密码复杂度
可以通过两种方式实现:
- 直接指定pam_pwquality模块参数,即在/etc/pam.d/system-auth中的“password requisite pam_pwquality.so”行尾添加具体参数,比如“minlen=16 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1”,表示最小密码长度16位,数字,大小写字母,特殊字符均至少包含1位。
- 通过修改/etc/security/pwquality.conf参数文件,定义密码复杂度规则。修改pwquality.conf参数文件有2种方法,可以参考“CentOS7 设置密码规则” by shaonbean。
(1)直接vi或vim编辑器 ,或者甚至用sed命令,修改/etc/security/pwquality.conf
(2)使用authconfig命令修改,修改后最终会体现在/etc/security/pwquality.conf文件中
centos7如何继续使用pam_cracklib模块检验密码复杂度
由于Centos7默认取消了对pam_cracklib模块的使用,配置文件/etc/pam.d/system-auth中没有pam_cracklib.so相关的条目。
有同学直接在/etc/pam.d/system-auth文件末尾添加“password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=16 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1” ,然后发现实际上密码复杂度策略并没有生效。
经测试是因为位置不对,把上面的语句添加在“pam_pwquality.so”所在行的前面,即可使策略生效。如下所示:
参考
(1)pam_pwquality(8) - Linux man page