ACL

Материал из Rosalab Wiki
Версия от 11:38, 10 марта 2023; Mikhailnov (обсуждение | вклад) (Настройка ACL на примере)

Перейти к: навигация, поиск

Списки контроля доступа

Введение

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

ACL в Linux обычно состоит из двух типов прав: пользовательские права и групповые права. Пользовательские права позволяют устанавливать права доступа для конкретных пользователей, а групповые права - для групп пользователей.

Преимущество использования ACL заключается в том, что он позволяет установить более точные права доступа, чем это возможно с помощью стандартных прав доступа на основе пользователей и групп. Например, если у вас есть файл, к которому нужен доступ только для нескольких пользователей, вы можете установить ACL для этого файла, чтобы ограничить доступ только для этих пользователей, не давая права доступа всем остальным пользователям на системе.

Команды для работы с ACL в Linux включают getfacl и setfacl. Команда getfacl используется для просмотра текущих прав доступа ACL на файлы и папки, а команда setfacl используется для изменения или добавления новых прав доступа ACL на файлы и папки.

Знание ACL может быть полезно для системных администраторов, которые хотят более тонко настраивать доступ к файлам и папкам на своих серверах.

В Linux ACL хранятся в расширенных атрибутах (extended attributes, xattr), которые являются дополнительными метаданными, хранящимися в файловой системе. Большинство файловых систем, в т.ч. ext4, BTRFS, XFS, поддерживают хранение ACL в xattr. Однако, не все файловые системы поддерживают ACL и хранение их в xattr. Например, файловая система FAT32 не поддерживает ACL вообще.

Эта статья описывает настройку ACL на ОС ROSA Хром/Fresh.

Установка пакетов

Обычно пакет с утилитами для работы с ACL уже предустановлен, при необходимости установите его:

sudo dnf install acl

Настройка ACL на примере

Постановка задачи

Пусть имеется:

  • каталог /media/buhi (на поддержерживающей ACL файловой системе: ext4, btrfs, xfs и др.)
  • группа пользователей buhi (бухгалтерия)
  • пользователи ivanova, petrova, sidorova, входящие в группу buhi

Нужно сделать так, чтобы все пользователи из группы buhi — ivanova, petrova, sidorova — могли:

  • читать файлы в /media/buhi
  • создавать новые файлы и каталоги
  • изменять существующие файлы

Настройка ACL для существующих файлов

Выставьте ACL на каталог /media/buhi для группы "buhi", чтобы ее пользователи могли записывать и читать файлы в этом каталоге. Для этого выполните команду:

setfacl -R -m g:buhi:rwx /media/buhi

Эта команда добавляет права для группы "buhi" на папку /media/buhi и все ее подкаталоги и файлы. Опция -R означает, что изменения должны применяться рекурсивно для всех подкаталогов и файлов. Опция -m означает, что мы меняем существующие права. g:buhi:rwx означает, что мы выставляем права для группы "buhi" на чтение, запись и выполнение.

Проверьте, что ACL настроены правильно. Для этого выполните команду:

getfacl /media/buhi

В выводе должно быть что-то похожее на:

# file: /media/buhi/
# owner: <owner>
# group: buhi
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:buhi:rwx
default:other::r-x

Здесь мы видим, что для группы "buhi" выставлены права на чтение, запись и выполнение.

Теперь группа "buhi" имеет права на чтение и запись файлов в папке /media/buhi и все ее подпапки и файлы.

Автоматическая установка ACL и вновь создаваемых файлов и каталогов

Ключ -d у команды setfacl позволяет установить ACL по умолчанию на вновь создаваемые файлы и папки в указанной директории (ранее мы выставили ACL просто на уже существующие файлы и каталоги).

Для того, чтобы установить ACL по умолчанию для группы "buhi" на каталог /media/buhi, выполните следующую команду:

sudo setfacl -R -d -m g:buhi:rwx /media/buhi

Здесь ключ -d указывает, что мы устанавливаем ACL по умолчанию, а ключ -m указывает, что мы изменяем существующие права. Аргумент g:buhi:rwx задает права для группы "buhi" на чтение, запись и выполнение. Теперь при создании новых файлов и каталогов в каталоге /media/buhi, они будут автоматически получать ACL с правами, выставленными по умолчанию.

Вы можете проверить, что ACL по умолчанию настроены правильно, выполнив команду:

getfacl /media/buhi

В выводе должно быть что-то похожее на:

# file: /media/buhi/
# owner: <owner>
# group: buhi
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:buhi:rwx
default:other::r-x

Здесь мы видим строку "default:group:buhi:rwx", которая указывает, что группа "buhi" имеет права на чтение, запись и выполнение для всех вновь создаваемых файлов и каталогов в каталоге /media/buhi.