1

我已经在我的主机帐户上设置了一个 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

我的问题是如何限制某些用户访问某些项目?

4

1 回答 1

1

您正在使用 SSH 隧道。如果我正确阅读了svn 书,您将需要为您登录的用户自己设置存储库文件的权限,但您也可以直接在 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 内部所做的。)

于 2010-06-24T09:28:22.973 回答