我们使用berkeley-db对svn-access进行授权。
我们将其配置如下:
<Location /svn>
AuthType basic
AuthName "svn Authentication"
AuthBasicProvider dbm
AuthDBMUserFile /****/userDatabase.db
AuthDBMType db
AuthDBMGroupFile /****/userDatabase.db
AuthzDBMType db
SSLRequireSSL
</Location>在此之前,一切都很正常,人们可以根据各自的组获得访问权限。不,我想/需要添加一些特定的用户,以获得对一个存储库的(只读)访问权限,而无需更改他们的组。我尝试了以下几种方法
<Location /svn/administration>
DAV svn
SVNPath /data/svn/administration
SVNPathAuthz off
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require group svn-admin-readwrite
</LimitExcept>
<Limit GET PROPFIND OPTIONS REPORT>
Require group svn-admin-read
Require user testUser testUser2
</Limit>
</Location>模块'authn_dbm‘和'authz_user’已启用。我在这里遗漏了什么(明显的)吗?如有任何帮助,我们不胜感激!
发布于 2013-09-17 09:26:49
这里我遗漏了什么(明显的)吗?
阅读(和理解) SVN Book的某些部分,至少是"Per-directory access control" (可能是整章"httpd, the Apache HTTP Server")和"Path-Based Authorization"
我在当前的配置中看到了至少两个弱点
DAV svn+SVNParentPath in <Location /svn> container你必须有N+1 N repositories Location containers和add|remove location for每个已添加|已删除的存储库。Subversion-方式是为repository-dirs的父级提供single location
例如,如果您知道将在目录/var/svn中创建多个Subversion存储库,可以通过http://my.server.com/svn/repos1、http://my.server.com/svn/repos2等URL访问这些存储库,则可以在以下示例中使用httpd.conf配置语法:
<Location /svn>
DAV svn
# Automatically map any "/svn/foo" URL to repository /var/svn/foo
SVNParentPath /var/svn
</Location>使用此语法,Apache将把路径部分以/svn/开头的所有URL的处理委派给Subversion DAV提供程序,然后该提供程序将假定SVNParentPath指令指定的目录中的任何项目实际上都是Subversion存储库。这是一种特别方便的语法,因为与使用SVNPath指令不同,您不必重启Apache即可添加或删除托管存储库。
用于Apache的
authz_svn_module和AuthzSVNAccessFile实现(并在99%的情况下使用),其中定义了用户和组的访问权限(针对树中的任何存储库或存储库树的一部分)...还有组的成员资格,这使得AuthDBMGroupFile过时了(而且Location without LimitExcept & Limit -更紧凑、更易读)https://stackoverflow.com/questions/18826048
复制相似问题