设置一个git服务器,其中多个用户可以提交更改。
许多文档建议给予他们对存储库的写访问权,并使用SSH进行访问控制。例如http://git-scm.com/book/ch4-2.html甚至为数百名用户提供了此建议。 Gitosis似乎继续采用相同的方法,允许对存储库进行SSH写访问。
所以我的问题是:
什么阻止某人ssh server "rm -r /home/git/the_repository"
?
在典型的安装中,具有共享存储库的提交权限的人是否获得了足够的文件系统访问权限才能将其删除?
答案 0 :(得分:1)
实现您希望实现的目标的现代方法是通过gitolite,它允许您作为回购管理员定义相对精细的访问规则。
gitolite通过ssh密钥识别用户,因此用户甚至不必拥有对服务器的shell访问权限。
gitolite documentation在我的经历中非常好。
答案 1 :(得分:0)
您不应允许用户 shell 访问存储库计算机。
如果您要以这种方式进行访问控制,则用户的runnable命令应限制为git
。
然而,这并不能阻止他们做其他讨厌的事情,例如为每个分支推送空的refs。如果您不信任将使用中央存储库的人员,则需要更细粒度的权限系统。
为此,我建议Gerrit。即使您不将它用于代码审查,它仍然提供围绕git的管理和权限系统。
另一个选择是推送HTTP而不是SSH; HTTP服务器提供了额外的限制,您可以设置这些限制以避免恶作剧。