我无法使用 Apache 中的自定义 DocumentRoot 拒绝服务器文件系统访问?

我无法使用 Apache 中的自定义 DocumentRoot 拒绝服务器文件系统访问?

CentOS 7.1-Apache 2.4.6

默认配置包含以下内容:

....
<Directory />
    AllowOverride none
    Require all denied
</Directory>
...
DocumentRoot "/var/www/html"

如果我更改 DocumentRoot,我会得到:

403- 您无权访问/在此服务器上。

经过几个小时的四次检查目录配置和文件系统权限后,我尝试删除上面的阻止...成功!一切正常。

  • 这是应该发生的吗?
  • 难道我做错了什么?
  • 这会带来哪些安全隐患?

我的全部更改是用以下内容替换默认部分:

DocumentRoot "/srv/http"
<Directory "/srv/http">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

答案1

Apache 2.2 使用以下配置来声明对某些目录的访问权限:

Order deny,allow
Deny from all

Apache 2.4 使用以下内容:

Require all denied

更多信息这里。你设法让它使用第一种配置风格工作,这很奇怪,因为那只适用于 apache 2.2。尝试运行此命令:

httpd -v

它将输出你正在使用的 Apache 版本,以及或许它会帮助你理清一些心中的事情。

答案2

似乎在Directory路径配置中DocumentRoot,访问需求为了能够覆盖顶层拒绝,需要指定如下内容:

Require all granted

我想我还有很多书要读……Apache 文档

提供的Allow Deny和指令已弃用,并将在未来版本中消失。您应避免使用它们,并避免使用推荐使用它们的过时教程。Ordermod_access_compat

相关内容