解决Python的共享服务器安全问题

所以我的小组正在尝试为各种各样的Web服务建立一个共享服务器环境。 我想我们已经决定在php.iniphp_admin_value设置disable_functionsdisable_classes网站,以强制每个应用程序的httpd.conf open_basedir用于php脚本,以及乘客用户切换 ruby脚本。

我们仍然需要为python找到一些东西。 Passenger确实支持python,但不支持特定子目录的每个应用程序安全性(在域级别是全部或全部)。

有什么建议?

(如果之前的任何一个没有意义 – 好吧,我是那个应该设置python支持的人,而不是设置php或ruby支持的人,所以还有一些“然后一些魔法发生了“从我的角度出发的步骤”。

好吧,有一个名为virtualenv的系统,它允许您在一种安全的环境中运行Python,并动态配置/加载/关闭这些环境。 我不太了解它,但你应该仔细研究它; 这是从其网页上的描述(只是谷歌它,你会发现它):

要解决的基本问题是依赖关系和版本之一,以及间接权限。 想象一下,你有一个需要LibFoo版本1的应用程序,但另一个应用程序需要版本2.你如何使用这两个应用程序? 如果将所有内容安装到/usr/lib/python2.4/site-packages(或任何平台的标准位置),则很容易在无意中升级不应升级的应用程序的情况下结束。

或者更一般地说,如果你想安装一个应用程序并保留它,该怎么办? 如果应用程序有效,则其库中的任何更改或这些库的版本都可能会破坏应用程序。

另外,如果您无法将软件包安装到全局site-packages目录中,该怎么办? 例如,在共享主机上。

在所有这些情况下,virtualenv可以帮助您。 它创建了一个具有自己的安装目录的环境,该环境不与其他virtualenv环境共享库(并且可选地也不使用全局安装的库)。