我一直在尝试在 CentOS 7 中掌握 Apache。
我设置了两个虚拟主机并创建了基本的index.html页面,如下所示:
/var/www/domainA/public_html/index.html
/var/www/domainB/public_html/index.html
两台主机都具有如下权限:
域A:
public_html -> jonathan:jonathan
index.html -> root:root
域B:
public_html -> jonathan:jonathan
index.html -> root:root
现在,发生的情况是 DomainA 的 index.html 页面提供得很好,但域 B 的 index.html 给了我一个 403 Forbidden。
DomainB 的 error.log 给了我这个:
AH00132: file permissions deny server access: /var/www/DomainB/public_html/index.html
为什么会发生这种情况?这让我非常难过。
答案1
事实证明,问题不是文件/文件夹权限本身,而是非工作域的安全上下文。
根据我有限的理解,为了让 Apache 提供文件,需要将文件/文件夹配置为在上下文下运行httpd_sys_content_d
。
我的“错误”是非工作域已从我的开发区域转移到 Apache 内容文件夹中,并且没有正确的安全上下文,因此 Apache 无法提供文件。通过在文件夹和子文件夹ls -Z
上运行证实了这一点。public_html
我曾经chcon -R -t httpd_sys_content_t public_html/
设置正确的安全上下文,现在 Apache 正在提供一切服务。
答案2
chcon -R -t httpd_sys_content_t <Your_Document_Root_Dir>
应该做的伎俩