【问题标题】:Linux directory permissions for different groups不同组的 Linux 目录权限
【发布时间】:2012-11-01 08:14:40
【问题描述】:

我有两个目录:“public”和“private”。 我有三个用户:“chris”、“john”、“dan”。我有两个组:“pub”、“priv”和“god”。

  • “god”组应具有“public”和“private”的完全访问权限。
  • “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”组的成员。

你有什么想法吗?

【问题讨论】:

    标签: linux permissions


    【解决方案1】:

    您的方法中有两个问题。第一个是:

    chgrp god public private
    chgrp pub public
    

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

    第二件事是您可能没有将目录public 的写入权限授予拥有它的组(执行命令touch 的用户属于目录组这一事实无关紧要)。

    试试这个:

    chmod 770 public
    

    并与其他目录做类似的事情。但是,您最初尝试实现的目标是不可能的,因为该目录只能属于一个组。 Nikos 在他的回答中很好地阐述了这一点 - 将用户放在更多组中。

    【讨论】:

      【解决方案2】:

      您说“pub”组应该是唯一拥有“public”权限的组。但是在此之前,您说“上帝”也应该有权访问。所以“pub”不能是唯一可以访问的。 “priv”也是如此。

      你还说:

      我有两个组:“pub”、“priv”和“god”。

      嗯,这是三组。 (让我想起那句名言:“世界上有三种人;会数的人和不会数的人。”:-P)

      您的基本概念似乎是错误的。其工作方式相当简单。创建两个组,“pub”和“priv”。相应地放置所有需要访问目录的用户。需要访问这两个目录的用户应该属于这两个组。

      在这种情况下,“chris”应该放在“pub”和“priv”组中。 “john”应该放在“pub”组中。 “dan”应该放在“priv”组中。

      您试图做的是让两个组拥有目录。那是不可能的。可以是多个组的一部分的用户,而不是文件或目录。你只是把它倒退了:-)

      【讨论】:

        【解决方案3】:

        您需要使用支持 ACL 的文件系统。正如其他答案中提到的,pubpriv 组所有权可以通过基本 Linux 权限获得,但要授予对god 组的访问权限,因为文件/目录只能有一个组标签,需要一个访问控制列表。大多数当前文件系统应该支持此功能 - 请参阅 getfaclsetfacl 的手册页。

        【讨论】:

          【解决方案4】:

          嗯,我知道这是比较老的,但 twalberg 是正确的:实际上有一种相对简单的方法可以使用 POSIX ACL 完成此操作。它们自 90 年代末/2000 年代初就已经存在,所以我不知道为什么越来越多的人不使用它们。

          怎么做:照你已经做的,然后简单地执行这个命令:

          # setfacl -m g:god:rwx public private
          

          在一个命令中你得到你想要的。您将永远尝试仅使用传统的 unix 权限来弄清楚如何做到这一点。

          Mikic 的建议可能仍然很好(取决于您要完成的工作),并且在您的权限中引用尽可能少的组可能更直接(或者您可能希望“克里斯" 不是普通用户,而是管理用户,同样取决于您要构建的内容)。

          我提供了一些更接近您想要完成的内容,因为在某些情况下,您可能会尝试授予辅助用户/组访问目录但您不想在“chris”和访问这两个目录,“chris”访问所有其他文件和目录“pub”和“priv”可能有权访问。使用 ACL,您不必做出这些选择,这就是添加 ACL 的原因,现在它们已成为大多数 Unix(以及 BSD 和 Linux)平台的核心部分。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-01-28
            • 2017-05-26
            • 2018-10-21
            • 2013-07-18
            • 1970-01-01
            • 2010-10-26
            • 2015-05-28
            • 2021-09-13
            相关资源
            最近更新 更多