Control++: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 9: Строка 9:
== Настройка ==
== Настройка ==


=== Основной режим ===
Параметры <i>control++</i> определяются файлом ini-формата <code>/etc/control++/control++.conf</code>. Данный ini-файл состоит из секций описания каждого из режимов; Название секции соответствует названию режима; Каждая из секций может состоять из определения варианта ограничений (<i>ulimits</i>), варианта набора прав (<i>permissions</i>) и запускаемого сценария оболочки для данного режима (<i>scripts</i>). Далее приведён пример описания режима под названием <i>workstation</i>, который имеет тип <i>ulimits</i> под названием <i>u_x</i>, тип <i>permissions</i> под названием <i>p_y</i> и запускаемый сценарий оболочки <i>s_z/do</i>:
Параметры <i>control++</i> определяются файлом ini-формата <code>/etc/control++/control++.conf</code>. Данный ini-файл состоит из секций описания каждого из режимов; Название секции соответствует названию режима; Каждая из секций может состоять из определения варианта ограничений (<i>ulimits</i>), варианта набора прав (<i>permissions</i>) и запускаемого сценария оболочки для данного режима (<i>scripts</i>). Далее приведён пример описания режима под названием <i>workstation</i>, который имеет тип <i>ulimits</i> под названием <i>u_x</i>, тип <i>permissions</i> под названием <i>p_y</i> и запускаемый сценарий оболочки <i>s_z/do</i>:
:<source>[workstation]
:<source>[workstation]
Строка 16: Строка 17:
</source>
</source>


Все файлы настроек могут быть отредактированы вручную системным администратором при настройке нужных конфигураций.
=== Режим ULimits===
Файлы <i>ulimits</i> для каждого варианта ограничений находятся в <code>/etc/control++/ulimits/название_варианта</code>.
Файлы <i>ulimits</i> для каждого варианта ограничений находятся в <code>/etc/control++/ulimits/название_варианта</code>.


=== Режим прав на файлы ===
Файлы с описанием набора прав являются файлами ini-формата и находятся в <code>/etc/control++/permissions/название_варианта</code>. Описание прав может состоять из следующих секций:
Файлы с описанием набора прав являются файлами ini-формата и находятся в <code>/etc/control++/permissions/название_варианта</code>. Описание прав может состоять из следующих секций:
* <code>file</code> - секция, задающая права на файл, абсолютный путь которого определяется значением <i>path</i> данной секции;
* <code>file</code> - секция, задающая права на файл, абсолютный путь которого определяется значением <i>path</i> данной секции;
Строка 25: Строка 30:
** <code>whitelist</code> - вариация секции <i>list</i>, для которой устанавливаемый режим файлов определён как <code>**x**x**x</code> (<code>*</code> означает не менять данный бит режима);
** <code>whitelist</code> - вариация секции <i>list</i>, для которой устанавливаемый режим файлов определён как <code>**x**x**x</code> (<code>*</code> означает не менять данный бит режима);
** <code>blacklist</code> - вариация секции <i>list</i>, для которой устанавливаемый режим файлов определён как <code>**-**-**-</code>.
** <code>blacklist</code> - вариация секции <i>list</i>, для которой устанавливаемый режим файлов определён как <code>**-**-**-</code>.
Помимо значения <i>path</i> для секций <i>file</i>, <i>dir</i>, <i>dir_r</i> и <i>list</i> должны быть определены следующие значения:
* owner - название учётной записи владельца файла;
* group - название группы, к которой относится файл;
* mode - режим файла в формате <i>rwxrwxrwx</i> (например, <code>rw-rw-rw-</code> означает разрешить всем чтение и запись, но запретить всем запуск данного файла; <code>rwx------</code> означает резрешить все действия владельцу файла и запретить все действия всем остальным; Для того, чтобы не изменять какой-то бит режима, следует использовать символ <code>*</code>, например <code>r**r**r**</code> означает разрешить всем чтение файла и не менять остальные права).


=== Запускаемые сценарии ===
Файлы сценариев оболочки находятся в <code>/etc/control++/scripts/название_варианта/do</code>. Также каталог <code>/etc/control++/scripts/название_варианта/</code> может содержать файлы <code>undo</code> и <code>test</code> для выполнения действий обратных действиям сценария <code>do</code> и проверки действенности сценария <code>do</code> соответственно.
Файлы сценариев оболочки находятся в <code>/etc/control++/scripts/название_варианта/do</code>. Также каталог <code>/etc/control++/scripts/название_варианта/</code> может содержать файлы <code>undo</code> и <code>test</code> для выполнения действий обратных действиям сценария <code>do</code> и проверки действенности сценария <code>do</code> соответственно.
Все файлы настроек могут быть отредактированы вручную системным администратором при настройке нужных конфигураций.


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

Версия от 16:56, 28 сентября 2018

control++ - консольная программа для настройки GNU+Linux системы, позволяющая переключать режимы, каждый из которых определяется своим файлом ulimits, а также своим набором описаний прав на файлы системы и запускаемым сценарием оболочки. Написана на C++. Распространяется по лицензии GPLv3.0.

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

При запуске программы для переключения режима, например control++ <название_режима>, которому соответствует вариант ограничений ulims_x, вариант прав perm_y и сценарий sh_z, программа попытается скопировать файл /etc/control++/ulimits/ulims_x в каталог /etc/security/limits.d/, попытается применить права на файлы в соответствии с описанием в /etc/control++/permissions/perm_y и запустить сценарий /etc/control++/permissions/sh_z/do. В случае невозможности осуществления какой-либо из операций будет выведено сообщение об ошибке. Если какой-то из параметров не указан (например, название сценария оболочки), то соответствующая операция не будет выполняться.

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

Настройка

Основной режим

Параметры control++ определяются файлом ini-формата /etc/control++/control++.conf. Данный ini-файл состоит из секций описания каждого из режимов; Название секции соответствует названию режима; Каждая из секций может состоять из определения варианта ограничений (ulimits), варианта набора прав (permissions) и запускаемого сценария оболочки для данного режима (scripts). Далее приведён пример описания режима под названием workstation, который имеет тип ulimits под названием u_x, тип permissions под названием p_y и запускаемый сценарий оболочки s_z/do:

[workstation]
ulimits = u_x
permissions = p_y
scripts = s_z

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

Режим ULimits

Файлы ulimits для каждого варианта ограничений находятся в /etc/control++/ulimits/название_варианта.

Режим прав на файлы

Файлы с описанием набора прав являются файлами ini-формата и находятся в /etc/control++/permissions/название_варианта. Описание прав может состоять из следующих секций:

  • file - секция, задающая права на файл, абсолютный путь которого определяется значением path данной секции;
  • dir - секция, задающая права на файлы каталога и всех содержащихся в нём файлов без учёта содержимого подкаталогов, абсолютный путь которого определяется значением path данной секции;
  • dir_r - секция, задающая права на файлы каталога и всех содержащихся в нём файлов с учётом содержимого подкаталогов (рекурсивный обход дерева подкаталогов), абсолютный путь которого определяется значением path;
  • list - секция, задающая права на файлы, список абсолютных путей которых задан в текстовом файле, абсолютный путь которого определяется значением path данной секции;
    • whitelist - вариация секции list, для которой устанавливаемый режим файлов определён как **x**x**x (* означает не менять данный бит режима);
    • blacklist - вариация секции list, для которой устанавливаемый режим файлов определён как **-**-**-.

Помимо значения path для секций file, dir, dir_r и list должны быть определены следующие значения:

  • owner - название учётной записи владельца файла;
  • group - название группы, к которой относится файл;
  • mode - режим файла в формате rwxrwxrwx (например, rw-rw-rw- означает разрешить всем чтение и запись, но запретить всем запуск данного файла; rwx------ означает резрешить все действия владельцу файла и запретить все действия всем остальным; Для того, чтобы не изменять какой-то бит режима, следует использовать символ *, например r**r**r** означает разрешить всем чтение файла и не менять остальные права).

Запускаемые сценарии

Файлы сценариев оболочки находятся в /etc/control++/scripts/название_варианта/do. Также каталог /etc/control++/scripts/название_варианта/ может содержать файлы undo и test для выполнения действий обратных действиям сценария do и проверки действенности сценария do соответственно.

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

Как правило, осуществлять изменение прав на системные файлы, а также осуществлять запись в каталог /etc/security/limits.d/ может только пользователь root, поэтому для успешной работы control++ возможно будет необходимым запусть его от пользователя root.

Установка режима:

control++ <название_режима>

Сброс текущего режима:

control++ reset

Отображение списка доступных режимов:

control++ list

Проверка соответсвия состояния системы текущему режиму:

control++ status

Отображение содержимого главного файла настройки:

control++ conf

Отображение справочной информации:

control++ help

Ссылки

Проект на git.altlinux.org