Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/control ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

control(8)


control(8) — фреймворк, написанный на обычном shell и позволяющий фиксировать и анализировать состояние системных объектов — например, бинарников и файлов конфигурации (например, привилегированных утилит вроде su(8)). С его помощью получается удобным способом вносить переживающие обновление пакета или просто сложные изменения «одним росчерком»; для администраторского ознакомления рекомендуются control(8), control-dump(8) и control-restore(8).


Примеры для сисадмина:


Тем не менее полезнейшая (особенно в пересчёте на объём кода) вещь не жалует документацией собственно желающего улучшить свой пакет или систему созданием (и использованием) control-файлов; давайте попробуем восполнить этот недостаток здесь.

Вкратце

В библиотеку функций /etc/control.d/functions (размером 3947 байт на сейчас) входят используемые в /etc/control.d/facilities/* удобства:



Следует понимать, что объекты получаются двунаправленные: работает как направление режим=>права, так и обратное ему права=>режим; как режим=>конфиг, так и конфиг=>режим. Таким образом возможно не только задавать, но и проверять права, что особенно важно при обновлении пакетов — перед удалением предыдущей версии пакетными скриптами делается control-dump, а после разворачивания новой — control-restore. При этом для избежания промежутков времени с понижением защищённости (если речь о регулировании прав на SUID/SGID binaries, например) в пакете следует задавать предельно жёсткую конфигурацию, которую возможно ослабить уже средствами control в %post.


Кстати о пакетах — примеры можно посмотреть в альтовских su, ping, mtr, samba... проще заглянуть в спеки, хотя если кто допишет, тоже спасибо

new_fmode(name, perms, user, group)

Для обеспечения двунаправленности ничего особенного не требуется, поэтому аргументы не нуждаются в особых разъяснениях — приведём пример:

зарегистрирует режим по имени “restricted”, характеризующийся правами 0700 (-rwx------) root:root. На что — решается отдельно.

new_subst(name, test, set)

Вот с модификацией текстовых файлов сложнее — из аргумента, являющегося параметром для subst(1) (sed(1)), не вывести тест, определяющий, что была применена именно эта замена. Поэтому тест приходится писать тоже человеку и в виде параметра для egrep(1). Пример из /etc/control.d/facilities/su:

Здесь public — опять же название состояния (режим), вторая строка (второй аргумент) — это тест, а третья — руководство по достижению заданного состояния. Опять же, файл, к которому применяются то и другое, здесь не фигурирует.

new_help(name, text)

Очевидно: режиму сопоставляется (закавыченный) текст, который будет выведен по команде /usr/sbin/control NAME help [MODE] (при отсутствии указания режима — все зарегистрированные).

new_summary(text)

Ещё проще: единственный аргумент и сопоставляется команде control NAME summary.

Пример: su

В качестве сподручного образца приведу поддержку control в su-0.60-alt24 (исходный пакет — SimplePAMApps).


/etc/control.d/facilities/su:



Вот используемые макросы из ALT Linux RPM:
%pre_control

%post_control

Ссылки


Ссылок на эту страницу нет


 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]