在svn_access_file中使用LDAP组设置Subversion存储库

时间:2013-09-03 17:03:03

标签: svn httpd.conf

如果我是从头开始这样做的话,我会创建这两个独立的存储库。不幸的是,我必须处理那里的事情。

我们的存储库如下所示:

/trunk
/tags
/branches
/secret/trunk
/secret/tags
/secret/branches

我的SVN配置设置如下:

<Location /gorp>
    DAV svn
    SVNPath /mnt/svn/repositories/gorp
    AuthType basic
    AuthName "Vegicorp Repostitory"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPUrl "ldap://ldap.vegicorp.net:389/DC=vegicorp,DC=NET?sAMAccountName" NONE
    AuthLDAPBindDN "CN=ldap-read,,OU=Users,OU=vegicorp,DC=vegicorp,DC=net"
    AuthLDAPBindPassword swordfish
    Require ldap-group CN=Development,OU=Groups,OU=vegicorp,DC=vegicorp,DC=net
    AuthzSVNAccessFile /opt/CollabNet_Subversion/repos_path_access/gorp
</Location>

这很有效。 LDAP组Development中的所有用户都可以访问我们的存储库。但是,并非所有开发人员都能够看到secret目录。相反,我只希望cabal LDAP组中的用户能够访问它。

而且,我在gorp访问目录下的文件repos_path_access如下所示:

[/]
* = r

[/trunk]
* = rw

[/branches]
* = rw

[/tags]
* = rw

[/secret]
dvadar = rw
cpalpatine = rw
glucas = rw
* = 

到目前为止,这么好。我的cabal群组用户dvadarcpalpatineglucas可以访问我的存储库中的/secret目录,其他人甚至都看不到它。但是,随着人们来去,我必须手动更改此基于路径的访问文件。我想要做的是让我的基于路径的访问权限为cabal访问所有人,并为其他人隐藏它:

[/]
* = r

[/trunk]
* = rw

[/branches]
* = rw

[/tags]
* = rw

[/secret]
@cabal = rw
* = 

这不起作用。相反,我在日志中看到了这一点:

Tue Sep 03 11:30:50 2013] [error] [client 10.55.9.217] \
Failed to load the AuthzSVNAccessFile: An authz rule refers to group '@cabal'

在没有其他开发人员看到此目录的情况下,让cabal组访问secret的最佳方式是什么?

3 个答案:

答案 0 :(得分:3)

明显的方式:

在AuthzSVNAccessFile中定义cabal组成员。

  • 您可以手动完成(每次成员更改时都可以编辑成员)
  • 您可以在LDAP中更改@cabal
  • 时找到并使用LDAP-to-Authz同步脚本(此处提及,在某处提及)更新CN=cabal

棘手的方式

  • 您可以使用已更改的<Location /gorp/secret>指令添加其他Require ldap-group,并将组完全维护在LDAP中

答案 1 :(得分:0)

我没有找到任何当前用于同步SVN authz和LDAP工作的项目,所以我创建了一个新项目。

可以在这里找到: https://github.com/rbw0/authzync

是的,我知道这是一个老帖子。但是,搜索解决方案的用户很可能会在这里结束。

答案 2 :(得分:-1)

我的问题与你的问题非常相似,应该完全回答:

@ZTE_OHSAS_administrators = rw
~@ZTE_OHSAS_administrators =

那个人应该工作

¡干杯!