是否可以將密碼資料庫檔案(/etc/passwd
)變更為其他檔案。這種身分驗證機制內部如何運作?它取決於 pam 嗎?
答案1
您是對的:/etc/passwd
並/etc/shadow
受到 的諮詢pam_unix.so
,它們是 PAM 的一部分。至少在現代 Linux 上是這樣。您可以透過修補來更改此設定pam_unix.so
。如果線上說明頁可信,則您無法變更系統資料庫的位置。
而你確實不想這麼做。/etc/passwd
不僅用於身份驗證,還用於(反向)名稱解析以及查找用戶的全名、shell 等。名稱和位置是如此標準化,以至於移動它們幾乎肯定會破壞 PAM 之外的東西。你必須修補的東西比你預想的要多得多。
更新:如果您出於安全原因嘗試隱藏/etc/{passwd,shadow,group}
文件,請不要擔心。默默無聞的安全作為一項政策幾乎沒有幫助。讓他們留在原地,收緊其餘的政策。
更新:一個可能的解決方案
如果您有一些自訂軟體,需要存取一組不同的使用者/群組資料庫,您可以複製相關的 PAM 和 NSS 模組並打補丁他們使用您的自訂資料庫。原始的 UNIX 資料庫保留在原來的位置,因此軟體不會混淆,但您可以將 PAM 和 NSS 設定為在您需要的任何地方使用您的自訂模組,並使用對您有意義的任何策略。
保持 UNIX 資料庫本質上是原始的,您就擁有了您想要的東西。這幾乎就是PAM/NSS 模組的作用:它們提供radius
了ldap
額外的(不是替代)憑證和使用者/群組資訊的來源。
更進一步:您可以返回 PAM 和 NSS 並完全停用 unix 資料庫查找。將檔案保留在舊軟體中(當然,他們對使用者/群組資料庫的看法將不準確,但至少不會損壞)。
答案2
您正在尋找的是pam_pwdfile
模組。在 Debian/Ubuntu 上,該軟體包是libpam-pwdfile
(不確定 RedHat 派生發行版)。
包裝內附README
有說明如何使用它。
答案3
我不確定它是否可以開箱即用,但通過一些黑客攻擊絕對是可能的。為此,您需要:
- 調整/破解 nsswitch 庫(/lib/libnss_files.so 或 libnss_db.so - 檢查您的 /etc/nsswitch.conf),以便它可以讀取其他檔案。
- 調整/修改 pam_unix 模組,以便它可以讀取一些其他檔案。
答案4
使用 NIS 或 LDAP 來驗證您的使用者。他們的密碼不會儲存在 /etc/{password/shadow} 檔案中。