Is it enough to see getfacl giving no error, or do I have to check some other place to see whether or not ACLs are supported by the file systems?

up vote 6 down vote accepted

If you're talking about a mounted filesystem, I don't know of any intrinsic way to tell whether ACL are possible. Note that “are ACL supported?” isn't a very precise question since there are several types of ACL around (Solaris/Linux/not-POSIX-after-all, NFSv4, OSX, …). Note that getfacl is useless as a test since it will happily report Unix permissions if that's all there is: you need to try setting an ACL to test.

Still on mounted filesystem, you can check for the presence of acl in the mount options (which you can find in /proc/mount). Note that this isn't enough: you also need to take the kernel version and the filesystem type in consideration. Some filesystem types always have ACL available, regardless of mount options; this is the case for tmpfs, xfs and zfs. Some filesystems have ACL unless explicitly excluded; this is the case for ext4 since kernel 2.6.39.

  • as for the getfacl test you're right. Except if I were able to find a non-default ACL (by suppressing default ones and header). Checking /proc/mount doesn't appear to be enough in cases where the acl option is a default option not coming from the mount command or fstab, though. – 0xC0000022L Dec 31 '14 at 9:03
  • I noticed when running ZFS on Linux, with acltype=posixacl, the /proc/mounts will show posixacl, but in another system with just ext4, there's nothing inside /proc/mounts, but acl was a default mount option for ext4. – CMCDragonkai Aug 4 '16 at 13:33

To know if ACL is available you can:

  1. Check current kernel version and filesystem:
    uname -r
    df -T or mount | grep root

    Recent distro have ACL mount option included by default (since kernel 2.6). So it's not mandatory to redefine it in /etc/fstab (or similar). Non exhaustive list of filesystems concerned: ext3, ext4, tmpfs, xfs and zfs .

    If you have older setup then you may have to recompile the kernel and/or add acl in /etc/fstab.
    fstab example: /dev/root / ext4 acl,errors=remount-ro 0 1

  2. Look for existing ACL settings (the "usual" config place is on /boot):
    sudo mount | grep -i acl #optionnal
    cat /boot/config* | grep _ACL

    Depending of the system you could find the settings in /procinstead. Here is a way to extract the config from the .gz archive and then search for acl settings:
    cat /proc/config.gz | gunzip > running.config && grep -i 'acl' running.config
    cat running.config | grep _ACL

    You should see something like:
    CONFIG_EXT3_FS_POSIX_ACL=y
    CONFIG_EXT2_FS_POSIX_ACL=y
    CONFIG_XFS_POSIX_ACL=y

    For the filesystem you can try to get more info with:
    sudo tune2fs -l /xxx/xxx| grep 'Default mount options:'
    (replace xxx/xxx by your filesystem)

--
Helpfull information can be found on:
- superuser.com,
- serverfault,
- bencane.com,
- wiki.archlinux.org

acl should be enabled as default if you are using ext2/3/4 or btrfs.

Check with:

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

If it isn't in the output do a:

tune2fs -o acl /dev/sdXY

  • the command only works for ext2/3/4, though. And it requires root, while running getfacl wouldn't. Isn't there a better option to check for support? – 0xC0000022L Dec 30 '14 at 20:50
  • grep acl /etc/mke2fs.conf will do it too. – Cthulhu Tentacles Dec 30 '14 at 21:00
  • that is also specific to ext2/3/4 and doesn't cater btrfs. Thanks for your time, but I'll hold out for a more generic solution to the issue. – 0xC0000022L Dec 30 '14 at 21:16

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.