代码之家  ›  专栏  ›  技术社区  ›  abatishchev Karl Johan

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

  •  4
  • abatishchev Karl Johan  · 技术社区  · 15 年前

    我正在尝试在WindowsServer2008下的Apache2上为不同的写权限配置SVN Web访问。

    我有下一个Apache2配置:

    <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\foo E:\SVN\foobar\bar -项目存储库。

    文件 svn-auth.txt 包含由生成的多个用户密码 htpasswd.exe

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

    [/]
    * = rw
    

    两者有什么不同 SVNPath SVNParentPath 在SVN的apache2配置中?也许这是有道理的?

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

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

    我得到 403 Forbiden .

    我做错什么了?蒂亚!

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

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

    这意味着什么?

    3 回复  |  直到 6 年前
        1
  •  5
  •   RedGlyph sumit sonawane    15 年前

    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 . 甚至可以为存储库的各个目录指定特定的规则。

        2
  •  2
  •   abatishchev Karl Johan    15 年前

    更改Apache配置

    <Location /svn>
    

    <Location /svn/>
    

    解决了 403 目录列表错误

        3
  •  2
  •   Pekka    15 年前

    这不是你问题的直接答案,当你现在做的时候,从头开始学习东西总是很好的,但是当你在一台Windows机器上时,我想我会提到 VisualSVN server . 这是一个点击式的,非常好地配置了SVN二进制文件的包装器,它也提供了自己的Web访问。