Главная > Управление пакетами и системой > acl

ACL: Управление списками контроля доступа

ACL (Access Control List) — это функция системы Linux, позволяющая настраивать детализированные права доступа к файлам и каталогам. Помимо традиционных прав для пользователя, группы и остальных, вы можете явно предоставлять или отзывать права на чтение, запись и выполнение для конкретных пользователей или групп. Сам по себе acl не является командой, а управляется в основном с помощью команд getfacl и setfacl.

Обзор

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).



Те же команды в категории