無法使用 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)如果我故意輸入錯誤的密碼,我會在再次提示輸入密碼之前等待你的密碼錯誤。
根據 /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_shadow
pam_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’ 選項假定讀取資訊的錯誤意味著它不存在,並允許使用者登錄。