SVN 用户组和权限
Posted
技术标签:
【中文标题】SVN 用户组和权限【英文标题】:SVN user groups and permissions 【发布时间】:2011-03-07 17:21:27 【问题描述】:我已经在我的主机帐户上设置了一个 SVN 服务器。用户可以签入和签出,但他们可以访问我的整个存储库。
为了让人们访问,我向用户颁发了我帐户的公钥,然后我在 ~/.ssh 内的“authorized_keys”文件中添加了一行,如下所示:
command="/home/user/packages/bin/svnserve -t -r /home/user/repository --tunnel-user=diogo",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa [KEY DATA IN HERE]== xxxx@xxxx.hostxxxxx.com
然后用户可以像这样通过隧道从我的服务器结帐:
svn+ssh://host.com/project/trunk
我的问题是如何限制某些用户访问某些项目?
【问题讨论】:
【参考方案1】:您正在使用 SSH 隧道。如果我正确阅读了svn book,您将需要为您登录的用户自己设置存储库文件的权限,但您也可以直接在conf文件中阻止用户:
在隧道上运行时,授权主要由操作系统对存储库数据库文件的权限控制;这与 Harry 直接通过 file:/// URL 访问存储库非常相似。
如果多个系统用户将直接访问存储库,您可能希望将他们放在一个公共组中,并且您需要小心 umasks。 (请务必阅读名为“支持多种存储库访问方法”的部分。)
但即使在隧道的情况下,svnserve.conf 文件仍可用于阻止访问,只需设置 auth-access = read 或 auth-access = none。
(来自《SSH 认证与授权》)
顺便说一句,您说您是在您的主机帐户上执行此操作的。我也尝试过一次,但因为不允许添加新的 SSH 用户而不得不放弃。如果您无法添加 SSH 用户帐户,则无法通过隧道进行细粒度身份验证 - 用户将始终拥有对 repo 的完全访问权限。
要独立于 SSH 使用多用户身份验证,您必须将 svn 与 Apache 集成,这在共享环境中通常是不可能的。
我最终切换到基于 Windows 的小型虚拟服务器并在那里安装 Brain-dead easy svn wrapper VisualSVN Server。它需要一些钱(大约 20 欧元/月,我见过基于 Linux 的虚拟服务器起价为 10 美元),但从那以后我一直很满意。 (当然,你可以只用 Linux 和 Apache 设置 svn,这也是 VisualSVN 内部做的。)
【讨论】:
我的主机账户是通过 hostmonster 提供的,所以他们只提供一个用户登录,因此我无法设置文件的用户权限,因为只有 1 个用户。有没有其他方法,或者可能是添加新用户的方法?谢谢 @Martin 如果您的提供商不允许,我认为没有办法添加新用户。这些是系统级别的用户帐户。 是的,我已经研究过将 svn 与 Apache 集成,但我无法访问某些文件和 cmd,hostmonster 支持人员表示不允许这样做。无论如何,我将来会看看其他托管服务提供商。感谢您的帮助。以上是关于SVN 用户组和权限的主要内容,如果未能解决你的问题,请参考以下文章