我正在尝试在我的服务器中提供对 WebSVN 的访问权限,但我做不到。目标是仅向登录并拥有该存储库管理员权限的用户显示某些存储库。例如,我有两个存储库,其中一个完全向所有用户开放(repo1),另一个仅限于部分用户(repo2)。所以我的 dav_svn.access 文件是:
[groups]
admins = user1, user2, user3
[repo1:/]
* = r
[repo2:/]
@admins = rw
然后,我的网站有一个 /websvn 资源:
Alias /websvn /var/www/websvn
<Location /websvn>
SetHandler None
</Location>
<Directory /websvn>
Order allow,deny
Allow from all
DAV svn
SVNParentPath /var/lib/svn/repos
SVNAutoversioning on
AuthzSVNAccessFile /etc/apache2/dav_svn.access
Satisfy Any
AuthType Basic
AuthBasicProvider ldap-jderobot
Require valid-user ldap-user
AuthName "Subversion repo"
ModMimeUsePathInfo on
</Directory>
在 /var/www/websvn 的 include 目录中的 config.php 文件中,我有:
$config->parentPath('/var/lib/svn/repos/');
$config->useAuthenticationFile('/etc/apache2/dav_svn.access');
但是如果我把自己放入管理员组,无论我是否登录,我都看不到 repo1。登录服务是 LDAP,但这不是问题,因为我在日志文件中看不到任何内容。我正在使用 Debian 6 机器。
你知道我做错了什么吗?还有什么其他方法可以解决我的问题吗?
谢谢!
答案1
我相信,但不确定,WebSVN 无法获取凭据并将其传递给 SVN。相反,WebSVN 被设计为使用其自己的一组凭据与 SVN 服务器通信。
您可能想要做的是设置 WebSVN 的多个副本。一个 WebSVN URL 受密码或 Apache 身份验证保护,允许人们浏览限制性更强的存储库,这个 WebSVN 副本需要配置一个只读密码,以便浏览存储库。
第二个 WebSVN URL 可以更加开放,使用 WebSVN 凭据可以对更多公共存储库进行只读访问。