在 GitLab + Linux 场景下,“权限怎么设”通常分 3 层来看,不同层职责不同。下面按 最常见场景给你一个清晰、可落地的说明。
GitLab 默认使用 git 用户运行(尤其是仓库相关操作)。
ps aux | grep gitlab
# 或
id git
✅ 不要随意把 GitLab 目录改成 root 或你的个人用户。
/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 777git 用户 + SSH key 校验# 查看 git 用户
cat /etc/passwd | grep git
用户只需要:
git@your-gitlab.com:xxx.git✅ 不需要给普通用户 shell 权限
这是最常用、最重要的部分。
| 权限 | 说明 |
|---|---|
| Guest | 仅查看 issue、wiki |
| Reporter | 可 clone、查看代码 |
| Developer | 可 push、创建分支 |
| Maintainer | 可保护分支、配置项目 |
| Owner | 删除项目、成员管理 |
✅ 设置路径:
Project → Settings → Members
最佳实践:用 Group 管理权限
Group (dev-team)
├── project A
├── project B
设置一次,所有项目生效。
✅ 操作:
Group → Group Information → Members
防止误删、误推 main / master
Project → Settings → Repository → Protected Branches
建议配置:
| 项目 | 说明 |
|---|---|
| GitLab Admin | 管理用户、项目、系统设置 |
| Linux root | 操作系统级别 |
Admin → Users → 用户 → Edit → ✅ Admin
sudo gitlab-rails console
u = User.find_by(username: 'root')
u.admin = true
u.save!
# SSH
ssh -T git@your-gitlab.com
# 检查 key
cat ~/.ssh/id_rsa.pub
Linux 管运行,GitLab 管权限,SSH 管访问
如果你愿意,可以告诉我:
我可以给你 精确到命令级别的配置方案。