5

按照此链接中的说明,我设法$HOME在 uni 的服务器上创建了一个存储库。我使用 .clone/pull/push 到服务器上的这个存储库SSH

我的问题是:是否可以授予其他人clone/push/pull从此存储库的访问权限?显然我在服务器端没有root权限。此外,我不想将它作为公共存储库......我想知道谁在克隆并推送到这个存储库。

我可以在我帐户的网络存储部分做类似的事情吗?我的网站存储在哪里,然后使用类似的东西htaccess来管理访问?

4

3 回答 3

1

您可以在存储库上设置 POSIX ACL,以允许更多用户访问它。但这并不能保证有人以另一个用户的身份提交/配置非常麻烦/ ...

相反,我建议您使用 gitolite:https ://github.com/sitaramc/gitolite 。

它的工作方式与 github 上的 pull/push 机制非常相似:一个 ssh 用户,一个自定义 shell,它根据用于登录的 ssh 密钥对用户进行身份验证。

如果您想要更复杂的东西(类似于 github,具有提供许多功能的 Web UI),请查看 gitlab ( http://gitlabhq.org/ ) 或 gitorious ( http://getgitorious.com/ )。

更新

为了能够以安装 gitolite 的用户身份在服务器上正常登录:

  • 创建一个新的 SSH 密钥并保留它,比方说,就像~/.ssh/id_rsa-git_admin在您的工作站上一样
  • ~/.ssh/authorized_keys将其添加为机器上文件中的第一个键
  • 安装 gitolite 并确保密钥仍然存在(退出前等待)
  • 从另一个终端,运行 a git clone git@yourhost:gitolite-admin,并确保它工作正常。
  • 从另一个终端,尝试登录机器ssh -i ~/.ssh/id_rsa-git_admin git@yourhost

如果最后两个步骤没问题,那么你的安装就很好了。

于 2013-03-04T13:42:22.547 回答
0

这是一个棘手的问题,因为大多数 git 设置都依赖于用户帐户。我看到了两个选项,除非您可以按照@redShadow 的回答中的描述安装 Gitolite。

所有开发人员在服务器上都有帐户

如果其他人在同一个 mashine 上拥有帐户,则您冷使用 linux/unix 组权限并使存储库只能由该组读取/写入。如果该组不存在也不存在,则需要具有 root 访问权限的人创建它。

通过 HTTP 进行只读访问,通过 htaccess 进行您自己的用户管理

如果有限组的仅克隆访问对您来说是可以的,并且您愿意接收补丁形式的更改,您可以将您的存储库移动到您的网站根文件夹并使用 htaccess 来限制对文件的访问。但这将是只读的。

你的 htaccess 看起来像

AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins

参考:

于 2013-03-04T13:52:06.677 回答
0

我假设你做了一个git init --bare ...

默认情况下,当您初始化一个裸仓库时,您授予组写入权限,其他任何人都可以读取。这是在帮助文档中讨论的git init

http://www.kernel.org/pub/software/scm/git/docs/git-init.html

您可以使用 umask 选项对访问进行更严格的控制:

0xxx: 0xxx is an octal number and each file will have mode 0xxx. 
0xxx will override users' umask(2) value (and not only loosen permissions 
as group and all does). 0640 will create a repository which is group-readable, 
but not group-writable or accessible to others. 0660 will create a 
repo that is readable and writable to the current user and group, but 
inaccessible to others.
于 2013-03-04T13:52:53.683 回答