我正在试图找出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文件权限。我错过了什么?
答案 0 :(得分:1)
即使umask / acl表示文件应该有+x
,除非应用程序说该文件应该是可执行的(通过open(2)
系统调用中的标志),否则它实际上不会发生。
这是因为默认情况下给人+ x文件是没有用的 - mp3和png文件不可执行,并且设置可执行标志只会混淆用户和工具。
如果您改为使用gcc编写mkdir目录或编译可执行文件,该组将获得+x
,因为在目录和可执行文件中这是有意义的。
PS:如果您希望g:www-data:rwx
组拥有权限,请考虑使用www-data
,无论哪个组拥有该文件。