Обзор
ACL предоставляют гибкое управление правами доступа, выходящее за рамки традиционной модели разрешений Unix (владелец, группа, остальные). Вы можете явно указывать права доступа к файлу или каталогу для конкретного пользователя или группы. Это полезно для удовлетворения сложных требований к разрешениям в средах, где совместно используется несколько пользователей.
Основные характеристики
- Детализированный контроль доступа
- Предоставление прав конкретным пользователям/группам
- Работает совместно с базовыми правами (umask)
- Возможность установки базовых ACL для каталогов
Установка
Сама функция `acl` встроена в ядро Linux, но для использования команд `getfacl` и `setfacl` необходимо установить пакет `acl`. Во многих дистрибутивах Linux он может быть не установлен по умолчанию.
Debian/Ubuntu
sudo apt update && sudo apt install acl
Команда для установки пакета `acl` в системах на базе Debian или Ubuntu.
CentOS/RHEL/Fedora
sudo yum install acl
Команда для установки пакета `acl` в системах на базе CentOS, RHEL или Fedora.
Примеры использования
ACL обычно управляются с помощью команд `getfacl` (просмотр ACL) и `setfacl` (установка ACL). Ниже приведены несколько распространенных примеров использования.
Просмотр ACL файла
getfacl my_file.txt
Используйте команду `getfacl`, чтобы проверить текущие ACL для конкретного файла или каталога.
Предоставление прав на чтение/запись конкретному пользователю
setfacl -m u:user1:rw my_file.txt
Используйте опцию `setfacl -m`, чтобы предоставить пользователю 'user1' права на чтение (r) и запись (w) для файла 'my_file.txt'.
Предоставление права на выполнение конкретной группе
setfacl -m g:dev_group:x my_script.sh
Используйте опцию `setfacl -m`, чтобы предоставить группе 'dev_group' право на выполнение (x) для скрипта 'my_script.sh'.
Удаление записи ACL
setfacl -x u:user1 my_file.txt
Используйте опцию `setfacl -x`, чтобы удалить запись ACL для пользователя 'user1'.
Установка базовых ACL для каталога
setfacl -m d:u:user2:rwx my_directory/
Установите базовые ACL для каталога, чтобы новые файлы или каталоги, созданные в нем, наследовали определенные ACL. Используйте префикс `d:`.
Удаление всех ACL
setfacl -b my_file.txt
Используйте опцию `setfacl -b`, чтобы удалить все расширенные записи ACL из файла или каталога и вернуть традиционные права доступа.
Советы и замечания
При использовании ACL важно понимать их взаимодействие с традиционной системой прав доступа.
ACL и традиционные права
- В выводе команды `ls -l` для файлов/каталогов с установленными ACL в конце строки прав доступа добавляется символ `+`.
- ACL предоставляют дополнительные права поверх традиционных (владелец, группа, остальные). Запись `mask` ограничивает максимальные эффективные права ACL.
- Слишком сложное конфигурирование ACL может затруднить управление правами, поэтому используйте их осторожно и только при необходимости.
Понимание записи mask
При установке ACL запись `mask` может быть создана или обновлена автоматически. Эта `mask` определяет максимальные эффективные права, предоставляемые записям пользователя (u:), группы (g:), именованного пользователя (u:name:) и именованной группы (g:name:). Даже если вы попытаетесь предоставить больше прав, чем указано в `mask`, они будут ограничены `mask`. Вы можете вручную установить `mask`, например, с помощью `setfacl -m m::rw`.
Поддержка файловой системы
Для использования ACL файловая система должна их поддерживать. Большинство современных файловых систем Linux, таких как ext2, ext3, ext4, XFS, поддерживают ACL. Возможно, вам потребуется убедиться, что опция `acl` активирована при монтировании файловой системы (например, в `/etc/fstab`).