我怎么知道我的文件系统支持ACL?


13

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

Answers:


8

如果您正在谈论已挂载的文件系统,那么我不知道有任何固有的方式来判断ACL是否可行。请注意,“是否支持ACL?” 这不是一个非常精确的问题,因为周围有几种类型的ACL(Solaris / Linux /毕竟不是POSIX,NFSv4,OSX等)。请注意,这getfacl是没有用的测试,因为如果有的话,它将很高兴地报告Unix权限:您需要尝试设置 ACL进行测试。

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


至于getfacl测试,你是对的。除非我能够找到非默认ACL(通过抑制默认ACL和标头)。/proc/mount如果该acl选项是默认选项而不是来自mount命令或fstab,则检查似乎还不够。
0xC0000022L 2014年

我注意到在Linux上运行ZFS时,带有acltype=posixacl/proc/mounts将会显示posixacl,但是在另一个只有ext4的系统中,里面什么也没有/proc/mounts,但这acl是ext4的默认安装选项。
CMCDragonkai '16

4

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

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

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

    如果您使用较旧的设置,则可能必须重新编译内核和/或在中添加acl /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)

-
:有帮助的信息上可以找到
- superuser.com
- serverfault
- bencane.com
- wiki.archlinux.org


1

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

检查:

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

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

tune2fs -o acl /dev/sdXY


grep acl /etc/mke2fs.conf也会这样做。
克苏鲁触手2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.