Как отключить SELinux для подпроцесса, запущенного из Apache? - PullRequest
2 голосов
/ 14 ноября 2010

Мой модуль Apache запускает вспомогательный подпроцесс, который, например, но не ограничивается, следующими вещами:

  • Он устанавливает сокет для связис Apache.
  • Читает и записывает файлы во временную папку, которая удаляется при выходе из Apache.Эти файлы используются, например, для хранения больших объемов данных, полученных по сети, в случае, если данные не помещаются в ОЗУ удобным образом.
  • Он порождает указанные пользователем исполняемые файлы.Похож на CGI.Каждый из этих порождаемых процессов запускается как отдельный выделенный пользователь.

Вспомогательный подпроцесс запускается от имени пользователя root, так что он может управлять владельцами файлов и разрешениями и может порождать больше процессов как конкретных пользователей.

Некоторые пользователи моего модуля работают в системах с установленным SELinux, например, в дистрибутивах на основе RedHat.SELinux обычно мешает моему модулю.До сих пор я говорил людям отключить SELinux для всей системы, потому что я не могу понять, как написать правильную политику для моего программного обеспечения.Документация очень разбросана, сложна и обычно предназначена только для системных администраторов, а не для разработчиков программного обеспечения.

В качестве шага в правильном направлении я хочу реализовать минимальную поддержку SELinux.Я ищу способ запуска моего вспомогательного подпроцесса без каких-либо ограничений SELinux без отключения общесистемного SELinux.Есть ли способ сделать это, и если да, то как?

1 Ответ

2 голосов
/ 14 ноября 2010

Ну ... вы могли бы написать правило, которое переводит ваш домен в unconfined_t, но тогда вы бы разозлили немало системных администраторов.Лучше всего написать себе новый домен, который наследуется от httpd_t, а также добавляет соответствующие контексты для доступа.

...