如何为不同的写权限配置SVN Web访问?

时间:2009-12-22 18:38:46

标签: apache svn apache2

我正在尝试在Windows Server 2008下的Apache2上配置SVN Web访问以获得不同的写入权限。

我接下来有Apache2 conf:

<Location /svn>
 SVNParentPath "E:\SVN"

 DAV svn
 SVNListParentPath on
 AuthType Basic
 AuthName "Subversion repositories"
 Require valid-user

 AuthUserFile svn-auth.txt
 AuthzSVNAccessFile svn-acl.txt
</Location>

<Location /svn/foobar>
 SVNParentPath "E:\SVN\foobar"

 DAV svn
 SVNListParentPath on
 AuthType Basic
 AuthName "Subversion repositories"
 Require valid-user

 AuthUserFile svn-auth.txt
 AuthzSVNAccessFile svn-acl.txt
</Location>

E:\SVN是所有存储库的根目录 - 我想列出所有存储库。它包含E:\SVN\test - 是一个项目存储库。

E:\SVN\foobar - 是一个包含的子根目录 E:\SVN\foobar\fooE:\SVN\foobar\bar - 项目存储库。

文件svn-auth.txt包含htpasswd.exe

生成的大量用户密码

文件svn-acl.txt包含写访问规则,但它不起作用!事件它只包含一个全局权限:

[/]
* = rw

SVN的Apache2配置中SVNPathSVNParentPath之间有什么不同?也许它会有意义吗?

当然,如果我添加一个组或用户,它也不起作用:

[groups]
full = abatishchev

[/]
* = r
@full = rw
abatishchev = rw

我正在403 Forbiden

我做错了什么? TIA!

更新:我从error.log找到了一条记录:

The URI does not contain the name of a repository.  [403, #190001]

这意味着什么?

3 个答案:

答案 0 :(得分:5)

SVNPath用于一个存储库,SVNParentPath用于包含多个存储库的根目录。因此,您应该删除Apache配置文件中的第二个位置,因为如果您尝试访问http://<host>/svn/foobar,它会与第一个位置冲突。

您应该为访问和身份验证文件设置绝对路径,确保Apache服务具有对父目录和所有存储库的读/写访问权限,以及对这些访问和身份验证文件的读取权限,这在手册中经常被忽略安装。

例如:

<Location /svn>
    RedirectMatch ^(/svn)$ $1/
    SVNParentPath E:\SVN

    DAV svn
    SVNListParentPath on
    AuthType Basic
    AuthName "Subversion repositories"
    Require valid-user

    AuthUserFile C:\SVN\conf\svn-auth.txt
    AuthzSVNAccessFile C:\SVN\conf\svn-acl.txt
</Location>

您将在Version Control with Subversion中找到所有必要的信息(这是最新版本的链接,尽管最近Apache配置设置没有改变)。

然后,您应该能够为您的存储库指定组和用户的全局或个人权限。可以找到here的示例,其名称为:

[groups]
full = abatishchev, anotherguy
main = abatishchev

[/]
* = r
@full = rw
abatishchev = rw

[foobar:/]
* =
@main = rw
full = r

[otherproject:/]
@main = rw
full = r

在此示例中,您已在[/]中设置了一般规则,然后是foorbar(以及以下所有内容)和otherproject的特定规则。您甚至可以为存储库的各个目录指定特定规则。

答案 1 :(得分:2)

更改Apache配置

<Location /svn>

<Location /svn/>

解决了目录列表中403错误的问题

答案 2 :(得分:2)

这不是你问题的直接答案,而且现在从头开始学习东西总是很棒的,但是当你在Windows机器上看到我认为我会提到{{ 3}}。这是一个点击式,非常好的配置SVN二进制文件的包装器,它也提供了自己的Web访问。