CentOS7密码复杂度配置

CentOS密码复杂度配置通过/etc/pam.d/system-auth文件中的pam_pwquality.so模块来实现。

首先查看/etc/pam.d/system-auth文件:

centos7mysql修改密码命令 centos7修改密码策略_root用户

pam_pwquality.so支持的部分选项如下:
retry=N:定义登录/修改密码失败时,可以重试的次数
minlen=N:新密码的最小长度
dcredit=N:当N>0时表示新密码中数字出现的最多次数;当N<0时表示新密码中数字出现最少次数;
ucredit=N: 当N>0时表示新密码中大写字母出现的最多次数;当N<0时表示新密码中大写字母出现最少次数;
lcredit=N: 当N>0时表示新密码中小写字母出现的最多次数;当N<0时表示新密码中小写字母出现最少次数;
ocredit=N:当N>0时表示新密码中特殊字符出现的最多次数;当N<0时表示新密码中特殊字符出现最少次数;
maxrepeat=N:拒绝包含多于N个相同连续字符的密码。默认值为0表示禁用此检查
maxsequence=N:拒绝包含长于N的单调字符序列的密码。默认值为0表示禁用此检查。实例是’12345’或’fedcb’。除非序列只是密码的一小部分,否则大多数此类密码都不会通过简单检查。
enforce_for_root: 如果用户更改密码是root,则模块将在失败检查时返回错误。默认情况下,此选项处于关闭状态,只打印有关失败检查的消息,但root仍可以更改密码。不要求root用户输入旧密码,因此不会执行比较旧密码和新密码的检查

接下来修改system-auth文件,配置密码复杂度策略。

[root@localhost ~]# vi /etc/pam.d/system-auth

在system-auth文件中 pam_pwquality.so后添加minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1

参数含义:密码长度最小为8位,数字出现的最少次数为2次,大写字母出现最少1次,小写字母出现最少1次,特殊字符出现最少1次

centos7mysql修改密码命令 centos7修改密码策略_特殊字符_02

centos7mysql修改密码命令 centos7修改密码策略_linux_03

新建一个test账户,使用root账户设置test账户的密码为test,密码修改成功。(证明root账户不受pam认证规则的限制)

然后切换到test账户设置test账户的密码。

centos7mysql修改密码命令 centos7修改密码策略_centos7mysql修改密码命令_04

后面的是指:

抱歉,密码不匹配。

新密码:

密码错误:密码无法通过字典检查-太简单/系统化

限制root用户:

vi /etc/pam.d/system-auth

在sysstem-auth文件中pam_pwquality.so行添加enforce_for_root

centos7mysql修改密码命令 centos7修改密码策略_centos7mysql修改密码命令_05

然后测试是否root被限制,也要遵守密码复杂度策略
用root账户设置test账户密码为Pw12qwer

centos7mysql修改密码命令 centos7修改密码策略_特殊字符_06

报错提示特殊字符少于1位,说明root用户已经被限制,也要遵守pam认证规则。