基于路径的授权中的svn lock和AuthzSVN问题

时间:2013-11-22 04:24:15

标签: apache svn authz

我正在尝试使用LDAP和AuthzSVNAccess在SVN中设置基于补丁的授权,我的初始测试只是为了给每个人提供读/写访问权限,以便检查配置是否正常工作。

我的Apache conf为:

<Location /svn/>
    AuthName  "Login with LDAP"
    AuthType Basic
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative on
    AuthLDAPURL ldap://XXX.com:389/ou=XXX,dc=XXX,dc=XXX,dc=XXX?uid
    SVNParentPath /var/www/svn
    AuthzSVNAccessFile /var/www/svn/authorization.access
    Satisfy Any
    require valid-user
</Location>

我有各种SVN存储库直接位于/ var / www / svn。

并且authorization.access看起来像这样:

[/]
* = rw

这肯定会生效,如果我要将其更改为* = r,那么我就不能再提交了,所以我很高兴Apache正在使用该文件。

然而,虽然我可以结帐,提交,重新浏览,更新我不能再svn lock我收到错误的任何文件:

Error: Server sent unexpected return value (401 Authorization Required) in response to LOCK request for '/svn/MyRepo/MyFile.txt'.

是否有人知道是否需要为svn lock和AuthzSVN进行额外配置?是否还有rw以外的其他许可我可能需要?或者在我当前的配置中可能有问题。

谢谢,迈克。

1 个答案:

答案 0 :(得分:1)

我看到的几个问题。

1)你错过了DAV指令。但是根据你所说的,我猜这只是对你在这里发布的内容的疏忽。

2)Satisfy any可能是您问题的根源。 Satisfy any制定授权规则。因此,mod_authz_svn允许访问,或者提示您输入密码。您只想在允许匿名和经过身份验证的访问时使用Satisfy any。如果您希望以这种方式行事以使一切正常工作,那么您将不得不删除匿名写入权限。我建议使用以下简单的authz文件进行测试:

[/]
$anonymous = r
$authenticated = rw

你在这里获得401的原因是因为Subversion不支持匿名锁。所以它试图让你进行身份验证。但由于Satisfy any指令,密码验证永远不会发挥作用。

3)你得到401的事实意味着你使用的是不是最新版本的Subversion。特别是,由于401实际涉及安全漏洞(CVE-2013-1847),因此您应该获得501 Not Implemented。

所以我建议你upgrade to Subversion 1.7.13 or 1.8.4。如果您不想构建自己的软件包,我建议使用many sources of binary packages之一。