SVN+SSH 安全

Bra*_*ith 9 ssh svn

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

我想阻止用户在通过 ssh 登录到服务器时删除 repo 数据库,但仍然能够签出和提交代码。

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

Gre*_*ill 10

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

Subversion 书中有一节关于选择服务器配置可能会有所帮助。从该部分(强调我的):

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


Ale*_*min 4

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

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