我正在试图找出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文件权限。我遗漏了什么?
发布于 2014-08-14 18:54:27
即使umask/acl说一个文件应该有+x
,它实际上也不会发生,除非应用程序说该文件应该是可执行的(通过open(2)
syscall中的标志)。
这是因为默认情况下给人+x文件是没有用的-- mp3和png文件是不可执行的,设置可执行标志只会让用户和工具感到困惑。
如果您使用mkdir目录或使用gcc编译可执行文件,则该组将获得+x
,因为对于目录和可执行文件,这是有意义的。
PS:如果您希望www-data
组具有权限,则可以考虑使用www-data
,而不管哪个组拥有该文件。
https://stackoverflow.com/questions/25313372
复制相似问题