温馨提示×

linux gitlab配置权限怎么设

小樊
33
2026-09-10 10:34:18
栏目: 智能运维

在 Linux 上配置 GitLab 的权限,通常分为几个层面:系统/文件权限、GitLab 用户与角色权限、项目/组权限、以及 SSH/HTTPS 访问权限。下面按常见场景给你梳理。


一、Linux 系统层面的权限(服务器本身)

1. GitLab 运行用户

GitLab 默认使用 git 用户运行:

ps aux | grep gitlab

不要手动改 /var/opt/gitlab/home/git 的属主,否则会出权限问题。

2. 关键目录权限(一般不用改)

/var/opt/gitlab     # GitLab 数据
/var/log/gitlab     # 日志
/etc/gitlab         # 配置

如需修改,建议:

sudo chown -R git:git /var/opt/gitlab

二、GitLab 用户角色与权限(Web 端)

GitLab 权限核心在 用户 + 组 + 项目

1. 用户角色(Project / Group)

角色 权限说明
Guest 只读,不能 push
Reporter 拉代码、提 issue
Developer 可 push、建分支
Maintainer 管理项目、成员
Owner 最高权限(组/项目)

添加成员:

Project → Members → Invite member

三、组(Group)权限配置(推荐方式)

1. 创建组并设权限

Groups → New group

2. 在组中管理成员

  • 给不同人不同角色
  • 项目继承组权限

最佳实践

用 Group 管理权限,不要每个项目单独配


四、项目级权限控制

1. 分支保护(很重要)

Project → Repository → Branches → Protected branches

常见配置:

  • main / master:仅 Maintainer 可 push
  • Developer 只能提 Merge Request

2. 禁止 Developer 直接 push

Allowed to push: Maintainers
Allowed to merge: Developers + Maintainers

五、SSH / HTTPS 访问权限

1. SSH Key 配置

用户自己添加:

User → Preferences → SSH Keys

查看已注册 key:

cat /home/git/.ssh/authorized_keys

2. 禁用密码登录(推荐)

sudo vim /etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd

六、管理员权限(Admin)

1. 管理员账号

  • 安装时设置的 root
  • 或标记为 Admin 的用户

2. 管理员操作

Admin Area → Users / Groups / Projects

七、常见权限问题排查

1. push 被拒

remote: GitLab: You are not allowed to push code to protected branches

✅ 解决:提 MR 或让 Maintainer 放开分支

2. 403 / 无权限

  • 用户未加项目
  • SSH key 未绑定
  • 使用了错误账号

3. 文件权限错误

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

八、推荐权限模型(企业常用)

Group: backend
 ├─ Maintainer: 技术负责人
 ├─ Developer: 普通开发
 ├─ Guest: 测试/产品

Project:
 ├─ main 分支保护
 ├─ 开发走 feature → MR

如果你能具体说一下:

  • ✅ 是 GitLab CE / EE
  • ✅ 想控制 哪类权限(push / 分支 / 目录 / API)
  • ✅ 是 命令行还是 Web 配置

我可以直接给你一份「可复制的配置方案」。

0