Control++: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 34: | Строка 34: | ||
* <code>group</code> - название группы, к которой относится файл; | * <code>group</code> - название группы, к которой относится файл; | ||
* <code>mode</code> - режим файла в формате <code>rwxrwxrwx</code> (например, <code>rw-rw-rw-</code> означает разрешить всем чтение и запись, но запретить всем запуск данного файла; <code>rwx------</code> означает резрешить все действия владельцу файла и запретить все действия всем остальным; Для того, чтобы не изменять какой-то бит режима, следует использовать символ <code>*</code>, например <code>r**r**r**</code> означает разрешить всем чтение файла и не менять остальные права). | * <code>mode</code> - режим файла в формате <code>rwxrwxrwx</code> (например, <code>rw-rw-rw-</code> означает разрешить всем чтение и запись, но запретить всем запуск данного файла; <code>rwx------</code> означает резрешить все действия владельцу файла и запретить все действия всем остальным; Для того, чтобы не изменять какой-то бит режима, следует использовать символ <code>*</code>, например <code>r**r**r**</code> означает разрешить всем чтение файла и не менять остальные права). | ||
Пример описания набора прав: | |||
:<source> | |||
[file] | |||
path = ~/some_dir_1/some_file_1 | |||
owner = some_user | |||
group = some_group | |||
mode = rwxrwx--- | |||
[file] | |||
path = ~/some_dir_1/some_file_2 | |||
owner = some_user | |||
group = some_group | |||
mode = rw-rw---- | |||
[dir_r] | |||
path = ~/some_dir_2/ | |||
owner = some_user | |||
group = some_group | |||
mode = **x**x**x | |||
dir_mode = r*xr*xr*x | |||
[list] | |||
path = ~/list_of_executables.txt | |||
owner = some_user | |||
group = some_group | |||
mode = **x**x**- | |||
[blacklist] | |||
path = ~/some_blacklist.txt | |||
</source> | |||
=== Запускаемые сценарии === | === Запускаемые сценарии === | ||
Строка 59: | Строка 90: | ||
Отображение справочной информации: | Отображение справочной информации: | ||
:<code>control++ help</code> | :<code>control++ help</code> | ||
Для включения режима упрощённого вывод следует передать дополнительный флаг <code>--plain</code>. | |||
== Ссылки == | == Ссылки == |
Версия от 03:00, 30 сентября 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**
означает разрешить всем чтение файла и не менять остальные права).
Пример описания набора прав:
[file] path = ~/some_dir_1/some_file_1 owner = some_user group = some_group mode = rwxrwx--- [file] path = ~/some_dir_1/some_file_2 owner = some_user group = some_group mode = rw-rw---- [dir_r] path = ~/some_dir_2/ owner = some_user group = some_group mode = **x**x**x dir_mode = r*xr*xr*x [list] path = ~/list_of_executables.txt owner = some_user group = some_group mode = **x**x**- [blacklist] path = ~/some_blacklist.txt
Запускаемые сценарии
Файлы сценариев оболочки находятся в /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
Для включения режима упрощённого вывод следует передать дополнительный флаг --plain
.