允许用户访问单个 Git 存储库

允许用户访问单个 Git 存储库

考虑一个托管多个 Git 存储库的服务器:

$ ls -l /opt/git/
drwxrwxr-x 7 ubuntu root   4096 Jan  2  2014 george.git
drwxrwxr-x 7 ubuntu root   4096 Dec 29  2013 john.git
drwxrwsr-x 7 ubuntu root   4096 Jul  4  2013 paul.git
drwxrwsr-x 7 ubuntu root   4096 Jun 30  2013 ringo.git

到目前为止,所有开发人员都可以通过 SSH 访问所有 Git 存储库。我现在要添加一个只能访问john.git存储库的开发人员。我创建了一个 Linux 用户yoko,但我不确定如何以最安全的方式让他yoko访问/opt/git/john.git目录,而不让他访问 中的其他目录/opt/git/

限制访问的规范方法是什么?

我倾向于创建john.gitas 组foobar并将该组添加到用户yoko的组中。但是,如果我稍后需要添加另一个可以访问两个存储库的用户,会发生什么情况?例如,我可能希望将具有和cynthia访问权限的用户添加到。john.gitpaul.git我是否应该为每个 Git 存储库设立一个单独的组?我发现这很快就会变得难以处理

请注意,这些用户应该有权访问没有什么除了他们自己的/home/user/目录之外,他们还可以访问他们被允许访问的 Git 存储库。如果有一种方法可以符号链接到 ie/home/yoko/john.git/opt/git/john.git防止访问其余部分,/opt/git/那就最好了,但我似乎无法这样配置系统。

服务器运行的是 Ubuntu Server 12.04,但如果有需要,我可能会将其更新到 14.04。用户使用 RSA 密钥通过 SSH 连接,无需密码。他们将在服务器上执行操作,仅此而已git pullgit push

答案1

对于少量的存储库,组方法效果很好。是的,每个存储库都可能需要自己的组,如果您拥有更多存储库,它确实会变得笨重。正如@AlexeyTen 在评论中提到的那样,如果您拥有大量存储库,或者想要更“高级”的管理界面,您应该考虑使用 gitolite 或 gitlab 等存储库管理器。Gitolite 通过 git 存储库中的文本文件进行管理(配置文件和 SSH 密钥提交到特殊的 git 存储库并推送,并且一切都已配置)。另一方面,Gitlab 是一个一体化的 Web 应用程序,在概念上类似于自托管的 Github。如果您不需要所有的花哨功能,gitolite 几乎肯定会完美地完成工作。

相关内容