使用acls设置linux文件权限继承

时间:2014-08-14 16:47:25

标签: linux acl ubuntu-14.04

我正在试图找出linux文件权限继承。在root,我创建了一个用户dadams

adduser dadams

更改了其主要群组

usermod -g www-data dadams

创建目录

mkdir /var/blah

将其组更改为www-data并添加了读取,写入和执行权限

chgrp -R www-data /var/blah
chmod -R g+rwx /var/blah

设置新内容组继承

chmod g+s /var/blah

使用acls

再次更改了组权限
setfacl -d -m g::rwx /var/blah

然后我更改为我的新用户dadams并创建了一个文件

su dadams
touch /var/blah/test.txt

但新文件的权限不是我所期望的。我希望该组拥有所有权限,但我得到以下内容。

dadams@mybox:/var/blah$ ls -la
total 8
drwxrwsr-x+  2 root   www-data 4096 Aug 14 16:40 .
drwxr-xr-x  14 root   root     4096 Aug 14 16:29 ..
-rw-rw-r--   1 dadams www-data    0 Aug 14 16:30 test.txt
我显然不懂linux文件权限。我错过了什么?

1 个答案:

答案 0 :(得分:1)

即使umask / acl表示文件应该有+x,除非应用程序说该文件应该是可执行的(通过open(2)系统调用中的标志),否则它实际上不会发生。

这是因为默认情况下给人+ x文件是没有用的 - mp3和png文件不可执行,并且设置可执行标志只会混淆用户和工具。

如果您改为使用gcc编写mkdir目录或编译可执行文件,该组将获得+x,因为在目录和可执行文件中这是有意义的。

PS:如果您希望g:www-data:rwx组拥有权限,请考虑使用www-data,无论哪个组拥有该文件。