如何在创建文件时设置默认(而非继承)acl 权限?

如何在创建文件时设置默认(而非继承)acl 权限?

这是使用 freenas 盒子(FreeNAS-9.3-STABLE-201506292130)的。

在基于 Debian 的 Linux 中,文件/目录的默认权限通常为 644/755(现在是 664/775?)。据我了解,这是因为 umask 设置为 022 或 002,它控制着创建新文件的默认权限。然而,在 freenas(windows acl 样式权限)中,默认文件创建只是继承了包含目录的权限。我从 setfacl 手册页中看到

setfacl(1) 手册页

有一个继承标志。但是,我更希望使用默认标志而不是继承标志。有没有办法改变这一点,让创建行为更接近基于 Debian 的系统中所做的行为?也就是说,我希望文件为 644,目录为 755。我不希望新创建的文件只获得 755 个权限,因为目录将这些权限视为权限。

我一直在绞尽脑汁想办法让某件事奏效。我目前正在使用 NFSv4 ACL,当我尝试使用 POSIX ACL 时,我收到“品牌不匹配”错误,因此我一直坚持使用 windows 样式、freenas、freebsd、NFSv4、setfacl/getfacl 命令,但我尝试的任何方法都无法获得上述行为。

$ mkdir test
$ cd test
$ ls -lat
drwxr-xr-x+  2 user  user   2 Aug  1 12:40 . 
drwxr-xr-x+ 67 user  user  67 Aug  1 12:40 ..
$ touch testfile
$ ls -lat
drwxr-xr-x+  2 user  user   3 Aug  1 12:40 .
-rwxr-xr-x+  1 user  user   0 Aug  1 12:40 testfile
drwxr-xr-x+ 67 user  user  67 Aug  1 12:40 ..
# file: .
# owner: user
# group: user
            owner@:rwxpDdaARWcCos:fd----:allow
            group@:r-x---a-R-c--s:fd----:allow
         everyone@:r-x---a-R-c--s:fd----:allow
$ getfacl testfile
# file: testfile
# owner: user
# group: user
            owner@:rwxpDdaARWcCos:------:allow
            group@:r-x---a-R-c--s:------:allow
         everyone@:r-x---a-R-c--s:------:allow

答案1

NFSv4 ACL 中没有“默认 ACL”。但是,您可以精确控制哪些内容可以继承以及由哪些内容继承。特别是,您可以添加由文件继承的 ACE,以及​​另一组可以由目录继承的 ACE。像这样 - 前三个适用于目录,后三个适用于文件。请注意,目录将继承两者,但“文件”条目将设置“i”(inherit_only)标志,因此它们不会应用于目录本身 - 它们仅供目录中的文件继承。因此,这是父目录上的 ACL:

        owner@:rwxp----------:-di----:allow
        group@:r-x-----------:-di----:allow
     everyone@:r-x-----------:-di----:allow
        owner@:rw-p----------:f-i----:allow
        group@:r-------------:f-i----:allow
     everyone@:r-------------:f-i----:allow
        owner@:rwxp--aARWcCos:-------:allow
        group@:r-x---a-R-c--s:-------:allow
     everyone@:r-x---a-R-c--s:-------:allow

这是文件将要继承的内容('I' 标志表示该条目已被继承;它在 FreeBSD 11-CURRENT 之前并不存在):

        owner@:rw-p----------:------I:allow
        group@:r-------------:------I:allow
     everyone@:r-------------:------I:allow

这是目录将继承的内容('i'标志表示'inherit_only' - ACE 存在,但它不会影响它的实际访问权限;它只会被继承下来):

        owner@:rwxp----------:-d----I:allow
        group@:r-x-----------:-d----I:allow
     everyone@:r-x-----------:-d----I:allow
        owner@:rw-p----------:f-i---I:allow
        group@:r-------------:f-i---I:allow
     everyone@:r-------------:f-i---I:allow

相关内容