使用 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 ingo@EXAMPLE.COM 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 身份登錄。我不得不從快照中恢復。
經過更多研究後,我發現僅使用 Kerberos 進行身份驗證似乎是一個普遍問題。您僅獲得身份驗證但沒有授權。在這種情況下,授權由禁用密碼的本地帳戶提供。因此,如果您不提供其他來源的帳戶,則必須管理其他本地帳戶。
使用 NSS,您可以從遠端源獲取帳戶,特別是從 LDAP 伺服器。這樣登錄總是會從 LDAP 伺服器或本地
/etc/passwd
文件中找到一個授權帳戶,主要用於 root 等系統帳戶。我只需要在 LDAP 伺服器上的一個地方管理帳戶。我只是要設置一個用於記帳的 LDAP 伺服器。
我可以在這裡看到兩個不完美的選擇:
- 修改生成的塊
/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 required pam_krb5.so minimum_uid=1000
在第二種情況下,在
Account:
段落中執行相同的操作,這應該會在重新生成後導致上述更改/etc/pam.d/common-account
。