默认的 apache.conf(ubuntu 服务器)包含以下块:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
# .... other items removed for brevity
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
我对这个指令的解释是,apache 将允许通过 Web 浏览/usr/share
文件夹中的项目。但是,如果我尝试浏览其中的项目,/usr/share/
我却看不到任何内容?
如何浏览/usr/share 中的内容?
例如,如果我将浏览器指向,
localhost/synaptic/html/index.html
则会收到 404 未找到错误如果 apache 允许浏览该目录 - 我是否需要在生产服务器上将其锁定?
答案1
您需要将 URL 路径映射到 /usr/share。最简单的方法是使用 Alias 指令,例如:
Alias /share /usr/share
然后
http://localhost/share/synaptic
将映射到/usr/share/synaptic
。参见Alias 的文档。/usr/share 中的所有文件对于非 root 用户(包括 Apache 用户 www-data)来说都应该是不可写的。它们可能也是所有人都可读的。因此,按照上述方式提供所有这些文件应该没有问题,没有任何额外的限制。但是,如果 /usr/share 中有您不想让 Apache 用户看到的公共文件,则可以使用
Require all deny
指令来阻止对这些文件的访问。