我正在使用全新安装的 Fedora 16,并尝试启动并运行 Apache。我非常熟悉 Linux,也对 CentOS 有所了解,但我对 Fedora 和 SELinux(不管是什么)几乎没有经验。
刚开始安装Apache后,我连示例网页都看不到,找了好久,最后通过编辑iptables解决了这个问题。
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
sudo iptables-save
我继续并开始将一些文件放入 Web 根目录中,以确保权限设置正确。
$ ls -Rlhp /var/www/html/
/var/www/html/:
total 8.0K
drwxr-xr-x. 2 apache root 4.0K Apr 20 22:47 files/
/var/www/html/files:
total 25M
-rw-r--r--. 1 apache users 25M Apr 20 22:47 SRR022918.errors.tar.gz
但是当我导航到相应的 URL ( my.server.edu/files/SRR022918.errors.tar.gz
) 时,出现了 403 权限被拒绝错误。我检查了 Apache 错误日志并发现了此消息。
[Fri Apr 20 23:09:55 2012] [error] [client xxx.xxx.xx.xx] (13)Permission denied: file permissions deny server access: /var/www/html/files/SRR022918.errors.tar.gz
我尝试将文件和目录权限设置为 777,但这并没有解决问题。这真的很可疑,所以我猜这与 SELinux 有关。我没有使用过 SELinux,所以我的思路对吗?如果是这样,我该如何解决这个问题?
答案1
如果记忆不错的话,你可能需要运行chcon -R -h -t httpd_sys_content_t /var/www/html
这会以递归方式将您的内容目录设置为适合 Apache 的上下文。
答案2
正如您所预料的,此文件权限问题是由 SELinux 引起的。它相当复杂,但 CentOS 的优秀人员已经整理了一个非常好的 wiki,可以帮你入门简而言之,您可以禁用 SELinux(完全是坏主意),将其设置为宽容模式(稍微不那么坏的主意),或者使用 SELinux。由于 wiki 以相当简洁的方式介绍了详细信息,因此我将保持 DRY 并让您阅读 wiki。
我通过将文件复制到 /var/www/html 然后使用以下命令恢复该文件夹的默认上下文来修复我的问题:
restorecon -Rv /var/www/html