3.4.10 Списки контроля доступа ACL
Скачать документ Списки контроля доступа
Настройка списков доступа
Маска эффективных прав
Для того чтобы получить доступ к файлам в РЕД ОС, используются разрешения, которые назначаются трем объектам — владельцу, группе и другим пользователям.
Просмотреть текущие права доступа можно, используя команду ls -l
. Она выведет таблицу файлов в каталоге с некоторыми параметрами.
Управление обычными правами доступа возможно как из графического интерфейса, так и через консоль. Но есть расширенные права доступа, которые через графический интерфейс недоступны.
Списки контроля доступа
Для реализации сложных структур прав доступа на файловых системах в РЕД ОС используются расширенные права — ACL (access control list — списки контроля доступа), которые дают бóльшую гибкость, чем стандартный набор полномочий.
Поддержка ACL на файловых системах ext4 и XFS включена по умолчанию. При необходимости можно отключить поддержку списков доступа, указав для выбранной файловой системы опцию «noacl» в файле /etc/fstab.
Система списков доступа ACL предоставляет дополнительные функциональные возможности ОС. НО у нее есть один недостаток — не все утилиты ее поддерживают. Следовательно, можно потерять настройки ACL при копировании или перемещении файлов, а программное обеспечение для резервного копирования может не выполнить резервное копирование настроек ACL.
Вы можете подробнее ознакомиться с настройкой списков контроля доступа ACL, просмотрев наши обучающие видео:
на RuTube — Списки контроля доступа ACL (Access Control List);
в Яндекс.Дзен — Списки контроля доступа ACL (Access Control List);
в VK Видео — Списки контроля доступа ACL (Access Control List).
На наших каналах вы также сможете найти много другой полезной информации.
Если у файла или каталога установлены ACL, то в листинге будет отображаться знак «+». Команда ls -l
не показывает никаких существующих ACL, она просто показывает «+» после списка разрешений, который указывает, что списки ACL применяются и к файлу.
Попробуем сделать копию файла и убедимся, что настройки ACL при этом не копируются:
cp testACL.txt testACLcopy.txt ls -l
При работе с ACL нужно быть внимательнее, т.к. не все программы могут использовать ACL. Заметим, что для копирования файла с сохранением ACL необходимо использовать ключ -р для команды cp
:
cp -p testACL.txt testACLcopy2.txt
Чтобы увидеть текущие настройки ACL, потребуется команда getfacl
. Просмотрим установленные настройки на файле без ACL и сравним вывод с командой ls -l
:
getfacl testACLcopy.txt ls -l testACLcopy.txt
Права доступа отображаются по-разному, но значения соответствующих полей одинаковы.
Попробуем посмотреть настройки ACL-файла с установленными списками доступа, сравним вывод с командой ls -l
:
getfacl testACL.txt ls -l testACL.txt
Команда ls
не выводит имя второго владельца файла и его права доступа к файлу, хотя второй владелец присутствует, как показывает команда getfacl
. Также для файла теперь присутствует поле mask
, которое определяет максимальные права для добавляемых полей. В данном примере видно, что можно установить права на чтение, запись и выполнение.
Настройка списков доступа
Для установки и настройки списков доступа предназначена команда setfacl
. Она имеет простой формат.
Синтаксис команды:
setfacl [<опции>] <ключ> <список_правил> <объект>
Опции:
-b — удаляет все ACL права с объекта, сохраняя основные права;
-k — удаляет с объекта ACL по умолчанию;
-d — устанавливает ACL по умолчанию на объект, т. е. наследуемых прав;
-R — рекурсивное назначение (удаление) прав.
Ключи:
--set — устанавливает новые указанные права, удаляя все существующие;
-m — изменяет указанные ACL на объекте, сохраняя существующие;
-x — удаляет указанные ACL с объекта, стандартные права не изменяются.
Ниже приведено несколько примеров списков правил, устанавливаемых командой setfacl
:
u:<uid>:<права> — назначение ACL для доступа заданному пользователю (здесь можно указать имя или UID пользователя);
g:<gid>:<права> — назначение ACL для доступа заданной группе (здесь можно указать имя или GID группы);
o:<права> — назначение ACL для доступа пользователям, не включённым в группу владельцев файлового объекта («все остальные»);
m:<права> — назначение маски эффективных прав.
Например, команда setfacl -m u:test:r-x testACL.txt
дает разрешения пользователю test для файла testACL.txt, не делая его владельцем и не изменяя назначение текущего владельца. Иначе говоря, пользователь test будет иметь права на этот файл как владелец, только со своими особенными правами доступа.
Команда удаления ACL для пользователя выглядит следующим образом:
setfacl -x u:test testACL.txt
Проверим, удалились ли сведения ACL:
ls -l
Знак «+» все еще отображается, значит сведения ACL ещё действуют. Проверим, какие сведения ACL привязаны к файлу, выполнив команду:
getfacl testACL.txt
Вывод команды показывает, что применен параметр mask
, удалим его командой:
setfacl -x m testACL.txt
Проверяем, осталась ли запись ACL у файла:
ls -l
Знак «+» у файла testACL.txt теперь отсутствует, значит сведения ACL удалены полностью.
Маска эффективных прав
Маска эффективных прав задает максимальные права доступа для всех пользователей, за исключением владельца и групп. Установка маски представляет собой самый быстрый путь изменения фактических (эффективных) прав доступа всех пользователей и групп. Например, маска (r - -) показывает, что пользователи и группы не могут иметь больших прав, чем просто чтение, даже если им назначены права доступа на чтение и запись.
Рассмотрим пример, где установим максимальные права для пользователя test:
setfacl -m u:test:rwx testACL.txt
Затем зададим маску эффективных прав:
setfacl -m m:r-- testACL.txt
Права на файл устанавливаются в соответствии с выполняемой командой, но маска, установленная как r--, лишает разрешения на запись и запуск всех владельцев, кроме основного. Это и отображает появившаяся запись:
Для отмены маски ее следует установить в значение rwx.
Для удаления параметров ACL необходимо выполнить команду:
setfacl -b testACL.txt
Теперь вы можете использовать списки доступа ACL для более гибких настроек прав доступа к вашим данным.
Дата последнего изменения: 09.10.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.