【问题标题】:How to allow a group access for a GIT repo (Ubuntu)如何允许 GIT 存储库的组访问(Ubuntu)
【发布时间】:2013-04-04 11:18:25
【问题描述】:
  • 所以我有一个由 Gitosis 托管的 GIT 存储库。
  • 我有一个名为 user1 的用户,当然还有用户 root。
  • user1 属于组 'dev'
  • /var/www 由 root 拥有,并分组到 'dev'
  • 组的权限是 rwx
  • user1 已确认访问 git 存储库。我已经克隆了它,效果很好。

但是,当我尝试让 user1 在 /var/www 上提取 repo 时,我得到了

error: cannot open .git/FETCH_HEAD: Permission denied

那么我还缺少什么。 GIT 存储库已经是一个 --shared 存储库。出于某种原因,我无法让该用户使用 /var/www ?

谢谢!

【问题讨论】:

  • “user1 pull the repo on /var/www”是什么意思?你cd /var/www 并运行git pull 吗?您是否有理由不简单地从克隆的仓库中将git push 设置为user1
  • 我假设这不起作用? chmod -R g+rwx /var/www/repo/.git
  • 是的,我使用 user1 进行 SSH,CD 到 /var/www 并运行 git pull,然后我被拒绝访问。我不 git push 的原因是因为 user1 想在我不在的时候从开发人员那里拉到开发仓库。
  • ls -l .git/FETCH_HEAD 说...
  • -rw-rwsr-- 1 root root 95 2013-04-09 14:12 .git/FETCH_HEAD 好电话,那么我如何将其更改为 root dev ?

标签: linux git ubuntu permissions


【解决方案1】:

原来答案是将 .git 文件夹的 GROUP 更改为用户的。 我没有意识到 .git/FETCH_HEAD 是一个程序,并且访问被拒绝运行它。我以为这是一个 gitosis 的事情,但事实并非如此。

谢谢!

【讨论】:

    【解决方案2】:

    您可以使用

    追溯修复它们(之后您将不需要配置设置)
    chmod -R user:group /path/to/shared.git
    find /path/to/shared.git -type d |xargs chmod 2775   # or 2770 if you don't want it public
    find /path/to/shared.git -type f |xargs chmod 444    # or 440
    find /path/to/shared.git/hooks   |xargs chmod ugo+x  # or ug+x
    

    【讨论】:

    • 所以 .git 存储库托管在我的 gitosis 服务器(不同的盒子)上,它不知道 user1 或 group dev。这些只是开发服务器上的用户和组(同样不是托管 gitosis 的服务器)所以我需要让 gitosis 知道另一个盒子上的用户吗?
    • 我不会说 gitosis,我知道如果它不想变得太可爱的话,我在这里给出的命令会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 2020-05-24
    相关资源
    最近更新 更多