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?
3 Answers
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 theacl
option is a default option not coming from the mount command orfstab
, though. Dec 31, 2014 at 9:03 -
I noticed when running ZFS on Linux, with
acltype=posixacl
, the/proc/mounts
will showposixacl
, but in another system with just ext4, there's nothing inside/proc/mounts
, butacl
was a default mount option for ext4. Aug 4, 2016 at 13:33
To know if ACL is available you can:
Check current kernel version and filesystem:
uname -r
df -T
ormount | 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
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/proc
instead. 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
-
1