Решение проблемы безопасности общего сервера для Python - PullRequest
2 голосов
/ 24 октября 2008

Поэтому моя группа пытается настроить среду общего сервера для различных и разных веб-сервисов. Я думаю, что мы остановились на настройке disable_functions и disable_classes сайта в php.ini и php_admin_value, чтобы принудительно open_basedir в каждом приложении httpd.conf для сценариев php и для пользователя переключение пользователя для сценариев ruby.

Нам все еще нужно найти что-то для python. Пассажир поддерживает Python, но не для безопасности приложений для определенных подкаталогов (это все или ничего на уровне домена).

Есть предложения?

(И если что-то из предыдущего не имеет смысла - ну, я парень, который должен настроить поддержку python, а не парень, который настраивал поддержку php или ruby, так что еще есть некоторые »и тогда, с моей точки зрения, происходит какое-то волшебство ».

1 Ответ

3 голосов
/ 26 октября 2008

Ну, есть система под названием virtualenv , которая позволяет вам запускать Python в своего рода безопасной среде и конфигурировать / загружать / выключать эти среды на лету. Я не знаю много об этом, но вы должны серьезно взглянуть на это; Вот описание с его веб-страницы (просто Google, и вы найдете его):

Основная проблема, которая решается, - это зависимости, версии и косвенные права доступа. Представьте, что у вас есть приложение, которому требуется версия 1 LibFoo, но другому приложению требуется версия 2. Как вы можете использовать оба этих приложения? Если вы установите все в /usr/lib/python2.4/site-packages (или где-либо в другом месте вашей платформы), легко оказаться в ситуации, когда вы непреднамеренно обновите приложение, которое не должно быть обновлено. *

Или в целом, что если вы хотите установить приложение и оставить его? Если приложение работает, любое изменение в его библиотеках или версиях этих библиотек может нарушить работу приложения.

А что если вы не можете установить пакеты в глобальный каталог site-packages? Например, на общем хосте.

Во всех этих случаях virtualenv может вам помочь. Он создает среду, которая имеет свои собственные установочные каталоги, которая не разделяет библиотеки с другими средами virtualenv (и, по желанию, также не использует глобально установленные библиотеки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...