use*_*425 80 svn authorization svn-administraton
我已经使用SVN建立了一个存储库并上传了项目.有多个用户在处理这些项目.但是,并非所有人都在处理所有项目并需要访问权限.我想为每个项目的用户设置权限.
我该如何实现这一目标?
Ste*_*ley 82
在你的svn\repos\YourRepo\conf文件夹中,你会发现两个文件,authz和passwd.这些是你需要调整的两个.
在passwd文件中,您需要添加一些用户名和密码.我假设你已经完成了这个,因为你有人使用它:
[users]
User1=password1
User2=password2
Run Code Online (Sandbox Code Playgroud)
然后,您希望使用authz文件相应地分配权限:
创建所需的概念组,并向其添加人员:
[groups]
allaccess = user1
someaccess = user2
Run Code Online (Sandbox Code Playgroud)
然后从权限和项目级别选择他们具有的访问权限.
因此,让我们的"所有访问"人员从根目录访问:
[/]
@allaccess = rw
Run Code Online (Sandbox Code Playgroud)
但只给我们的"一些访问"人员只读访问一些较低级别的项目:
[/someproject]
@someaccess = r
Run Code Online (Sandbox Code Playgroud)
您还可以在authz和passwd文件中找到一些简单的文档.
Von*_*onC 27
@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
Run Code Online (Sandbox Code Playgroud)
此默认authz
文件授权SVN管理员修改SVN存储库中的普通可见文本文件,称为"/admin/acl_descriptions.txt",SVN管理员或项目经理将在其中修改和注册用户.
然后设置一个预提交钩子,它将检测修订是否由该文件组成(并且只包含该文件).
如果是,则此挂钩脚本将验证纯文本文件的内容,并检查每行是否符合SVN正确的语法.
然后一个post-commit钩子将\conf\authz
使用以下连接来更新文件:
authz
上面提供的TEMPLATE 文件/admin/acl_descriptions.txt
第一次迭代由SVN管理员完成,他补充说:
[groups]
projadmins = zzzz
Run Code Online (Sandbox Code Playgroud)
他提交了修改,并更新了authz
文件.
然后项目经理'zzzz'可以添加,删除或声明任何用户组和他想要的任何用户.他提交文件并authz
更新文件.
这样,SVN管理员不必关注所有SVN存储库的所有用户.
Chr*_*ess 26
一个问题引起了我的注意:
[repos:/path/to/dir/] # this won't work
Run Code Online (Sandbox Code Playgroud)
但
[repos:/path/to/dir] # this is right
Run Code Online (Sandbox Code Playgroud)
您不需要在目录中包含尾部斜杠,或者您将看到403的OPTIONS请求.
您可以使用svn + ssh:,然后它基于对给定位置的存储库的访问控制.
这是我在我的Uni上托管项目组存储库的方式,我无法在其中设置任何其他内容.只需拥有该组拥有的目录,并在其中运行svn-admin(或其他任何内容)意味着我不需要进行任何配置.
尽管我建议使用Apache方法更好,但是SVN Serve可以很好地工作并且非常简单。
假设您的存储库名为“ my_repo”,并且存储在C:\ svn_repos中:
在“ C:\ svn_repos \ my_repo \ conf”中创建一个名为“ passwd”的文件。该文件应如下所示:
[Users]
username = password
john = johns_password
steve = steves_password
Run Code Online (Sandbox Code Playgroud)在C:\ svn_repos \ my_repo \ conf \ svnserve.conf中进行设置:
[general]
password-db = passwd
auth-access=read
auth-access=write
Run Code Online (Sandbox Code Playgroud)这将迫使用户登录以读取或写入此存储库。
对每个存储库执行以下步骤,仅在passwd
每个存储库的文件中包括适当的用户。