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

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

这个问题似乎已经在这个论坛上被回答了好几次,但是没有一个解决scheme适用于我。

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

更具体地说,如果我将根设置为/ 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> 

这些行包含所有的build议,为同样的问题的其他人工作。

我在浏览器中input本地主机时得到的内容取决于文档根目录。

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

    [Thu Jul 19 17:17:52 2012] [error] [client :: 1](13)Permission denied:access to /index.html denied

我也尝试添加一个index.php文件到目录。 然后,我得到了许可拒绝消息的PHP文件和HTML文件。

我也尝试将用户:组设置为目录和文件上的apache:apache。 这没有帮助。

我已经尽了我所能想到的来修复这些权限,但都无济于事。

有没有人有关于这里发生的事情的想法?

谢谢。

看起来您已经在标准文件系统层次结构之外创build了一个新目录来保存您的Web文档。

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

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

 semanage fcontext -a -t httpd_sys_content_t "/volume1/web(/.*)?" 

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

然后重新标记这些文件:

 restorecon -r -v /volume1/web 

SELinux现在将允许Apache访问/volume1/web文件。

我将指责SELinux的责任。 validation通过运行setenforce 0并重新尝试。

– Desabilitar SELINUX e Reiniciar

SELINUX =禁用

SELINUXTYPE =针对性

grep ^ SELINUX / etc / sysconfig / selinux

 { T=/tmp/OLD.selinux.$RANDOM$RANDOM$$ ; cp -f /etc/sysconfig/selinux $T ; sed -e 's@^SELINUX=.*@SELINUX=disabled@' \ -e 's@^SELINUXTYPE=.*@SELINUXTYPE=targeted@' \ < $T > /etc/sysconfig/selinux ; } ; 

xreboot;