授予对git存储库的只读访问权限

时间:2010-10-11 17:27:19

标签: git permissions ssh

我不确定这应该放在这里,还是超级用户(因为它似乎与这两个主题有关),所以我把它放在这里,如果它不合适,我会在超级用户上问它。

无论如何,我有一个git存储库,不能完全开源(否则我只是把它放在github上并完成它),我有一个服务器,我有ssh访问(但不是超级用户访问) to,这个服务器上已经有了所有的git二进制文件。我需要给某人只读访问这个git-repo(或至少对某些分支的只读访问权限,尽管我认为这样会更难)。

目前我正在使用ssh将本地git repo推送和轮询到此服务器。有没有办法让另一个人只读访问服务器? (我想我和我们两个都拥有对repo的写访问权限,虽然我不知道如何使用unix权限,因为我没有能够创建新的unix组,因为我没有超级用户权限)。

感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

您想使用git协议。 http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html

它会公开给所有人,这可能不是你想要的,但没有人能够推动git://。

您可以通过仅推送您想要访问的分支来控制他们可以访问的分支 我会通过从启用ssh的私有存储库中单独克隆来执行此操作,然后将其添加为远程存储库。然后,您可以执行git push pub public-branch,然后无法从该位置访问private-branch

答案 1 :(得分:1)

在.ssh / authorized_keys中,您可以指定在使用给定公钥时始终运行的命令。您可以将其设置为git-upload-pack /path/to/repo.git并且git pull可能正常工作。这种方法可能存在非明显的安全隐患。

有关authorized_keys文件的格式,请参阅the sshd manual page

答案 2 :(得分:1)

您可以设置ACL来管理存储库的权限...... Pro Git book中有很多关于此主题的详细信息。根据我到目前为止所读到的内容,是的,如果你愿意,可以在选择的分支上应用它。

答案 3 :(得分:1)

您可以使用工具之一管理git存储库,例如gitosis(在Python中)或gitolite(在Perl中),它允许控制对存储库的访问(或您可以使用自己的解决方案,类似于示例update-paranoid更新挂钩)。

另一个解决方案是使用提供私有存储库的git hosting sites之一(例如Codaset在免费计划中提供1(半)私有存储库,磁盘空间限制为200 MB)。

答案 4 :(得分:0)

您可以在Github上拥有私人存储库......根据开发人员的数量,他们每月只需花费几美元。你可以很容易地从那里控制访问。