我正在尝试使用ACL在共享目录上设置适当的ACL权限模型,但是我遇到了问题。 即使我已经设置了一个默认的“user:user1:rwx”,由user2创build的文件由于掩码计算而不能被user1写入。 它说有效是“r–”。
根据手册页,掩码是通过进行拥有组,其他命名组和命名用户的联合来计算的。 只有拥有所有这些权限的权限才能在掩码(联合部分)中启用。
但为什么? 如果是这样,我怎么才能说“用户user1可以读写,总是”?
另外,user1不能写入由user2创build的文件,但它可以删除它们…
编辑:澄清:
这是有问题的目录的当前acl:
# file: NNHD/ # owner: user1 # group: user1 user::rwx user:user1:rwx user:user2:rwx group::rx mask::rwx other::--- default:user::rwx default:user:user1:rwx default:user:user2:rwx default:group::rwx default:mask::rwx default:other::---
这有适当的面具。
当user2在该目录中创build一个文件时,给出这个:
# file: test # owner: user2 # group: user2 user::rw- user:user1:rwx #effective:r-- user:user2:rwx #effective:r-- group::rwx #effective:r-- mask::r-- other::---
我不明白为什么会发生这种情况…我必须做什么才能使其对user1可写?
我在UNIX上对ACL很陌生,但我认为你犯了一个逻辑错误。 您声明以下内容:“根据手册页,通过执行拥有组来计算掩码”,但是在ACL设置中,您有规则“group :: rx”和“mask :: rwx” “rx”&&“rwx”=“rx”表示在该目录中创build的新文件。
以上解释了为什么它只影响user1,因为“group :: rx”是所有者(user1)的组。 你只需要写入文件夹的权限,而不是文件,在Linux中删除。
在linux中的大多数应用程序创build具有“rw-”权限的文件,例如触摸。 所以这可能是最后的“rx”&&“rw-”=“r–”。
所以显而易见的是,如果你想让用户读取和写入文件夹中的文件的权限,你必须将组和掩码设置为rw
我在这个网站登陆是一个谷歌search禁用自动计算掩码在ACL中,但猜测我运气不好。 这个答案可能会用于其他谷歌:)
(我假设你在Linux上)
您可以使用ACL以类似于使用setfacl m::mask设置ACL本身的方式显式设置setfacl m::mask
例如:
jim@abox:/tmp$ getfacl temp/ # file: temp/ # owner: jim # group: jim user::rwx user:admin:rwx group::rx mask::rwx other::rx jim@abox:/tmp$ setfacl -R -mm::rx temp/ jim@abox:/tmp$ getfacl temp/ # file: temp/ # owner: jim # group: jim user::rwx user:admin:rwx #effective:rx group::rx mask::rx other::rx