Права доступа в Astra Linux — это правила, которые определяют, какой пользователь и какая программа могут читать, изменять и запускать конкретный файл или каталог. В системе работают две модели одновременно: дискреционная (стандартная для любого Linux, на основе владельца и битов rwx) и мандатная (метки конфиденциальности и целостности, доступная в сертифицированной редакции Special Edition).
Содержание
Ниже разберем обе модели: как читать и менять права через chmod и chown, чем мандатная метка отличается от обычных прав и какими командами Astra ей управляют. Примеры с chmod/chown подходят для любого дистрибутива Linux, мандатные — для Astra Linux Special Edition.
Две модели доступа и редакции Astra Linux
Astra Linux — российская операционная система на базе Debian. Исторически у нее выделяли несколько линеек и уровней защищенности, но состав линейки, названия редакций и условия лицензирования менялись от версии к версии. Поэтому ниже я опираюсь на общий принцип, а конкретную редакцию, ее название и доступные механизмы всегда стоит сверять с актуальной продуктовой страницей и документацией вендора под вашу сборку.
Ключевое для темы прав доступа — различать два типа редакций по наличию мандатной подсистемы.
- Редакции без сертифицированной подсистемы безопасности. В них работают только стандартные механизмы Linux, то есть дискреционные права; мандатного разграничения нет. Была ли такая редакция общедоступной и как она называлась в вашей версии — проверяйте по текущей продуктовой странице, не полагаясь на прежние названия.
- Astra Linux Special Edition — редакция с подсистемой безопасности PARSEC и сертификатами ФСТЭК России. Именно она добавляет мандатное разграничение поверх обычных прав. Все продуктовые команды и утверждения ниже относятся к Astra Linux Special Edition и требуют проверки на вашей целевой версии.
У Special Edition исторически выделяли уровни защищенности (в части версий им давали кодовые имена). Как правило, мандатное разграничение доступа по конфиденциальности в полном объеме относят к более высокому уровню, а мандатный контроль целостности и замкнутую программную среду — к уровню пониже. Точное соответствие «уровень — механизм», сами названия уровней и их наполнение зависят от версии и лицензии, поэтому их обязательно сверяют с официальной документацией под вашу сборку.
Разница между моделями кратко:
| Признак | Дискреционная (DAC) | Мандатная (MAC) |
|---|---|---|
| Кто назначает права | владелец объекта | администратор безопасности, через метку |
| На чем основана | владелец, группа, биты rwx | уровень конфиденциальности и категории |
| Где доступна | любой Linux, все редакции Astra | Astra Linux Special Edition (PARSEC) |
| Основные команды | chmod, chown, chgrp | pdpl-file, pdp-ls, pdpl-user |
Важное правило: модели не заменяют, а дополняют друг друга. Доступ к объекту разрешается, только если запрос проходит и дискреционную, и мандатную проверку. Если хотя бы одна модель запрещает операцию, она не выполнится.
Дискреционные права доступа (DAC)
Дискреционная модель — классическая система прав Unix, которой уже несколько десятилетий. У каждого файла и каталога есть два владельца: пользователь-владелец и группа-владелец. Права описываются для трех классов:
- владелец (user,
u); - группа (group,
g); - остальные (others,
o).
Для каждого класса задаются три бита: r (чтение), w (запись) и x (выполнение). Смысл этих битов отличается для файла и для каталога — это часто путают.
| Право | Для файла | Для каталога |
|---|---|---|
| r | читать содержимое файла | видеть список имен внутри каталога |
| w | изменять содержимое файла | создавать, удалять и переименовывать файлы внутри |
| x | запускать файл на выполнение | входить в каталог и обращаться к его файлам |
Посмотреть текущие права помогает команда ls -l. В начале строки она печатает десять символов, например -rw-r-----. Первый символ — тип объекта (- файл, d каталог, l ссылка), а дальше идут три тройки битов: для владельца, группы и остальных. Прочерк на месте буквы означает, что права нет.
Обычные rwx-биты не копируются из родительского каталога напрямую: режим нового файла ограничивает umask, а не права папки. При этом наследуемые механизмы в Linux все же есть — SGID на каталоге влияет на группу новых объектов внутри него, а default ACL может наследовать расширенные права. То есть биты не «достаются» от папки автоматически, но отдельные атрибуты и ACL наследоваться могут.
Управление правами: chmod и chown
Права меняют командой chmod, а владельца — командами chown (пользователь и группа) и chgrp (только группа). У chmod два режима записи.
В числовом (абсолютном) режиме права задаются тремя цифрами — по одной на владельца, группу и остальных. Цифра — это сумма: r дает 4, w дает 2, x дает 1. Например, 640 означает rw- владельцу (4+2), r-- группе (4) и --- остальным (0).
touch otchet.txt
chmod 640 otchet.txt # 6=rw- владельцу, 4=r-- группе, 0=--- остальным
ls -l otchet.txt # -rw-r----- ... otchet.txt
В символьном (относительном) режиме указывают класс (u, g, o или a для всех), оператор (+ добавить, - убрать, = задать точно) и сами биты. Это удобно, когда нужно поменять одно право, не трогая остальные.
touch data.log
chmod u=rw,g=r,o= data.log # владельцу rw, группе r, остальным ничего
chmod g+r data.log # дать группе чтение файла данных
chmod g-w data.log # снять у группы запись
chown "$(id -un)":"$(id -gn)" data.log # сменить владельца и группу (обычно нужен root)
ls -l data.log
Бит выполнения x для файла с данными бессмыслен — его вешают на каталог (право входить в него) или на исполняемый скрипт с shebang. Например:
printf '#!/bin/sh\necho deploy\n' > deploy.sh
chmod g+x deploy.sh # разрешить группе запускать скрипт
ls -l deploy.sh
Смена владельца в реальной системе почти всегда требует прав root, поэтому chown запускают через sudo. У chmod есть опция -R для рекурсивного обхода, но применять один и тот же числовой режим ко всей ветке опасно. Команда вида chmod -R 750 proekt навесит бит выполнения на все обычные файлы (для данных он не нужен и создает лишние права), а если снять x у файлов режимом 640, то заодно закроется вход в подкаталоги — модель прав ломается в обе стороны.
Правильнее разнести права: каталогам — 750, файлам — 640, отбирая их по типу через find:
mkdir -p proekt/sub
find proekt -type d -exec chmod 750 {} + # каталогам: rwx владельцу, r-x группе
find proekt -type f -exec chmod 640 {} + # файлам: rw- владельцу, r-- группе
ls -ld proekt
Если нужен именно один вызов, используйте символический режим с заглавной X — она ставит бит выполнения только каталогам и файлам, у которых он уже есть:
mkdir -p proekt/sub && touch proekt/data.txt # тестовое дерево
chmod -R u=rwX,g=rX,o= proekt # X - execute только каталогам и уже исполняемым файлам
Отдельно стоит знать про специальные биты: setuid и setgid запускают файл с правами владельца или группы файла, а sticky-бит на каталоге (как у /tmp) ограничивает удаление и переименование файлов внутри: сделать это может владелец файла, владелец каталога или процесс с соответствующей привилегией. Их назначают тем же chmod с дополнительной цифрой впереди, например chmod 1777 /tmp.
Мандатное разграничение доступа в Astra Linux
Дискреционной модели недостаточно там, где нужно строго изолировать данные по грифам секретности: владелец файла сам решает, кому дать доступ, и может ошибиться. Мандатная модель убирает этот произвол — правила задает не владелец, а политика безопасности системы. В Astra Linux Special Edition ее реализует подсистема PARSEC.
Работают два независимых мандатных механизма.
Мандатное разграничение доступа (МРД) по конфиденциальности. Каждому субъекту (пользователю, процессу) и каждому объекту (файлу, каталогу) присваивается метка. Она включает иерархический уровень конфиденциальности и неиерархические категории (набор значений уровней зависит от версии и настройки, поэтому конкретные цифры проверяйте под свою сборку). Как упрощенный вход мандатную политику описывают правилом «не читать выше, не писать ниже»: пользователь с меньшим уровнем не прочитает более секретный файл, а процесс с высоким уровнем не запишет данные в объект с низким. Это именно упрощение: точное решение о доступе зависит от мандатных меток субъекта и объекта, их категорий и предоставленных полномочий, поэтому правила для своей версии проверяйте по документации.
Мандатный контроль целостности (МКЦ) — отдельный механизм с метками целостности. Он ограничивает изменение системных объектов и защищает их от несанкционированной модификации, в том числе вредоносным кодом: процесс с низким уровнем целостности не изменит объект с высоким. В текущих версиях метка целостности содержит и иерархический уровень, и неиерархическую категорию. Модель целостности между релизами меняли, поэтому если важно, как именно она устроена и с какого релиза, сверяйтесь с release notes и документацией на вашу версию — я не утверждаю, что одна модель полностью заменила другую в конкретном номере версии.
Дополняет их замкнутая программная среда (ЗПС). Она контролирует целостность и аутентичность программных объектов с использованием подписей и хэшей, чтобы не запускался посторонний или подмененный код; конкретная область контроля зависит от конфигурации.
Мандатная проверка не отменяется дискреционной: разрешение по DAC (владелец и биты rwx) не дает доступа, если его запрещает мандатная политика — запрос должен пройти все активные проверки. Внутренний порядок хуков я не фиксирую, важен итог: хватает одного запрета, чтобы операция не выполнилась. Обычные chmod и chown мандатными метками не управляют — для них есть свои утилиты.
Мандатные метки на практике: команды Astra
Все команды ниже относятся к Astra Linux Special Edition; синтаксис, форматы меток и вывод зависят от версии, поэтому перед изменениями проверяйте man соответствующей утилиты на своей сборке. Метка безопасности записывается как уровень конфиденциальности и набор категорий (плюс уровень целостности). Не считайте метку корневого или любого системного каталога универсальной константой: она зависит от версии, профиля установки и настройки, поэтому реальное значение сначала смотрят командой, а не берут из памяти.
Для работы с метками в Astra Linux Special Edition используют отдельные утилиты: pdp-ls показывает метки (аналог ls), pdpl-file задает и просматривает метку файла, pdpl-user управляет мандатными атрибутами пользователя. Ниже — иллюстративный сеанс; конкретные значения приведены как пример и на вашей версии будут другими:
# посмотреть мандатные метки объектов (аналог ls)
# вывод зависит от версии и профиля стенда; пример со стенда Special Edition:
pdp-ls -M /home/user
# 0 /home/user/public.txt
# 1:0:0 /home/user/secret.txt
# сначала прочитать текущую метку файла и зафиксировать исходное значение
pdpl-file /home/user/secret.txt
# только после этого менять метку (форматы зависят от версии - см. man pdpl-file)
sudo pdpl-file 1:0:0 /home/user/secret.txt
pdpl-user задает мандатные атрибуты пользователя; параметр -i принимает уровень целостности, а следом идет логин. Число ниже — иллюстративный пример уровня целостности, не рекомендация; перед применением сверьте аргументы и допустимые значения через man pdpl-user на целевой версии:
# -i <уровень целостности> <логин>; 63 - пример значения, проверьте man pdpl-user
sudo pdpl-user -i 63 username
Помимо командной строки, в Astra Linux есть графические средства (файловый менеджер и панель управления), где метку можно выставить через свойства объекта — результат тот же, что и у утилит pdpl-*.
Выводы
- В Astra Linux одновременно действуют две модели доступа: дискреционная (rwx) и мандатная (метки). Доступ разрешается, только если запрос проходит обе проверки.
- Дискреционные права есть во всех редакциях: владелец и группа, биты r/w/x, управление через
chmod,chown,chgrp. Смысл битов различается для файла и каталога. - Мандатное разграничение доступно в Astra Linux Special Edition через подсистему PARSEC: МРД по конфиденциальности, МКЦ по целостности и замкнутая программная среда.
- Метками управляют отдельные утилиты (
pdp-ls,pdpl-file,pdpl-user), а неchmod/chown. - Точные уровни, соответствие «редакция — механизм» и синтаксис команд зависят от версии — сверяйте с официальной документацией под вашу сборку.
Где применяется и как освоить
Освойте тему на практике
Права доступа — базовый навык администратора Astra Linux: без него не настроить безопасную работу пользователей, сервисов и разделяемых каталогов, а на аттестованных объектах без мандатных меток не пройти требования регуляторов. Разобраться в дискреционной и мандатной моделях, командах PARSEC и настройке под требования ФСТЭК системно помогает курс Расширенное администрирование Astra Linux.
Освойте тему на практике
Посмотреть формат обучения и разобрать реальные задачи вживую можно на бесплатных открытых уроках Otus — там же удобно задать вопросы преподавателю.
Смежные темы: Установка Linux с флешки, Скрипты для системных администраторов, Настройка firewall в Linux через iptables.
FAQ
Чем мандатная модель отличается от обычных прав rwx?
Обычные права назначает владелец файла, и он же может их ослабить. Мандатную метку задает политика безопасности системы, владелец обойти ее не может — поэтому мандатная модель строже и применяется для защиты данных по грифам.
В любой ли редакции Astra Linux есть мандатное разграничение?
Нет. Сертифицированная мандатная подсистема PARSEC входит в Astra Linux Special Edition. В редакциях без этой подсистемы доступны только стандартные дискреционные права Linux. Названия и состав редакций менялись между версиями, поэтому наличие мандатной подсистемы в конкретной сборке проверяйте по актуальной продуктовой странице вендора.
Меняет ли chmod мандатную метку файла?
Нет. chmod и chown управляют только дискреционными правами и владельцем. Мандатные метки задают отдельные утилиты pdpl-file и pdpl-user (или графические средства системы).



