在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,因为root用户并不会受这些限制,它可以设置任意的密码。

pam_cracklib.so
pam_cracklib.so中有很多参数可以选择,具体配置如下:
debug : 此选为记录Syslog日志。
type=safe : 输入新密码的时候给予的提示。
retry=N : 改变输入密码的次数,默认值是1。就是说,如果用户输入的密码强度不够就退出。可以使用这个选项设置输入的次数,以免一切都从头再来。
difok=N : 默认值为8。这个参数设置允许的新、旧密码相同字符的个数。
difignore=N : 多少个字符的密码应收到difok将被忽略。默认为23
minlen=N : 新的最低可接受的大小密码。除了在新密码的字符数。此参数的默认值是9,它是一个老式的UNIX密码的字符相同类型的所有好,但可能过低,利用一个MD5的系统增加安全性。
dcredit=N : 限制新密码中至少有多少个数字。
ucredit=N : 限制新密码中至少有多少个大写字符。
lcredit=N : 限制新密码中至少有多少个小写字符。
ocredit=N : 限制新密码中至少有多少个其它的字符。此参数用于强制模块不提示用户的新密码,但以前使用的堆叠模块提供的密码之一。
dictpath=/data/dict :密码字典,这个是验证用户的密码是否是字典一部分的关键