Обзор
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).