【问题标题】:SVN access control is not workingSVN 访问控制不起作用
【发布时间】:2014-05-12 14:14:53
【问题描述】:

我在 svn 存储库中有一个项目,其中包含更多的分支和标签,并且有几个用户在同一个项目中工作,但在不同的分支中。我授予特定用户写入权限,使其仅访问特定分支,但不授予其他分支,同样允许另一个用户写入不同的分支。

第 1 步:我已使用

创建用户
htpasswd -m /etc/apache2/dav_svn.passwd username 

第 2 步:svnserve.conf

[general]
password-db = passwd
realm = reponame
anon-access = none
auth-access = write
authz-db = authz

第三步:密码

username : passwd 

在 passwd 文件中添加了用于为此项目创建 htpasswd 的用户和密码。

第 4 步:授权

#[the_name_of_repository:/path_in_that_repository]
[test:/]
user1 = r
user2 = r

[test:/branches/data1]
user1 : rw

[test:/branches/data2]
user2 : rw

所以,现在user2 只能访问(提交、更新、签出)data2 分支并且可以读取所有其他文件夹,而user2 可以访问(提交、更新、签出)data1 分支。访问控制未按authz 文件的预期正常工作。

我做错了什么?

【问题讨论】:

  • 没有理由结束这个问题。它既是关于 SO 的主题,也相当清楚。
  • 如果你的意思是“user1可以访问data1”,那么你的规则都是正确的。你没有解释的是你如何为你的存储库提供服务(Apache、svnserve、svnserve+ssh)以及你如何指向你的配置。
  • 另外,你的文件真的是svnserver.conf吗?默认为svnserve.conf(注意缺少r)。
  • user1 也可以访问 data2,但我只给了 user1 对 data2 分支的读取权限。在 centos 中安装了 subversion。
  • 抱歉 svnserver.conf 只是输入错误。现在改变了。

标签: svn


【解决方案1】:

问题可能源于@alroc 在 cmets 中所说的内容。您正在使用 svnserve.conf 配置权限,但您为 Apache 创建了用户。

Apache 的 mod_dav_svn 不读取 svnserve.conf。相反,您需要 install mod_authz_svnset up an AuthzSVNAccessFile 来获取它。该文件的语法似乎与 svnserve.conf 相同。

【讨论】:

  • 其实,重读这篇文章,你可能已经设置了 mod_authz_svn ......无论如何我都会把这个答案留在这里,以防它对其他人有用。
  • 在centos中配置为AuthzSVNAccessFile,但访问时出现禁止错误。
【解决方案2】:
  1. 您必须知道,您拥有哪种类型的存储库(基于 http,由 Apache 提供服务,或基于 svn,由 svnserve 提供服务)并且仅使用两种独立且不相关的身份验证类型中的一种:htpasswd 用于 apache , passwd 用于 svnserve
  2. Auth-database 必须至少有 user1+user2 记录
  3. authz 文件必须在所有记录中使用正确的语法:你在两个分支中都有错误,正确的格式是

object = rights

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 2017-03-11
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    相关资源
    最近更新 更多