![/proc/mounts 中显示的挂载选项](https://linux22.com/image/33052/%2Fproc%2Fmounts%20%E4%B8%AD%E6%98%BE%E7%A4%BA%E7%9A%84%E6%8C%82%E8%BD%BD%E9%80%89%E9%A1%B9.png)
IIRC 中显示的安装选项/proc/mounts
已更改。前段时间显示了acl
和user_xattr
,现在似乎只有关闭这些功能后才会显示noacl
和。nouser_xattr
这是在哪里配置的?这是否取决于文件系统代码的编译默认值?如何检查卷是否支持 ACL 等?有没有比使用setfacl
,进行测试更好的解决方案getfacl
?
答案1
答案2
某些文件系统类型支持没有挂载选项的 ACL,而其他文件系统类型仅支持挂载选项。对于 ext2/ext3/ext4,一些默认挂载选项(包括 acl/noacl)存储在文件系统中(您可以在 中查看tune2fs -l /dev/BLOCK_DEVICE | grep '^Default mount options:'
)。作为由don_crissti 指出,对于 ext4,是否显示该选项取决于内核版本(从内核 2.6.39 开始,acl
无论文件系统说什么,都默认打开)。 vfat 和 minix 等文件系统没有 ACL 支持。 tmpfs、xfs 和 zfs 等文件系统始终支持 ACL。
除非您想要构建和维护一个包含文件系统类型、版本、检查默认值的命令和内核版本的大表,否则无法通过挂载选项或文件系统特征来确定文件系统是否支持 ACL。您无法通过纯粹的观察来判断,getfacl
因为它总是至少报告 unix 权限。即使文件系统支持 ACL,它也可能不支持您想要的 ACL 类型。因此,您最好的选择是调用setfacl
(或底层 C API)来尝试设置您想要的 ACL。如果错误状态为 EOPNOTSUPP(不支持操作),您就会知道文件系统不支持(此类)ACL。