我为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关闭时也会发生这种情况。
答案 0 :(得分:0)
Apache至少需要对WSGI脚本文件所在目录的搜索访问(+ x)。将URL映射到WSGI脚本文件时需要这样做,以便确定WSGI脚本文件是否存在。
另一种方法是将WSGI脚本文件放在受保护目录之外的区域中,然后让WSGI脚本从包含实际WSGI应用程序的受保护区域导入特定的Python模块。 WSGI脚本文件可以由系统管理员设置,而不是由用户编写。