Control++:Blacklist/Whitelist
control++ может быть использован для применения чёрных/белых списков файлов.
Постановка задачи
- Имеется текстовый файл
/some_path/some_blacklist.txt, называемый чёрным списком, каждая строка которого представляет собой абсолютный путь к файлу данной системы. По единой команде должно производиться запрещение запуска (исполнения) всех файлов чёрного списка (по умолчанию — для всех пользователей). - Имеется текстовый файл
/some_path/some_whitelist.txt, называемый белым списком, каждая строка которого представляет собой абсолютный путь к файлу данной системы. По единой команде должно производиться запрещение запуска (исполнения) всех файлов системы, кроме файлов белого списка, а права на запуск (исполнение) файлов белого списка должны остаться неизменными (по умолчанию, может быть изменено настройками).
Решение поставленной задачи
Правка основного файла настройки control++
Добавить в файл настройки /etc/control++/control++.conf секцию, обозначающую режим control++ с определённым названием (в данном примере режим имеет название some_mode_name), и требующую установку определённого режима прав на файлы (в данном примере режим прав на файлы имеет название some_perm_mode_name):
[some_mode_name] permissions = some_perm_mode_name
Создание/правка файла настройки режима прав на файлы
Поместить в каталог /etc/control++/samples/permissions файл с описанием режима прав на файлы (в данном примере режим прав на файлы имеет название some_perm_mode_name, его абсолютный путь при этом будет равен /etc/control++/samples/permissions/some_perm_mode_name) и задать ему следующее содержимое (минимальный вариант):
- для задания применения чёрного списка:
[blacklist] path = /some_path/some_blacklist.txt
- для задания применения белого списка:
[whitelist] path = /some_path/some_whitelist.txt
Возможно задание следующих дополнительных параметров:
base_dir— определяет каталог, рассматриваемый при применении данного режима прав как каталог верхнего уровня;excluded_paths— определяет набор каталогов, содержимое которых (в том числе содержимое вложенных каталогов) не будет затронуто применением прав, описанных данной секцией (с учётом base_dir, т.е. если требуется исключить каталог/usr/lib, а base_dir равен/usr, то excluded_paths следует присвоить значениеlib);mode— режим в форматеrwxrwxrwx, применяемый к файлам, перечисленным в чёрном/белом списке (по умолчанию для белого списка*********, для чёрного списка**-**-**-, где символ*означает сохранение текущего значения данного бита прав);mode_for_dirs— определяет режим для каталогов, затрагиваемых применением прав, описанных данной секцией (самих каталогов -- обычные файлы и ссылки, вложенные в эти каталоги не затрагиваются данным параметром). Данный параметр предусмотрен для обеспечения возможности оставить каталоги пригодными для навигации по ним (режимr*xr*xr*x). По умолчанию режим для каталогов определяется так же как для обычных файлов;owner— название учётной записи владельца файла, назначаемого для файлов, перечисленных в чёрном/белом списке (по умолчанию владелец перечисленных файлов при применении чёрного/белого списка не изменяется);group— название группы, к которой относится файл, назначаемой для файлов, перечисленных в чёрном/белом списке (по умолчанию группа для перечисленных файлов при применении чёрного/белого списка не изменяется).
Пример описания режима прав с применением дополнительных параметров:
[whitelist] path = /some_path/some_whitelist.txt base_dir = "/usr" excluded_paths = "lib", "local/lib", mode = *-x*-x*-x mode_for_dirs = ********* owner = some_user group = some_group
Задание значения любого из дополнительных параметров может отсутствовать/присутствовать в описании прав независимо от присутствия/отсутствия задания значений других дополнительных параметров.