SVN + SSH安全


9

我将snv + ssh与基于密钥的身份验证一起使用。现在,为了让我的任何svn用户都可以通过Subversion访问存储库,我必须将回购文件设置为对这些用户而言在文件系统上可读写。

我想防止用户通过ssh登录到服务器时能够删除回购数据库,但仍然无法检出并提交代码。

关于如何做到这一点的想法?

Answers:


4

要访问svn + ssh URL,svn客户端使用“ ssh -q user @ host svnserve -t”启动一个svnserve实例,并通过stdin / stdout与该实例进行对话。

如果您的用户需要正常的ssh访问,您仍然可以通过限制对一个用户的访问来阻止他们访问存储库(chown -R svnserve:svnserve存储库; chmod -R g-rwx,o-rwx存储库),并通过替换svnserve命令这个setuid / setgid svnserve包装程序


10

在共享用户环境中,我建议设置一个真实的Subversion服务器(svnserve通过Apache或通过Apache)。在这种环境中,单个用户根本不需要访问存储库文件,因为所有文件访问都是在服务器进程的用户帐户下完成的。

《 Subversion》书中有一节“ 选择服务器配置”可能会有所帮助。从该部分(重点是我的):

如果您现有的基础设施高度依赖SSH帐户,并且您的用户已经在服务器计算机上拥有系统帐户,则部署svnserve-over-SSH解决方案是有意义的。否则,我们不会广泛向公众推荐此选项。通常,让您的用户通过svnserve或Apache管理的(虚构)帐户(而不是成熟的系统帐户)访问存储库更为安全。



2

我看到两个可能的方向来解决此问题:

  • 提供有限的shell访问权限,例如,用户只能将svn与他们的帐户一起使用(如果出于其他目的也需要shell访问,则可能需要另一个帐户)-我发现了一些 有趣的关于svnonly的参考。注意:我自己没有尝试过。
  • 通过https迁移到Subversion,添加客户端证书。我见过有人在讨论这个问题,但我自己从来没有做过。缺点:除ssh密钥外,还要求分发客户端证书。

1

我同意Greg和Olaf的观点-进行https访问。我使用这样的设置已经有一段时间了,但实际上并没有看到它的任何缺点。

您将获得存储库中细粒度访问控制的其他好处-因此,您可以将其某些部分设为只读,而对于选定的用户则完全无法访问。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.