如何将 Linux ACL 设置为默认具有权限的特定组?

如何将 Linux ACL 设置为默认具有权限的特定组?

所以我有一个目录:www\看起来像这样:

[eugene@server ~]$ ll
共 0
drwxrwx---. 2 eugene eugene 57 十二月 10 16:04 www

我想让此目录中创建的所有新文件都属于该组apache 有权限770

所以我做了:

[eugene@server ~]$ chgrp apache www/
[eugene@server ~]$ setfacl -Rm u:eugene:rwx,d:g:apache:rwx,d:o:--- www/
[eugene@server ~]$ ll
drwxrwx---+ 2 eugene apache 43 十二月 10 16:10 www
[eugene@server ~]$ echo 123 > www/test.txt
[eugene@server ~]$ ll www/
-rw-rw----+ 1 eugene eugene 4 十二月 10 16:11 test.txt
[eugene@server ~]$  

正如您所见,test.txt创建时没有预期的组apache。也没有x设置(执行)权限...

我在这里遗漏了什么?

答案1

为了使用 apache 组创建目录中的文件,您最好设置 SETGUID 位:

chmod +2000 www

至于创建文件的默认权限,您不能使用 ACL 来实现,因为默认的 Linux umask 总是获胜。umask 不允许在创建文件的权限中使用任何 7 位数字 (rwx) 来创建文件。

相反,你可以创建一个脚本mk文件内容如下:

touch $1
chmod 770 $1

使其可执行:

chmod 750 mkfile

并将其放入 /usr/local/bin 文件夹。现在您可以在任何地方创建具有 770 权限的文件:

mkfile my_file

相关内容