Достаточно ли этого, чтобы getfacl
не выдавать ошибку, или мне нужно проверить другое место, чтобы узнать, поддерживаются ли ACL файловыми системами?
Достаточно ли этого, чтобы getfacl
не выдавать ошибку, или мне нужно проверить другое место, чтобы узнать, поддерживаются ли ACL файловыми системами?
Ответы:
Если вы говорите о смонтированной файловой системе, я не знаю какого-либо внутреннего способа определить, возможен ли ACL. Обратите внимание, что «ACL поддерживается?» не очень точный вопрос, поскольку существует несколько типов ACL (Solaris / Linux / not-POSIX-all-all, NFSv4, OSX,…). Обратите внимание, что getfacl
в качестве теста он бесполезен, поскольку он с радостью сообщит о разрешениях Unix, если это все, что нужно: вам нужно попробовать настроить ACL для тестирования.
Находясь на смонтированной файловой системе, вы можете проверить наличие acl
в параметрах монтирования (которые вы можете найти в /proc/mount
). Обратите внимание, что этого недостаточно: вам также необходимо учитывать версию ядра и тип файловой системы. Некоторые типы файловых систем всегда имеют ACL, независимо от параметров монтирования; это касается tmpfs, xfs и zfs. Некоторые файловые системы имеют ACL, если явно не исключены; это касается ext4 начиная с ядра 2.6.39 .
acltype=posixacl
, /proc/mounts
покажет posixacl
, но в другой системе только с ext4 внутри ничего нет /proc/mounts
, но acl
была опция монтирования по умолчанию для ext4.
Чтобы узнать, доступен ли ACL, вы можете:
Проверьте текущую версию ядра и файловую систему:
uname -r
df -T
или в mount | 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
Посмотрите на существующие настройки 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
acl должен быть включен по умолчанию, если вы используете ext2 / 3/4 или btrfs.
Проверить с:
tune2fs -l /dev/sdXY | grep "Default mount options:"
Если его нет в выводе, сделайте:
tune2fs -o acl /dev/sdXY
root
, а бегать getfacl
не стал бы. Нет ли лучшего варианта для проверки поддержки?
grep acl /etc/mke2fs.conf
сделаю это тоже.
getfacl
теста, вы правы. За исключением случаев, когда я смог найти ACL не по умолчанию (подавляя стандартные и заголовок). Проверка/proc/mount
оказывается недостаточной в тех случаях, когда этаacl
опция является опцией по умолчанию, но не из команды mount илиfstab
, хотя.