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

VFAT格式U盘Git初始化失败及写入权限问题求助

VFAT格式U盘Git操作权限错误的解决方案

问题背景

  • 无法向VFAT格式U盘的裸Git仓库写入内容,报错:remote: error: unable to create temporary file: Vorgang nicht zulässig
  • 在U盘执行git init或sudo git init均失败,提示:fatal: Konnte Gruppenschreibrecht für /media/disk/gittest/.git/hooks/ nicht setzen
  • 手动挂载U盘时指定参数:sudo mount -t vfat /dev/sdc1 /media/disk -o rw,users,uid=1000,gid=1000,umask=002,ls -lat显示目录权限为drwxrwxr-x,但问题依旧
  • 此前该操作正常运行多年,当前环境:Git 2.17.1,Ubuntu 18.04.6 LTS,VFAT本身不支持Unix原生权限位

核心原因

VFAT无Unix-style权限系统,挂载时的权限参数只是模拟统一权限。Git某次更新后加强了仓库目录权限校验,强制要求.git/hooks等目录具备组写入权限,但VFAT无法真正实现该权限控制,导致操作失败。

解决方法

1. 禁用Git的权限校验

通过Git配置跳过对仓库权限的严格检查,适配VFAT文件系统:

  • 针对当前U盘仓库配置:
    git config core.sharedRepository false
    
  • 全局配置(对所有仓库生效):
    git config --global core.sharedRepository false
    

2. 精确调整挂载权限参数

替换umask为dmask和fmask,更精准控制目录与文件的模拟权限:

sudo mount -t vfat /dev/sdc1 /media/disk -o rw,users,uid=1000,gid=1000,dmask=0002,fmask=0002

dmask=0002确保目录权限为775,fmask=0002确保文件权限为664,结合Git配置调整可规避权限校验报错。

3. 初始化仓库时指定共享权限

执行git init时明确指定权限,绕过组写入权限强制要求:

  • 普通仓库:
    git init --shared=0664 /media/disk/gittest
    
  • 裸仓库:
    git init --bare --shared=0664 /media/disk/my-bare-repo
    

验证

完成配置后,重新执行Git操作(初始化仓库、推送内容等),确认权限错误是否消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:05:21