我该如何做到这一点?
在您的svn \ repos \ YourRepo \ conf文件夹中,您将找到两个文件,authz和passwd。这就是你需要调整的两个文件。
在passwd文件中,您需要添加一些用户名和密码。假设您已经完成了此操作,因为您有人在使用它:
[users]
User1=password1
User2=password2
然后您需要根据 authz 文件相应地分配权限:
创建所需的概念组,并将人员添加到其中:
[groups]
allaccess = user1
someaccess = user2
然后从权限和项目级别选择他们拥有的访问权限。
因此,让我们将我们的“完全访问”人员从根目录赋予所有访问权限:
[/]
@allaccess = rw
但是只给我们的“一些访问权限”的人对一些较低级别项目的只读访问权限:
[/someproject]
@someaccess = r
您还可以在 authz 和 passwd 文件中找到一些简单的文档。
@Stephen Bailey
为了完成您的回答,您还可以通过存储库中的纯文本文件将用户权限委派给项目经理。
要做到这一点,您需要使用默认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
文件授权SVN管理员可以修改您的SVN仓库中一个可见的明文文件'/admin/acl_descriptions.txt',在这个文件中,SVN管理员或项目经理将修改并注册用户。
然后,您可以设置一个pre-commit hook,它将检测修订版是否由那个文件组成(只有那个文件)。
如果是,该钩子脚本将验证您明文文件的内容,并检查每行是否符合SVN语法。
然后,一个post-commit hook会使用以下内容的连接更新\conf\authz
文件:
authz
文件/admin/acl_descriptions.txt
第一次迭代由SVN管理员完成,他们添加了:
[groups]
projadmins = zzzz
他提交了修改,这将更新 authz
文件。
然后项目经理 'zzzz' 可以添加、删除或声明任何他想要的用户组和用户。他提交文件后,authz
文件将被更新。
这样,SVN 管理员就不必为所有 SVN 存储库单独管理所有用户。
一个常见的问题曾经让我困扰:
[repos:/path/to/dir/] # this won't work
[repos:/path/to/dir] # this is right
Create a file called "passwd" in "C:\svn_repos\my_repo\conf". This file should look like:
[Users]
username = password
john = johns_password
steve = steves_password
In C:\svn_repos\my_repo\conf\svnserve.conf set:
[general]
password-db = passwd
auth-access=read
auth-access=write
这将强制用户登录才能读取或写入此存储库。
对于每个存储库,请按照以下步骤操作,仅在每个存储库的passwd
文件中包含适当的用户。
Apache子版本控制支持基于路径的授权,帮助您配置用户和组帐户在存储库(文件或目录)中路径上的细粒度权限。 基于路径的授权支持三个访问级别-无访问、只读和读/写。
基于路径的授权权限存储在每个存储库或每个服务器授权文件中,具有特殊语法。 以下是SVNBook的一个示例:
[calc:/branches/calc/bug-142]
harry = rw
sally = r
当您需要一个包含多个路径和帐户的复杂权限结构时,您可以从VisualSVN Server提供的基于GUI的权限管理工具中受益:
@groupname
进行调用。在定义规则时,这个问题曾经困扰过我,但在你的示例中表现得很完美,我只是指出一下。 - Wolfeh