10

我正在为一个项目使用托管在 Dreamhost 上的 Subversion 存储库。

我想在受限的基础上允许访问某些用户。至少我想允许一些用户只读访问,但理想情况下我想阻止一些用户看到存储库的某些部分。尽管我认为它存在,但我找不到 Subversion 的网络文档中提到的用户权限?

我习惯使用 Perforce,所以我想要的是p4 protect对 Perforce 有什么作用。

谢谢。

4

6 回答 6

12

查看 conf/ 目录中的 authz 文件。您可以为特定用户和特定目录设置权限。在 svnserve.conf 中,您可以指定匿名用户是否具有读取权限。

这是我的存储库中的一个示例:

[groups]
project1_team = dave, john, andy

[/]
* =
dave = rw

[/project1]
@project1_team = rw

[/project2]
andy = r

这里发生的是我定义了一组对 project1 具有完全访问权限的用户;dave(恰好是我)对整个存储库具有完全访问权限,而 andy 对 project2 具有只读访问权限。

于 2009-02-18T20:51:08.067 回答
3

在 Web 主机上,通常有一个配置文件(可以命名为任何名称)来运行授权。每个存储库都有一个类似
[my-repository:/]
myuser = rw的列表

这将授予“myuser”对整个存储库的读写权限。你也可以这样做:

[my-repository/just-this-folder/:]
somejerk: r

哪个应该做你想做的。

于 2009-02-18T20:55:38.617 回答
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。

于 2012-06-19T22:26:16.773 回答
0

我不熟悉 Dreamhost 使用的具体配置,但强制执行权限的典型方式是使用 Apache 身份验证机制。这是 Subversion 文档中的相关页面

于 2009-02-18T20:49:56.477 回答
0

Subversion Book这里有你的答案。

说真的,人们:在纠缠其他人之前阅读最基本的文档什么时候过时了?

于 2009-02-18T20:55:13.097 回答
0

请参阅上面接受的答案。但是,对于 Dreamhost 的细节,在 ~/svn 目录中,每个存储库都有两个文件,repo_name.access并且repo_name.passwd. 其中 repo_name 是您为存储库指定的名称。您可以按照接受的答案中的描述编辑 repo_name.access 文件。

编辑后不要忘记,chmod 644 repo_name.access以便 apache 可以访问它。

于 2009-02-18T22:41:05.820 回答