Svn 如何防止subversion用户访问存储库的一部分?
我正在使用托管在Dreamhost上的Subversion存储库进行项目 我想允许一些用户在受限的基础上访问。至少我希望允许一些用户以只读方式访问,但理想情况下,我希望阻止一些用户看到存储库的某些部分。我找不到Subversion的web文档中提到的用户权限,尽管我假设它存在 我习惯于使用Perforce,所以我想要的是Svn 如何防止subversion用户访问存储库的一部分?,svn,permissions,version-control,perforce,Svn,Permissions,Version Control,Perforce,我正在使用托管在Dreamhost上的Subversion存储库进行项目 我想允许一些用户在受限的基础上访问。至少我希望允许一些用户以只读方式访问,但理想情况下,我希望阻止一些用户看到存储库的某些部分。我找不到Subversion的web文档中提到的用户权限,尽管我假设它存在 我习惯于使用Perforce,所以我想要的是p4 protect为Perforce做的事情 谢谢。我不熟悉Dreamhost使用的特定配置,但强制使用权限的典型方式是使用Apache身份验证机制。下面是Subversion
p4 protect
为Perforce做的事情
谢谢。我不熟悉Dreamhost使用的特定配置,但强制使用权限的典型方式是使用Apache身份验证机制。下面是Subversion文档中的示例。查看conf/目录中的authz文件。您可以为特定用户和特定目录设置权限。在svnserve.conf中,您可以指定匿名用户是否具有读取权限 以下是我的存储库中的一个示例:
[groups]
project1_team = dave, john, andy
[/]
* =
dave = rw
[/project1]
@project1_team = rw
[/project2]
andy = r
这里发生的事情是,我定义了一组完全可以访问project1的用户;dave(碰巧是我)拥有对整个存储库的完全访问权限,而andy拥有对project2的只读访问权限。有你的答案
严肃地说,人们:在纠缠其他人之前阅读最基本的文档是什么时候过时的?在web主机上,通常有一个配置文件(可以命名为任何名称)来运行。每个存储库都有一个类似于
[我的存储库:/]
myuser=rw 这将授予“myuser”对整个存储库的读写权限。你也可以这样做: [我的存储库/仅此文件夹/:]
某个混蛋:r
它可以做你想做的事。请参阅上面接受的答案。但是,对于Dreamhost,在~/svn目录中,每个存储库都有两个文件
repo\u name.access
和repo\u name.passwd
。其中repo_name是您提供给存储库的名称。您可以按照接受答案中的说明编辑repo_name.access文件
不要忘了
chmod 644 repo_name。编辑后访问它,以便apache可以访问它。如果您同时使用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>
SVNPath$您的svn存储库路径
AuthType Basic
AuthName“Subversion存储库”
AuthUserFile/etc/apache2/dav_svn.passwd
需要有效用户
SSLRequireSSL
为您拥有的每个存储库复制此块,在本例中,您还需要一个这样的块。现在,去掉(删除)上述块并添加以下块,这些块是上述块的修改副本:
<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>
SVNPath$您的svn repository1路径
AuthType Basic
AuthName“Subversion存储库”
AuthUserFile/etc/apache2/dav_svn_REPOSITORY1.passwd
需要有效用户
SSLRequireSSL
SVNPath$您的svn repository2路径
AuthType Basic
AuthName“Subversion存储库”
AuthUserFile/etc/apache2/dav_svn_REPOSITORY2.passwd
需要有效用户
SSLRequireSSL
3-保存文件并重新启动Apache 请注意,如果使用apache的mod_dav_svn,则必须在dav_svn.conf中设置authzsvnacessfile