“Apache将如何提供从URL映射的任何文件”目录指令?

时间:2015-08-23 20:09:00

标签: apache configuration

我对Apache的Directory指令有疑问,这是他们在文档(http://httpd.apache.org/docs/2.4/mod/core.html#directory)中所说的内容:

  

请注意< Directory“/”>的默认访问权限是允许所有访问。这意味着Apache httpd将提供从URL映射的任何文件。建议您使用

等块更改此设置
<Directory "/">
  Require all denied
</Directory>

但是如果我只设置了DocumentRoot,那么Apache如何做他们所说的(提供从URL映射的任何文件),例如:

DocumentRoot "/usr/local/apache/htdocs"

Alias "/some/webspace/path" "/"UserDir或其他映射到系统根/目录的网址映射规则?

在文档的另一部分(安全提示http://httpd.apache.org/docs/2.4/misc/security_tips.html#protectserverfiles)中,我们可以猜到UserDir的半完整示例:

  

偶尔被误解的Apache的一个方面是   默认访问功能。也就是说,除非你采取措施改变   如果服务器可以通过普通URL找到文件的方式   映射规则,它可以为客户提供服务。

     

例如,请考虑以下示例:

# cd /; ln -s / public_html
Accessing http://localhost/~root/
     

这将允许客户端遍历整个文件系统。要解决此问题,请将以下块添加到服务器的配置中:

<Directory "/">
    Require all denied 
</Directory> 
     

这将禁止默认访问文件系统位置。

他们对Directory http://httpd.apache.org/docs/2.4/mod/core.html#directory指令的说法只是警告,如果您使用像mod_userdir这样的模块,就像他们在http://httpd.apache.org/docs/2.4/misc/security_tips.html#protectserverfiles显示一样?或者还有其他什么,也许还有一些关于Directory的详细信息没有在文档中给出?

感谢您的关注!

1 个答案:

答案 0 :(得分:0)

在Apache中,有无限的假设插件/指令可以改变 如何将URL映射到文件系统。明显的/主流的是DocumentRoot,Alias,AliasMatch,RewriteRule,UserDir等。但是没有人知道其他可能存在的东西。

Apache简单地将URI与文件系统映射完全分开,核心是否愿意从该文件系统位置实际提供服务。

有几种方法可以意外地暴露事物,例如使用mod_rewrite,默认配置文件使用&lt; Directory /&gt;上的默认值来保护您。手册并不总是强调编译默认值和默认conf的内容之间的差异。后者可以在重新包装时改变,这很棘手。