我kinit
在 Debian Buster 上测试了一个有效的 Kerberos 身份验证。现在我尝试将它与PAM 一起使用以使用 Kerberos 登录,并libpam-krb5
使用pam-auth-update
. 但文件中/usr/share/doc/libpam-krb5/README.Debian.gz
指出:
此配置仍需要在 /etc/shadow 中列出用户,否则 pam_unix 帐户模块将失败。通常,应该只使用 Kerberos 身份验证的帐户应该使用 adduser --disabled-password 创建。如果您根本不希望帐户列在 /etc/shadow 中(例如,如果您使用其他源而不是文件来进行 nsswitch 配置),您可以将 pam_krb5 帐户模块标记为足够,而不是必需,以便不运行 pam_unix。这意味着您将无法在本地禁用帐户。
/etc/shadow
除了 Kerberos 数据库之外,我不希望这些帐户再次在本地列出,因为这对我来说是多余的工作。我尝试使用默认设置登录,但失败了:
Debian GNU/Linux 10 deb10-base ttyS0
deb10-base login: ingo
Password:
Authentication failure
在journalctl
我发现这个:
Oct 06 15:33:08 deb10-base login[374]: pam_krb5(login:auth): user ingo authenticated as [email protected]
Oct 06 15:33:08 deb10-base login[374]: pam_unix(login:account): could not identify user (from getpwnam(ingo))
Oct 06 15:33:08 deb10-base login[374]: Authentication failure
这正是上面引用的文档所预期的。但我不明白修改 PAM 配置文件的位置和内容的评论。当前配置文件与文档不匹配。
我必须从需要修改到足够的 PAM 配置文件中的哪些条目?可能还有其他事情要做吗?如果可能的话,我想保留 pam-auth-update 配置部分。
更新:
忘了提到我开始pam-auth-update
并检查了选项:
[*] Kerberos authentication
[*] Unix authentication
[*] Create home directory on login
我试图取消选中“ Unix authentication ”,但这使得登录无法使用。我无法再次登录,即使不是以 root 身份登录。我不得不从快照中恢复。
我可以在这里看到两个不完美的选择:
/etc/pam.d/common-account
并接受pam-auth-update
不再触及它的块,或者dpkg-divert
并修改/usr/share/pam-configs/krb5
、重新生成/etc/pam.d/common-account
并接受libpam-krb5的更新将不再影响/usr/share/pam-configs/krb5
。第一种情况,
required
改为sufficient
上线在第二种情况下,在
Account:
段落中执行相同的操作,这应该会在重新生成后导致上述更改/etc/pam.d/common-account
。经过更多研究后,我发现仅使用 Kerberos 进行身份验证似乎是一个普遍问题。您仅获得身份验证但没有授权。在这种情况下,授权由禁用密码的本地帐户提供。因此,如果您不提供其他来源的帐户,则必须管理其他本地帐户。
使用 NSS,您可以从远程源获取帐户,特别是从 LDAP 服务器。这样登录总是会从 LDAP 服务器或本地
/etc/passwd
文件中找到一个授权帐户,主要用于 root 等系统帐户。我只需要在 LDAP 服务器上的一个地方管理帐户。我只是要设置一个用于记帐的 LDAP 服务器。