如何在SVN中设置访问控制?

我已经使用SVN和上传的项目build立了一个仓库。 有多个用户在这些项目上工作。 但是,并不是每个人都在为所有项目工作,需要访问。 我想为用户设置每个项目的权限。

我如何做到这一点?

在你的svn \ repos \ YourRepo \ conf文件夹中,你会发现两个文件, authzpasswd 。 这是你需要调整的两个。

passwd文件中,您需要添加一些用户名和密码。 我假设你已经做了这个,因为你有人使用它:

[users] User1=password1 User2=password2 

然后你想用authz文件相应的分配权限:

创build你想要的概念组,并添加人员:

 [groups] allaccess = user1 someaccess = user2 

然后从权限和项目级别中select他们拥有的访问权限。

所以让我们给所有访问权限的人们从根节点访问:

 [/] @allaccess = rw 

但只给我们“一些访问”的人只能访问一些较低级别的项目:

 [/someproject] @someaccess = r 

您还可以在authzpasswd文件中find一些简单的文档。

@Stephen贝利

要完成答案,还可以通过存储库中的纯文本文件将用户权限委派给项目经理。

要做到这一点,你使用默认的authz文件来设置你的SVN数据库,其中包含以下内容。

 ########################################################################### # The content of this file always precedes the content of the # $REPOS/admin/acl_descriptions.txt file. # It describes the immutable permissions on main folders. ########################################################################### [groups] svnadmins = xxx,yyy,.... [/] @svnadmins = rw * = r [/admin] @svnadmins = rw @projadmins = r * = [/admin/acl_descriptions.txt] @projadmins = rw 

这个默认的authz文件授权SVNpipe理员修改SVN仓库中一个名为“/admin/acl_descriptions.txt”的纯文本文件,SVNpipe理员或项目经理将在其中修改和注册用户。

然后你设置一个预先提交的钩子,它将检测修订是否由该文件组成(并且只包含该文件)。

如果是的话,这个钩子脚本会validation你的纯文本文件的内容,并检查每一行是否符合SVN的正确语法。

然后一个提交后的钩子将更新\conf\authz文件的连接

  • 上面提供的TEMPLATE authz文件
  • 纯文本文件/admin/acl_descriptions.txt

第一次迭代由SVNpipe理员完成,他补充道:

 [groups] projadmins = zzzz 

他承诺他的修改,并更新authz文件。

然后,项目经理“zzzz”可以添加,删除或声明任何一组用户和他想要的任何用户。 他提交文件并更新authz文件。

这样,SVNpipe理员就无需关注所有SVN仓库的所有用户

抓住了我的一个陷阱:

 [repos:/path/to/dir/] # this won't work 

 [repos:/path/to/dir] # this is right 

您不需要在目录中包含尾部斜线,否则您将看到“选项”请求的403。

您可以使用svn + ssh :,然后它基于对给定位置的存储库的访问控制。

这是我在我的Uni上托pipe一个项目组资料库的方式,我无法设置其他任何东西。 只要拥有一个该组所拥有的目录,并在其中运行svn-admin(或其它),就意味着我不需要进行任何configuration。

虽然我会build议Apache方法更好,SVN服务工作正常,而且非常简单。

假设你的仓库被称为“my_repo”,它存储在c:\ svn_repos:

  1. 在“C:\ svn_repos \ my_repo \ conf”中创build一个名为“passwd”的文件。 这个文件应该是这样的:

     [Users] username = password john = johns_password steve = steves_password 
  2. 在c:\ svn_repos \ my_repo \ conf \ svnserve.conf中设置

     [general] password-db = passwd auth-access=read auth-access=write 

这将强制用户login读取或写入这个存储库。

对每个存储库执行以下步骤,仅在每个存储库的passwd文件中包含适当的用户。

最好的方法是设置Apache并通过它设置访问权限。 检查svn书的帮助。 如果你不想使用Apache,你也可以使用svnserve做简单的访问控制。