我正在使用Dreamhost上托管的Subversion存储库来创建项目。
我想允许限制访问某些用户。至少我想允许对某些用户进行只读访问,但理想情况下我想阻止一些用户看到存储库的某些部分。我找不到Subversion的web文档中提到的用户权限,虽然我认为它存在?
我习惯使用Perforce,所以我想要的是p4 protect
对Perforce的作用。
感谢。
答案 0 :(得分:12)
查看conf /目录中的authz文件。您可以为特定用户和特定目录设置权限。在svnserve.conf中,您可以指定匿名用户是否具有读取权限。
以下是我的存储库中的一个示例:
[groups]
project1_team = dave, john, andy
[/]
* =
dave = rw
[/project1]
@project1_team = rw
[/project2]
andy = r
这里发生的事情是我定义了一组具有project1完全访问权限的用户; dave(碰巧是我)拥有对整个存储库的完全访问权限,而andy具有对project2的只读访问权。
答案 1 :(得分:3)
在Web主机上,通常会有一个配置文件(可以命名为任何内容)来运行authorization。每个存储库都有一个类似于的列表
[我的仓库:/]
myuser = rw
哪会给'myuser'读一读&对整个存储库的写权限。你也可以这样做:
[我的存储库/刚刚此文件夹/:]
somejerk:r
哪个应该做你想做的事。
答案 2 :(得分:2)
如果您同时使用SVN和Apache,请按照以下步骤操作:
请注意,您可以管理的最佳权限级别将基于每个存储库。假设您有repository1和repository2
1-在单独的文件中为每个存储库创建适当的用户:
sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY1.passwd $user_name_for_repository1
sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY2.passwd $user_name_for_repository2
如果要为每个文件添加更多用户,请从命令中删除-c。因为它只是第一次创建文件。
2-编辑以下文件:
nano /etc/apache2/mods-available/dav_svn.conf
你将有一个这样的部分:
<Location /svn>
SVNPath $your svn repository path
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>
为您拥有的每个存储库复制此块,在我们的示例中,您还需要一个这样的块。现在,删除(删除)上面的块并添加以下块,它们是上述块的修改副本:
<Location /svn/repository1>
SVNPath $your svn repository1 path
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn_REPOSITORY1.passwd
Require valid-user
SSLRequireSSL
</Location>
<Location /svn/repository2>
SVNPath $your svn repository2 path
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn_REPOSITORY2.passwd
Require valid-user
SSLRequireSSL
</Location>
3-保存文件并重新启动Apache。
答案 3 :(得分:0)
我不熟悉Dreamhost使用的特定配置,但执行权限的典型方法是使用Apache身份验证机制。这是Subversion文档中的relevant page。
答案 4 :(得分:0)
Subversion Book的答案为right here。
说真的,人们:在纠缠其他人之前,什么时候才能读出最基本的文档呢?
答案 5 :(得分:0)
请参阅上面接受的答案。但是,对于Dreamhost细节,在〜/ svn目录中,每个存储库repo_name.access
和repo_name.passwd
都有两个文件。其中repo_name是您为存储库提供的名称。您可以按照接受的答案中的说明编辑repo_name.access文件。
编辑后不要忘记chmod 644 repo_name.access
,以便apache可以访问它。