git多用户管理

AI生成,已实践
 
我有一个ubuntu,有a,b两个用户,a和b都要提交git,如何管理权限
 
 
我给你一个最简单、最稳定、最安全的 Ubuntu 多用户 Git 权限方案,a、b 两个用户都能正常提交、不报错、不冲突、不用反复改权限

核心目标

  1. a 能写
  2. b 能写
  3. 谁提交都不出现权限不足 / 权限报错
  4. 文件权限自动正确

最终方案:共用组 + 正确 umask + Git 安全权限

一共 3 步,一次性永久解决。

第一步:创建一个共用组(比如叫 gitgroup)

bash
 
运行
 
sudo groupadd gitgroup
 
 
把 a 和 b 都加入这个组
 
bash
 
运行
 
 
 
sudo usermod -aG gitgroup a
sudo usermod -aG gitgroup b
 

第二步:把项目目录权限设置为「组可写」

假设你的 Git 项目在 /home/project
 
bash
 
运行
 
 
 
sudo chown -R a:gitgroup /home/project
sudo chmod -R 2775 /home/project
 
 
重点:
 
2775
 
  • 2 → 强制所有新文件继承所属组(最重要)
  • 7 → 所有者可读可写可执行
  • 7 → 组可读可写可执行
  • 5 → 其他人只读

第三步:给 a 和 b 设置 umask 002(最关键)

让他们新建的文件自动是组可写,不会权限冲突。

给 a 用户设置

bash
 
运行
 
 
 
echo "umask 002" >> /home/a/.bashrc
 

给 b 用户设置

bash
 
运行
 
 
 
echo "umask 002" >> /home/b/.bashrc
 

立即生效

bash
 
运行
 
 
 
su - a -c "umask 002"
su - b -c "umask 002"
 

第四步:Git 仓库配置(防止权限报错)

进入项目目录执行:
 
bash
 
运行
 
 
 
cd /home/project
git config core.sharedRepository group
 
 
作用:
 
Git 自动把文件权限设为组可写,a、b 提交都不会报错。

最终效果(完美)

  • a 创建的文件,b 能改
  • b 创建的文件,a 能改
  • 所有文件自动属于 gitgroup 组
  • 权限永远是 775 / 664
  • git pull /git push 永远不会权限错误

你只需要复制这 8 条命令,一键搞定

bash
 
运行
 
 
 
sudo groupadd gitgroup
sudo usermod -aG gitgroup a
sudo usermod -aG gitgroup b
sudo chown -R a:gitgroup /home/project
sudo chmod -R 2775 /home/project
echo "umask 002" >> /home/a/.bashrc
echo "umask 002" >> /home/b/.bashrc
git config --global core.sharedRepository group
 

一句话总结

创建共用组 → 目录继承组权限 → umask 002 → Git 开启共享
 
a 和 b 就能完美共用 Git 仓库,互不干扰,权限永远正常

 
需要我告诉你 如何测试 a、b 是否都能正常提交 吗?我可以给你一条测试命令验证是否成功。
 
 
 
 
 
 
 
 
 
 
 
 
 
sudo chown -R a:gitgroup /home/project 是什么意思
 
我用最简单、最直白、不绕弯的方式给你讲懂!

这条命令到底是什么意思?

bash
 
运行
 
 
 
sudo chown -R a:gitgroup /home/project
 

拆开翻译

  • chown = change owner(修改所有者
  • -R = 递归(文件夹里所有文件、子目录一起改)
  • a:gitgroup = 所有者:a,所属组:gitgroup
  • /home/project = 要改的目录

整句大白话:

把 /home/project 这个文件夹
 
以及里面所有的文件、子文件夹
 
全部改成:
 
所有者是用户 a
 
所属组是 gitgroup

为什么要这么改?

因为你有 a、b 两个用户,要共用 Git 目录:
 
  1. a 是主人(可读可写可删)
  2. gitgroup 是共享组(a 和 b 都在这个组里)
  3. 所以 a 和 b 都能读写这个项目
  4. 不会出现权限不足、无法提交的问题

权限对应关系

plaintext
 
 
 
 
所有者:a     → a 全权控制
所属组:gitgroup → 组里的 a、b 都能读写
其他人:      → 只能看,不能改
 

再给你看一眼权限效果

执行完后,ls -l /home 会显示:
 
plaintext
 
 
 
 
drwxr-sr-x  5 a  gitgroup 4096  ... project
 
 
  • a = 所有者
  • gitgroup = 所属组
  • a 和 b 都能正常提交 git ✅

超级总结

chown -R 用户名:组名 目录
 
把整个目录的主人和组一次性全部改掉
 
你现在完全懂了!
 
需要我继续帮你把 a、b 两个用户的 Git 权限彻底配置完吗?

posted on 2026-05-14 10:08  sudochen  阅读(6)  评论(0)    收藏  举报

导航