使用 Kerberos 身份验证的 PAM 配置,但不需要本地帐户

使用 Kerberos 身份验证的 PAM 配置,但不需要本地帐户

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认证“但这使得登录无法使用。我无法再次登录,即使不是以 root 身份登录。我必须从快照中恢复。

答案1

我在这里看到两个不完美的选择:

  • 修改生成的块/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再影响了

第一种情况,改成requiredsufficient

account required pam_krb5.so minimum_uid=1000

在第二种情况下,在Account:段落中执行相同的操作,这应该会导致/etc/pam.d/common-account重新生成后发生上述更改。

答案2

经过更多研究后,我发现仅使用 Kerberos 进行身份验证似乎是一个普遍问题。您只获得身份验证,但没有授权。在这种情况下,授权是由禁用密码的本地帐户授予的。因此,如果您不提供其他来源的帐户,则必须管理其他本地帐户。

使用 NSS,您可以从远程源获取帐户,特别是从 LDAP 服务器。这样登录总会找到一个账号进行授权,要么是从LDAP服务器,要么是从本地/etc/passwd文件,主要是针对root这样的系统账号。我只需在 LDAP 服务器上的一处管理帐户。

我只是要设置一个用于会计的 LDAP 服务器。

相关内容