我对用户和组了解一点;过去我可能有像“DBAS”或“ADMINS”这样的组,并且我会将单独的用户添加到每个组中......
但令我惊讶的是,我可以将用户添加到其他用户中 - 就好像他们是群组一样。
例如如果我的 /etc/group 包含以下内容:
user1:x:12501:
user2:x:12502:user1
admin:x:123:user2,jim,bob
由于 user2 是 admin 组的成员,而 user1 是 user2 的成员 - user1 实际上是管理员吗?如果 admin 组在 sudoers 文件中,user1 也可以使用它吗?
我曾尝试模拟这种情况,但我无法以用户 1 的身份做到这一点......但我不确定这是否不可能。
编辑:抱歉-更新了问题中的错误。
答案1
在您的示例中:
- 有用户
user1
作为团体user2
。 - 有用户
user2
作为团体admin
。
用户user1
与群组不同user1
。
由于(用户)user2
是该组的成员admin
,并且(用户)user1
是(该组)的成员user2
-user1
实际上是管理员吗?
- 不,该用户
user2
是该组的成员admin
。 不是该组user1
。
如果该admin
组在 sudoers 文件中,则可以(用户) user2
也用它吗?
- 是的,就像群组中的其他成员用户 jim 和 bob 一样。
如果 admin 组在 sudoers 文件中,那么 user1 也可以使用它吗?
- 不,因为管理员组只由用户组成。它里面有用户
user2
。即使用户user1
是组的一部分user2
。它们是不同的东西,但在这个和许多发行版设置中共享相同的名称。一边是组,另一边是用户。如果名称匹配,它们仍然是完全不同的东西。
把它们加起来:将用户与组分开。名称可能相同,但它们指的是不同的实体。在 GNU/Linux 中,组中没有组,组只能包含用户(这与 Windows 不同)。
答案2
背景知识:在 Linux 中,用户始终是初级组也可以是零个或多个次要群体。
当用户创建文件时,该文件的用户身份和组 ID分别设置为用户及其主要组的 ID,因此该文件将由该用户和组“拥有”。此外,文件的权限将使用当前umask设置,其中包括“用户”、“组”和“其他”的权限。因此,或多或少,与用户主组相同的组中的所有用户至少都会获得一些用户创建的文件的权限。
另一方面,次要组不会影响用户创建的文件的所有权,您可以将它们视为允许访问他人创建的文件的一种方式。
如您所见,主要组的“自动”行为使其有点容易无意间允许访问。出于这个原因,Ubuntu 以及许多其他 Linux 发行版都使用用户私人群组方案 - 当创建用户时,会创建一个同名的组,并将其设置为该用户的主要组。因此,用户的主要组始终是只有一个成员的组。
Red Hat Enterprise Linux 使用用户私有组 (UPG) 方案,这使得 UNIX 组更易于管理。
每当有新用户添加到系统时,都会创建一个 UPG。UPG 的名称与创建它的用户相同,并且该用户是 UPG 的唯一成员。
UPG 可以安全地为新创建的文件或目录设置默认权限,允许用户和该用户的组对文件或目录进行修改。
决定对新创建的文件或目录应用哪些权限的设置称为 umask,在 /etc/bashrc 文件中配置。传统上,在 UNIX 系统中,umask 设置为 022,这只允许创建文件或目录的用户进行修改。在此方案下,所有其他用户(包括创建者组的成员)均不允许进行任何修改。然而,在 UPG 方案下,这种“组保护”是不必要的,因为每个用户都有自己的私有组。
因此,如您所见,不存在“用户是另一个用户的成员”的事情 - 正如@Kent 提到的那样,在 Linux 中,用户不能“包含”其他用户,并且组不能嵌套,只能包含用户,而不能包含其他组。您感到困惑的根源在于,在用户私有组方案中,用户的主要组是与用户同名的“私有”组。