Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何防止subversion用户访问存储库的一部分?_Svn_Permissions_Version Control_Perforce - Fatal编程技术网

Svn 如何防止subversion用户访问存储库的一部分?

Svn 如何防止subversion用户访问存储库的一部分?,svn,permissions,version-control,perforce,Svn,Permissions,Version Control,Perforce,我正在使用托管在Dreamhost上的Subversion存储库进行项目 我想允许一些用户在受限的基础上访问。至少我希望允许一些用户以只读方式访问,但理想情况下,我希望阻止一些用户看到存储库的某些部分。我找不到Subversion的web文档中提到的用户权限,尽管我假设它存在 我习惯于使用Perforce,所以我想要的是p4 protect为Perforce做的事情 谢谢。我不熟悉Dreamhost使用的特定配置,但强制使用权限的典型方式是使用Apache身份验证机制。下面是Subversion

我正在使用托管在Dreamhost上的Subversion存储库进行项目

我想允许一些用户在受限的基础上访问。至少我希望允许一些用户以只读方式访问,但理想情况下,我希望阻止一些用户看到存储库的某些部分。我找不到Subversion的web文档中提到的用户权限,尽管我假设它存在

我习惯于使用Perforce,所以我想要的是
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