考虑一个托pipe几个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的开发人员。 我创build了一个Linux用户yoko但我不知道如何让/opt/git/john.git以最安全的方式访问/opt/git/john.git目录,而不让他访问/opt/git/的其他目录。
限制访问的规范方式是什么?
我的意思是把john.git做成组foobar并把这个组添加到用户yoko的组中。 但是,如果我以后需要添加另一个可以访问两个回购的用户,会发生什么? 例如,我可能希望添加用户cynthia以同时访问john.git和paul.git 。 我应该为每个Git回购有一个单独的组? 我可以看到很快变得笨拙
请注意,这些用户只能访问除自己的/home/user/目录之外的任何内容,另外还可以访问允许的Git仓库。 如果有一种方法将/home/yoko/john.git符号链接到/opt/git/john.git中,以防止访问剩余的/opt/git/这将是最好的,但是我似乎无法configuration系统。
服务器运行的是Ubuntu Server 12.04,但如果有需要,我可以更新到14.04。 用户通过使用RSA密钥的SSH连接,没有密码。 他们将在服务器上执行git pull和git push ,仅此而已。
对于less数回购,这些小组方法工作得很好。 是的,每个回购可能都需要自己的小组,而且如果你有更多的回购,它确实很难处理。 正如@AlexeyTen在评论中提到的,如果你有更多的回购,或者想要一个更“高层次”的pipe理界面,你应该看看像gitolite或gitlab回购pipe理器。 Gitolite是通过git repo中的文本文件进行pipe理的(configuration文件和SSH密钥都被委托给一个特殊的git仓库并被推送,并且所有的configuration都被configuration)。 另一方面,Gitlab是一个全function于一身的web应用程序,在概念上类似于自我托pipe的Github。 如果你不需要所有的花里胡哨,gitolite几乎肯定会完成这项工作。