首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为不同的写入权限配置SVN访问?

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

Stack Overflow用户
提问于 2009-12-22 18:38:46
回答 3查看 17.7K关注 0票数 4

我试图在Windows 2008下为不同的写入权限在Apache2上配置SVN访问。

我有下一个Apache2 conf:

代码语言:javascript
复制
<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包含一个写访问规则,但是它不工作!事件它只包含一个全局权限:

代码语言:javascript
复制
[/]
* = rw

SVNPathSVNParentPath在SVN的Apache2配置中有什么不同?也许这是有道理的?

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

代码语言:javascript
复制
[groups]
full = abatishchev

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

我要去接403 Forbiden了。

我做错了什么?蒂娅!

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

代码语言:javascript
复制
The URI does not contain the name of a repository.  [403, #190001]

这可能意味着什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-23 10:04:11

更改Apache配置

代码语言:javascript
复制
<Location /svn>

代码语言:javascript
复制
<Location /svn/>

修正目录列表中的403错误问题

票数 2
EN

Stack Overflow用户

发布于 2009-12-22 19:43:05

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

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

例如:

代码语言:javascript
复制
<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>

您将在带有Subversion的版本控制中找到所有必要的信息(这是指向最新版本的链接,尽管Apache设置最近没有改变)。

然后,您应该能够为组和用户以及您的存储库指定全局或单独的权限。这方面的例子可以找到这里,其名称是您指定的:

代码语言:javascript
复制
[groups]
full = abatishchev, anotherguy
main = abatishchev

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

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

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

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

票数 5
EN

Stack Overflow用户

发布于 2009-12-23 17:42:42

这并不是对你的问题的直接回答,从地面上学东西总是很棒的,就像你现在正在做的一样,但是当你在一台Windows机器上时,我想我会提到VisualSVN服务器。这是一个点和点击,非常好地配置包装的SVN二进制文件,提供了自己的网络访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1948318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档