设置定时强制修改密码
使用命令打开 /etc/login.defs,编辑文件里的相关内容
PASS_MAX_DAYS 99999 #密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 5 #密码最小长度,使用pam_cracklib module,该参数不再有效
PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码
我的要求是半年改一次密码,提前30天提醒,顺便设置了一下密码长度
密码强度设置
编辑/etc/pam.d/system-auth文件,找到 password requisite pam_cracklib.so 一列
相关参数表示
密码必须至少包含
ucredit=N限制新密码中至少有多少个大写字符。
dcredit=N限制新密码中至少有多少个数字。
lcredit=N限制新密码中至少有多少个小写字符。
ocredit=N限制新密码中至少有多少个其它的字符。此参数用于强制模块不提示用户的新密码,但以前使用的堆叠模块提供的密码之一。
请各位按自己的需求修改,关于相关参数负数解释:
password requisite pam_cracklib.so try_first_pass retry=3 type= ocredit=2 minlen=10
这里的minlen=10实际上表示最小分数为10,而不是简单的最小长度为10。密码每有一个任意字符会有一分,另外,ucredit/lcredit/dcredit/ocredit默认值均为1,表示密码中四种字符的类别数,每多一种,就会得到额外的一分。
在这里,ocredit=2 minlen=10,也就是说,如果密码全是其它字符的话,最少需要minlen - ocredit = 10-2 = 8位;若密码包含其它字符和小写字符,最少需要minlen - ocredit - lcredit = 10-2-1 = 7位字符,以此类推。
另外ucredit/lcredit/dcredit/ocredit参数的值如果为负数,例如dcredit=-2,则表示密码中最少需要2位数字。
另外,除了密码长度之外,pam_cracklib.so库默认还会做其它方面的简单检查,并且库代码里写死了密码最小长度不能小于6.