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

如何配置git-lfs-transfer支持归属组用户访问仓库?

解决git-lfs-transfer识别仓库组权限的问题

问题概述

编译scutiger项目的git-lfs-transfer工具用于通过SSH传输LFS大文件,但当仓库所有权设为git:git(当前用户属于git组)时,工具报错提示用户不是仓库所有者,仅当仓库归属当前用户个人账号时才能正常工作。

核心原因

git-lfs-transfer默认仅检查仓库目录的用户所有权,未实现组权限校验逻辑——即使当前用户属于仓库所属组,工具仍会判定权限不足。

解决方案

方案1:修改scutiger源码,添加组权限校验

这是最彻底的解决方式,直接修改工具的权限检查逻辑:

  • 打开scutiger项目中cmd/git-lfs-transfer/main.go(或对应权限检查的源码文件)
  • 找到仓库所有权校验的代码段,原逻辑仅对比仓库目录的UID与当前用户UID
  • 添加组权限校验逻辑:
    1. 获取仓库目录的GID
    2. 枚举当前用户所属的所有组ID,检查是否包含仓库的GID
    3. 若用户UID匹配或所属组包含仓库GID,则判定权限通过
  • 重新编译git-lfs-transfer,替换服务器上的对应可执行文件

方案2:调整服务器端git-lfs-transfer的运行权限(临时兼容)

如果暂时不想修改源码,可以通过setgid权限调整工具的运行上下文:

  1. 在服务器上,将git-lfs-transfer的所属组设为git:
    chown root:git /path/to/git-lfs-transfer
    
  2. 给工具添加setgid权限:
    chmod g+s /path/to/git-lfs-transfer
    
    这样工具运行时会继承git组的权限,从而允许属于git组的用户访问仓库。

验证方法

修改完成后,直接执行以下命令测试:

ssh {host ip} git-lfs-transfer /mnt/data/git-repos/tst.git upload

若不再返回repository path ... is not owned by current user错误,则配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:13:27