Операции необработанных сокетов Python/C с использованием Django, Mod_WSGI, Apache

В настоящее время я пишу веб-приложение с использованием Django, Apache и mod_wsgi, которое предоставляет некоторые функции управления и настройки сервера FreeBSD, включая общие операции с брандмауэром.

Моя библиотека Python/C использует необработанные сокеты для прямого взаимодействия с брандмауэром и прекрасно работает при запуске от имени пользователя root, но операции с необработанными сокетами разрешены только для root.

На данный момент единственное, что я могу придумать, это установить и использовать sudo, чтобы явно разрешить пользователю www доступ к /sbin/ipfw, что не идеально, поскольку я бы предпочел использовать операции с необработанной библиотекой сокетов, а не вызов подпроцесса. .

Я полагаю, что другим вариантом было бы написать (сокеты локального домена) или использовать существующую систему заданий (сельдерей?), Которая работает от имени пользователя root и обрабатывает эти запросы.

Или, возможно, есть какой-то трюк с режимом демона WSGI, о котором я не знаю? Я уверен, что эта проблема уже сталкивалась раньше. Любые советы о том, как лучше всего справиться с этим?


person kwl34    schedule 02.10.2011    source источник


Ответы (1)


Используйте Celery или другую серверную службу, работающую от имени пользователя root. Запуск процесса веб-приложения от имени пользователя root — это проблема безопасности, ожидающая своего решения. Вот почему mod_wsgi блокирует запуск процессов демона от имени пользователя root. Конечно, вы можете взломать код, чтобы отключить исключение, но я не собираюсь рассказывать вам, как это сделать.

person Graham Dumpleton    schedule 02.10.2011
comment
Я согласен и, конечно же, не собираюсь запускать apache/mod_wsgi от имени пользователя root... вот почему я здесь. Celery кажется немного излишним для этой операции, но он может оказаться полезным для других задач в будущих реализациях. - person kwl34; 03.10.2011