服务器上的git存储库,用于不相关的多个项目和多个用户

时间:2013-11-24 22:01:18

标签: git

我正在尝试设置如下内容:

多个不相关的项目,每个项目都有自己的一组用户,在一个运行Ubuntu的公共git服务器中。

我知道一个传统解决方案只是为每个项目分配一个组,并将每组用户添加到该组,依此类推。但是我有两个复杂的因素:我们有外部合作者(我将使用ssh处理)并且我们的系统上的用户已经接近他们可能属于的组数量的最大限制。

我的主要兴趣是确保用户A,B和C只能访问项目A; D,E和F仅用于项目B(依此类推),我不能依赖使用unix组成员资格。

对于我们的svn存储库,我们切换到使用authz协议来解决这个问题。但是,我开始让用户有兴趣为他们的研究项目设置git存储库,所以我正在寻找方法来限制特定项目的用户组而不使用git中的组。这可能吗?我实际上开始想知道是否应该将每个存储库放在自己的帐户中并将ssh密钥转储到授权密钥文件夹中: - /

我花了大约一个小时浏览这里的git问题(更不用说谷歌搜索了),但它们似乎都描述了不同的情况,主要是一个人拥有的多个项目,或者多个人访问一个项目,那种事。我没有看到任何阻止一组用户进入他们未分配的项目的事情。 (这些项目是完全独立的,不是彼此的一部分。)

如果我错过了之前明显的答案,请用强制性的湿面条打我(并给我链接?)。

谢谢!

4 个答案:

答案 0 :(得分:0)

您可以反转问题并使项目属于一个用户名..

IE:

$> adduser my_project_1

然后在~my_project_1 / .ssh / authorized_keys

中为每个项目(aka用户)安装ssh密钥

然后有人可以通过以下方式获取访问权限:

my_project_1@myserver:git/project.git

然后你可以拥有my_project_2,_3等......

答案 1 :(得分:0)

我知道这并不是你所要求的,但听起来你可能需要的是一些简单的(可能是基于网络的)界面来管理和创建Git存储库,比如Github的自托管版本或者Bitbucket。

如果这就是你所追求的,那么有一些现成的选择,包括FOSS和商业。我知道FOSS解决方案有GitLabGitorious,但我没有使用过,所以不能提供任何关于他们喜欢的建议。

答案 2 :(得分:0)

您似乎在寻找 Gitolite 。 Gitolite是一个 构建在Git之上的access control layer使您能够以相当精细的规模配置对存储库的访问。使用Gitolite定义的用户独立于系统的用户,事实上,所有通信通常都通过一个git用户帐户完成。

您还可以定义用户组并分配个人权限。它非常强大且可扩展,以防您需要非常奇特的案例。

可以为所有存储库,一组存储库甚至单个存储库全局分配权限。您甚至可以允许用户自己创建存储库,例如在执行<user>/<repo>之类的命名方案时。

Gitolite进一步阻止您必须对任何人进行真正的SSH访问。当然,您仍然可以为您团队中的某些成员提供自己的shell访问权限,但整个Git通信仍会依赖于Gitolite的用户,限制了对Git命令的访问并强制执行您配置的所有Gitolite策略。

答案 3 :(得分:0)

如果你想要一个具有良好界面和对用户权限的细粒度控制的东西,也是免费的。您可以尝试Git Blit

我将它用于工作,它帮助我管理跨多个项目的离岸团队。

以下是一些屏幕。我强烈推荐它。

Activity http://gitblit.com/screenshots/00c.png Repository Control http://gitblit.com/screenshots/01c.png Users http://gitblit.com/screenshots/01.png

Download it here for Linux