2010-06-24 89 views
1

我在我的主机帐户上设置了SVN服务器。用户可以签入和签出,但他们可以访问我的整个存储库。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]== [email protected] 

用户可以然后从我的服务器通过隧道结帐如下:

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用户帐户,则无法通过隧道进行细粒度的身份验证 - 用户始终可以完全访问回购站。

要独立于SSH使用多用户认证,您必须将svn与Apache集成,这在共享环境中通常是不可能的。

我最终切换到了一个基于Windows的小型虚拟服务器,并在那里安装了Brain-dead easy svn wrapper VisualSVN Server。这需要花费一些钱(大约20欧元/月,我已经看到基于Linux的虚拟服务器起价10美元),但从那以后我一直很满意。 (当然,你可以使用Linux并使用Apache设置svn,这也是VisualSVN在内部也是这样做的。)

+0

我的托管帐户是通过hostmonster进行的,所以他们只提供单一用户登录,因此我无法登录设置文件的用户权限,因为只有一个用户。有没有其他方式,或者可能添加新用户的方式?谢谢 – Martin 2010-06-24 09:39:14

+0

@马丁嘿,真是巧合:)看看我的更新。 – 2010-06-24 09:40:50

+0

@Martin如果你的提供者不允许你,我认为没有办法添加新用户。这些是系统级别的用户帐户。 – 2010-06-24 09:43:46