是否可以在 Linux 中更改密码数据库文件(/etc/passwd)?

nit*_*ins 8 linux password authentication pam

是否可以将密码数据库文件(/etc/passwd)更改为其他文件。这种身份验证机制如何在内部工作?它取决于 pam 吗?

Ale*_*ios 8

您是对的:/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/NSSradiusldapPAM/NSS 模块所做的:它们提供额外的(而非替代的)凭据和用户/组信息来源。

更进一步:您可以返回 PAM 和 NSS 并完全禁用 unix 数据库查找。将文件留在那里供旧软件使用(自然,他们对用户/组数据库的看法将不准确,但至少不会中断)。


bah*_*mat 7

您正在寻找的是pam_pwdfile模块。在 Debian/Ubuntu 上,该软件包是libpam-pwdfile(不确定 RedHat 派生的发行版)。

README包含在包装说明如何使用它。