You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置core.sharedrepository=group后Git操作偶现permission denied报错

问题根源

这个不是Git的bug,属于配置遗漏,核心原因如下:

  • core.sharedrepository=group的默认行为仅保证Git对象文件、索引等核心存储文件的组权限开放,FETCH_HEAD、ORIG_HEAD、HEAD这类临时指针文件的权限会继承执行操作用户的系统umask值。如果任意使用该仓库的用户默认umask为022,新生成的FETCH_HEAD权限就会变成644,丢失组可写权限。
  • 之前执行的chmod -R g+rwX .仅对已存在的文件生效,新生成的文件不受该命令影响。

修复方案

按优先级选择即可:

  • 首选方案:将仓库的共享配置改为显式权限掩码,强制Git覆盖用户umask生成文件:
    git config core.sharedrepository 0664
    
    该配置会强制所有仓库内新建文件权限为664、新建目录权限为2775,完全满足组共享要求。
  • 次选方案:要求所有使用该共享仓库的用户调整默认umask为002,可以在对应用户的shell配置文件(~/.bashrc、~/.zshrc等)末尾添加:
    umask 002
    
  • 兜底方案:给仓库目录设置ACL默认规则,强制所有新生成的文件继承组权限:
    setfacl -R -m d:g::rwx .
    setfacl -R -m g::rwx .
    

注意事项

不要使用sudo执行任何Git仓库操作,sudo会切换到root身份执行命令,生成的文件属主为root,即使权限正确也会导致普通用户无法修改。

内容的提问来源于stack exchange,提问作者Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:27:04