【问题标题】:mod_wsgi working directory and usermod_wsgi 工作目录和用户
【发布时间】:2013-02-11 08:47:45
【问题描述】:

我正在 mod_wsgi 上运行烧瓶。我在/var/www/app 上的烧瓶应用程序从用户那里接收一些文件并将其保存到/var/www/app/tmp 目录。然而,即使在所有 chmod 和 chown 之后(认为这是一个权限问题),我也无法访问该 tmp 目录。

经过一些调试,我发现烧瓶应用程序的当前工作目录是/。 我可以通过os.chdir('/var/www/') 更改工作目录,但出于安全考虑,我想避免这样做。

这是我的 apache 配置:

<VirtualHost *:80>
    ServerName mysite.com
    ServerAlias site.com
    ServerAdmin admin@localhost

    WSGIDaemonProcess app user=www-data group=www-data processes=1
    WSGIScriptAlias / /var/www/app.wsgi

    Alias /static /var/www/app/static

    <Directory /var/www/app>
        WSGIProcessGroup app
        WSGIApplicationGroup %{GLOBAL}
        WSGIScriptReloading On
        Order deny,allow
        Allow from all
    </Directory>

    <Location "/static">
        SetHandler None
    </Location>

</VirtualHost>

如何将我的应用程序的工作目录从 / 更改为 /var/www

【问题讨论】:

    标签: python apache2 mod-wsgi


    【解决方案1】:

    WSGIDaemonProcess 的documentation 表示您可以使用home=... 节:

    home=目录

    定义应用作目录的绝对路径 守护进程的初始当前工作目录 进程组。如果未定义此选项,则在 mod_wsgi 1.X 中 Apache父进程的当前工作目录将是 由进程组内的守护进程继承。一般 Apache父进程的当前工作目录将是 根目录。在 mod_wsgi 2.0+ 中,初始当前工作 目录将被设置为用户的主目录 守护进程运行为。

    不过,我很好奇——在您看来,为什么使用 os.chdir 会带来更多安全风险?

    【讨论】:

    • 这不起作用 - 我仍然在 wsgi 应用程序中从 os.getcwd() 获得 /
    • 遇到同样的问题,运气好了吗?
    猜你喜欢
    • 2011-11-03
    • 2012-02-07
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-02-12
    相关资源
    最近更新 更多