如何创建如下所示的 UNIX 组层次结构?

如何创建如下所示的 UNIX 组层次结构?

我需要创建 UNIX 组的层次结构。像下面这样:

A
|\
| \
B  c
|\
D e
|\
f g

...其中 A、B 和 D 是 UNIX 组,c、e、f 和 g 是属于这些特定组的成员的 UNIX 帐户。我用谷歌搜索了很多,但似乎这是不可能的。

目前,我们有以下内容:

  1. A 组有成员 c.
  2. B 组有成员 e。
  3. D组有成员f、g。

更新:

@John 的帖子让我意识到我需要重新构建我的要求以消除歧义。

我的要求是:

  1. 仅允许组 B 的成员访问目录(因此 B 是该文件夹的组所有者)。由于组 D 是 B 的子组,因此 D 的成员将是组 B 的成员,并且也可以访问该目录。
  2. 但 B 组的成员需要与 A 组的成员具有相同的权限。(因此,如果 A 组是目录组所有者,则 B 组自动成为目录组所有者)。

    顺便说一句,这是一个现实世界的问题,我完全控制 B 组及其成员;对其他团体及其成员的控制有限或没有。因此,我无法创建新组并向组 A 或 D 中的成员授予成员身份。

答案1

使用普通的 UNIX 权限,您无法执行此操作。

使用 ACL,您可以(或应该能够)。

您需要使用支持 ACL 的文件系统。大多数现代 Linux 文件系统都是如此。

基本命令是 setfacl

在您的示例中,如果组 B 拥有目录 /B,您将为组 D 添加访问权限,如下所示:

setfacl -m group:B:rwx,group:D:rwx /B

这只是最基本的示例,但可能会传达这个想法。这确实需要仔细和明确的访问控制设置,但可以做的不仅仅是基本的 UNIX 权限。不过,它的功能远不及完整的 AD 组策略等。

这是一般 ACL 的一些文档

答案2

正如乌尔里希所说,传统团体无法做到这一点。您的文件权限仅限于一位所有者、一组和“其他所有人”。您也许可以通过让用户位于多个组中来满足您的访问要求,但即使如此,限制 1 和 3 也是互斥的,从而出现问题。您需要的解决方案基于 LDAP 或文件系统 ACL,如果不了解更多有关该问题的信息,我不确定是哪一个。

相关内容