解决CentOS7用户管理报错问题
场景:
早上博友(CSDN博客朋友)给我发私信,问了一个问题:
CentOS7上面运行的项目,在用户管理添加新用户时,密码设置成Aa12345@时,会报错:Cannot read property 'message' of undefined。查看/etc/pam.d下的common-password文件,其中一条内容: password [success ok] pam_cracklib.so rejectusername minlen=8 difok=3 ucredit=0 lcredit=0 dcredit=0 ocredit=0。密码明明是按照这个策略来的啊,为什么设置成Bji230309@是可以的,设置成Aa12345@会报错呢?
猜测:
根据经验,猜测是不能设置连续字符
Linux密码复杂度设置 一、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时表示新密码中数字出现得最多次数;当N0时表示新密码中大写字母出现得最多次数;当N0时表示新密码中小写字母出现得最多次数;当N0时表示新密码中特殊字符出现得最多次数;当N