Fedora 16:“权限被拒绝:文件权限拒绝服务器访问”

Dan*_*age 8 permissions fedora selinux

我正在使用全新的 Fedora 16 安装,并且正在尝试启动并运行 Apache。我对 Linux 和 CentOS 非常熟悉,但我对 Fedora 和 SELinux(不管是什么)的经验很少。

起初,安装Apache后,我什至看不到示例网页。我做了一些搜索,最后通过编辑 iptables 解决了这个问题。

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
sudo iptables-save
Run Code Online (Sandbox Code Playgroud)

我继续并开始在 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
Run Code Online (Sandbox Code Playgroud)

但是当我导航到相应的 URL ( my.server.edu/files/SRR022918.errors.tar.gz) 时,我收到了 403 Permission denied 错误。我检查了 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
Run Code Online (Sandbox Code Playgroud)

我尝试将文件和目录权限设置为 777,但这并没有解决问题。这真的很可疑,所以我猜这与 SELinux 有关系。我没有使用 SELinux 的经验,所以我是在正确的轨道上吗?如果是这样,我该如何解决这个问题?

Mag*_*lan 15

如果没记错的话,你可能需要运行 chcon -R -h -t httpd_sys_content_t /var/www/html

这将递归地将您的内容目录设置为 Apache 的正确上下文。


小智 8

如您所料,此文件权限问题是由 SELinux 引起的。它相当复杂,但是 CentOS 的好心人已经建立了一个非常好的 wiki 来帮助您前进。简而言之,您可以禁用 SELinux(完全是个坏主意),将其设置为许可模式(稍微不那么坏主意),或者使用 SELinux。由于 wiki 以相当简洁的方式详细介绍了细节,我将保持干燥,让您阅读 wiki。

我通过将文件复制到 /var/www/html 然后使用以下方法恢复该文件夹的默认上下文来修复我的:

restorecon -Rv /var/www/html
Run Code Online (Sandbox Code Playgroud)