我正在尝试使用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
以外的其他许可我可能需要?或者在我当前的配置中可能有问题。
谢谢,迈克。
答案 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之一。