0

我正在尝试使用 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 lockAuthzSVN 进行额外配置?rw除了我可能需要的许可之外,还有其他许可吗?或者我当前的配置可能有问题。

谢谢,迈克。

4

1 回答 1

1

我看到的几个问题。

1)您缺少 DAV 指令。但是,根据您所说的,我猜这只是您在此处发布的内容的疏忽。

2)Satisfy any可能是你的问题的根源。 Satisfy any使授权规则为 or'ed。因此,要么 mod_authz_svn 允许访问,要么系统提示您输入密码。Satisfy any只有当您想要允许匿名和经过身份验证的访问时,您才真正想要使用。如果您想以这种方式行事以使一切正常,您将不得不删除匿名写访问权限。我建议使用以下简单的 authz 文件进行测试:

[/]
$anonymous = r
$authenticated = rw

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

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

所以我建议你升级到 Subversion 1.7.13 或 1.8.4。如果您不想构建自己的软件包,我建议您选择多种二进制软件包来源之一

于 2013-11-22T06:20:41.820 回答