按照此链接中的说明,我设法$HOME
在 uni 的服务器上创建了一个存储库。我使用 .clone/pull/push 到服务器上的这个存储库SSH
。
我的问题是:是否可以授予其他人clone/push/pull
从此存储库的访问权限?显然我在服务器端没有root权限。此外,我不想将它作为公共存储库......我想知道谁在克隆并推送到这个存储库。
我可以在我帐户的网络存储部分做类似的事情吗?我的网站存储在哪里,然后使用类似的东西htaccess
来管理访问?
您可以在存储库上设置 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/id_rsa-git_admin
在您的工作站上一样~/.ssh/authorized_keys
将其添加为机器上文件中的第一个键git clone git@yourhost:gitolite-admin
,并确保它工作正常。ssh -i ~/.ssh/id_rsa-git_admin git@yourhost
如果最后两个步骤没问题,那么你的安装就很好了。
这是一个棘手的问题,因为大多数 git 设置都依赖于用户帐户。我看到了两个选项,除非您可以按照@redShadow 的回答中的描述安装 Gitolite。
如果其他人在同一个 mashine 上拥有帐户,则您冷使用 linux/unix 组权限并使存储库只能由该组读取/写入。如果该组不存在也不存在,则需要具有 root 访问权限的人创建它。
如果有限组的仅克隆访问对您来说是可以的,并且您愿意接收补丁形式的更改,您可以将您的存储库移动到您的网站根文件夹并使用 htaccess 来限制对文件的访问。但这将是只读的。
你的 htaccess 看起来像
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
参考:
我假设你做了一个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.