在Linux机器之间同步UID / GID有什么好处?


24

在深入研究如何在不同的Linux机器上同步UID / GID之前,我想知道实际上有什么好处?

我知道这使文件同步相对容易(因为所有权是“自然”保留的)。但是,这也可以通过传输服务来实现。

还有什么可以从一致的UID / GID中受益吗?


4
不要忘记,在更改uid / gid时,要更新档案(tar文件等),以及可能使用数字ID代替uidname / groupnames的conf文件。
Olivier Dulac 2014年

Answers:


31

技术债务

由于以下原因,尽早解决此问题要容易得多,以免积累技术债务。即使您发现自己已经处在这种情况下,在不远的将来处理它也可能比让它继续构建要好。

网络文件系统

这个问题似乎集中在具有本地文件系统的机器之间传输文件的范围狭窄,这允许机器特定的所有权状态。

联网文件系统考虑因素很容易成为试图使UID / GID映射保持同步的最大案例,因为通常您可以在输入图片时在窗口中提及您提到的“否则实现”。当然,你可能没有这些主机之间共享文件系统的联网,现在关于未来......但什么?可以诚实地说,永远不会在您当前的主机之间或将来创建的主机之间引入网络文件系统的用例?假设不那么具有前瞻性。

假设/home是之间共享的文件系统的网络host1host2在下面的实施例。

  • 异议权限/home/user1在每个系统上均由不同用户拥有。这使用户无法跨系统一致地访问或修改其主目录。
  • chown wars:用户提交票证要求将其主目录权限固定在特定系统上是很常见的。解决此问题host2会破坏对的权限host1。在有人退后一步并意识到正在进行一场拔河比赛之前,有时可能需要处理其中几张票。唯一的解决方案是修复不一致的ID映射。这导致...
  • UID / GID重新平衡地狱:以后,更正ID的复杂性会因涉及跨多台计算机纠正单个用户的重新映射的次数而成倍增加。(user1ID为user2,但user2ID为user17...,这只是集群中的第一个系统)等待解决问题的时间越长,这些链就越复杂,通常需要在多台服务器上关闭应用程序为了使事情正确同步。
  • 安全问题user2host2具有相同的UID user1host1,让他们写/home/user1host2不知情的情况下user1。然后在host1的许可下评估这些更改user1。可能出什么问题了?(如果user1是一个应用程序的用户,有人在开发发现它是可写的,并做出改变。这是一个时间证明的事实。)

还有其他方案,这些只是最常见的示例。

名称并不总是一个选择

根据数字ID编写的任何脚本或配置文件在您的环境中固有地无法移植。通常这不是问题,因为除非绝对需要它们,否则大多数人不会对它们进行硬编码...但是有时候,您使用的工具无法为您提供选择。在这些情况下,您不得不维护n个不同版本的脚本或配置文件。

示例:pam_succeed_if允许您使用,和...的字段user,显然没有“组”选项。如果您被放置在期望多个系统实施某种形式的基于组的访问限制的位置,那么PAM配置将有n种不同的变化。(或至少一个避免碰撞的GID)uidgid

集中管理

natxo的回答涵盖了这一点。


我不太确定说使用网络文件系统可以防止使用不同的uid解决问题是正确的,我知道至少有一个文件系统支持uid映射,允许您指定在不同计算机上匹配的组和用户。
价格

@Vality如果是一种普遍可用的解决方案,我仍然会犹豫将其称为可伸缩的解决方案。
安德鲁B

我确实同意,我只是不想让OP认为这是不可能的,我确实同意您的建议,即最好的解决方案是使它们保持同步。
价格

谢谢!不幸的是,“早起”早已一去不复返了。虽然我知道一些ldap / kerberos配置是我想在这里工作的地方,但是现在还不是。由于某些其他原因,我对跨操作系统的UID / GID的使用特别感兴趣。就像我说的那样,文件传输是一个问题(当前具有“正在运行”状态),这就是为什么我想知道是否还有其他事项(如您所述)也受UID的影响。您能否添加那些“其他情况”的关键字?那将使这成为一个绝妙的答案!
alex 2014年

@alex嗯,我的意思是网络文件系统问题中的“其他情况”。不管您玩了多晚,问题都只会变得更加严重,因为它没有得到解决。如果我们提供的原因不够充分,那么通过提供这些“其他原因”来进一步引导您的问题可能会有所帮助。在我看来,到目前为止提供的答案是非常好的答案。如果您想说服管理人员,则我们没有责任让他们做正确的事。
安德鲁B

18

一旦达到一定大小(并且总是比您想像的要早),您将意识到,更改密码或为所有主机上的某人禁用帐户是PITA。这就是为什么人们使用像openldap或当今出色的freeipa之类的具有LDAP数据库(或NIS,但现在不这样做,现在不安全)的系统的原因。

您将所有帐户/组信息维护在中央数据库中,所有主机都共享该信息。您可以从那里进行更多操作:当然,可以使用用户信息获取文件许可权,还可以为所有具有ldap绑定的应用程序创建虚拟用户,而不必在那里也创建用户(许多Web应用程序都可以使用ldap为其用户数据库),维护中央sudo规则数据库,分发autofs环境,保留dns区域,...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.