0

我用 2 个不同的操作系统用户和组配置了 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。

但是,当文档 root 的文件系统权限被限制为守护程序用户 (chmod -R 700) 时,apache 将在 vHost 的错误日志中产生拒绝访问消息:“(13)Permission denied: access to / denied”

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

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

4

1 回答 1

0

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

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

于 2013-04-29T10:09:07.487 回答