解决CentOS7用户管理报错问题:密码设为Aa12345@时报错,为什么Bji230309@可以而Aa12345@不行?

场景:

早上博友(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以前版本

  1. 一个是在/etc/login.defs文件,里面几个选项
    PASS_MAX_DAYS 90 #密码最长过期天数
    PASS_MIN_DAYS 80 #密码最小过期天数
    PASS_MIN_LEN 10 #密码最小长度
    PASS_WARN_AGE 7 #密码过期警告天数
  2. 另外一个方法是,修改/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用户输入旧密码,因此不会执行比较旧密码和新密码得检查

密码复杂性原则:数字,大写,小写,特殊字符

参考资料:

Linux下PAM模块学习总结

正确设置linux密码复杂度_农业常识_商讯网

系统是否有后门?Linux安全加固之PAM知多少_思快奇的博客-CSDN博客

Centos7安全实践之用户密码管理 - 百度文库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenGd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值