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
相关产品推荐
相关产品推荐

