我在我的托管帐户上设置了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
我的问题是如何限制某些用户访问某些项目?
答案 0 :(得分:1)
您正在使用SSH隧道。如果我正确读取svn book,您需要为您登录的用户设置存储库文件本身的权限,但您也可以直接在conf文件中阻止用户:
在隧道上运行时,授权主要由操作系统对存储库数据库文件的权限控制;这与Harry直接通过file:/// URL访问存储库非常相似。
如果多个系统用户将直接访问存储库,您可能希望将它们放入一个公共组,并且您需要小心umasks。 (请务必阅读“支持多个存储库访问方法”一节。)
但即使在隧道的情况下,只需设置auth-access = read或auth-access = none,svnserve.conf文件仍可用于阻止访问。
(来自“SSH身份验证和授权”)
顺便说一句,你说你在托管帐户上这样做了。我曾尝试过一次,但不得不放弃,因为我不允许添加新的SSH用户。如果无法添加SSH用户帐户,则无法通过隧道进行细粒度身份验证 - 用户始终可以完全访问存储库。
要独立于SSH使用多用户身份验证,您必须将svn与Apache集成,这在共享环境中通常是不可能的。
我最终切换到一个基于Windows的小型虚拟服务器并在那里安装了Brain-dead easy svn wrapper VisualSVN Server。它花了一些钱(约20欧元/月,我看到基于Linux的虚拟服务器起价10美元),但从那以后我一直很满意。 (当然,您可以使用Linux并使用Apache设置svn,这也是VisualSVN内部所做的。)