Debian

無法使用 Kerberos/NIS 使用者登錄到 Debian 7.7

  • December 3, 2014

我有一個 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)如果我故意輸入錯誤的密碼,我會在再次提示輸入密碼之前等待你的密碼錯誤。

根據 /usr/share/doc/libpam-krb5/README.Debian,PAM 的配置幾乎是庫存。僅添加了 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

**Update2:**我發現如果沒有 /etc/shadow 中的額外資訊,getent shadow則不會返回從ypcat shadow. 我還發現 Gentoo 和 Ubuntu 也受到了類似的影響。RH 系列發行版似乎不是,即使 RH 系列系統不通過getent.

答案是啟用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’ 選項假定讀取資訊的錯誤意味著它不存在,並允許使用者登錄。

引用自:https://unix.stackexchange.com/questions/166135