4

我正在使用 SVN (CollabNet Subversion Edge) 和 Tortoise SVN 来管理一个由多人编辑的网站。

我想限制某些用户对某些目录的访问(以防止他们看到数据库凭据等)。它们只需要对一个目录的读取权限。

是否可以在 SVN 中执行此操作?

谢谢!

编辑

他们同时运行 XP 和 Windows 7。服务器在 Windows 2008 上。使用的协议是 http。

4

4 回答 4

7

这可以通过使用 svnaccess.conf 文件来实现。假设您使用 Windows 域身份验证,这是一种向 Windows 用户提供文件夹级别访问权限的方法。(svnaccess.conf 文件的示例部分)

[repo:/trunk/samplefolder]

*=

@repo_restricted_users = r

@repo_super_users = rw

这里, repo_restricted_users 和 repo_super_users 是必须在 svnaccess.conf 文件中定义的用户组 - 因此:

repo_restricted_users = john.doe, tom.riddle

repo_super_users = harry.potter,lord.voldemort

这将只提供对存储库中文件夹 samplefolder 的读取访问权限,同时保持其他文件夹关闭。希望这可以帮助。

于 2010-09-20T07:41:59.487 回答
3

Mike 链接的 SVN 书为您提供了对可用身份验证方法的一个很好的概述。

如果您在 Windows 上并且不介意切换 SVN 服务器,VisualSVN 服务器是一个免费的 svn/Apache 包装器,可以在几分钟内安装,并提供脑死的简单点击用户/访问管理。我已经使用它很多年了,我很喜欢它。

于 2010-09-16T16:38:51.357 回答
1

您可以通过编写所谓的预提交挂钩以独立于平台的方式做您想做的事情。您可以在svn book中阅读更多关于钩子的信息。基本上,您将获得更新的用户名和目录位置,并有能力决定是否接受交易。

在这个网站上可以找到一个很好的例子。基本上,您需要使用与 subversion 一起打包的脚本commit-access-control.pl来为您执行权限检查。您所要做的就是编写一个简单的配置文件,描述人们可以在哪里读写。

如果你碰巧在 apache 中使用 http,那么你可以使用本书中描述的 authz_svn apache 模块。

于 2010-09-16T16:26:08.940 回答
1

如果他们需要一个目录,我认为最简单的方法是为此创建第二个/其他存储库,并将其包含svn:externals在“主”项目中(它仍然会svn update从其他存储库等获取更新)。

于 2010-09-16T17:28:02.220 回答