vhost 文档根目录中的权限被拒绝

oks*_*far 6 permissions virtualhost

我在使用 CentOS 6.3 在 Apache 2.4 上设置虚拟主机时遇到问题。

这个问题似乎在这个论坛上已经回答了几次,但没有一个解决方案对我有用。

基本上,我设置了一个具有特定文档根目录的虚拟主机。当我尝试访问该站点时,出现权限错误。但是如果我使用不同的根,我没有问题。

更具体地说,如果我将根设置为 /volume1/web/xxx,由于 index.html 上的权限问题,我会收到 503。

但是如果我将它设置为 /volume1/web,index.html 就会毫无问题地出现。

细节:

  • 我将 volume1、web 和 xxx 的权限设置为 755。
  • 我将 index.html 文件的权限设置为 777。
  • 我将 index.html 文件复制到 /volume1/web 和 /volume1/web/xxx,以便它们具有相同权限的相同索引文件。

在 httpd.conf 中,我设置了 VirtualHost 选项,以便我可以通过更改 2 个注释标记轻松切换文档根目录

我在 conf 文件中有以下几行:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    #DocumentRoot /volume1/web
    DocumentRoot /volume1/web/xxx

    #<Directory /volume1/web>
    <Directory /volume1/web/xxx>
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order Allow,Deny
      Allow from all
    </Directory>

    ErrorLog logs/localhost-error_log
    CustomLog logs/localhost-access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这些行包含适用于其他有相同问题的人的所有建议。

当我在浏览器中输入 localhost 时得到的结果取决于文档根目录。

  1. 如果根目录是 /volume1/web,则会出现 index.html 页面。
  2. 如果 root 是 /volume1/web/xxx,那么我会收到 503 错误,并且 apache 错误日志中有这一行:

    [2012 年 7 月 19 日星期四 17:17:52] [错误] [客户端 ::1] (13)权限被拒绝:访问 /index.html 被拒绝

我还尝试将 index.php 文件添加到目录中。然后,我收到了 php 文件和 html 文件的权限被拒绝消息。

我还尝试在目录和文件上将 user : group 设置为 apache : apache 。那没有帮助。

我已经做了我能想到的一切来修复权限,但无济于事。

有没有人知道这里发生了什么?

谢谢。

Mic*_*ton 12

您似乎在标准文件系统层次结构之外创建了一个新目录来保存您的 Web 文档。

当您这样做时,SELinux 不知道您的自定义目录结构,也不知道 Apache (httpd) 应该有权访问它。/var/log/audit/audit.log在这种情况下,您将看到显示拒绝的消息。

要真正解决问题,您需要告诉 SELinux Apache 可以访问该目录。使用semanage fcontext命令执行此操作:

semanage fcontext -a -t httpd_sys_content_t "/volume1/web(/.*)?"
Run Code Online (Sandbox Code Playgroud)

模式匹配是用正则表达式完成的,所以这将匹配/volume1/web它下面的所有内容。它使用正则表达式的事实也意味着您需要如上所示引用它。

然后重新标记文件:

restorecon -r -v /volume1/web
Run Code Online (Sandbox Code Playgroud)

SELinux 现在将允许 Apache 访问/volume1/web.