ПЗ №4

Практическая работа № 4. Создание и настройка параметров мандатного управления доступом и мандатного контроля целостности.

Оглавление

Цель работы.

Краткие теоретические сведения

Команды и графические утилиты для администрирования мандатных параметров pdp-ulbls (pdpl-user), pdp-flbl (pdpl-file)

Используемое методическое и лабораторное обеспечение

Порядок выполнения практической работы

Содержание отчёта по выполненной работе

Контрольные вопросы

Приложение

Цель работы.

Изучить и освоить администрирование основных параметров мандатного управления доступом в ОССН Astra Linux Special Edition с применением графических утилит и консольных команд.

Время выполнения работы: 4 академических часа.

Краткие теоретические сведения

В ОССН наряду с традиционной для ОС семейства Linux системой дискреционного управления доступом реализована система мандатного управления доступом и мандатного контроля целостности на основе мандатной сущностно-ролевой ДП-модели (МРОСЛ ДП-модели).

С этим связано наличие у сущностей ОССН мандатных меток конфиденциальности и целостности.

Параметрами мандатного управления доступом (мандатной меткой) являются следующие элементы:

  • уровень доступа или конфиденциальности (соответствует уровню доступа субъект-сессий или конфиденциальности сущности);
  • уровень целостности сущности и субъект-сессии;
  • набор неиерархических категорий;
  • специальные атрибуты (CCNR, CCNRI, EHole).

Тип метки CCNR применяется к объектам-контейнерам и определяет, что объект контейнер может содержать объекты с различными мандатными метками, но не превышающими метку объекта контейнера;

Тип метки CCNRI применяется к объектам-контейнерам и определяет, что объект контейнер может содержать объекты с различными уровнями целостности, но не превышающими уровень целостности объекта-контейнера;

Тип метки EHole применяется к объектам-контейнерам и простым объектам для игнорирования мандатных правил разграничения доступа к ним.

При установке ОССН (по умолчанию) задаются следующие параметры мандатного управления доступом и мандатного контроля целостности:

  • два уровня целостности («Низкий» значение 0, «Высокий» — 1);
  • четыре уровня доступа/конфиденциальности («Уровень_0» значение 0, «Уровень_1» — 1, «Уровень_2» — 2, «Уровень_3» — 3);
  • неиерархические категории — нет.

Категории могут быть двух видов:

Иерархические. Иерархические категории определяют отношения сравнения между уровнями по значению метки доступа. Таким образом, результатом сравнения меток может быть более высокий или низкий уровень доступа. Если метка доступа пользователя ниже метки объекта, то пользователь получает права только на чтение. Если метка доступа пользователя выше метки объекта, то пользователь получает права только на запись. Если метки доступа объекта и пользователя совпадают, то пользователь получает права на запись и на чтение;

Неиерархические. Для неиерархической категории результатом сравнения меток может быть совпадение меток или их несовпадение, то есть области действий уровней секретности не пересекаются. Если результатом сравнения является совпадение меток, то пользователь получает права на чтение и запись. В случае несовпадения меток доступа определяется запрет доступа к объекту.

Команды и графические утилиты для администрирования мандатных параметров pdp-ulbls (pdpl-user), pdp-flbl (pdpl-file)

Мандатное управление доступом процессов (субъект-сессий) к ресурсам (сущностям) основано на реализации соответствующего механизма в ядре ОС. При этом принятие решения о запрете или разрешении доступа субъект-сессии к сущности осуществляется в соответствии с правилами, описанными в рамках МРОСЛ ДП-модели, и зависит от запрашиваемого вида доступа (чтение, запись, применение права доступа на выполнение) и мандатного контекста (используемых в запросе уровней конфиденциальности, доступа и целостности).

Реализация мандатного уровня доступом в Astra Linux SE основана на подсистеме безопасности PARSEC, самостоятельно разработанной ОАО «НАО «РусБИТех» и включающей соответствующие программный интерфейс и модуль расширения ядра ОССН, поддерживающий виртуальную файловую систему /parsecfs, и набор системных вызовов, позволяющих уполномоченным пользователям управлять политикой безопасности ОССН.

Для администрирования мандатных параметров управления доступом и контроля целостности применяются следующие команды и графические утилиты:

pdp-ulbls (pdpl-user) — команда просмотра и изменения допустимых мандатных уровней и неиерархические категорий учётных записей пользователей;

Синтаксис: pdpl-user [-dzhv [-m минимальный:максимальный уровень конфиденциальности]
[-i максимальный уровень целостности]
[-c минимальная категория:максимальная категория]] <пользователь>

Опция Описание
-d, —delete Удалить строку пользователя из файла
-z, —zero Обнулить значения уровней и категорий
-l, —levels Установить допустимые уровни конфиденциальности
-i, —ilevel Установить максимальный уровень целостности
-m, —maclabels то же, что и -l (используется для совместимости)
-c, —category Установить допустимые категории
-h, —help Вывести справку и выйти
-v, —version Вывести информацию о версии и выйти

Если в качестве параметра ключей -m или -с указано одно значение или одно значение с предшествующим двоеточием, это значение интерпретируется как максимальное
значение, если одно значение с последующим двоеточием — как минимальное.
Команда pdpl-user при успешном выполнении всегда выводит значения, установленных допустимых мандатных меток.
Чтобы просмотреть текущие допустимые метки, выполнить команду без ключей:

pdpl-user пользователь
Пример:

pdpl-user -m Уровень_0:Уровень_3 -i 0 -с 0:Категория_2 user1
Данная команда для пользователя user1 установит:
– минимальный уровень — Уровень_0(0);
– максимальный уровень — Уровень_3(3);
– максимальный уровень целостности — Низкий(0);
– минимальную категорию — 0х0(0) (без категорий);
– максимальную категорию — 0х2(2).
Уровни Уровень_0, Уровень_3, категория Категория_2 должны быть определены в системе. Значения уровней и категорий могут быть заданы в числовой форме.

pdp-flbl (pdpl-file) — команда установки параметров мандатного управления доступом на сущность файловой системы;

Синтаксис:
pdpl-file [опции]…[уровень][:уровень целостности[:категория[:флаги]]] [файл]
Команда pdpl-file изменяет мандатные атрибуты файлов ОС, которые включают мандатную метку и специальные мандатные атрибуты файла.

Опция Описание
-f, —silent, —quiet Не выводить сообщений об ошибках
-v, —verbose Выводить диагностические сообщения для каждого файла
-c, —changes То же, что и —verbose, но сообщать только об изменениях
-R, —recursive Применить рекурсивно
-h, —help Вывести справку и выйти
—version Вывести информацию о версии и выйти

Уровень и категория могут быть заданы именем или шестнадцатеричным значением.
Пример: pdpl-file -Rv Секретно:0:Категория_А /tmp
Данная команда рекурсивно для всех файлов каталога /tmp изменит уровень на Секретно и категорию на Категория_А (уровень и категория должны быть определены в системе).
Флаги могут быть заданы значением или именами через запятую:
– ccnr — неприменение метки конфиденциальности контейнера (каталога) при просмотре его содержимого;
– ccnri — неприменение уровня целостности контейнера (каталога) при просмотре его содержимого;
– ehole — игнорирование мандатных уровней и категорий при выполнении операций записи.
Флаги могут быть заданы одним из псевдонимов:
– CCNRA — псевдоним для сочетания ccnr и ccnri;
– ALL — псевдоним для сочетания всех возможных флагов (в настоящее время
ccnr, ccnri и ehole).
Пример: pdpl-file 2:0:0:ccnr /tmp

pdp-id — команда вывода параметров мандатных управления доступом и контроля целостности для текущей сессии;

Синтаксис: pdp-id [опции]

Опция Описание
-l,—level Вывести только мандатный уровень конфиденциальности
-i,—ilevel Вывести только мандатный уровень целостности
-c,—categories Вывести только мандатную категории
-r,—categories Вывести только роли
-n,—name Для опций -lc выводить имена вместо числовых значений
-h,—help Вывести справку и выйти
—version Вывести информацию о версии и выйти

При отсутствии опций выводит строку текущих мандатных свойств. Пример на рис.1.

userlev — команда просмотра и редактирования уровней доступа, заданных в ОССН;

Синтаксис: userlev [-d, —delete] [-a, —add<значение>] [-r, —rename<имя>]
[-m, —modify<значение>] [-h, —help] [—version] <уровень>
Для просмотра всех уровней команду следует запускать без параметров. Вносить изменения в БД уровней может только администратор.

Опция Описание
-d, —delete Удалить уровень из БД
-a, —add<значение> Добавить новый уровень в БД
-r, —rename<новое имя> Переименовать существующий уровень
-m, —modify<новое значение> Изменить значение уровня
-h, —help Вывести справку и выйти
—version Вывести информацию о версии и выйти

usercat — команда просмотра и редактирования неиерархических категорий учётных записей пользователей в ОССН;

Синтаксис: usercat [-d, —delete] [-a, —add<значение>] [-r, —rename<имя>]
[-m, —modify<значение>] [-h, —help] [—version] [категория]
Команда usercat служит для просмотра и изменения БД категорий. Для просмотра всех категорий команду следует запускать без параметров. Вносить изменения в БД
категорий может только администратор.

Опция Описание
-d, —delete Удалить категорию из БД
-a, —add<значение> Добавить новую категорию в БД
-r, —rename<новое имя> Переименовать существующую категорию
-m, —modify<новое значение> Изменить значение категории
-h, —help Вывести справку и выйти
—version Вывести информацию о вер

usercaps — команда просмотра и редактирования привилегий учётных записей пользователей;

Синтаксис: usercaps [-d, —delete] [-z, —zero] [-f, —full] [-l, —linux] [-m, —parsec]
[-l, —Linux] [-M, —PARSEC] [-n, —numeric] [-h, —help] [-v, —version]
пользователь
Команда usercaps позволяет просматривать и устанавливать привилегии пользователей, должна использоваться только администратором через механизм sudo.
usercaps [-[l строка модифицирования linux-привилегий]
[-[m строка модифицирования PARSEC-привилегий][dzLMnfhv]] пользователь
Строка модифицирования привилегий состоит из слов, разделенных «,» или «:»,
каждое слово может быть строкой в верхнем или нижнем регистре или числом, перед которым стоит знак «+» или «-». Список возможных привилегий с сокращенными именами и
числами можно увидеть, введя для Linux-привилегий:
usercaps -L
для PARSEC-привилегий:
usercaps -M
Верхний регистр для слов и знак «+» для чисел устанавливает флаг для соответствующей привилегии, нижний регистр и знак «-» снимает его.
usercaps <пользователь> выводит все привилегии пользователя;
usercaps -L <пользователь> или usercaps -M <пользователь> выводят только Linux- или только PARSEC-привилегии.

Опция Описание
-d, —delete Удалить строку пользователя из файла привилегий
-z, —zero Сбросить все привилегии пользователя
-f, —full Присвоить все возможные привилегии пользователю
-l, —linux Изменить Linux-привилегии пользователя
-m, —parsec Изменить PARSEC-привилегии пользователя
-L, —Linux Вывести список возможный Linux-привилегий
-M, —PARSEC Вывести список возможных PARSEC-привилегий
-n, —numeric Вывести привилегии в шестнадцатеричном формате
-h, —help Вывести справку и выйти
-v, —version Вывести информацию о версии и выйти

fly-admin-smc — графическая утилита, позволяющая решать комплекс задач по администрированию учётных записей пользователей и групп, в том числе, администрировать параметры мандатных управления доступом и контроля целостности.

fly-term — терминал

fly-fm – менеджер файлов, графическая утилита для работы с файлами.

Список утилит fly опубликован на сайте http://astra-linux.com/utility-fly.html. Утилиты fly находятся в каталоге /usr/bin. Если запустить «Менеджер файлов» в привилегированном режиме sudo fly-term, то из каталога /usr/bin Вы сможете запускать различные утилиты fly.

Используемое методическое и лабораторное обеспечение

  1. ОССН версии 1.5 (релиз «Смоленск»), в которой создана учётная запись пользователя user, с параметрами: максимальный и минимальный уровни доступа — 0, неиерархические категории — нет, уровень целостности — «Высокий», входит в группу администраторов — astra-admin (вторичная группа), разрешено выполнение привилегированных команд (sudo).
  2. Документация:
  • «Операционная система специального назначения «Astra Linux Special Edition». Руководство администратора. Часть 1»
  • «Операционная система специального назначения «Astra Linux Special Edition». Руководство по КСЗ. Часть 1»
  • «Операционная система специального назначения «Astra Linux Special Edition». Руководство пользователя»
  1. Для выполнения работы в течение двух занятий необходимо обеспечить возможность сохранения состояния ОССН за счёт применения технологий виртуализации (создания виртуальных машин с ОССН).

Порядок выполнения практической работы

Отключите блокировку экрана. Для этого щелкнуть ПКМ на рабочем столе и выбрать «Свойства» (Рис.2.)

  1. Сделайте снимок начального состояния системы «Снимок 1», (см. рис.).
    Создайте учётную запись user c паролем P@ssw0rd. Добавьте учетную запись user во вторичную группу astra-admin.
    Начните работу со входа в ОССН в графическом режиме с учётной записью пользователя user (уровень доступа — 0, неиерархические категории — нет, уровень целостности — «Высокий».
    Рис. Для сохранения начального состояния ВМ создать снимок (Кнопка «Сделать»)
  2. Запустить графическую утилиту редактирования учетных записей пользователей «Управление политикой безопасности» через команду sudo fly-admin-smc
  3. Модифицировать параметры мандатного управления доступом, для этого осуществить следующие действия:
  • открыть раздел «Уровни» и выбрать «0: Уровень_0» и переименовать данный уровень доступа: «Уровень0»;
  • выполнить создание уровня доступа с именем «Уровень_4», задав значение равное 4, после чего проверить наличие записи «Уровень_4» в списке «Уровни»;
  • выполнить обратное переименование: «Уровень0» в «Уровень_0».
  1. Создать учётную запись пользователя user1, установив максимальный уровень доступа (конфиденциальности): «Уровень_4».
  2. Выполнить удаление уровня доступа 4 из раздела «Уровни» путем выбора в контекстном меню пункта «Удалить».
  3. Открыть учётную запись пользователя user1 и в закладке «Дополнительные» в элементе «Максимальный уровень» проверить наличие записи «(4)», при этом, в списке выбора уровня «Уровень_4» будет отсутствовать. Создать учетные записи user20, user30, user40. Задать в произвольном порядке значения для параметров «Конфиденциальность», «Целостность», «Категории».
  4. Ознакомится с содержимым каталога etc/parsec/macdb. Вывести в терминал Fly параметры мандатного управления доступом для учётной записи пользователей user1, user20, user30, user40.
    Мандатные атрибуты, назначенные конкретным учётным записям пользователей, перечисляются в каталоге /etc/parsec/macdb.
    !!! Для каждой учётной записи пользователя, которой указан ненулевой мандатный уровень или непустой перечень неиерархических категорий, создается текстовый файл, имя которого совпадает с UID учётной записи пользователя. Файл включает в себя единственную строку вида
    <username>:< min_Level>:< min_Categories>:<max_Level>:<max_Categories>
    где:
    username — имя учётной записи пользователя;
    min_Level — минимальный мандатный уровень, доступный процессам от имени учётной записи пользователя;
    min_Categories — числовое значение битовой маски, задающее минимальный набор неиерархических категорий, установленных для данной учётной записи пользователя;
    max_Level — максимальный мандатный уровень, доступный процессам от имени учётной записи пользователя;
    max_Categories — числовое значение битовой маски, задающей максимальный набор неиерархических категорий, установленный для данной учётной записи пользователя.
    Команда grep в Linux используются для поиска или фильтрации простых текстовых данных, используя некоторую форму регулярного выражения. Команда cut используется для выборки колонок из таблицы или полей из каждой строки файла.
    Для выполнения задания 7 осуществить следующие действия:
  • запустить терминал Fly и перейти в каталог /etc/parsec/macdb (команда cd /etc/parsec/macdb )
  • вывести на экран содержимое каталога /macdb ( ls )
  • просмотреть содержимое файлов в каталоге /macdb ( sudo cat “имя файла” )
  • прочитать параметры учётной записи user1 командой sudo grep “user1” *
  • определить максимальный уровень доступа учётной записи user1 командой
    sudo grep «user1» * | cut -d : -f 5
  • определить минимальный уровень доступа учётной записи user1 командой
    sudo grep «user1» * | cut -d : -f 3 и проверить его соответствие данным, отображаемым в графической утилите «Управление политикой безопасности».
  1. Создать неиерархические категории с использованием графической утилиты «Управление политикой безопасности». Для этого выполнить следующие действия:
  • в разделе «Категории» удалить все Категории.
  • в разделе «Категории» создать новую неиерархическую категорию с именем «Otdel1», «Разряд» — 0;
  • в разделе «Категории» создать новые неиерархические категории: «Otdel2» («Разряд» — 1), «Upravlenie» («Разряд» — 2).
  1. Изменить набор неиерархических категорий с использованием графической утилиты «Управление политикой безопасности» (sudo fly-admin-smc), для этого выполнить следующие действия в разделе «Категории»:

выбрать неиерархическую категорию «Otdel1» и ввести наименование «Отдел_1»;

  • аналогично переименовать неиерархические категории «Otdel2» и «Upravlenie» в «Отдел_2» и «Управление» соответственно;
  • проанализировать возможность одновременного изменения элемента «Разряд».
  1. Изменить мандатный уровень доступа с использованием графической утилиты «Управление политикой безопасности», для этого выполнить следующие действия:
  • создать новую группу с именем «office1» и задать первичную группу учётной записи пользователя user1 — «office1»;

создать новую учетную запись пользователя user2 и установить её первичную группу — «officel»;

  • в закладке «МРД» осуществить попытку выбора минимального набора неиерархических категорий — «Отдел_2» и проанализировать результат;
  • в закладке «МРД» выбрать максимальный уровень доступа — «Уровень_3», максимальный набор неиерархических категорий — «Отдел_2», после чего задать минимальный набор неиерархических категорий — «Отдел_2»;
  • открыть параметры учётной записи пользователя user1 и выбрать максимальный уровень доступа — «Уровень_3», максимальный набор неиерархических категорий — «Отдел_1», минимальный набор неиерархических категорий — «Отдел_1»;.
  • создать учётную запись пользователя rukoffice1 и задать первичную группу: «office1» ;
  • в закладке «МРД» выбрать максимальный уровень: «Уровень_3», максимальный набор категорий: «Отдел_1», «Отдел_2», «Управление».
  1. Создать общий каталог для работы от имени учётных записей пользователей userl, user2, rukoffice1 в каталоге /home/work. Для работы от имени учётных записей пользователей с наборами неиерархическими категорий «Отдел_1», «Отдел_2» и «Управление» выделить отдельные каталоги «otdel1», «otdel2» и «upr» соответственно. Должна получиться структура отображённая на рис.

    При этом обеспечить хранение файлов с различными уровнями конфиденциальности в каталогах с использованием специального атрибута CCNR
    , для чего осуществить следующие действия:
  • запустить терминал Fly в «привилегированном» режиме командой sudo fly-term;
  • Прочесть информацию по командам mkdir, chown и chmode в приложении для практической работы.
  • создать каталог work и задать параметры мандатного и дискреционного управления доступом командами:

mkdir /home/work

chown user /home/work -v (назначение user владельцем каталога)

ls –lh (посмотрите изменения параметра “владелец” для каталога work)

chown :office1 /home/work –v (назначение группы)

ls –lh (посмотрите изменения параметра “группа” для каталога work)

chmod 750 /home/work

pdp-flbl 3:0:Отдел_1,Отдел_2,Управление:ccnr /home/work -v

  • создать каталог для работы от имени учётных записей пользователей с набором неиерархических категорий «Отдел_1» и задать параметры мандатного и дискреционного управления доступом командами:

cd /home/work

mkdir otdel1

chown user1:office1 otdel1

chmod 770 otdel1

pdp-flbl 3:0:Отдел_1:ccnr otdel1

  • создать каталог для работы от имени учётных записей пользователей с набором неиерархических категорий «Отдел_2» и задать параметры мандатного и дискреционного управления доступом командами:

mkdir otdel2

chown user2:office1 otdel2

chmod 770 otdel2

pdp-flbl 3:0:Отдел_2:ccnr otdel2

  • создать каталог upr для работы от имени учётных записей пользователей с набором неиерархических категорий «Управление» командами:

mkdir upr

chown rukoffice1:office1 upr

chmod 770 upr

pdp-flbl 3:0:Управление:ccnr upr

  1. Выполнить последовательные входы в систему с учётной записью пользователя user1 (неиерархическая категория «Отдел_1», уровни доступа 1, 2, 3). При работе на уровнях доступа 1, 2 и 3 создать в каталоге /home/work/otdel1 файлы с именами 11, 12, 13 соответственно и установить дискреционные права доступа с разрешением на запись и чтение для группы office1 командой
    chmod 770 /home/work/otdel1 /1*.
  2. Выполнить последовательные входы в систему с учётной записью пользователя user2 (неиерархическая категория «Отдел_2», уровни доступа 1, 2, 3). При работе на мандатных уровнях доступа 1, 2 и 3 создать в каталоге /home/work/otdel2 файлы с именами 21, 22, 23 соответственно и установить дискреционные права доступа с разрешением на запись и чтение для группы office1 командой chmod 770 /home/work/otdel2/2*.
  3. Войти в ОССН с учётной записью пользователя rukoffice1 (уровень доступа — 3, неиерархическая категория — «Отдел2») и проверить возможность получения следующих доступов к файлам: доступ на чтение к файлам 21, 22, 23, доступ на запись к файлу 23.
  4. Войти в ОССН с учётной записью пользователя rukoffice1 (уровень доступа — 2, неиерархическая категория — «Отдел_1») и проверить возможность получения следующих доступов к файлам: доступ на чтение к файлам 11, 12, доступ на запись к файлу 12.
  5. Войти в ОССН с учётной записью пользователя rukoffice1 (уровень доступа — 3, набор неиерархических категорий — «Отдел_1», «Отдел_2», «Управление») и проверить возможность получения доступа на чтение к файлам 11, 12, 13, 21, 22, 23.
  6. Войти в ОССН с учётной записью пользователя rukoffice1 (уровень доступа — 3, неиерархическая категория — «Управление»). Создать файл uЗ в каталоге /home/work/upr.
  7. Войти в ОССН с учётной записью пользователя rukoffice1 (уровень доступа — 3, набор неиерархических категорий: «Отдел_1», «Отдел_2», «Управление») и проверить возможность получения следующих доступов к файлам: доступ на запись к файлу З, доступ на чтение к файлам uЗ, 11, 12, 13, 21, 22, 23.
  8. Вывести в терминал Fly параметры мандатного управления доступом и мандатного контроля целостности для учётных записей. Для этого выполнить следующие действия:
  • войти в ОССН с учётной записью пользователя rukoffice1 (уровень доступа — 2, набор неиерархических категорий: «Отдел_1», «Управление»);
  • в терминале Fly выполнить команду pdp-id -а, проанализировать результат;
  • выполнить избирательный вывод параметров мандатного управления доступом (с числовыми значениями) командами pdp-id -l и pdp-id -с;
  • выполнить избирательный вывод параметров мандатного управления доступом (с именами) командами pdp-id -ln и pdp-id -cn.
  1. Изменить параметры мандатного управления доступом и мандатного контроля целостности учётной записи пользователя rukofficel. Для этого выполнить следующие действия:
  • войти в ОССН с учётной записью пользователя user (уровень доступа — 0, неиерархические категории — нет) и запустить терминал Fly в «привилегированном» режиме командой sudo fly-term;
  • изменить минимальный и максимальный уровень доступа учётной записи пользователя rukofficel командой pdp-ulbls -1 0:2 rukofficel, а также минимальный и максимальный наборы неиерархических категорий пользователя rukofficel командой pdp- ulbls -с 0:2 rukoffice1;
  • обнулить значения уровней доступа и наборов неиерархических категорий в параметрах учётной записи пользователя rukofficel командой pdp-ulbls -z rukofficel ;
  • установить значения уровней доступа и наборов неиерархических категорий в параметрах учётной записи пользователя rukoffice1 командой pdp-ulbls -l 1:3 -с 0:7 rukoffice1.
  1. Считать параметры мандатного управления доступом и мандатного контроля целостности учётной записи пользователя rukoffice1 из файлов настроек. Для этого выполнить следующие действия:
  • перейти в каталог /etc/parsec/macdb и считать минимальный и максимальный уровень доступа командами grep «rukofficel» * | cut -d : -f 3 и
    grep «rukofficel» * | cut -d : -f5 соответственно;
  • считать минимальный максимальный наборы неиерархических категорий командами
    grep «rukofficel» * | cut -d : -f 4 и
    grep «rukofficel» * | cut -d : -f 6 соответственно.
  1. Создать и модифицировать мандатные уровни доступа, осуществив следующие действия:
  • вывести в терминал созданные уровни доступа командой userlev и сравнить полученные данные с настройками в утилите «Управление политикой безопасности»;
  • добавить новый уровень доступа с именем «Уровень_4» (значение 4) командой
    userlev Уровень_4 —add 4
    и вывести в терминал уровни доступа командой userlev;
  • выполнить переименование уровня доступа «Уровень_4» в «НовыйУровень» командой
    userlev Уровень_4 —rename НовыйУровень ;
  • добавить возможность работы от имени учётной записи пользователя rukofficel на уровне доступа 4 командой pdp-ulbls -l 1:4 rukofficel ;
  • выполнить попытку изменения значения уровня доступа «НовыйУровень» на 3 командой
    userlev НовыйУровень —modify 3, роанализировать результат;
  • изменить значение уровня доступа «НовыйУровень» на 5 командой
    userlev НовыйУровень -modify 5
    и вывести в терминал максимальный уровень доступа учётной записи пользователя rukofficel командой
    pdp-ulbls rukoffice1 ,
    проанализировать результат;
  • установить максимальный уровень доступа учётной записи пользователя rukofficel равным 5 командой
    pdp-ulbls -l 1:5 rukofficel ;
  • удалить уровень доступа с именем «НовыйУровень» командой userlev НовыйУровень -d и определить максимальный уровень доступа учётной записи пользователя rukofficel командой
    pdp- ulbls rukoffice1, проанализировать результат;
  • восстановить набор неиерархических категорий и уровней доступа учётной записи пользователя rukoffice1 командой pdp-ulbls -l 1:3 -с 3:7 rukoffice1 .
  1. Создать и модифицировать неиерархические категории:
  • в терминале Fly, запущенном в «привилегированном» режиме, вывести неиерархические категории командой usercat;
  • добавить новую неиерархическую категорию командой usercat otdel3 —add 0x8;
  • переименовать неиерархическую категорию «otdel3» в «Отдел_3» командой
    usercat otdel3 —rename Отдел_3;
  • осуществить попытку модификации наборов неиерархических категорий учётной записи пользователя rukoffice1 командой pdp- ulbls -с 0:15 rukoffice1, проанализировать результат;
  • добавить неиерархическую категорию «Отдел_3» в наборы неиерархических категорий учётной записи пользователя rukoffice1 командой
    pdp-ulbls -с 3:F rukoffice1, обратить внимание на то, что неиерархическая категория задается в шестнадцатеричном формате;
  • осуществить попытку изменения значения неиерархической категории «Отдел_З» на значение 2 командой usercat Отдел_3 —modify 2, проанализировать результат;
  • изменить значение неиерархической категории «Отдел_3» на 0x10 командой
    usercat Отдел_3 —modify 10;
  • изменить значение неиерархической категории «Отдел_3» на 0x20 командой
    usercat Отдел_3 —modify 0x20, обратить внимание на то, что независимо от указания типа числа по префиксу «0х» (десятичное или шестнадцатеричное) значение неиерархической категории задаётся в шестнадцатеричном формате;
  • удалить неиерархическую категорию «Отдел_3» командой
    usercat Отдел_3 —delete;
  • изменить значение неиерархической категории «Управление» на 0x10 командой
    usercat Управление —modify 10, проанализировать результат по данным, выводимым командой
    pdp-ulbls rukoffice1;
  • изменить значение неиерархической категории «Управление» на 4 командой
    usercat Управление —modify 4.
  1. Для настройки привилегий учётных записей пользователей осуществить следующие действия:
  • вывести в терминал заданные в ОССН привилегии учётных записей пользователей командой usercaps, при работе в терминале Fly в «привилегированном» режиме;
  • запустить графическую утилиту «Управление политикой безопасности» и открыть настройки учётной записи пользователя user1, в закладке «Привилегии» установить Linux-привилегии cap-kill, cap-fowner и parsec-привилегии parsec-cap-chmac, parsec- capsig, после чего закончить работу с утилитой;
  • вывести привилегии учётной записи пользователя user1 командой usercaps user1;
  • в графической утилите «Управление политикой безопасности» открыть параметры учётной записи пользователя user, в закладке «Привилегии» выбрать Linux-привилегии сар_kill, саpfowner и parsec-привилегии parsec-cap-chmac, parsec_cap_sig;
  • запустить терминал Fly в «непривилегированном» режиме командой fly-term и осуществить попытку запуска команды usercaps;
  • определить расположение файла usercaps командой which usercaps, выполненной из «привилегированного» режима, а затем выполнить в «непривилегированном» режиме команду cd /usr/sbin/usercaps, проанализировать результат;
  • запустить терминал Fly в «привилегированном» режиме командой sudo fly-term и выполнить модификацию Linux-привилегий и Parsec-привилегий командами:

usercaps –l 9 user1
usercaps -m 2 user1
usercaps –m 1l user1

  • определить установленные привилегии с использованием графической утилиты «Управление политикой безопасности» и формат параметра модификации привилегий учётных записей пользователей;
  • установить для учётной записи пользователя user1 полный список привилегий командой
    usercaps -f user1, затем удалить все привилегии учётной записи пользователя userl командой
    usercaps -z user1;
  • вывести списки Linux-привилегий и Parsec-привилегий командами usercaps -L и usercaps -М соответственно.

Содержание отчёта по выполненной работе.

В отчёте о выполненной работе необходимо указать:

  1. Полный перечень использованных команд с кратким описанием их назначения.
  2. Примеры выполнения команд, которые были использованы в ходе работы с описанием результатов их выполнения.
  3. Описание порядка работы с графической утилитой при выполнении следующих действий:
  • создание, изменение и удаление уровней доступа и неиерархических категорий;
  • настройка уровней доступа и неиерархических категорий учётных записей пользователей;
  • создание общих каталогов для совместного использования несколькими учётными записями пользователей.
  1. Описание порядка работы и команд, использованных при осуществлении следующих действий:
  • настройка уровней доступа и неиерархических категорий учётных записей пользователей;
  • настройка уровней доступа и неиерархических категорий в ОССН.
  1. Описание особенностей функционирования команд при работе в «привилегированном» и «непривилегированном» режимах.
  2. Список и назначение системных файлов, связанных с хранением параметров мандатных управления доступом и контроля целостности.
  3. Описание команд при настройке привилегий учётных записей пользователей.

Контрольные вопросы

  1. Какие уровни доступа и неиерархические категории создаются при установке ОССН?
  2. Как настроить минимальный и максимальный уровни доступа учётной записи пользователя с использованием графической утилиты fly-admin-smc?
  3. Как добавить новые уровни доступа и неиерархические категории в ОССН?
  4. Какие имеются особенности удаления и модификации уровней доступа и неиерархических категорий в ОССН?
  5. Какие команды используются для создания, модификации и удаления уровней доступа и неиерархических категорий в ОССН?
  6. Какие команды используются для настройки привилегий учётных записей пользователей?
  7. Как принудительно удалить все привилегии для заданной учётной записи пользователя?
  8. Какие существуют особенности настройки привилегий учётных записей пользователей в «непривилегированном» режиме?

Приложение.

Команда mkdir

mkdir (от англ. make directory) в операционной системе Unix, Linux, DOS, Windows — команда для создания новых каталогов.

Использование

mkdir имя_каталога

mkdir имя_каталога1 имя_каталога2 имя_каталога3

создаст каталоги: имя_каталога1, имя_каталога2 и имя_каталога3, где имя_каталога — это имя создаваемого каталога. Если использовать как приведено выше, то новый каталог будет создан в текущем каталоге.

В общем виде: mkdir [ключи]… каталог…

Ключи

-m, —mode. Установить код доступа (как в chmod)

-p, —parents. При указании этой опции перед созданием нового каталога предварительно создаются все несуществующие вышележащие каталоги.

-v, —verbose. Печатать сообщение о каждом созданном каталоге

Команда chown

chown (от англ. change owner) — UNIX‐утилита, изменяющая владельца и/или группу для указанных файлов. В качестве имени владельца/группы берётся первый аргумент, не являющийся опцией. Если задано только имя пользователя (или числовой идентификатор пользователя), то данный пользователь становится владельцем каждого из указанных файлов, а группа этих файлов не изменяется. Если за именем пользователя через двоеточие следует имя группы (или числовой идентификатор группы), без пробелов между ними, то изменяется также и группа файла.

Использование

chown [-cfhvR] [—dereference] [—reference=rfile] пользователь[:группа] файл…

-c, —changes. Подробно описывать действие для каждого файла, владелец которого действительно изменяется.

-f, —silent, —quiet. Не выдавать сообщения об ошибках для файлов, чей владелец не может быть изменён.

-h, —no-dereference. Работать с самими символьными ссылками, а не с файлами, на которые они указывают. Данная опция доступна только если имеется системный вызов lchown.

-R, —recursive. Рекурсивное изменение владельца каталогов и их содержимого.

-v, —verbose. Подробное описание действия (или отсутствия действия) для каждого файла.

—dereference. Изменить владельца файла, на который указывает символьная ссылка, вместо самой символьной ссылки.

—reference=rfile. Изменить владельца файла на того, который является владельцем файла.

Примеры использования

Помните, что эти команды должны быть выполнены с правами доступа root.

  1. Изменить владельца (owner) для /var/run/httpd.pid на ‘root’ (root — стандартное имя для суперпользователя (Superuser)).

# chown root /var/run/httpd.pid

  1. Поменять владельца для strace.log на пользователя ‘rob’ и группу на ‘developers’.

# chown rob:developers strace.log

  1. Поменять имя владельца для каталогов /tmp и /var/tmp на ‘nobody’ + поменять группу для /tmp и /var/tmp на ‘nogroup’

# chown nobody:nogroup /tmp /var/tmp

  1. Поменять идентификатор группы для каталога /home на 512

# chown :512 /home

  1. Поменять имя владельца для каталога base на user100 и выполнить это рекурсивно, т.е. для всех вложенных в каталог base файлов (-R).

# chown -R us base

Команда chmod

chmod (от англ. change mode) — программа для изменения прав доступа к файлам и директориям. Название происходит от программы ОС Unix chmod, которая, собственно, изменяет права доступа к файлам, директориям и символическим ссылкам.

chmod [options] mode[,mode] file1 [file2 …]

Опции:

  • -R рекурсивное изменение прав доступа для каталогов и их содержимого
  • -f не выдавать сообщения об ошибке для файлов, чьи права не могут быть изменены.
  • -v подробно описывать действие или отсутствие действия для каждого файла.

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

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

Использование команды в числовом виде

Права записываются одной строкой сразу для трёх типов пользователей:

  • владельца файла (u);
  • других пользователей, входящих в группу владельца (g);
  • всех прочих пользователей (o);

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

Пример: в числовом виде, установить права rwxr-xr-x:

chmod 755 filename

Значение права «755»
владелец группа остальные
восьмеричное значение 7 5 5
символьная запись rwx r-x r-x
обозначение типа пользователя u g o

Таким образом, права «755» записываются в символьном виде как «rwxr-xr-x». При этом для понимания сути задания прав в Unix-системах полезно знать представление чисел в двоичной системе счисления.

Три варианта записи прав пользователя
двоичная восьмеричная символьная права на файл права на директорию
000 0 нет нет
001 1 —x выполнение чтение файлов и их свойств
010 2 -w- запись нет
011 3 -wx запись и выполнение всё, кроме чтения списка файлов
100 4 r— чтение чтение имён файлов
101 5 r-x чтение и выполнение доступ на чтение
110 6 rw- чтение и запись чтение имён файлов
111 7 rwx все права все права

Часть разрешений имеет смысл только в сочетании с другими. Из первых четырёх пунктов (не дающих права на чтение файла) для файлов обычно используется только «—», то есть полный запрет доступа к файлу данному типу пользователей. Для директорий из всего списка обычно применяются только 0, 5 и 7 — запрет, чтение и выполнение, и полный доступ.

Суммировав эти коды для трёх типов пользователей, можно получить числовую или символьную запись. Например, chmod 444 {имяфайла}: 400+40+4=444 — все имеют право только на чтение (идентично «r—r—r—»).

Помимо стандартных разрешений ‘rwx’, команда chmod осуществляет также управление битами SGID, SUID и T. Установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно.

Для SUID вес — 4000, а для SGID — 2000. Данные атрибуты имеют смысл при установленном соответствующем бите исполнения и обозначаются при символьной записи буквой «s»: «rwsrwxrwx» и «rwxrwsrwx» соответственно.

Пример: chmod 4555 {имяфайла} — все имеют право на чтение и выполнение, но запускаться файл на исполнение будет с правами владельца.

Установка SGID для директории приведёт к установке принадлежности каждого нового создаваемого файла к той же группе, к которой принадлежит сама директория, а не к основной группе владельца, как это происходит по умолчанию. SUID для директории не имеет смысла[1].

sticky bit или restricted deletion flag (t-бит) используется только с директориями. Когда t-бит для директории не установлен, файл в данной директории может удалить (переименовать) любой пользователь, имеющий доступ на запись к данной директории. Устанавливая t-бит на директорию, мы меняем это правило таким образом, что удалить (переименовать) файл может только владелец этого файла. Следуя приведённой выше кодировке, t-бит имеет вес 1000.

Примечание: Право на запись (w) даёт пользователю возможность записывать или изменять файл, а право на запись для каталога — возможность создавать новые файлы или удалять файлы из этого каталога. Если на каталоге стоит возможность записи (w), то файл внутри этого каталога можно будет удалить, даже если право на запись для него не установлено. (В соответствии с концепцией файловой системы POSIX).

Популярные значения

400 (-r———)

Владелец имеет право чтения; никто другой не имеет права выполнять никакие действия

644 (-rw-r—r—)

Все пользователи имеют право чтения; владелец может редактировать

660 (-rw-rw—-)

Владелец и группа могут читать и редактировать; остальные не имеют права выполнять никаких действий

664 (-rw-rw-r—)

Все пользователи имеют право чтения; владелец и группа могут редактировать

666 (-rw-rw-rw-)

Все пользователи могут читать и редактировать

700 (-rwx——)

Владелец может читать, записывать и запускать на выполнение; никто другой не имеет права выполнять никакие действия

744 (-rwxr—r—)

Каждый пользователь может читать, владелец имеет право редактировать и запускать на выполнение

755 (-rwxr-xr-x)

Каждый пользователь имеет право читать и запускать на выполнение; владелец может редактировать

777 (-rwxrwxrwx)

Каждый пользователь может читать, редактировать и запускать на выполнение

1555 (-r-xr-xr-t)

Каждый пользователь имеет право читать и запускать на выполнение; удалить файл может только владелец этого файла

2555 (-r-xr-sr-x)

Каждый пользователь имеет право читать и запускать на выполнение с правами группы (user group) владельца файла

0440 (-r—r——)

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

4555 (-r-sr-xr-x)

Каждый пользователь имеет право читать и запускать на выполнение с правами владельца файла

Использование команды в символьном виде

В символьном виде использование команды chmod позволяет более гибко добавлять, устанавливать или убирать права на файл(ы) или каталоги.

$ chmod [references][operator][modes] file …

References определяют пользователей, которым будут меняться права. References определяются одной или несколькими буквами:

Reference Class Описание
u user Владелец файла
g group Пользователи, входящие в группу владельца файла
o others Остальные пользователи
a all Все пользователи (или ugo)

Operator определяет операцию, которую будет выполнять chmod:

Operator Описание
+ добавить определенные права
удалить определенные права
= установить определенные права

Modes определяет какие именно права будут установлены, добавлены или удалены:

Mode Name Описание
r read чтение файла или содержимого каталога
w write запись в файл или в каталог
x execute выполнение файла или чтение содержимого каталога
X special execute выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя
s setuid/gid установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно
t sticky устанавливая t-бит на директорию, мы меняем это правило таким образом, что удалить файл может только владелец этого файла
Примеры использования команды в символьном виде

Установить права «rwxr-xr-x» (0755) для файла:

chmod u=rwx,g=rx,o=rx filename

Установить права на выполнение для владельца файла, удалить права на выполнение у группы, удалить права на запись и выполнение у остальных пользователей:

chmod u+x,g-x,o-wx filename

Установить рекурсивно права на чтение для всех пользователей:

chmod -R a+r directory

Рекурсивно удалить атрибуты SUID и SGID:

chmod -R u-s,g-s directory

Особенности

Значениями по умолчанию являются:

  • для файлов: 644 (-rw-r—r—)
  • для директорий: 755 (drwxr-xr-x)

Значения разные для файлов и директорий потому, что флаг «выполнения» по-разному действует на файлы и директории. Для обычных файлов «выполнение» означает открытие файлов, для исполняемых файлов — их запуск, а для каталогов — просмотр содержимого.

Например, можно сделать из командной строки:

Следующая команда выполнит рекурсивное применение правил для всех файлов в директории «/home/test», а также для всех файлов во всех поддиректориях:

# find /home/test -type f -exec chmod 644 {} \;

Следующая команда выполнит рекурсивное применение правил для всех директорий в директории «/home/test», а также для всех директорий во всех поддиректориях:

# find /home/test -type d -exec chmod 755 {} \;

Того же результата можно добиться и без использования find (обратите внимание на заглавную X):

# chmod -R go=rX,u=rwX /home/test