В Linux-подобных системах существует множество механизмов безопасности, которые позволяют аутентифицировать пользователя, разграничивать среду работы, фильтровать события системы или сетевые пакеты на нижнем и верхних уровнях. Один из таких решает вопросы связанные с распределением прав между пользователями одной ОС – механизм разграничения прав доступа. Существует множество разных вариантов их реализации, однако, в Linux и Windows, по умолчанию, используют DAC.
Если для вас это сочетания символов пока непонятны, то ниже в материале мы разберем его более подробно. А так же рассмотрим, достаточно, простой способ настройки.
Что такое DAC и как его настроить?
Для того, чтобы эффективно разграничить права пользователей разработали три основных модели, которые определяют возможность доступа от субьектов (пользователей) к обьектам (файлам): DAC, MAC, RBAC.
DAC или же дискреционное разграничение прав доступа представляет механизм, в котором атрибуты файлов и права пользователя определяют правила разграничения. Можно представить в виде матрицы, где отображены субьекты и обьекты, в строках и столбцах соответственно. А в их пересечениях определены права, которыми наделены пользователи в отношении того или иного файла.
На практике это работает следующим образом. При создании файла, ему назначаются базовые атрибуты, которые записываются в дополнении к мета-данным файла: владелец, группа владельца, а так же права для этих категорий и остальных пользователей.
На скриншоте представлены триплеты rwx, которые как раз определяют категории доступа для владельца, его группы и остальных. В процессе запроса к файлу происходит сравнение прав субьекта и обьекта, если пользователь имеет доступ, то ядро выполнит действие над файлом, иначе запретит обращение.
Однако вы можете задаться вопросом, а что если трех категорий для вас недостаточно? К примеру, у вас есть подрядчики, которые выполняют задачи в вашей инфраструктуре. И вместо 32 файлов, к которым имеют доступ пользователи группы владельца, нужно предоставить к 3. Как быть? В большинстве дистрибутивах Linux существует ACL-списки. Они призваны поименно предоставлять права, что минимизирует недостаток в выдаче прав группе пользователей.
Для работы с данным решением необходимо установить пакеты, для большинства систем они уже лежат в стандартных репозиториях:
Для rpm-подобных систем можно использовать другую команду:
После чего управление атрибутами файлов будет производиться двумя основными командами getfacl и setfacl. Создадим любой файл и просмотрим права на него.
При нехватке собственных мощностей можно воспользоваться облачными серверами от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать:
Для этого используем операнд && который позволит выполнить сразу две команды по очереди вместо одной:
Файл содержит классические права для стандартных 3 групп пользователей. Но если прописать команду с опциями stefacl, то можно добавить, как отдельного пользователя, так и группу не владельца целиком.
Синтаксис представляет собой совокупность команды для вызова утилиты с опциями:
- setfacl – утилита для установки атрибутов файлу;
- -m – опция, указывающая функции, при работе с файлом;
- group – тип субъекта, которому выдаются права;
- users – название типа субъекта, в данном случае название группы;
- rwx – выдаваемые права субъекту;
- 1.txt – название файла для выдачи атрибутов.
Теперь он содержит, как и стандартные права, так и кастомное для пользователей группы users, где они могут обращаться к файлу с полными правами. Возможно, мы погорячились, выдав полные права. Давайте удалим одно или все нововведенные правила.
Если возникнет потребность в удалении всех прав, то воспользуемся командой – она позволит сбросить все ранее внесенные правила ACL:
С директориями это работает схожим образом, только немного видоизменяется синтаксис. В начале указывается опция d, а затем такое же правило с указанием пути.
Теперь к корневой директории имеет доступ не только root, но и пользователь koldek. Конечно, так делать не стоит, но для демонстрации отлично подходит. А если есть потребность рекурсивно изменить права для директории и всех подпапок, то можно изменить права рекурсивно:
Однако у этого расширенного механизма DAC есть и свои минусы, так как не все дистрибутивы имеют предустановленный ACL модуль, то новые атрибуты не буду считаны. Тоже самое касается средств передачи, не у всех есть возможность упаковать необходимые метки. Возможны проблемы с индексацией, при поиске файлов, так как ACL дает дополнительную нагрузку и ище медленней, чем по стандартным дискреционным спискам.
Использовать средство в вашей системе или нет, остается за вами, но этот гибкий инструмент добавляет отличный функционал к уже существующему механизму дискреционного контроля.