不同组的Linux目录权限

我有两个目录:“公共”和“私人”。 我有三个用户:“克里斯”,“约翰”,“丹”。 我有两个小组:“酒吧”,“priv”和“上帝”。

  • 这个群体“上帝”应该有完全的“公共”和“私人”。
  • “pub”组应该是唯一拥有“public”权限的组,
  • “priv”组应该是唯一拥有“private”权限的组。

作为根:

useradd chris

useradd john

useradd dan

usermod -g god chris

usermod -g pub john

usermod -g priv dan

chgrp god public private

chgrp pub public

chgrp priv private

su chris

作为“克里斯”:

cd public/

touch test =权限被拒绝


其他用户也一样…在“dan”下我没有权限在“private”目录下,但是“dan”是“priv”组的成员。

你有什么主意吗?

Solutions Collecting From Web of "不同组的Linux目录权限"

那么,我知道这是相对旧的,但twalberg是正确的:实际上有一个相对简单的方法来完成这与POSIX ACL的。 他们从九十年代末/二十年代初就已经存在了,所以我不知道为什么更多的人不使用它们。

如何做:像你已经做的那样,然后简单地执行这个命令:

 # setfacl -mg:god:rwx public private 

在一个命令你得到你想要的。 你将永远花费试图弄清楚如何使用传统的Unix权限。

Mikic的建议可能还是很好的(取决于你想要完成什么),而且在你的权限中尽可能少地引用组可能会更直截了当(也许你希望明显的是“chris”不是“一个普通的用户,但是一个管理员,这又取决于你想要构建什么)。

我提供了一些更接近你想要完成的事情,因为可能会出现这样的情况:你想让一个辅助用户/组访问一个目录,但是你不想在“chris”不能访问这两个目录和“克里斯”访问所有其他文件和目录“pub”和“priv”可能有权访问。 使用ACL,您不必做出这些选择,这就是为什么他们被添加,现在是大多数Unix(和BSD和Linux)平台的核心部分。

你说这个小组“pub”应该是唯一一个拥有“public”权限的小组。 但在此之前,你说“上帝”也应该有机会获得。 所以“酒吧”不能是唯一有权访问的人。 同上“priv”。

你也说:

我有两个小组:“酒吧”,“priv”和“上帝”。

那么,这是三个小组。 (让我想起那句名言:“这世上有三种人,那些可以计数的人,那些不能的人。”:-P)

你的基本概念似乎错了。 这样做的方式相当简单。 创建两个“pub”和“priv”组。 放置所有需要访问目录的用户。 需要访问这两个目录的用户应该属于这两个组。

在这种情况下,“克里斯”应该放在“酒吧”以及“私人”组。 “约翰”应该放在“酒吧”组。 “丹”应放在“私”组中。

你试图做的是让这两个目录归属于两个组。 这是不可能的。 用户可以是多个组的一部分,而不是文件或目录。 你只是把它倒过来:-)

你的方法有两个有问题的东西。 第一个是:

 chgrp god public private chgrp pub public 

用第二个命令,你放弃了第一个的效果。 目录public现在属于pub组,而不是god了。

第二件事情是,你可能没有给public目录上的写权限给它拥有它的组(事实上,执行命令touch的用户属于目录的组并不重要)。

尝试这个:

 chmod 770 public 

并做类似的其他目录。 但是,最初尝试实现的目标是不可能的,因为目录只能属于一个组。 尼科斯在他的回答中详细阐述了这个问题。

您将需要使用支持ACL的文件系统。 正如其他答案中提到的, pubpriv组拥有基本的Linux权限是可能的,但是为了授予对god组的访问权限,因为文件/目录只能有一个组标签,需要一个ACL。 大多数当前的文件系统应该支持这个功能 – 请参阅getfaclsetfacl的手册页。