ale*_*lex 25 linux synchronization uid
在深入探讨如何在不同的 Linux 机器上同步 UID/GID 之前,我想知道实际上有什么好处?
我知道这使文件同步相对容易(因为所有权是“自然”保留的)。然而,这也可以根据传输服务以其他方式实现。
还有什么可以从一致的 UID/GID 中受益的吗?
And*_*w B 32
由于以下原因,尽早解决此问题以避免技术债务的积累要简单得多。即使您发现自己已经处于这种情况,在不久的将来处理它可能比让它继续构建更好。
这个问题似乎集中在具有本地文件系统的机器之间传输文件的狭窄范围,这允许机器特定的所有权状态。
网络文件系统的考虑很容易成为尝试保持 UID/GID 映射同步的最大案例,因为您通常可以在他们进入图片时将您提到的“否则实现”扔出窗口。当然,你可能没有这些主机之间共享文件系统的联网,现在关于未来......但什么?您能否坦诚地说,永远不会在您当前的主机或将来创建的主机之间引入网络文件系统的用例?否则假设不是很有前瞻性。
假设/home
是之间共享的文件系统的网络host1
和host2
在下面的实施例。
/home/user1
由每个系统上的不同用户拥有。这阻止了用户能够跨系统一致地访问或修改他们的主目录。host2
会破坏host1
. 在有人退后一步并意识到一场拔河比赛正在进行之前,有时可能需要处理好几张这样的票。唯一的解决方案是修复不一致的 ID 映射。这导致...user1
ID 为user2
,但user2
ID 为user17
...,这只是集群中的第一个系统)您等待解决问题的时间越长,这些链就会变得越复杂,通常需要多台服务器上的应用程序停机为了让事情正确同步。user2
在host2
具有相同的UIDuser1
上host1
,让他们写/home/user1
在host2
不知情的情况下user1
。然后host1
使用 的权限评估这些更改user1
。什么可能出错?(如果user1
是应用程序用户,开发人员会发现它是可写的并会进行更改。这是一个时间证明的事实。)还有其他场景,这些只是最常见场景的示例。
针对数字 ID 编写的任何脚本或配置文件在您的环境中本质上是不可移植的。通常不是问题,因为除非绝对需要,否则大多数人不会对这些进行硬编码……但有时您正在使用的工具并没有给您选择。在这些场景中,您不得不维护n 个不同版本的脚本或配置文件。
例如:pam_succeed_if
允许您使用的领域user
,uid
以及gid
......“组”选项是显眼。如果您处于期望多个系统实施某种形式的基于组的访问限制的位置,那么您将拥有n 个不同的 PAM 配置变体。(或至少一个您必须避免冲突的 GID)
natxo 的回答很好地涵盖了这一点。
nat*_*njo 19
一旦你达到一定的规模(而且总是比你想象的要快),你就会意识到在所有主机上更改密码或禁用某人的帐户是一种 PITA。这就是为什么人们使用带有 LDAP 数据库的系统(或 NIS,但不要这样做,现在不安全)像 openldap 或现在优秀的 freeipa。
您在中央数据库中维护所有帐户/组信息,所有主机共享该信息。您可以从那里做更多的事情:当然,将用户信息用于文件权限,但也可以为所有具有 ldap 绑定的应用程序创建虚拟用户,而不必在那里创建您的用户(许多 Web 应用程序可以使用ldap 用于他们的用户数据库),维护一个中央 sudo 规则数据库,分发您的 autofs 环境,保留您的 dns 区域,...