使用setfacl允许组成员写入目录中的任何文件


12

我想使用setfacl,以便“应用程序”组中的任何人都可以编辑/ usr / local / users / app中包含的任何文件,而与传统的UNIX权限无关。我有两个用户约翰和本。我试图按照另一个问题说明进行操作,但是john无法写入某些文件。看来这是因为acl遮罩。但是,我在rwx目录上设置了默认掩码,因此其中的文件在创建时不应该继承吗?

例如,john无法写入下面的文件,但是他是“ app”组的成员,该组在文件上写入了ACL,所以令我惊讶的是他无法编辑该文件。

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--

Answers:


7

您会注意到getfacl向您抛出的“有效”评论。问题是权限正在计算,因此“ app”没有设置写位。发生这种情况是因为文件上的掩码设置为只读。掩码用于限制可能在特定文件或目录上发出的权限数量。

例如,如果您知道该文件可能合法地需要不同的用户/组来访问该文件,但由于某种原因,权限变得越来越复杂,并且您想使用一种方式说“无论其他什么,无论它们的组成员身份是什么,或者以后执行任何递归setfacl,都将默认权限设置为“ 绝对不要给出这个信息!” 拥有用户在POSIX世界中具有特殊的地位,它具有其他用户没有的权限,例如具有非root用户权限和更改文件权限的能力,并且其权限不受掩码限制(无论如何都是毫无意义的,因为系统赋予了他们优先权)。这就是为什么即使掩码受限制他们仍然得到rwx的原因。

但是,要回答您的特定问题:将写位添加到文件的掩码中,然后以john用户身份重试。

是上述说明的命令行版本,请注意当我全部修改为掩码时“有效”权限的变化。


谢谢。我非常感谢您的回应。是否可以使用默认掩码rwx创建新文件?我已经用更多详细信息编辑了我的问题。
Ben McCann 2013年

是的,掩码是可以设置默认ACL的类别(如用户和组)之一。默认掩码应继承到子目录并应用于文件。示例:setfacl -md:m :: rwx / path / to / Dir
Bratchley

默认的ACL继承到子目录,而不继承到文件,从而使这些ACL完全无用:-(
Ben McCann

只是为了确保我们在谈论同一件事,是在谈论掩码项的默认acl?这就是我在测试中得到的。
Bratchley

在更改父目录上的有效掩码并获得相同的结果后,我还对/ testBed中的新文件重复了上述测试(默认掩码条目将应用于文件而不是父级的有效掩码)。
Bratchley

0

是不可能的。cp,rsync等创建忽略默认ACL的文件

为什么cp不遵守ACL?


错误的用户遇到了与之前遇到的相同的蒙版,并且得到了其他人的不正确响应。忽略默认的ACL条目不是由“ cp”或任何其他实用程序决定的,默认的ACL条目是在cp创建文件时在文件系统级别发生的。该工具可以选择发出系统调用以剥离/添加必要的ACL,但必须为此付出努力。
Bratchley

糟糕的是,您可以看到他们谈论的ACL条目只是他们期望看到的有效权限而已。这是一个绝好的机会,说“嘿,伙计,检查你的面具”。
Bratchley

1
实际上,我认为EvilRyry发布了有关该掩码的信息,而OP只是回复了“它不起作用”,然后发布了getfacl输出,似乎表明“ felles”确实在文件上获取了rwx。以这种速度,投票得最高的答案与我的个人经验以及我在此处通过命令示例所说明的内容不符。
布莱奇利2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.