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

Зачем нужна?

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

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

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

  1. Добавьте в зависимости вашего пакета с init.d скриптом наш пакет (parsec-daemon).
  2. В скрипте используйте start-stop-parsec-daemon вместо start-stop-daemon.
  3. Укажите привилегии с помощью параметра --capability.

Пакеты можно собрать самостоятельно из исходников, а можно взять готовые для Astra Linux Special Edition 1.3/1.4 из нашего репозитория.

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

Пример

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

P.S. Наша версия start-stop-daemon войдет в версию 1.5 Astra Linux Special Edition.

2 комментария

  1. Господа, а вот скажите мне как художник художнику.

    Нужно мне использовать астровский apache (1.5 Смоленск) как frontend (или reverse proxy) к сервису, работающему на другом хосте.
    Причем, apache работает в среде ALD с набором мандатных меток, а сервис — вообще вне мандатного контекста.

    При этом web-юзеры работают в ALD и заходят с различными мандатными метками.
    Если метка ненулевая, имеем Service unavailable. То есть apache не может достучаться до backend.
    С нулевой меткой все работает.

    Прописывал apache в privsock, запускал его через execaps -c 0x100.
    Проверял эффективные capabilities через pscaps — все выставляется правильно.

    Но с ненулевыми мандатными метками — не работает.

    Предполагаю багу. Но все же есть еще надежда на мою криворукость.
    Need help.

Что у нас
нового

Блог

Astra Linux Special Edition 1.6.15

12 ноября 2024

Вышло последнее оперативное обновление 2024-1017 (№ 15) для Astra Linux Special Edition 1.6.

Окуляр ГОСТ

Окуляр ГОСТ: ускорение проверки ЭП по протоколу OCSP

6 сентября 2024

Пользователи пакетной подписи «Окуляр ГОСТ» сталкиваются с проблемой долгой проверки ЭП.

Наши
контакты

Связаться с нами

Телефон: 8 (812) 981-68-09
Электронная почта: team@lab50.net






    Заполняя данную форму, вы принимаете условия Соглашения об использовании сайта, и соглашаетесь с Правилами обработки и использования персональных данных