我正在尝试限制我的远程控制框要求密码长度至少为 16 个字符,最多为 30 个字符。
我遵循了官方的密码策略部分用户文档并在 中设置以下内容/etc/pam.d/common-password
:
password [success=1 default=ignore] pam_unix.so obscure min=16 max=30 sha512
但是当我打开远程控制,作为普通用户,然后通过以下方式更改我的密码passwd
,我只能8人物。
有人知道为什么最低16没有被识别或者是我忽略了什么?
操作系统是 Ubuntu Server 10.04。
答案1
这有点旧了,但为了帮助其他人,这是我发现的。
minlen
不仅仅是一个基本的字符长度限制器,它更像是一个分数考虑到一系列标准
来源:
minlen 复杂度度量的计算分为以下几个步骤:
- 密码中的每个字符都得一分,无论字符类型如何
- 每个小写字母加一分,但最高不超过
lcredit
- 每个大写字母加一分,但最高不超过
ucredit
- 每个数字加一分,但不超过
dcredit
- 每个特殊字符加一分,但最高不超过
ocredit
我看到的minlen
是16允许密码8我输入的每个字符可获得 2 分。
这也记录在man 8 pam_cracklib
:
新密码的最小可接受长度(如果未禁用信用值,则为加一,这是默认设置)。除了新密码中的字符数外,还为每种不同类型的字符(其他、大写、小写和数字)提供信用值(长度为 +1)。此参数的默认值为 9,这对于所有字符类型相同的旧式 UNIX 密码来说很好,但可能太低而无法利用 md5 系统的附加安全性。请注意,Cracklib 本身有一对长度限制,一个“太短”的限制 4,它是硬编码的,另一个定义的限制(6)将在不参考 minlen 的情况下进行检查。如果您想允许密码短至 5 个字符,则不应使用此模块。