我在 Fedora 18 上安装了 Redmine。使用 webrick 测试安装成功,如官方指南。
现在我想使用 Passenger 和 Apache 来托管 Redmine。我得到的是:
乘客错误#2 尝试访问'/var/www/redmine/config/environment.rb'时发生错误:无法统计'/var/www/redmine/config/environment.rb':权限被拒绝(errno = 13)
Apache 没有该文件的读取权限。请修复相关文件权限。
经过多次尝试解决问题均失败后,我将整个/var/www/redmine
目录(包括内容)的所有权交给了 apache 用户和将权限递归更改为 777。我切换到 apache 用户,可以打开并查看 environment.rb 文件,没有任何问题。所以我认为这毕竟不是权限问题,但面对这个明确的错误消息,我束手无策。
这里可能是什么问题,有什么想法可以解决它(最好是一个允许我将权限改回合理值的解决方案)?
脚注:
- 这可能与这个问题。
- 我没有忘记在更改权限后重新启动 apache。
- 我正在运行 httpd 版本 2.4.4-2.fc18、Phusion Passenger 版本 4.0.4 Redmine 版本 2.3.1。
答案1
我忘记了 Fedora 默认启用了 SELinux。关闭 SELinux 可以消除错误。
正如 dawud 所指出的,关闭 SELinux 不应被视为解决方案 - 相反,应该配置 SELinux 以允许 Apache 使用这些文件。
快速解决方案是在相关目录上运行restorecon
。这会将安全上下文设置为父目录所需的类型。我的文件位于 /var/www 的子目录中,它们被设置为 httpd_sys_content_t,Apache 被允许访问它们。如果它们在其他地方,我就必须手动更改类型。
解决 SELinux 问题后,文件权限可以恢复到正常级别,不会再出现其他问题。