Операции с необработанными сокетами Python / C с использованием Django, Mod_WSGI, Apache - PullRequest
2 голосов
/ 03 октября 2011

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

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

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

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

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

1 Ответ

1 голос
/ 03 октября 2011

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

...