温馨提示×

GitLab Linux权限怎么设

小樊
49
2026-08-13 05:17:40
栏目: 智能运维

GitLab + Linux 场景下,“权限怎么设”通常分 3 层来看,不同层职责不同。下面按 最常见场景给你一个清晰、可落地的说明。


一、操作系统层(Linux 用户 / 目录权限)

1️⃣ GitLab 运行用户

GitLab 默认使用 git 用户运行(尤其是仓库相关操作)。

ps aux | grep gitlab
# 或
id git

不要随意把 GitLab 目录改成 root 或你的个人用户。


2️⃣ GitLab 关键目录建议权限

常见目录

/var/opt/gitlab          # GitLab 数据(rpm/deb 安装)
/var/opt/gitlab/git-data # 仓库数据
/var/log/gitlab
/etc/gitlab

推荐权限

# 目录属主
sudo chown -R git:git /var/opt/gitlab/git-data

# 目录权限
sudo chmod -R 755 /var/opt/gitlab/git-data

❌ 不建议:

  • /var/opt/gitlab 777
  • 用 root 直接操作仓库目录

3️⃣ SSH 方式访问 Git(最常见)

用户权限

  • 不需要 Linux 系统账号
  • GitLab 用 git 用户 + SSH key 校验
# 查看 git 用户
cat /etc/passwd | grep git

用户只需要:

  • 在 GitLab 页面添加 SSH Key
  • 使用 git@your-gitlab.com:xxx.git

不需要给普通用户 shell 权限


二、GitLab 应用层权限(Web 权限)

这是最常用、最重要的部分。

1️⃣ 项目权限级别

权限 说明
Guest 仅查看 issue、wiki
Reporter 可 clone、查看代码
Developer 可 push、创建分支
Maintainer 可保护分支、配置项目
Owner 删除项目、成员管理

✅ 设置路径:

Project → Settings → Members

2️⃣ 组(Group)权限(推荐)

最佳实践:用 Group 管理权限

Group (dev-team)
 ├── project A
 ├── project B

设置一次,所有项目生效。

✅ 操作:

Group → Group Information → Members

3️⃣ 保护分支(非常重要)

防止误删、误推 main / master

Project → Settings → Repository → Protected Branches

建议配置:

  • Allowed to push: Maintainers
  • Allowed to merge: Everyone / Developers

三、管理员权限(sudo / root)

1️⃣ GitLab 管理员 ≠ Linux root

项目 说明
GitLab Admin 管理用户、项目、系统设置
Linux root 操作系统级别

2️⃣ 给 GitLab 用户管理员权限

Admin → Users → 用户 → Edit → ✅ Admin

3️⃣ GitLab 管理员找回(忘记管理员)

sudo gitlab-rails console
u = User.find_by(username: 'root')
u.admin = true
u.save!

四、常见典型场景配置建议

✅ 场景 1:普通开发团队

  • Group
  • Developer 可 push
  • Maintainer 管理分支
  • 禁止直接 push main

✅ 场景 2:只拉代码,不提交

  • Reporter 权限
  • 或 Private Token
  • 或 Deploy Token

✅ 场景 3:CI / CD

  • Project Access Token
  • 不要用个人账号

五、快速排查权限问题

拉代码报 403 / Permission denied

# SSH
ssh -T git@your-gitlab.com

# 检查 key
cat ~/.ssh/id_rsa.pub

Web 访问报 403

  • 项目是否 Private
  • 用户是否在 Members 中

六、总结一句话

Linux 管运行,GitLab 管权限,SSH 管访问

如果你愿意,可以告诉我:

  • 源码安装 / Omnibus / Docker
  • 遇到什么具体报错
  • 是个人用还是公司团队

我可以给你 精确到命令级别的配置方案。

0