SVN - 用户目录权限

Posted

技术标签:

【中文标题】SVN - 用户目录权限【英文标题】:SVN - User directory permissions 【发布时间】:2010-09-16 15:59:23 【问题描述】:

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

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

在 SVN 中可以做到这一点吗?

谢谢!

编辑

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

【问题讨论】:

人们使用什么协议访问网站?你在哪个平台上? Erm,希望协议是httpS? 最终会是HTTPS(由于某种原因启用https时,一台服务器无法工作,因此暂时设置为http)。 【参考方案1】:

这可以通过使用 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 的读取访问权限,同时保持其他文件夹关闭。希望这会有所帮助。

【讨论】:

【参考方案2】:

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

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

【讨论】:

感谢 VisualSVN 的回答和信息。【参考方案3】:

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

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

如果你碰巧在 apache 中使用 http,那么你可以使用 authz_svn apache 模块 describe here in the book。

【讨论】:

使用预提交挂钩进行限制不会阻止读取访问,还是我弄错了? 感谢您的回答和本书的链接!【参考方案4】:

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

【讨论】:

以上是关于SVN - 用户目录权限的主要内容,如果未能解决你的问题,请参考以下文章

为啥svn每次都要输入用户名和密码

如何做到svn根目录不让访问,但子目录可以访问权限的设置?

svn 服务器端使用之权限管理

SVN目录权限设置

SVN权限设置

SVN设置用户权限