Полный цикл в digital

Команда setfacl списки контроля доступов ACL в Linux

ACL или Access Control Lists в Linux дают возможность предоставлять разрешения нескольким пользователям и группам для одного и того же файла или каталога. ACL позволяют решить некоторые ограничения других общих инструментов управления разрешениями, в частности:

  • У файла/каталога может быть только один пользователь-владелец и одна группа-владелец
  • Не работает наследование разрешений, чтобы разрешения каталога передавались его файлам и подкаталогам

Списки ACL применяются к каталогам, чтобы гарантировать, что новые файлы, созданные в каталоге, автоматически получат необходимые разрешения. Для установки ACL применяется команда setfacl.

Синтаксис

setfacl опции операция объект:группа:права дириктория/файл

Опции

ACL по умолчанию предназначен для новых файлов и не влияет на существующие файлы. Все новые файлы получат разрешения, установленные в ACL по умолчанию. Без опции -d команда setfacl работает только с существующими файлами. Чтобы убедиться, что все новые файлы получат желаемые настройки ACL, следует дважды использовать команду setfacl. Сначала с опцией -d, чтобы был установлен список ACL по умолчанию, а затем с опцией -R и без опции -d, чтобы позаботиться о существующих в данный момент файлах.

  • -d устанавливает ACL по умолчанию. Это параметр ACL также наследуется подкаталогами и файлами
  • -k удаляет список ACL по умолчанию
  • -R рекурсивно применяет настройки ACL

Операция

Устанавливает что надо сделать, добавить или удалить настройку ACL.

  • --set используется для установки ACL, стоит учитывать, что произойдёт замена существующий ACL
  • -m дополняет текущие настройки ACL, без полной замены
  • -x удаляет существующий ACL

Объект

Существует два типа объектов:

  • u для пользователя
  • g для группы

Группа

Указываем группу для которой будут новые настройки доступа.

Права

Разрешения, которые надо установить с помощью списков управления доступом.

Информации о списках

Для получения информации о списках ACL применяется команда getfacl, которой передается имя файла/каталога:

getfacl file

Применение setfacl

Создадим в папке файловой системы новый каталог:

sudo mkdir ./test

Посмотрим на списки ACL для этого каталога:

getfacl ./test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Видим что для владельца установлены разрешения rwx, для группы владельца и всех остальных - r-x.

Перейдем в каталог и попробуем создать в нем файл "hello.txt":

touch hello.txt

Команда touch, которая должна создавать файл, не создает его без команды sudo.

Установим списки контроля доступом для этого каталога. В моем случае среди дополнительных групп, к которым принадлежит текущий пользователь, есть группа www-data:

groups

Установим для группы www-data разрешения rwx на папку ./test:

sudo setfacl -m g:www-data:rwx ./test

После этого заново проверим списки контроля доступа к папке с помощью команды getfacl:

getfacl ./test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
group:www-data:rwx
mask::rwx
other::r-x

Видим что в выводе команды появился новый пункт group:www-data:rwx, который указывает на разрешения для группы www-data.

После этого, пользователи из группы www-data смогут изменять содержимое каталога, без команды sudo:

touch test.txt

Получим ACL для созданного файла:

getfacl test.txt

Для файла test.txt действуют списки доступа, установленные для папки test по умолчанию.

# file: test.txt
# owner: vadik
# group: vadik
user::rw-
group::rw-
other::r--

Изменение прав по умолчанию

Изменим права по умолчанию:

sudo setfacl -d -m g:www-data:rwx ./test

Параметр -d устанавливает список доступа ACL по умолчанию для всех новых файлов и каталогов на основе ACL, установленного для каталога test.

Создадим новый файл:

touch test2.txt
getfacl test2.txt

Для файла test2.txt уже применяются ACL, установленные для каталога:

# file: test2.txt
# owner: vadik
# group: vadik
user::rw-
group::r-x
group:www-data:rwx
mask::rwx
other::r--

Рекурсивное изменение прав

К первому текстовому файлу ACL каталога все еще не применяется. Чтобы решить эту проблему, нам надо применить ACL рекурсивно:

sudo setfacl -R -m g:www-data:rwx ./test
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг