一、CentOS 7以前版本 一个是在/etc/login.defs文件,里面几个选项 PASS_MAX_DAYS 90 #密码最长过期天数 PASS_MIN_DAYS 80 #密码最小过期天数 PASS_MIN_LEN 10 #密码最小长度 PASS_WARN_AGE 7 #密码过期警告天数 另外一个方法是,修改/etc/pam.d/system-auth文件 找到 password requisite pam_cracklib.so这么一行替换成如下: password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict 不需要在pw_dict后面加.pwd,因为默认会带的。 #修改密码,可以重试的次数 retry=5 #与旧密码不同的字符个数 difok=3 #新密码最小长度 minlen=8 #数字个数。大于0,最多;小于0,最少 dcredit=-3 #大写字母个数。大于0,最多;小于0,最少 ucredit=-2 #小写字母个数。大于0,最多;小于0,最少 lcredit=-4 #特殊字符个数。大于0,最多;小于0,最少 ocredit=-1 参数含义: retry:尝试次数为5 difok:最少不同字符为3 minlen:最小密码长度为10 ucredit:最少大写字母为1 lcredit:最少小写字母为3 dcredit:最少数字:3 dictpath:密码字典位置为 /usr/share/cracklib/pw_dict 或/etc/security/pwquality.conf文件来控制 这样设置好,你可以做一下测试,不过需要先退出root,因为root用户并不会受这些限制(默认不限制,可以设置enforce_for_root,这样root也会限制),它可以设置任意的密码。 二、Centos7版本 CentOS密码复杂度配置通过/etc/pam.d/system-auth文件中的pam_cracklib.so模块来实现。 首先查看/etc/pam.d/system-auth文件, 可以看到当前并没有看到pam_cracklib.so模块,查找资料发现 pam_pwquality.so:可以用来检验密码的强度!包括密码是否在字典中,密码输入几次都失败就断掉此次联机等功能,都是这模块提供的!最早之前其实使用的是 pam_cracklib.so模块,后来改成pam_pwquality.so这个模块,但此模块完全兼容于pam_cracklib.so,同时提供了/etc/security/pwquality.conf 这个文件可以额外指定默认值,比较容易处理修改。 pam_pwquality.so是兼容pam_cracklib.so模块的,所以pam_cracklib.so的选项也适用于pam_pwquality.so pam_cracklib.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用户输入旧密码,因此不会执行比较旧密码和新密码的检查 密码复杂性原则:数字,大写,小写,特殊字符