在 Linux 上部署的 GitLab 中,“设置权限”要看你指的是 系统级权限 还是 GitLab 内部权限。下面按常见场景给你一个完整说明。
在 GitLab 项目 → Members 中,可设置 5 种角色:
| 角色 | 权限说明 |
|---|---|
| Guest | 只能查看 issue、部分代码 |
| Reporter | 可查看、下载代码,不能提交 |
| Developer | 可提交代码、创建分支 |
| Maintainer | 可管理分支、合并、CI、成员 |
| Owner | 项目最高权限(仅项目创建者/管理员) |
✅ 推荐做法
Web 页面操作:
Project → Manage → Members → Invite member
命令行(GitLab API):
curl --request POST \
--header "PRIVATE-TOKEN: <your_token>" \
"https://gitlab.example.com/api/v4/projects/PROJECT_ID/members" \
--data "user_id=USER_ID&access_level=30"
access_level 对应:
防止直接 push 到 main / master:
Project → Settings → Repository → Protected branches
可设置:
✅ 推荐
管理员设置:
Admin → Settings → General → Account and limit
取消:
GitLab 默认使用:
git
查看:
ps aux | grep gitlab
⚠️ 不要直接修改 git 用户权限或目录权限
常用目录:
/var/opt/gitlab # 数据
/etc/gitlab # 配置
/var/log/gitlab # 日志
正确权限(不要随意 chmod 777):
sudo chown -R git:git /var/opt/gitlab
ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub
粘贴到:
GitLab → User → Preferences → SSH Keys
/var/opt/gitlab/.ssh/authorized_keys
(由 GitLab 自动管理,不要手动改)
sudo gitlab-rails console
user = User.find_by(username: 'your_user')
user.admin = true
user.save!
管理员可:
✅ 项目权限
✅ 系统权限
如果你愿意,可以告诉我:
我可以给你更精确的配置方案。