安装 git 以在多用户系统中使用

安装 git 以在多用户系统中使用

我需要在将由多个用户共享和访问的 Ubuntu 服务器上安装 git。

我假设我将使用 git+ssh,因此每个用户都会有一个系统帐户,但是我该如何安装 git 和存储库,以便每个用户都可以通过本地 IP 进行推送/拉取?

答案1

我建议使用吉托莱特用于管理用户访问和权限。

描述它的最佳方式是引用开发人员的话:

Gitolite 可让您使用服务器上的单个用户来托管多个 git 存储库并为许多开发人员提供访问权限,而无需向他们提供服务器上的真实用户 ID 或 shell 访问权限。实现此目的的关键是 ssh 的 pubkey 访问权限和 authorized_keys 文件,其灵感来自一个名为 gitosis 的较旧程序。

Gitolite 可以限制谁可以读取(克隆/获取)或写入(推送)存储库。它还可以限制谁可以推送到哪个分支或标签,这在企业环境中非常重要。Gitolite 无需 root 权限即可安装,并且除了 git 本身和 perl 之外不需要其他软件。它还具有下面和 doc/ 目录中其他位置描述的几个其他简洁功能。

以下是我个人想要强调的一些特点:

  • 每个用户都必须拥有 SSH 密钥,否则他们无法推送到服务器
  • 没有系统账户 - 只有服务器上的“git”用户。
    • 你通过这个用户与你的服务器进行所有的 git 交互
  • SSH 密钥的配置和添加是通过 git repo 进行的!
    • 例如,在创建 repo 时,您只需在 gitolite 配置中添加两行,即 repo 的名称以及谁有权对其进行读取/写入。提交并推送,瞧!现在您可以使用“git clone ssh://”克隆新的空 repo[电子邮件保护]/yournewrepo.git'。

祝你好运

-víðir

答案2

一种方法是为“git”用户创建一个组,并将您希望访问该组的所有用户添加到该组。您可以使用“groupadd”命令创建该组,然后我只需编辑 /etc/group 即可修改该组中以逗号分隔的用户列表。我通常根据项目命名组,例如“newwebsite”,而不是“git”之类的名称。例如,/etc/group 条目可能如下所示:

newwebsite:x:999:swarren,jafo,kyle,mlb

现在,创建一个目录来保存 git 存储库,例如“/var/git/newwebsite”:mkdir -p /var/git/newwebsite

设置此目录的权限以包含组粘性位:

chgrp newwebsite /var/git/newwebsite
chmod g+ws /var/git/newwebsite

现在使用以下命令初始化此目录中的存储库:

cd /var/git/newwebsite
git init --bare --shared=group

注意:不要用您的组替换“group”,它必须是文字字符串“group”。

如果出现错误,则您的“git”版本可能不支持“--bare”选项。在这种情况下,请删除“--bare”选项。

此时,您的用户应该能够使用以下命令检出存储库:

git clone git+ssh://$USER@$HOST/var/git/newwebsite

答案3

安装Ubuntu 上的 git

sudo apt-get install git-core

有关如何使用它的说明,请参阅我发现这是一个极好的参考文献。

相关内容