在 Linux 上配置 GitLab 的权限,通常分为几个层面:系统/文件权限、GitLab 用户与角色权限、项目/组权限、以及 SSH/HTTPS 访问权限。下面按常见场景给你梳理。
GitLab 默认使用 git 用户运行:
ps aux | grep gitlab
不要手动改 /var/opt/gitlab 或 /home/git 的属主,否则会出权限问题。
/var/opt/gitlab # GitLab 数据
/var/log/gitlab # 日志
/etc/gitlab # 配置
如需修改,建议:
sudo chown -R git:git /var/opt/gitlab
GitLab 权限核心在 用户 + 组 + 项目。
| 角色 | 权限说明 |
|---|---|
| Guest | 只读,不能 push |
| Reporter | 拉代码、提 issue |
| Developer | 可 push、建分支 |
| Maintainer | 管理项目、成员 |
| Owner | 最高权限(组/项目) |
添加成员:
Project → Members → Invite member
Groups → New group
✅ 最佳实践:
用 Group 管理权限,不要每个项目单独配
Project → Repository → Branches → Protected branches
常见配置:
main / master:仅 Maintainer 可 pushAllowed to push: Maintainers
Allowed to merge: Developers + Maintainers
用户自己添加:
User → Preferences → SSH Keys
查看已注册 key:
cat /home/git/.ssh/authorized_keys
sudo vim /etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
rootAdmin Area → Users / Groups / Projects
remote: GitLab: You are not allowed to push code to protected branches
✅ 解决:提 MR 或让 Maintainer 放开分支
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
Group: backend
├─ Maintainer: 技术负责人
├─ Developer: 普通开发
├─ Guest: 测试/产品
Project:
├─ main 分支保护
├─ 开发走 feature → MR
如果你能具体说一下:
我可以直接给你一份「可复制的配置方案」。