用户和群组同时存在是否存在安全风险?

我对用户和组有一些了解;过去,我可能会有一个名为“DBAS”或“ADMINS”的组,并将个别用户添加到每个组中...
但是,我很惊讶地发现我可以将用户添加到其他用户中-就像它们是组一样。
例如,如果我的/etc/group文件包含以下内容:
user1:x:12501:
user2:x:12502:user1
admin:x:123:user2,jim,bob

由于user2是admin组的成员,而user1是user2的成员 - user1是否有效地成为了管理员?如果sudoers文件中包含admin组,user1能否也使用它?
我尝试模拟这个情况,但作为user1,我还没有成功...但我不确定这是否不可能。
编辑:对不起 - 问题已更新错误。
2个回答

在你的例子中,你:
- 将用户 user1 添加到组 user2 中。 - 将用户 user2 添加到组 admin 中。
用户 user1 与组 user1 是不同的。
由于用户 user2 是 admin 组的成员,而用户 user1 是 user2 组的成员,那么 user1 是否有效地是一个管理员呢?
不,用户 user2 是 admin 组的成员,而不是组 user1 的成员。
如果 sudoers 文件中包含 admin 组,那么用户 user2 也能使用它吗?
  • 是的,就像其他用户一样,他们都是这个群组的成员,Jim和Bob。

如果管理员组在sudoers文件中,User1能使用它吗?

  • 不可以,因为管理员组只包含用户。它里面有用户user2。虽然用户user1也属于组user2,但它们是不同的东西,在很多发行版的设置中只是名字相同而已。组在一边,用户在另一边。如果名字相同,它们仍然是完全不同的东西。

总结:区分用户和组。虽然名字可能相同,但它们指的是不同的实体。在GNU/Linux中,没有组嵌套组的概念,一个组只能包含用户(这与Windows不同)。


非常抱歉,我在问题中打错了一个字。它应该是这样写的:“如果管理员组在sudoers文件中,用户2能否也使用它”。根据您的回答,我相信答案应该是“不行”。 - Rob P.
我也添加了更新的问题。就像你所理解的那样,它们是不同的。当它们被命名为相同的东西时,很容易混淆它们是同一件事情。 - Deleted

一些背景知识:在Linux中,用户始终是一个“主要组”的成员,并且还可以是零个或多个“次要组”的成员。
当用户创建一个文件时,该文件的用户ID组ID分别设置为用户和她的主要组的ID,因此该文件成为该用户和组的“所有”。此外,文件的权限会根据当前的umask设置自动设置,其中包括“用户”、“组”和“其他人”的权限。因此,可以说与用户的主要组相同组中的所有用户都至少获得了对用户创建的文件的某些权限。
另一方面,次要组不会影响用户创建的文件的所有权,您可以将其视为允许访问其他人创建的文件的一种方式。
正如你所看到的,主要组的“自动”行为使其有点容易无意中允许访问。因此,Ubuntu和许多其他Linux发行版使用用户私有组方案 - 当创建一个用户时,会创建一个同名的组,并将其设置为该用户的主要组。因此,用户的主要组始终是一个只有一个成员的组。
来自CentOS文档
Red Hat Enterprise Linux 使用用户私有组(UPG)方案,使UNIX组更易于管理。
每当系统添加新用户时,都会创建一个UPG。UPG的名称与其所创建的用户相同,而该用户是UPG的唯一成员。
UPG使得可以安全地设置新创建文件或目录的默认权限,允许用户及其所属组对文件或目录进行修改。
确定新创建文件或目录应用哪些权限的设置称为umask,并在/etc/bashrc文件中进行配置。传统上,在UNIX系统中,umask被设置为022,这样只有创建文件或目录的用户才能进行修改。在此方案下,其他所有用户,包括创建者所属组的成员,都不被允许进行任何修改。然而,在UPG方案下,这种“组保护”是不必要的,因为每个用户都有自己的私有组。
所以,正如你所看到的,没有“用户是另一个用户的成员”的事情 - 正如@Kent所提到的,在Linux中,用户不能“包含”其他用户,群组也不能嵌套,只能包含用户,而不是其他群组。你困惑的原因在于在用户私有群组方案中,用户的主要群组是一个与用户同名的“私有”群组。

在你的例子中,user2的主要群组被设置为user1。实际上,并没有明确说明这一点。主要群组是在etc/passwd中设置的,但他没有提到。当然,可以从使用的方案中推测出来,但我们无法从给定的信息中知道这一点。 - Deleted
@Kent:是的,你说得对,我误读了问题。 - Sergey