【问题标题】:Administrating a git repo without root permissions在没有 root 权限的情况下管理 git repo
【发布时间】:2011-05-16 03:22:03
【问题描述】:

我想在我的主目录中创建一个裸 git-repo,供我在同一文件系统上工作的同事访问,允许他们 git push 进入它。但是,我不希望他们能够不小心用 git 以外的任何东西修改 repo,所以我不能只 chmod g+w 它。

如果没有root,这可能吗?我唯一能想到的就是将 SUID 位设置为git,这样 git 就可以像我一样访问 repo,但我不知道这是否真的是个好主意......

【问题讨论】:

    标签: git repository


    【解决方案1】:

    您可以使用 gitolite 之类的东西,它可以为您解决很多麻烦。

    如果你想使用普通的 git,你可以这样做:

    要执行此操作,您的所有同事和您需要属于同一组(例如开发人员)。您可以通过以下方式一次性修复所有问题:

    newgrp developers
    git init --bare --shared=group repo
    

    当然你会得到一个空的存储库。你可以把你当前的工作推到那里并从那里继续。

    如果您不使用 git init 路径,则需要自己设置适当的权限以及设置 core.sharedrepository=1 配置变量。

    【讨论】:

    【解决方案2】:

    最好的方法是使用 gitosis,或者只是创建一个新的 git 用户,让受信任的用户使用 ssh 密钥 ssh 进入该帐户。

    后者并不能真正阻止人们在不使用 git 的情况下访问文件,如果这很重要,请花时间正确配置 gitosis。

    【讨论】:

    • 创建一个新的 git 用户需要管理权限。
    • @Noual Ibrahim:使用我自己的帐户进行 gitosis 会有什么缺点?这基本上会为 gitosis 授权的每个人提供一种直接 ssh 进入我的帐户的方式吗?
    • @Tobias:或多或少是的,除了 Gitosis 依赖于 opensshd 只允许用户运行一个非常特殊的命令,该命令在已为该用户授权的公钥中指定。跨度>
    • @Noufal:是的,创建新的 git 用户需要管理员权限,但是,一旦完成,可以在没有管理员权限的情况下进行进一步的管理,因为 gitosis 使每个人都使用相同的用户帐户。 (它通过每个用户使用不同的密钥来区分它们)。
    • 同意 Arfangion。然而,提问者要求的东西不需要管理员权限。
    【解决方案3】:

    如果您将存储库公开为 file:///,则将应用文件权限。据我所知,git 本身并不处理“权限”。你用来发布你的 repo 的机制会处理这方面的问题(ssh、.htacess 或 web 的密钥)。


    这是未经测试的,但我认为您应该能够使用git daemon 设置一个守护程序,您的用户可以使用它来从您的存储库中推/拉。它需要对您的存储库进行读/写访问,但这没关系,因为它正在像您一样运行。您的用户将只能使用它访问您的存储库。有关详细信息,请查看手册页 (git help daemon) 和 this。 然而,我原来的观点仍然成立。这是使用file:/// 协议来公开不需要root 权限的存储库的一种方式。

    【讨论】:

    • 那么有没有办法让 repo 对 git 可读但没有它只读?
    • +1 谢谢,只要不需要细粒度的权限设置,就可以直接使用
    • 如果它解决了您的问题,习惯上点击勾选“接受”答案。 :)
    • @Noual Ibrahim:对不起,是的。这是目前公认的答案,但我也想稍后测试 gitosis 和 gitolite
    • @Noufal Ibrahim:还请记住,如果裸仓库使用钩子执行接收后结帐(例如),则文件权限将在推送到仓库后发挥作用(当结帐写入目标目录)。
    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2020-02-13
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多