Разграничение доступа в Linux. Знакомство с Astra Linux

Разграничение доступа в Linux. Знакомство с Astra Linux

Оглавление:

  1. Основные способы разграничения доступа
  2. Minimal POSIX ACL
  3. Extended POSIX ACL
  4. В заключение

Всем доброго времени суток, сегодня мы поговорим о моделях разграничения доступа в семействе ОС Linux, а также начнем знакомство с отечественной ОС Astra Linux SE. Данная статья является первой в цикле и предназначена для людей, только начинающих постигать Linux во всем его многообразии.

Для начала стоит ответить на вопрос: почему именно Astra? Согласно отзывам и моему собственному опыту это далеко не самая удобная система для постоянного использования. Однако тут все не так просто, ведь еще 5 апреля 2013 г вышел закон №44-ФЗ «О контрактной системе в сфере закупок товаров, работ, услуг для обеспечения государственных и муниципальных нужд», согласно которому все государственные и муниципальные органы, органы управления и прочие гос. организации обязаны закупать отечественное ПО. А это значит, что с каждым годом вероятность столкнуться лицом к лицу с отечественными ОС только возрастает. Именно поэтому я решил поделиться своим знаниями и опытом.

1.Основные способы разграничения доступа

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

Всего есть 2 вида моделей разграничения доступа: дискреционная и мандатная.

Дискреционное управление доступом

Эта модель в том или ином виде реализована почти во всех современных *nix-системах. В англоязычных ресурсах можно встретить название DAC (Discretionary Access Control). Суть ее заключается в управлении доступом субъектов к объектам на основе списков управления доступом. Дискреционное управление доступом в ОС проекта GNU/Linux основано на понятии владения (использовании права доступа владения) файлом, процессом, каталогом (сущностями и субъект-сессиями). Так, с каждым файлом или каталогом связана учётная запись пользователя — их владельца (owner). Процесс, который функционирует от имени такой учётной записи-владельца сущности, имеет право изменять дискреционные права доступа к ней, например назначать их учётным записям других пользователей ОС на основе стандарта POSIX ACL. Однако зачастую настраивать права доступа для каждой учетной записи бывает затруднительно и поэтому пользователей объединяют в группы, которым тоже можно назначить права доступа.

Так в чем же заключается стандарт POSIX ACL?  

POSIX ACL – POSIX-совместимый стандарт определения разрешений на доступ к объектам, основанный на списках контроля доступа (ACL – Access Control Lists). Он реализует несколько вариантов дискреционной модели, отличающихся уровнем функциональности и методами хранения списков контроля доступа.

ACL – Access Control Lists

Как видно из схемы, существует 2 вида атрибутов для вышеупомянутого стандарта. Давайте разберем каждый из них.

2.Minimal POSIX ACL. Список контроля на уровне inode файла 

В метаданных каждого объекта (в inode файла/директории) содержится список разрешений на доступ к нему для разных категорий субъектов.

Атрибуты Minimal ACL поддерживают три базовых класса субъектов доступа к файлу (класс All объединяет все три класса):

  1. User access (u) – доступ для владельца файла;
  2. Group access (g) – доступ для группы, владеющей файлом;
  3. Other access (o) – доступ для остальных пользователей (кроме пользователя root).
  4. All access (a) – доступ для всех субъектов доступа (u, g, o).

Для каждого из этих классов определены три типа разрешений:

  1. На чтение содержимого файла (read) – символ «r».
  2. На запись внутри файла или изменения его содержимого (write) – символ «w».
  3. На исполнение файла (если это бинарный исполняемый файл или  файл сценария интерпретатора (execute)) – символ «x».

Список разрешений Minimal ACL представлен в inode файла (директории) девятью байтами (символами). Каждый байт определяет одно из разрешений (символы r, w, x) или их отсутствие (символ «-»).Байты разрешений сгруппированы в следующие классы:

Список разрешений Minimal ACL

Теперь рассмотрим способы смены прав доступа на практике:

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

ls –l <имя_файла>

Пример вывода команды:

Вывод команды

Таким образом мы понимаем, что это файл обычного типа (–). Для владельца разрешены чтение, запись и исполнение (rwx), для владеющей группы – чтение и запись (rw-), для остальных пользователей – только чтение (r--).

Для директорий трактовка типов разрешений иная:

r – разрешение на «открытие» директории, то есть на чтение списка файлов, которые содержит эта директория.

w – разрешение на модификацию этого списка файлов (создание/удаление/переименование/перемещение) файлов этой директории.

x – разрешение на «исполнение» директории, то есть на возможность перейти в нее.

Чтобы изменить расширения для определенного файла используется команда chmod с соответствующими аргументами:

Принцип работы chmod

Например:

chmod o=r test.file  – установка разрешения «чтение» для остальных пользователей (не владельцев объекта), вне зависимости какие разрешения были установлены ранее

chmod g+rw test.file – добавление разрешений «чтение» и «запись»  для группы, владеющей файлом

Также Minimal ACL имеют числовое представление (Numeric Notation) в виде трех восьмеричных чисел. Эти числа определяют разрешение на доступ к файлу или директории трех субъектов доступа (u,g,o). Каждое из них формируется путем суммирования восьмеричных значений необходимых разрешений: 

- чтение = 4;

- запись = 2;

- выполнение =1. 

Например, полный доступ (rwx) – это: 4+2+1=7

Таким образом, можно задать разрешения для файла следующим образом:

chmod 0740 test.file, что будет соответствовать атрибутам -rwxr-----

В ряде случаев в ходе пользовательского сеанса возникает необходимость смены разрешений при доступе файлам и директориям

Например для файла /etc/shadow любой пользователь может записать в него хеш своего пароля

Смена разрешений

Такая смена разрешений называется изменение режима доступа.

Она реализуется установкой специальных флагов в зарезервированном десятом байте списка Minimal POSIX ACL или заменой ими байтов разрешений 

Флаг -t (sticky bit). Устанавливается в разрешениях директорий и разрешает манипулирование файлами внутри этих директорий только их владельцам 

Флаг -s (флаг режимов SUID и SGID). Устанавливается вместо разрешения «x» у владельца (режим SUID) и/или владеющей группы (режим SGID) и разрешает исполнение этого файла с разрешениями его владельца и/или владеющей группы, а не с разрешениями пользователя, запустившего файл.

3.Extended POSIX ACL (EA). Расширенные списки контроля доступа

Вполне естественно, что такая простая схема, как в Minimal POSIX ACL имеет ряд недостатков. Самый явный из них, это отсутствие гибкости при совместном доступе субъектов к объектам. К тому же, списки доступа Extended POSIX ACL создаются и хранятся в системных таблицах ядра ОС.

Основой Extended POSIX ACL является понятие «именованный пользователь (группа)» (named user (group), что позволяет нам выдавать отдельный набор разрешений для конкретных пользователей или групп.

Отличие Extended POSIX ACL от Minimal ACL

Для работы с Extended POSIX ACL используются следующие команды:

Просмотр: системный вызов getfacl <имя файла>

Вывод:

 Вывод getfacl

Установка: системный вызов setfacl

Вывод:

Установка setfacl

Пример:

Пример вызова

4. В заключение

На этом рассмотрение дискреционной модели доступа закончено, однако остался один вопрос: а причем тут Astra Linux? Дело в том, что в ней, помимо дискреционной модели доступа, реализована еще и мандатная модель доступа, а также контроль целостности файлов, что усиливает защищенность системы. Astra Linux также сертифицирована ФСТЭК и ФСБ для работы с гос. тайной, что постепенно приносит ей известность и предоставляет возможность использования в государственном секторе.