<Directory "/home/john/development/foobar/web">
AllowOverride All
</Directory>
但是当我运行该文件时,我收到了“禁止访问。您无权访问/”
进行了一些谷歌搜索后,我发现要使我的网站再次正常工作,我需要添加以下行“ Require all grant”,以便我的虚拟主机看起来像这样:
<Directory "/home/john/development/foobar/web">
AllowOverride All
Require all granted
</Directory>
我想知道这是否“安全”并且没有带来任何安全性问题。我在Apache的页面上读到,它“模仿了以前由'允许所有人'和'拒绝所有人'指令提供的功能。此提供程序可以采用'granted'或'denied'两个参数之一。例子将授予或拒绝对所有请求的访问。”
但没有说这是否是某种安全问题,或者为什么我们现在必须这样做,而过去您没有到。
#1 楼
访问控制配置在2.4中进行了更改,并且旧配置在不进行某些更改的情况下是不兼容的。请参阅此处。如果您的旧配置是
Allow from all
(没有阻止访问服务的IP地址),则Require all granted
是新功能。评论
更不用说,旧方法非常令人困惑,并且早就应该被更明智的方法所取代。
–迈克尔·汉普顿
13年10月30日,下午2:33
对于如此重大的更改,我希望能够提供某种支持,以自动迁移配置文件,或者至少显示所有需要更改的地方。
– Wolfgang Fahl
15年11月28日在2:16
看到要求全部被拒绝的工作示范会很高兴。
– Kraang Prime
16年4月15日在18:05
我认为这不等于允许所有人。您必须“合并”所有已通过其他现有Require规则授予的Require。在我的情况下,像在任何地方建议的那样盲目转换配置时,将忽略现有的Require有效用户。这是可能发生的最糟糕的事情...
– rudimeier
16 Sep 14'在12:34
对OP的问题有一个正确的答案将是很好的。 “一切都允许”不是很令人满意。
– Sharcoux
17年5月16日在18:31
#2 楼
我知道这是一篇过时的文章,但是我认为我可以使用我经常使用的功能示例来提供更多帮助!在Apache 2.2中将是:
<Location />
Order deny, allow
allow from all
</Location>
<Location /adm>
Order deny, allow
deny from all
allow from myniceip
</Location>
<Location /disabled>
Order deny, allow
deny from all
</Location>
在Apache 2.4中将是:
<Location />
require all granted
</Location>
#Note that you dont need to use require all denied
#to require only a group of ips..
<Location /adm>
require ip myniceip
</Location>
<Location /disabled>
Require all denied
</Location>
使用htacess身份验证时请务必小心,此新语法可能会做一些不好的预料之外的事情,如果您遇到这种情况,请阅读:
https://unix.stackexchange.com/questions/413309/ apache-2-4-想让我决定需要一个有效的ip或一个需要有效的用户,你应该没事!
评论
对我来说,require all的存在阻止了HTTP身份验证的正常工作,因此感谢您提供的信息。
–authentictech
19年6月17日在17:47
@authentictech不仅要求所有授予的权限都可以破坏它。如果未正确使用RequireAll或RequireAny,则可以使用此新语法完全破坏预期的身份验证。请阅读:unix.stackexchange.com/questions/413309/…。感谢您的反馈。
–卢西亚诺·安德雷斯·马蒂尼(Luciano Andress Martini)
19年6月17日在17:57
评论
升级文档详细说明了“访问控制”更改。 httpd.apache.org/docs/2.4/upgrading.html