我使用的是Apache 2.4,我希望在不使用mod_access_compat的情况下使用它。
我试图服务于SVN仓库,访问控制由mod_authz_svn处理。
我想要在回购站内的一些回购或位置具有只读的匿名访问。 我想要其他回购或地点要求基本authentication。
Apache 2.4不再支持Satisfy all语法,但是,mod_authz_svn似乎期望它。 这应该如何在Apache 2.4上configuration?
Apacheconfiguration:
<Location /svn> DAV svn SVNParentPath /usr/projects/svn AuthType Basic AuthName "SVN repository" AuthUserFile /usr/project-config/etc/svn-auth-file AuthzSVNAccessFile /usr/project-config/etc/svn-access-control Require valid-user </Location>
SVN的访问控制:
# cat etc/svn-access-control [/] antiduh = rw [openprojects:/] * = r antiduh = rw
我有5个回购,openprojects是唯一一个我想匿名只读访问。 我似乎无法得到这个工作。 即使是我可以find的最新的文档 mod_authz_svn继续使用Satisfy all 。
在mod_authz_svn的源代码中,它看起来好像对ap_satisfies(r) == SATISFY_ANY 。 我并不完全熟悉Apache API模型,但是这似乎表明mod_authz_svn目前不支持Apache 2.4的新身份validation模型。
由于没有其他人提出答案或有相反的证据,我将把这个标记为答案。
为了在Apache 2.4下工作,加载mod_access_compat模块:
LoadModule access_compat_module libexec/apache24/mod_access_compat.so
然后添加Satisfy any条款,就像文档目前所示。
<Location /svn> DAV svn SVNParentPath /usr/home/antiduh/svn AuthType Basic AuthName "SVN repository" AuthUserFile /usr/home/antiduh/svn/etc/svn-auth-file AuthzSVNAccessFile /usr/home/antiduh/svn/etc/svn-access-control Satisfy any Require valid-user </Location>
在大多数情况下, Satisfy All的2.4等价物是将Require指令括在<RequireAll>块中。 Satisfy Any的等价物将是<RequireAny>块。
有关更改和等同内容的更多信息,Rich Bowen的此演示文稿(PDF)可能会有所帮助。