Главная > Управление пакетами и системой > 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`).


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