【问题标题】:Multiple svn repositories privileges多个 svn 存储库权限
【发布时间】:2011-07-09 01:24:27
【问题描述】:

我在我的服务器上配置了两个存储库站点。第一个在/home/svn/repoA,第二个在/home/svn/repoB

我已经用这些信息在 Apache 上构建了一个虚拟主机:

<Location />
    DAV svn
    SVNParentPath /home/svn
    AuthType Basic
    AuthName "Servidor SVN"
    AuthUserFile /etc/apache2/dav_svn.passwd
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
</Location>

现在这是 URL,我可以使用 http://svn.mydomain.com/repoAhttp://svn.mydomain.com/repoB 访问服务器,但我想将 repoB 设为私有,只允许使用之前在 dav_svn.passwd 上使用 htpasswd 创建的用户和密码进行访问.

如果我取出 &lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt; 行,它是更接近的标签,它会询问我用户和密码,但在两个存储库中。

有没有办法让一个只对匿名用户可读,对登录用户读/写,而第二个存储库对登录用户只有读/写权限?

【问题讨论】:

    标签: svn apache authentication version-control virtualhost


    【解决方案1】:

    您使用了哪些资源来实现这一目标?我知道有一本免费的 Subversion 书(带有 Subversion 的版本控制)里面有答案:

    Apache authn/authz:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz

    基于路径的身份验证:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html

    【讨论】:

    • 嗨 Jeremy,我选择了基于路径的文件,我已经像上面的消息一样配置了文件,但我收到了以下消息:无效命令 'AuthSVNAccessFile',可能拼写错误或由模块定义不包括在服务器配置中。我查看了加载模块的文件,它指向正确的文件夹,文件就在其中。您是否收到对该错误的响应?谢谢
    • 您是否将 mod_authz_svn 模块加载到 Apache 中?
    • 我已经在 httpd.conf LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so 上写了这个但是得到了同样的错误
    • 应该是 AuthzSVNAccessFile,而不是 AuthSVNAccessFile。抱歉,我之前没有看到这个。
    【解决方案2】:

    我只有 2 个位置块。 RepoA 应该在 Apache 位置块中打开“满足任何要求”以进行匿名只读访问,以及允许匿名访问的相应 Auth 文件。 RepoB 的 Auth 文件应该拒绝匿名访问。

    Apache repoA 配置

    <Location /repoA>
      DAV svn
      SVNPath /home/svn/repoA
      AuthType Basic
    
      Satisfy Any
      AuthName "Servidor SVN"
      AuthUserFile /etc/apache2/dav_svn.passwd
      AuthzSVNAccessFile /path/to/authFileA
    </Location>
    

    authFileA

    [/]
    * = r
    
    [/repoA]
    * = r
    mark = rw
    bill = rw
    

    Apache repoB 配置

    <Location /repoB>
      DAV svn
      SVNPath /home/svn/repoB
      AuthType Basic
      AuthName "Servidor SVN"
      AuthUserFile /etc/apache2/dav_svn.passwd
      AuthzSVNAccessFile /path/to/authFileB
    </Location>
    

    authFileB

    [/]
    * =
    
    [/repoB]
    * = 
    mark = rw
    bill = rw
    

    【讨论】:

    • 好的,我已经完成了,但现在它说:无效命令 'AuthSVNAccessFile',可能拼写错误或由未包含在服务器配置中的模块定义
    • 我不知道您是否需要有关服务器信息的信息,它是 Ubuntu 服务器 10.04 LTS,标准安装 apache php5、mysql 和 svn
    • 无效命令 'AuthSVNAccessFile' 可能可以通过安装模块来解决:“a2enmod authz_svn”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多