我需要在将由多个用户共享和访问的 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