我正在为一个项目使用托管在 Dreamhost 上的 Subversion 存储库。
我想在受限的基础上允许访问某些用户。至少我想允许一些用户只读访问,但理想情况下我想阻止一些用户看到存储库的某些部分。尽管我认为它存在,但我找不到 Subversion 的网络文档中提到的用户权限?
我习惯使用 Perforce,所以我想要的是p4 protect
对 Perforce 有什么作用。
谢谢。
我正在为一个项目使用托管在 Dreamhost 上的 Subversion 存储库。
我想在受限的基础上允许访问某些用户。至少我想允许一些用户只读访问,但理想情况下我想阻止一些用户看到存储库的某些部分。尽管我认为它存在,但我找不到 Subversion 的网络文档中提到的用户权限?
我习惯使用 Perforce,所以我想要的是p4 protect
对 Perforce 有什么作用。
谢谢。
查看 conf/ 目录中的 authz 文件。您可以为特定用户和特定目录设置权限。在 svnserve.conf 中,您可以指定匿名用户是否具有读取权限。
这是我的存储库中的一个示例:
[groups]
project1_team = dave, john, andy
[/]
* =
dave = rw
[/project1]
@project1_team = rw
[/project2]
andy = r
这里发生的是我定义了一组对 project1 具有完全访问权限的用户;dave(恰好是我)对整个存储库具有完全访问权限,而 andy 对 project2 具有只读访问权限。
在 Web 主机上,通常有一个配置文件(可以命名为任何名称)来运行授权。每个存储库都有一个类似
[my-repository:/]
myuser = rw的列表
这将授予“myuser”对整个存储库的读写权限。你也可以这样做:
[my-repository/just-this-folder/:]
somejerk: r
哪个应该做你想做的。
如果您同时使用 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。
我不熟悉 Dreamhost 使用的具体配置,但强制执行权限的典型方式是使用 Apache 身份验证机制。这是 Subversion 文档中的相关页面。
Subversion Book在这里有你的答案。
说真的,人们:在纠缠其他人之前阅读最基本的文档什么时候过时了?
请参阅上面接受的答案。但是,对于 Dreamhost 的细节,在 ~/svn 目录中,每个存储库都有两个文件,repo_name.access
并且repo_name.passwd
. 其中 repo_name 是您为存储库指定的名称。您可以按照接受的答案中的描述编辑 repo_name.access 文件。
编辑后不要忘记,chmod 644 repo_name.access
以便 apache 可以访问它。