如果我是从头开始这样做的话,我会创建这两个独立的存储库.不幸的是,我必须要做的就是那里.
我们的存储库如下所示:
/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中的所有用户都可以访问我们的存储库.但是,并非所有开发人员都能够查看秘密目录.相反,我只希望cabal LDAP组中的用户能够访问它.
而且,我在上面的repos_path_access访问目录下有我的文件gorp,如下所示:
[/]
* = r
[/trunk]
* = rw
[/branches]
* = rw
[/tags]
* = rw
[/secret]
dvadar = rw
cpalpatine = rw
glucas = rw
* =
到现在为止还挺好.我的cabal组用户,dvadar,cpalpatine和glucas,可以访问我的存储库中的/ secret目录,甚至没有人看到它.但是,随着人们来去,我必须手动更改此基于路径的访问文件.我想要做的是让我的基于路径的访问权限为每个人提供访问权限并为其他人隐藏它:
[/]
* = 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组访问秘密的最佳方法是什么?
最佳答案 明显的方式:
在AuthzSVNAccessFile中定义cabal组成员.
>您可以手动完成(每次成员更改时编辑成员)
>您可以在LDAP中更改CN = cabal时找到并使用LDAP-to-Authz同步脚本(此处提到,在某处提到)来更新@cabal
棘手的方式
>您可以添加额外的< Location / gorp / secret>更改需要ldap-group指令并完全在LDAP中维护组