Apache .conf 文件“需要所有”实用程序?

Posted

技术标签:

【中文标题】Apache .conf 文件“需要所有”实用程序?【英文标题】:Apache .conf files "Require all" utility? 【发布时间】:2020-06-06 14:52:46 【问题描述】:

我正在使用 Fedora 30 上的 Apache .conf 文件。

在/etc/httpd/conf/httpd.conf中,有:

<Directory />
    AllowOverride none
    Require all denied
</Directory>

还有:

DocumentRoot "/var/www/html" 

这意味着“localhost”从这个“/var/www/html”目录开始。

问题 1:对于目录“/”而 DocumentRoot 处于较低级别(因此服务器不会提供较高级别目录中的任何文件),“要求全部拒绝”有什么用?

httpd.conf 的末尾有:

IncludeOptional conf.d/*.conf

所以我在“/etc/httpd/conf.d”中创建了一个personal.conf;我在里面设置:

<Directory "/var/www">
    AllowOverride None
    Require all denied
</Directory>

我重新启动 Apache(systemctl restart httpd.service),但 localhost/index.html(又名“DocumentRoot”/index.html 或“/var/www/html”/index.html)仍然可用。

就好像 httpd.conf 中的这个指令是优先的:

<Directory "/var/www/html">
    Require all granted
</Directory>

问题 2:那么在更高级别的存储库上“要求所有拒绝”有什么用?

感谢您的帮助:)

【问题讨论】:

【参考方案1】:

问题 1:目录“/”中的“要求全部拒绝”有什么用,而 DocumentRoot 处于较低级别(因此服务器不会提供较高级别目录中的任何文件)?

问题 2:那么在更高级别的存储库上“要求所有拒绝”有什么用?

如果Require all denied 不存在,服务器可以轻松地为文档根目录下的文件提供服务,您只需要在服务器中配置一个小错误。例如,想象一个Alias 喜欢

Alias /etc /etc

这将允许您从http://localhost/etc/passwd 或其他敏感内容中读取密码文件。使用默认配置,您将需要像

这样的显式覆盖
<Directory /etc>
   Require all granted
</Directory>

这样做。

指令

<Directory />
    AllowOverride none
    Require all denied
</Directory>

用于防止任何访问您的/var/www/html 目录下的安全机制(“尽可能限制”)。

【讨论】:

【参考方案2】:

谢谢你的回答。

现在回答问题 2;让我们想象一个房子:室外 [门 1] 大厅 [门 2] 走廊 [门 3] 客厅。

在/etc/httpd/conf/httpd.conf中,我关闭了房子的前门[门1]

<Directory />
    AllowOverride none
    Require all denied
</Directory>

我打开大厅和走廊之间的门[门 2]

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

我打开走廊和客厅之间的门[门 3]

<Directory "/var/www/html">
    AllowOverride None
    Require all granted
</Directory>

然后在“/etc/httpd/conf.d”的personal.conf文件中我关上了大厅和走廊之间的门[门2]

<Directory "/var/www">
    AllowOverride None
    Require all denied
</Directory>

为什么客厅仍然可以访问(localhost/index.html 或 /var/www/html/index.html 可以访问)而 [门 2] 已关闭?

我需要明确:

<Directory "/var/www/html">
    AllowOverride None
    Require all denied
</Directory>

在个人.conf 中

获取“禁止您无权访问此资源”。留言...

再次感谢。

【讨论】:

以上是关于Apache .conf 文件“需要所有”实用程序?的主要内容,如果未能解决你的问题,请参考以下文章

实用代码| hbase表的创建以及简单的增删改查

web服务器

即使在应用程序部署之后,如何永久编辑 httpd.conf 以使 apache 2.4 中的更改发生?

即使在应用程序部署之后,如何永久编辑httpd.conf以便在Apache 2.4中进行更改?

Apache2 vHost conf - 重定向到不同的服务器

httpd.conf文件夹在哪里,需要apache 配置完httpd.conf