是否可以在Linux中更改密碼資料庫檔案(/etc/passwd)?

是否可以在Linux中更改密碼資料庫檔案(/etc/passwd)?

是否可以將密碼資料庫檔案(/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 模組的作用:它們提供radiusldap額外的(不是替代)憑證和使用者/群組資訊的來源。

更進一步:您可以返回 PAM 和 NSS 並完全停用 unix 資料庫查找。將檔案保留在舊軟體中(當然,他們對使用者/群組資料庫的看法將不準確,但至少不會損壞)。

答案2

您正在尋找的是pam_pwdfile模組。在 Debian/Ubuntu 上,該軟體包是libpam-pwdfile(不確定 RedHat 派生發行版)。

包裝內附README有說明如何使用它。

答案3

我不確定它是否可以開箱即用,但通過一些黑客攻擊絕對是可能的。為此,您需要:

  1. 調整/破解 nsswitch 庫(/lib/libnss_files.so 或 libnss_db.so - 檢查您的 /etc/nsswitch.conf),以便它可以讀取其他檔案。
  2. 調整/修改 pam_unix 模組,以便它可以讀取一些其他檔案。

答案4

使用 NIS 或 LDAP 來驗證您的使用者。他們的密碼不會儲存在 /etc/{password/shadow} 檔案中。

相關內容