博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 密码复杂度
阅读量:6202 次
发布时间:2019-06-21

本文共 1611 字,大约阅读时间需要 5 分钟。

 我们在使用linux系统设置密码的时候,经常遇到这样的问题,系统提示:您的密码太简单,或者您的密码是字典的一部分。那么系统是如何实现对用户的密码的复杂度的检查的呢?

系统对密码的控制是有两部分(我知道的)组成:
1 cracklib
2 login.defs
声明:login.defs主要是控制密码的有效期。对密码进行时间管理。此处不细谈。
login.defs --shadow password suite configuration
pam_cracklib.so 才是控制密码复杂度的关键文件。
redhat公司专门开发了cracklib这个安装包来判断密码的复杂度。
可以rpm -ql cracklib查看。
密码的复杂度的判断是通过pam模块控制来实现的,具体的模块是pam_cracklibpam_cracklib 的参数介绍:

debug

    该选项使用模块将信息写入到日志(3)来指示组件的行为(这个选项不会记录密码信息到日志文件)。

type=XXX

    默认的操作是为模块,当请求密码时,该模块默认操作是使用以下提示:“新的UNIX密码:”和“重新输入密码UNIX”。此选项就是替换默认单词的UNIX。

retry=N

    提示用户最多N次会返回错误。默认值是1

difok=N

    此参数会改变默认新密码中必须有5个字符不同于旧密码中字符,此外,如果新密码中有一半字符不同于旧密码,那么就可以使用新密码。

difignore=N

    密码在少于多少个字符时,difok将被忽略,默认是23。

minlen=N

    新密码可接受的最小长度。

dcredit=N

    (N < 0) 新密码最小数字长度。

ucredit=N

    (N < 0) 新密码最小大写字母长度。

lcredit=N

    (N < 0) 新密码最小小写字母长度。

ocredit=N

    (N < 0) 新密码最小其他字符长度。

use_authtok

    此参数用于强制不提示用户输入新的密码而由以前堆积的密码模块所提供。 

dictpath=/path/to/dict

Path to the cracklib dictionaries.
dictpath=/path/to/dict //注:密码字典,这个是验证用户的密码是否是字典一部分的关键。
Path to the cracklib dictionaries.

例子:

在linux下设置密码复杂度办法:
(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

参数含义:
尝试次数:5  最少不同字符:3 最小密码长度:10  最少大写字母:1 最少小写字母:3 最少数字:3 密码字典:/usr/share/cracklib/pw_dict

注意:以上设置对root用户无效。修改后你可能会立即测试,会发现以上设置无效。你可以新建账户,并进入该账户。
useradd  test
passwd test

su - test

此时你发现设置起作用了。

      本文转自独弹古调  51CTO博客,原文链接:http://blog.51cto.com/hunkz/1630369,如需转载请自行联系原作者

你可能感兴趣的文章
php回调函数call_user_func和call_user_func_array详解
查看>>
Linux的wget命令
查看>>
Oracle查询速度慢的原因总结
查看>>
解决 ios 11 和 h5 页面在 wkwebview 上显示, footer 设置 bottom 为 0 时, 顶部会出现留白...
查看>>
41.AngularJS 服务(Service)
查看>>
服务器如何开启php的fsockopen函数? 使用发邮箱类
查看>>
redis10---Setbit 的实际应用
查看>>
Python While循环语句
查看>>
Java synchronized 详解
查看>>
SQL Server 更改跟踪(Chang Tracking)监控表数据
查看>>
xml的SAX解析规则
查看>>
年底得了个公司奖金,但是我却高兴不起来
查看>>
项目微管理4 - 职场
查看>>
6 个 Linux 运维典型问题,大牛的分析解决思路在这里 【转】
查看>>
如何查看java进程
查看>>
逆向映射的演进
查看>>
大数据挖掘方案
查看>>
mysql 字符串 拼接 截取 替换
查看>>
Python 字符串 String 内建函数大全(1)
查看>>
41. First Missing Positive
查看>>