设置组的 rwx 默认权限,但仅设置文件的 rw 默认权限

设置组的 rwx 默认权限,但仅设置文件的 rw 默认权限

我有一个目录集合,这些目录应该具有rw-rw-r--对所有包含的常规文件和rwxrwxr-x所有包含的目录的权限。我可以使用类似的方法设置所有常规文件和目录的默认权限setfacl -R -d -m g::rw /directory/name,但这会将新文件和新目录的默认权限设置为相同的值,这是我不想要的。

如何创建具有rwx组默认权限但仅rw文件默认权限的文件系统块?

答案1

如果您x为所有内容设置标志,则用户“创建”权限也将生效。这意味着通常文件不会有标志x

$ setfacl -d -m u::rwx .
$ setfacl -d -m g::rwx .
$ setfacl -d -m o::rx . 
$ getfacl .
# file: .
# owner: sweh
# group: sweh
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

$ mkdir DIR
$ ls -ld DIR
drwxrwxr-x+ 2 sweh sweh 4096 Aug 10 20:05 DIR
$ touch file
$ ls -l file
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:05 file
$ touch DIR/file
$ ls -l DIR/file
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:06 DIR/file

这在 umask 更改后仍然存在:

$ umask 077
$ mkdir DIR2
$ ls -ld DIR2
drwxrwxr-x+ 2 sweh sweh 4096 Aug 10 20:08 DIR2
$ touch file3
$ ls -l file3
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:08 file3
$ > file4
$ ls -l file4
-rw-rw-r-- 1 sweh sweh 0 Aug 10 20:08 file4

新创建的目录继承默认的ACL:

$ getfacl DIR2
# file: DIR2
# owner: sweh
# group: sweh
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

但这不会x从编译的程序中删除该标志:

$ gcc -o x x.c
$ ls -l x
-rwxrwxr-x 1 sweh sweh 6680 Aug 10 20:12 x

在这种情况下,这是因为gcca chmodand so 覆盖了默认值:

open("x", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
....
chmod("x", 0775) 

相关内容