我如何知道我的文件系统支持 ACL?

我如何知道我的文件系统支持 ACL?

看到getfacl没有错误就足够了,还是我必须检查其他地方来查看文件系统是否支持 ACL?

答案1

如果您谈论的是已安装的文件系统,我不知道有任何内在方法可以判断 ACL 是否可行。请注意“是否支持 ACL?”这不是一个非常精确的问题,因为存在多种类型的 ACL(Solaris/Linux/毕竟不是 POSIX、NFSv4、OSX,...)。请注意,这getfacl作为测试是没有用的,因为它会很高兴地报告 Unix 权限(如果这就是全部):你需要尝试环境要测试的 ACL。

acl仍然在已挂载的文件系统上,您可以检查挂载选项中是否存在(您可以在 中找到/proc/mount)。请注意,这还不够:您还需要考虑内核版本和文件系统类型。某些文件系统类型始终具有可用的 ACL,无论安装选项如何; tmpfs、xfs 和 zfs 就是这种情况。某些文件系统具有 ACL,除非明确排除;情况是这样的对于 ext4 自内核 2.6.39 起

答案2

如果您使用 ext2/3/4 或 btrfs,则应默认启用 acl。

检查:

tune2fs -l /dev/sdXY | grep "Default mount options:"

如果它不在输出中,请执行以下操作:

tune2fs -o acl /dev/sdXY

答案3

要了解 ACL 是否可用,您可以:

  1. 检查当前内核版本和文件系统:
    uname -r
    df -Tmount | grep root

    最近的发行版默认包含 ACL 挂载选项(自内核 2.6 起)。因此,不必在 /etc/fstab (或类似文件)中重新定义它。相关文件系统的非详尽列表: ext3、ext4、tmpfs、xfs 和 zfs 。

    如果您有较旧的设置,那么您可能必须重新编译内核和/或在/etc/fstab.
    fstab 示例: /dev/root / ext4 acl,errors=remount-ro 0 1

  2. 查找现有的 ACL 设置(“通常”配置位置位于 /boot 上):
    sudo mount | grep -i acl #optionnal
    cat /boot/config* | grep _ACL

    根据系统的不同,您可以在其中找到设置/proc。以下是从 .gz 存档中提取配置然后搜索 acl 设置的方法:
    cat /proc/config.gz | gunzip > running.config && grep -i 'acl' running.config
    cat running.config | grep _ACL

    您应该看到类似以下内容:
    CONFIG_EXT3_FS_POSIX_ACL=y
    CONFIG_EXT2_FS_POSIX_ACL=y
    CONFIG_XFS_POSIX_ACL=y

    对于文件系统,您可以尝试使用以下方式获取更多信息:(
    sudo tune2fs -l /xxx/xxx| grep 'Default mount options:'
    将 xxx/xxx 替换为您的文件系统)

--
可以在以下位置找到有用的信息:
-超级用户网站,
-服务器故障,
-bencane.com,
-wiki.archlinux.org

答案4

XFS 默认支持它,你可以使用以下命令进行验证:

grep default_mntopts /etc/mke2fs.conf

相关内容