【问题标题】:django/apache permissions problemdjango/apache 权限问题
【发布时间】:2010-04-21 23:13:21
【问题描述】:

我正在 Centos 5.4 上运行一个 django 项目,并使用 httpd/mod_wsgi 提供服务。我无法确定 /home/website/django_project 的正确权限,因此我不会收到 403 错误。

在我的 httpd.conf 中,运行 httpd 的用户和组与 apache 一样。组 django 以网站和 apache 作为成员。 /home/website 和所有子目录的所有者是 website:django,权限是 rwxrwx---。现在该项目在开发服务器上运行良好,但如果我尝试通过 apache 查看它,我会收到 403 错误。 chmod -R o+rx /home/website/django_project 解决了这个问题,但这显然不是一个好的解决方案。

谢谢

【问题讨论】:

    标签: django apache


    【解决方案1】:

    首先,尝试在目录上设置 group-sticky 位:

    find /home/website -type d -exec chmod g+s {} \;
    

    那么烫发应该是rwxrws---。看看这是否有区别。

    如果失败,您可以尝试以“网站”用户的身份四处寻找,看看会发生什么。暂时给用户“网站”一个主目录(不是/home/website,它需要是别的东西,比如/var/home/website)、密码和登录shell,然后使用su - website切换到它。尝试列出 /home/website 的内容并尝试读取其中的文件。解决任何问题。

    希望这会有所帮助。

    附:我假设/var/log/apache/access_log(或者可能是/var/log/http/access_log)没有任何有用的东西。

    【讨论】:

    • IIRC,没有粘性位,apache 尝试以组“apache”的身份访问目录,这是执行服务器的(默认)组。粘性位告诉操作系统使用该目录中的目录组。
    • 粘滞位仅适用于将文件写入目录而不是从目录中读取文件时。
    • 让我想知道 mod_wsgi 是否正在尝试写入目录。 ...但是您确定吗,因为您必须对目录具有执行权限才能读取其内容?
    • 我不确定到底发生了什么。在我做 g+s 之前,权限必须是 rwxrwxr-x 以防止出现 403 错误。 g+s 后,rwxrwx--- 工作正常。一切的所有者是 website:django,其中 django:x:505:apache,website.我之前曾尝试将所有者设置为 website:apache,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 2011-03-10
    • 2016-10-07
    • 2011-06-25
    • 2017-06-07
    • 2021-10-26
    • 2021-12-16
    相关资源
    最近更新 更多