我通过 Google 搜索,找到了一些相关链接,例如: 在 Red Hat 中强制密码复杂性
如何在 Linux 上强制密码复杂性
它说我们需要在文件中进行更改/etc/pam.d/system-auth
。我已经设置了强制密码复杂性的参数,然后尝试创建一个新用户,但我设置的规则(例如所需的最小字符数、最小大写字母数和最小数字数)并没有禁止我创建不遵循这些规则的密码。
请帮助我并告诉我如何实现这一目标。
答案1
minlen=8 ucredit=1 dcredit=1 ocredit=0 lcredit=0
我猜您希望密码至少有 8 个字符,包含至少 1 个大写字母和 1 个数字。如果是这样,那不是您所配置的。
为此您应该使用:minlen=8 ucredit=-1 dcredit=-1
。
解释:minlen 算法使用“信用”来确定长度值。假设您的密码为 6 个字符。minlength 将不小于 6。然后,在不使用任何信用值的情况下,使用小写字符将获得 1 个“信用”,使用大写字符将获得 1 个信用,依此类推。因此,密码为Hello!
6 个字符,使用大写字母将获得 +1 个信用,使用小写字母将获得 +1 个信用,使用特殊字符将获得 +1 个信用,总 minlen 值为 9。
指定ucredit=1 dcredit=1 ocredit=0 lcredit=0
,使用相同的密码时长度为 6,使用大写字母时长度为 +1,使用小写字母时长度为 0,使用特殊字符时长度为 0。它不会强制您使用大写字符。
如果您使用负数作为信用值,则要求您至少拥有那么多的信用值,并且不使用信用值。
因此minlength=8 ucredit=-1 dcredit=-1 ocredit=0 lcredit=0
将要求密码长度至少为 8 个字符,至少包含 1 个大写字母和 1 个数字。因此,密码长度为helloboy
8 个字符,但会失败。Hellob0y
会通过。He$$ob0y
也会通过。
答案2
当您通过 ssh 登录时,/etc.pam.d/sshd
将使用策略文件。此文件包括/etc/pam.d/system-auth
,您必须考虑这两个文件的内容。
如果您通过 登录/bin/login
,则该文件/etc/pam.d/login
将被使用,因此对它的任何更改都只会影响/bin/login
。
/etc/pam.d/system-auth
因此,您可能需要在两个文件中(即和)进行更改/etc/pam.d/login
。或者更改您想要强制密码复杂性的文件。