我有一个文件/etc/pam.d/password-auth
(部分内容)说明了这一点。我添加了原始文件中没有的行号。
1 auth required pam_env.so
2 auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900
3 auth [success=1 default=bad] pam_unix.so
4 auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
5 auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900
6 auth required pam_deny.so
我不明白第 2 行在做什么。我理解其余几行:
- 设置我的环境变量
- ???
- 检查用户的密码。如果密码正确,则跳至第 5 行。
- 密码错误。将此事实记录在故障锁定表中。停止处理密码。拒绝登录尝试。如果有 5 次错误登录尝试,则锁定帐户 15 分钟。
- 密码正确。清除此用户的故障锁定表。允许他登录并继续。停止处理。
- 我们可能永远不应该到达这一行,但如果我们到达了,则拒绝登录尝试。
第 2 行的用途是什么?我的测试没有显示任何需要或不需要它的具体原因。手册页说:
该模块仅检查如果最近连续身份验证尝试失败次数异常,是否应阻止用户访问服务。
我认为这意味着
检查账户是否被锁定。如果账户被锁定,那么无论输入什么密码,我们都会拒绝登录尝试。
...但事实并非如此。据我所知,这条authfail
线实际上是锁定了账户,无论有没有这条线都无法登录账户preauth
。
那么它实际上在做什么(如果有的话)?
答案1
根据手册页线preauth
是可选的,如果验证成功用来。
如果您查看手册页中的示例,则可以使用 preauth 来显示帐户被锁定(无静默)的信息,或者如果您将其更改为 requisite,则可以阻止对锁定帐户的密码查询。