start-stop-daemon для Astra Linux Special Edition
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build-aux
debian
m4
man
COPYING
Makefile.am
Makefile.in
README.md
config.h.in
configure
configure.ac
macros.h
start-stop-parsec-daemon.c

README.md

start-stop-parsec-daemon для Astra Linux Special Edition

start-stop-parsec-daemon это пропатченная версия обычного start-stop-daemon для Astra Linux Special Edition. В отличии от стандартной версии умеет запускать процессы с привилегиями и мандатной меткой PARSEC под любым пользователем.

Обновление 11 сентября 2015: start-stop-parsec-daemon версии 0.1 вошёл в состав Astra Linux Special Edition 1.5.

Лицензия

Как и оригинальное ПО, распространяется на условиях стандартной общественной лицензии GNU (GPL) версии 2.

Полный текст лиценции находится в файле COPYING.

Сайт компании «Лаборатория 50».

Для чего это нужно

Штатные возможности Astra Linux Special Edition не позволяют запускать процессы со сменой UID/GID и при этом ставить привилегии PARSEC. Невозможно, например, запускать немодифицированные программы с привилегией PRIVSOCK (возможность подключения пользователей с ненулевой мандатной меткой) с UID/GID отличными от 0 (root).

Столь плачевное положение возможно имеет причиной: а) забывчивость Русбитеха; б) вера в то, что все привилегированные процессы должны запускаться от рута. Как бы то ни было, вся обвязка связанная с запуском процессов с привилегиями PARSEC, полна тлена и баш-скриптов и порой приводит к потере работоспособности скриптов запуска.

Посему мы это все решили прекратить и сделать свой start-stop-daemon с PARSEC привилегиями и мандатными метками, но без скриптов.

Как это работает

Пакет устанавливает команду start-stop-parsec-daemon, полностью совместимую со штатным start-stop-daemon, но позволяющую указывать:

  • привилегии PARSEC с помощью параметра --capability (-l);
  • мандатную метку с помощью параметра --mac (-M);

Для совместимости со штатным механизмом Астры privsock, если указана привилегия 0x100 (PRIVSOCK), то команда дополнительно сверяется с файлом /etc/parsec/privsock.conf на предмет наличия запускаемого бинарника в оном списке.

В остальном, все как обычно.

Как это всё прикрутить к собственному проекту?

  1. Добавьте в зависимости вашего пакета с init.d скриптом наш пакет (parsec-daemon).

  2. В скрипте используйте start-stop-parsec-daemon вместо start-stop-daemon.

  3. Укажите привилегии и/или метки с помощью параметров.

Рекомендация: если вы хотите таким образом адаптировать сторонние пакеты, то наилучшим способом будет создание пакета <пакет>-parsec, в котором будет правильный LSB скрипт запуска. А postints/postrm скрипты будут отключать стандартный демон и работать с /etc/parsec/privsock.conf.

Пример

Конкретного примера не будет, смотрите нашу обвязку RabbitMQ.