Linux

是否可以在 linux 中更改密碼數據庫文件(/etc/passwd)?

  • October 6, 2020

是否可以將密碼數據庫文件(/etc/passwd)更改為其他文件。這種身份驗證機制如何在內部工作?它取決於 pam 嗎?

你是對的:/etc/passwd並且/etc/shadow是由pam_unix.soPAM 的一部分諮詢的。至少在現代 Linux 上。你可以通過修補來改變它pam_unix.so。如果要相信手冊頁,則不能更改系統數據庫的位置。

而你真的不想。/etc/passwd不僅用於身份驗證,它還用於(反向)名稱解析以及查找使用者的全名、shell 等內容。名稱和位置是如此標準化,以至於移動它們幾乎肯定會破壞 PAM 之外的東西。你必須修補比你討價還價的更多的東西。

**更新:**如果您試圖隱藏/etc/{passwd,shadow,group}文件以確保安全,請不要擔心。默默無聞的安全性作為一項政策很少有幫助。將它們留在原處並收緊您的其余政策。

更新:一個可能的解決方案

如果您有一些自定義軟體需要訪問一組不同的使用者/組數據庫,您可以製作相關 PAM 和 NSS 模組的副本並修補它們以使用您的自定義數據庫。原始的 unix 數據庫保留在原處,因此軟體不會混淆,但是您可以設置 PAM 和 NSS 以在任何需要的地方使用您的自定義模組,並使用對您有意義的任何策略。

保持 unix 數據庫本質上是原始的,並且你有你想要的。這幾乎就是PAM/NSS 模組所做radiusldap事情:它們提供了額外的(而不是替代的)憑據和使用者/組資訊來源。

更進一步:您可以返回 PAM 和 NSS 並完全禁用 unix 數據庫查找。將舊軟體的文件留在那裡(自然,他們對使用者/組數據庫的看法會不准確,但至少不會破壞)。

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