限制对wsgi守护程序用户的文件系统访问

时间:2013-04-29 07:37:24

标签: django mod-wsgi

我为2个不同的os用户和组配置了2个mod_wsgi守护进程。 Apache将为每个用户正确生成一个守护进程:

# ps -eF
root     10188     1  0  4586  6204   0 09:21 ?        00:00:00 /usr/sbin/httpd
501      10190 10188  0 50531 13592   0 09:21 ?        00:00:00 /usr/sbin/httpd
500      10191 10188  0 48336  5936   0 09:21 ?        00:00:00 /usr/sbin/httpd
apache   10192 10188  0  4867  7300   0 09:21 ?        00:00:00 /usr/sbin/httpd
...

到目前为止它工作正常,每个请求都包含已配置的mod_wsgi.process_group。

但是,当文档根目录的文件系统权限仅限于守护程序用户(chmod -R 700)时,apache将在vHost的错误日志中产生拒绝访问的消息: “(13)许可被拒绝:访问/拒绝”

我想知道为什么我需要具有公共读取权限,而文件应该只由守护进程访问?

注意:当selinux关闭时也会发生这种情况。

1 个答案:

答案 0 :(得分:0)

Apache至少需要对WSGI脚本文件所在目录的搜索访问(+ x)​​。将URL映射到WSGI脚本文件时需要这样做,以便确定WSGI脚本文件是否存在。

另一种方法是将WSGI脚本文件放在受保护目录之外的区域中,然后让WSGI脚本从包含实际WSGI应用程序的受保护区域导入特定的Python模块。 WSGI脚本文件可以由系统管理员设置,而不是由用户编写。