23.06.2025

Права пользователей Linux: гибко и просто

В Linux-подобных системах существует множество механизмов безопасности, которые позволяют аутентифицировать пользователя, разграничивать среду работы, фильтровать события системы или сетевые пакеты на нижнем и верхних уровнях. Один из таких решает вопросы связанные с распределением прав между пользователями одной ОС – механизм разграничения прав доступа. Существует множество разных вариантов их реализации, однако, в Linux и Windows, по умолчанию, используют DAC.

Если для вас это сочетания символов пока непонятны, то ниже в материале мы разберем его более подробно. А так же рассмотрим, достаточно, простой способ настройки.

Что такое DAC и как его настроить?

Для того, чтобы эффективно разграничить права пользователей разработали три основных модели, которые определяют возможность доступа от субьектов (пользователей) к обьектам (файлам): DAC, MAC, RBAC.

DAC или же дискреционное разграничение прав доступа представляет механизм, в котором атрибуты файлов и права пользователя определяют правила разграничения. Можно представить в виде матрицы, где отображены субьекты и обьекты, в строках и столбцах соответственно. А в их пересечениях определены права, которыми наделены пользователи в отношении того или иного файла.

Скриншот №1 — Матрица DAC

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

Скриншот №2 — Мета-данные

На скриншоте представлены триплеты rwx, которые как раз определяют категории доступа для владельца, его группы и остальных. В процессе запроса к файлу происходит сравнение прав субьекта и обьекта, если пользователь имеет доступ, то ядро выполнит действие над файлом, иначе запретит обращение.

Однако вы можете задаться вопросом, а что если трех категорий для вас недостаточно? К примеру, у вас есть подрядчики, которые выполняют задачи в вашей инфраструктуре. И вместо 32 файлов, к которым имеют доступ пользователи группы владельца, нужно предоставить к 3. Как быть? В большинстве дистрибутивах Linux существует ACL-списки. Они призваны поименно предоставлять права, что минимизирует недостаток в выдаче прав группе пользователей.

Скриншот №3 — Расширенные права DAC

Для работы с данным решением необходимо установить пакеты, для большинства систем они уже лежат в стандартных репозиториях:

apt update && apt install acl -y

Для rpm-подобных систем можно использовать другую команду:

dnf install acl -y

Скриншот №4 — Установка ACL

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

При нехватке собственных мощностей можно воспользоваться облачными серверами от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать:

Скриншот №5 — Создание сервера

Для этого используем операнд && который позволит выполнить сразу две команды по очереди вместо одной:

touch 1.txt && getfacl 1.txt

Скриншот №6 — Мета-данные файла

Файл содержит классические права для стандартных 3 групп пользователей. Но если прописать команду с опциями stefacl, то можно добавить, как отдельного пользователя, так и группу не владельца целиком.

setfacl -m group:users:rwx 1.txt

Скриншот №7 — Новые права для файла

Синтаксис представляет собой совокупность команды для вызова утилиты с опциями:

Теперь он содержит, как и стандартные права, так и кастомное для пользователей группы users, где они могут обращаться к файлу с полными правами. Возможно, мы погорячились, выдав полные права. Давайте удалим одно или все нововведенные правила.

setfacl -x group:users 1.txt

Скриншот №8 — Удаление прав

Если возникнет потребность в удалении всех прав, то воспользуемся командой – она позволит сбросить все ранее внесенные правила ACL:

setfacl -b 1.txt

С директориями это работает схожим образом, только немного видоизменяется синтаксис. В начале указывается опция d, а затем такое же правило с указанием пути.

setfacl -m d:u:koldek:rwx ~/

Скриншот №9 — Новые права для директории

Теперь к корневой директории имеет доступ не только root, но и пользователь koldek. Конечно, так делать не стоит, но для демонстрации отлично подходит. А если есть потребность рекурсивно изменить права для директории и всех подпапок, то можно изменить права рекурсивно:

setfacl -r -m d:u:koldek:rwx ~/

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

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