“ / etc / passwd”和“ / etc / group”之间的不一致

时间:2019-02-24 13:14:29

标签: linux redhat

方案1:

我有2个用户,每个用户都有一个不同的主要组。 对于user1,主要组是具有GID 501的group1。 对于user2,主要组是具有GID 502的group2。

我编辑了/etc/passwd,以使user1现在具有GID 600。 但是,我忘记了创建一个GID 600的新组(我也没有编辑/etc/group)。

让我感到惊讶的是,即使我从未使用GID 600创建一个组(因此/etc/group中没有这样的组)-一切都像存在这样的组一样起作用:

示例:

1)用户1创建新文件test.txt后,用户2无法读/写该文件。

2)运行ls -l时,我看到test.txt属于GID 600。

我想念什么?即使/etc/passwd/etc/group之间不一致,为什么它仍然有效?


方案2:

说我有一个GID 1000的群组。 运行useradd -c "name" test2 -g 1000,然后运行groups test2时,我看到test2的主要组是1000。

但是,在/etc/group中,我看到的只是test_group:x:1000:,这意味着test2不是test_group的成员。

此外,运行useradd -c "name" test3后,我在test3:x:8093:中确实有/etc/group

您能解释为什么会这样吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

非编程问题,请期待投票...您应该在超级用户或unix.se上询问

也就是说,没有UID编号到GID编号的映射,这些映射要求它们具有相同的值。想一想,当您添加几个用户,然后创建一个或两个供他们共享的组,然后添加更多用户时,会发生什么。 “下一个可用” GID / UID对的值不匹配,但这无关紧要。

当您查看用户的主要组时,由于他们的主要组信息位于groups文件中,因此他们没有作为成员列入passwd文件中。

如果您手动更改UID编号或GID编号并进行适当修复,请记住要查找没有所有者或用户组的文件/目录。

此外,当涉及到UID号和GID号时,还有0(根)和其他所有内容-对它们没有特殊含义。按照共识,“系统用户”类型的帐户数量很少,大多数发行版本开始创建UID / GID为1000的“普通”用户