我刚刚学习 Linux 上的丰富访问控制列表。我的直接目标是为该组的成员提供与子目录树(其中的所有文件和目录)所有者相同的权利。
我已经查看了 setfattr 和 getfattr 的手册页。这些手册页都没有提供可用 RichACL 的列表。 (我真的只对与 BTRFS 兼容的 RichACL 感兴趣。)
这是另一个好资源richacl:丰富的访问控制列表 - Linux 手册页 (7)这提供了一些背景。
我已经做了一些简单的例子,例如:
setfattr -n user.comment -v "this is a comment" test.txt
其次是:
getfattr test.txt
我知道这些操作不同于setfacl
和getfacl
。
我还了解扩展文件属性有四个命名空间:
- 用户
- 值得信赖的
- 安全
- 系统
我知道 RichACL 比 POSIX ACL 更丰富。 ACL 与扩展属性不同(但它们可能存储在 xattr 名称空间中)。我知道我想要做的事情的具体细节取决于文件系统,这没关系。我只关心 BTRFS。
但是,我没有足够的信息来做任何有用的事然而。如前所述,我想做的第一件事是给予该组与所有者相同的权利文件或目录的。然后我想将它们继承到这些目录中的子目录和文件。
一些具体的例子包括: 我希望小组成员能够执行诸如chmod
、chatttr
甚至 之类的操作chown
,如果我认为合适的话。
编辑:作为答案的一部分,还请解决用于读取和设置丰富 acl 的实用程序(程序)。我见过setfattr
与丰富的 acl 结合使用。然而,我也看到了对名为 的实用程序的引用setrichacl
,但我在 Arch Linux 中没有找到这样的实用程序。
ACL 的库存内核配置信息:
$ zcat /proc/config.gz | grep -i acl
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_9P_FS_POSIX_ACL=y
答案1
事实证明,主线 Linux 内核不支持 Rich ACL。
来源:https://wiki.samba.org/index.php/NFS4_ACL_overview#Linux
此外,截至 2019 年 5 月 2 日:
回复:修补overlayfs:忽略 ext4 upperdir 中的空 NFSv4 ACL - Andreas Gruenbacher
用于实施的补丁已被一次又一次地拒绝,并且没有人再致力于它们。
感谢 Reddit 用户 Progandy 提供此信息。