无法使用 Kerberos/NIS 用户登录 Debian 7.7

无法使用 Kerberos/NIS 用户登录 Debian 7.7

我有一个 Debian 7.7 系统,我尝试将其配置为使用 Kerberos 和 NIS,两者均由 Active Directory 服务器提供服务。

我设置了 kerberos,这样我就可以kinit从 AD 服务器获取一组凭据。

我已经设置了 NIS,这样我就可以su - $USER连接到 AD 用户并且一切正常。

我只是无法以用户身份登录。

当我通过控制台登录时,我在 auth.log 中收到以下日志:

Nov  5 10:22:41 debian login[3888]: pam_krb5(login:auth): pam_sm_authenticate: entry
Nov  5 10:22:45 debian login[3888]: pam_krb5(login:auth): (user dmackintosh) attempting authentication as dmackintosh@AD.$ZONE
Nov  5 10:22:45 debian login[3888]: pam_krb5(login:auth): user dmackintosh authenticated as dmackintosh@AD.$ZONE
Nov  5 10:22:45 debian login[3888]: pam_krb5(login:auth): (user dmackintosh) temporarily storing credentials in /tmp/krb5cc_pam_54ruC8
Nov  5 10:22:45 debian login[3888]: pam_krb5(login:auth): pam_sm_authenticate: exit (success)
Nov  5 10:22:45 debian login[3888]: Authentication failure

当我通过 ssh 登录时,我得到:

Nov  5 10:24:00 debian sshd[7641]: pam_krb5(sshd:auth): pam_sm_authenticate: entry (nonull)
Nov  5 10:24:00 debian sshd[7641]: pam_krb5(sshd:auth): (user dmackintosh) attempting authentication as dmackintosh@AD.$ZONE
Nov  5 10:24:00 debian sshd[7641]: pam_krb5(sshd:auth): user dmackintosh authenticated as dmackintosh@AD.$ZONE
Nov  5 10:24:00 debian sshd[7641]: pam_krb5(sshd:auth): (user dmackintosh) temporarily storing credentials in /tmp/krb5cc_pam_NQ9vhz
Nov  5 10:24:00 debian sshd[7641]: pam_krb5(sshd:auth): pam_sm_authenticate: exit (success)
Nov  5 10:24:00 debian sshd[7641]: Failed password for dmackintosh from 10.8.0.21 port 47234 ssh2
Nov  5 10:24:00 debian sshd[7641]: fatal: Access denied for user dmackintosh by PAM account configuration [preauth]

在这两种情况下,登录尝试都会立即被踢出。我知道密码是正确的,因为 A) 它通过了 kinit 测试,B) 如果我故意输入错误的密码,我会在再次提示输入密码之前等待“您的密码是错误的”。

PAM 的配置几乎与 /usr/share/doc/libpam-krb5/README.Debian 一样。仅添加了 PAM 调试语句。

SSH 已更改为启用 GSSAPIAuthentication 和 GSSAPICleanupCredentials 选项,但这似乎没有什么区别。

我在 CentOS 5 和 6 上工作,所以这一定是 debian 系统上某个地方的配置问题。

我知道互联网希望我使用 LDAP 而不是 NIS 来完成此操作,但由于“原因”,我必须保留 NIS。

更新:我发现如果 /etc/shadow 中有用户的条目,它就可以工作。这完全违背了使用 NIS 的目的,但无论如何。这让我相信这是我的 /etc/nsswitch.conf 文件的问题,如下所示:

passwd:         files nis
group:          files nis
shadow:         files nis

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

automount:      nis

更新2:我发现如果没有 /etc/shadow 中的额外信息,getent shadow则不会返回从ypcat shadow.我还发现 Gentoo 和 Ubuntu 也受到类似的影响; RH 系列发行版似乎并非如此,即使 RH 系列系统不通过 .NET 返回影子 NIS 映射的内容getent

答案1

答案是启用broken_shadowpam_unix 的功能。

在 中/etc/pam.d/common-account,找到 pam_unix 行并将其添加broken_shadow到其末尾:

account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so  broken_shadow

描述:

某些网络设置在加密密码字段中包含“x”,但没有影子信息。发生这种情况时,pam_unix 会导致帐户管理失败,因为它无法读取此信息。 “brokenshadow”选项假定读取信息时出现错误意味着该信息不存在,并允许用户登录。

相关内容