SDB:Pam 和锁定的帐户
Version: 11.1 -
情况
您遇到了锁定账户的问题。
流程
passwd -l $user 锁定用户的账户(而非密码),从而使您无法再登录。如果没有shadow系统,这是通过在 /etc/passwd 中的密码字段前添加一个感叹号来实现的。使用shadow系统,则必须在 /etc/shadow 中进行操作。现在,如果您想测试账户是否被锁定,您必须检查 /etc/shadow 中是否存在感叹号。而过去恰恰没有这样做。另一方面,有些人利用这种行为来禁止使用密码进行ssh连接,但允许使用公钥加密进行连接。期望 passwd -l 锁定用户账户的管理员将对这种行为感到不满。这个问题也在 PAM邮件列表 上讨论过。结论是不修改 pam_unix 并接受这种意外行为。Thorsten Kukuk 修改了我们的 pam_unix2,以便确实锁定被锁定的账户。诚然,账户模块不应该检查密码,但如果历史上锁定用户账户是通过以特殊方式标记密码来完成的,则没有其他方法。当然,这种更改会对用户产生影响。例如,有些系统中的系统账户在 /etc/shadow 中使用感叹号代替星号。现在,即使以root身份执行,尝试 su 到这些账户也会失败。
这种行为的改变在 openSUSE 11.2 中被注意到,并通过一个恢复了旧行为的更新进行了修复
此更改未被移植到Factory。
正确的解决方案是在 /etc/pam.d/su 或 /etc/pam.d/sul 中省略root的账户管理,而这正是Factory所做的。有了这个更改,过期的用户账户将不会导致错误(我们过去确实遇到过这些问题)。
相同的解决方案被选用于 openSUSE 11.3,并将很快作为更新提供。