Как я знаю, что ACL поддерживаются в моей файловой системе?


12

Достаточно ли этого, чтобы getfaclне выдавать ошибку, или мне нужно проверить другое место, чтобы узнать, поддерживаются ли ACL файловыми системами?

Ответы:


7

Если вы говорите о смонтированной файловой системе, я не знаю какого-либо внутреннего способа определить, возможен ли 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 .


Что касается getfaclтеста, вы правы. За исключением случаев, когда я смог найти ACL не по умолчанию (подавляя стандартные и заголовок). Проверка /proc/mountоказывается недостаточной в тех случаях, когда эта aclопция является опцией по умолчанию, но не из команды mount или fstab, хотя.
0xC0000022L

Я заметил, что при запуске ZFS в Linux, с acltype=posixacl, /proc/mountsпокажет posixacl, но в другой системе только с ext4 внутри ничего нет /proc/mounts, но aclбыла опция монтирования по умолчанию для ext4.
CMCDragonkai

4

Чтобы узнать, доступен ли ACL, вы можете:

  1. Проверьте текущую версию ядра и файловую систему:
    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

  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

acl должен быть включен по умолчанию, если вы используете ext2 / 3/4 или btrfs.

Проверить с:

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

Если его нет в выводе, сделайте:

tune2fs -o acl /dev/sdXY


команда работает только для ext2 / 3/4. И это требует root, а бегать getfaclне стал бы. Нет ли лучшего варианта для проверки поддержки?
0xC0000022L

grep acl /etc/mke2fs.confсделаю это тоже.
Ктулху Щупальца

это также относится к ext2 / 3/4 и не обслуживает btrfs. Спасибо за ваше время, но я постараюсь найти более общее решение проблемы.
0xC0000022L
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.