我正在不同的 Linux 系统中创建具有相同名称的本地组,但它们在不同的系统中具有不同的 GID。我在这三个系统之间有一个共享驱动器,如果我创建一个文件夹并在该文件夹的实例上分配组权限显示组名称,但在另外两个实例中,它仅显示在哪个实例上创建文件夹的组的 GID 我在这里感到困惑,请参阅下面的示例
Group_Name GID IP-Address
mygroup 571 Host A
mygroup 822 Host B
mygroup 1023 Host C
如果我在主机 A 上的这些系统之间的共享驱动器上创建一个文件夹,如果我要在主机 B 或 C 中共享驱动器,我会看到文件夹组名称为 571。
根据 Linux 文档,GID 是在指定的范围内分配的,现在我手动转到每个 Linux 实例并更改每个服务器上的 GID,以确保使用以下命令所有内容都具有相同的 ID
groupmod -g 3000 mygroup
我是 Linux 新手,这不是最佳实践我有两个疑问
1)linux系统中可以有两个具有GID的组吗? 2) 是否有任何自动化方法可以确保所有三个组都获得相同的 GID?
请帮我解决这个问题
答案1
您可以使用groupadd
的-g
选项来指定您希望新组具有的 ID。
如果修改组 ID,请groupmod
注意,您必须调整使用旧 ID 的文件的所有权。
linux系统中可以有两个带GID的组吗
这是可能的(使用和-o
中的选项),但默认行为是防止这种情况发生。用户名和组名只是将名称映射到 ID,因此重复的 ID 可能会导致意外结果。例如,您不会期望将目录添加到具有一个名称的组也可以访问具有不同名称的组。groupadd
groupmod
chown
正确的解决方案是集中式用户/组管理系统
LDAP(轻量级目录访问协议)等系统的存在就是为了解决您所描述的确切问题 - 在多个系统中以一致的方式管理权限。
您将能够在一处创建用户/组,并且连接到 LDAP 服务器的所有系统将为每个用户/组名称使用相同的 ID。