温馨提示×

linux gitlab怎么设置权限

小樊
47
2026-08-13 08:55:52
栏目: 智能运维

Linux 上部署的 GitLab 中,“设置权限”要看你指的是 系统级权限 还是 GitLab 内部权限。下面按常见场景给你一个完整说明。


一、GitLab 用户与项目权限(最常见)

1️⃣ 用户角色与权限(项目级)

GitLab 项目 → Members 中,可设置 5 种角色:

角色 权限说明
Guest 只能查看 issue、部分代码
Reporter 可查看、下载代码,不能提交
Developer 可提交代码、创建分支
Maintainer 可管理分支、合并、CI、成员
Owner 项目最高权限(仅项目创建者/管理员)

推荐做法

  • 开发:Developer
  • 负责人:Maintainer
  • 临时人员:Reporter / Guest

2️⃣ 设置项目成员权限

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 对应:

  • 10 = Guest
  • 20 = Reporter
  • 30 = Developer
  • 40 = Maintainer

二、GitLab 仓库 / 分支权限

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

防止直接 push 到 main / master:

Project → Settings → Repository → Protected branches

可设置:

  • Allowed to push:No one / Maintainers / Developers
  • Allowed to merge:Maintainers / Developers

推荐

  • main 分支:只允许 Merge Request
  • 禁止直接 push

2️⃣ 禁止普通用户创建项目

管理员设置:

Admin → Settings → General → Account and limit

取消:

  • ✅ Allow users to create projects

三、Linux 系统层面的权限(服务器)

1️⃣ GitLab 运行用户

GitLab 默认使用:

git

查看:

ps aux | grep gitlab

⚠️ 不要直接修改 git 用户权限或目录权限


2️⃣ GitLab 数据目录权限

常用目录:

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

正确权限(不要随意 chmod 777):

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

3️⃣ SSH 访问权限(代码拉取/提交)

用户侧

ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub

粘贴到:

GitLab → User → Preferences → SSH Keys

服务器侧

/var/opt/gitlab/.ssh/authorized_keys

(由 GitLab 自动管理,不要手动改)


四、管理员权限设置

1️⃣ 提升用户为管理员

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

2️⃣ 管理员全局权限

管理员可:

  • 管理所有项目
  • 设置全局 CI/CD
  • 管理 LDAP / OAuth
  • 设置注册权限

五、常见权限问题排查

❌ 没权限 push

  • 不是 Developer 以上
  • 分支被保护
  • 使用 HTTPS 但 token 过期

❌ 没权限 clone

  • 项目是 Private
  • 没加 SSH key

六、推荐权限规范(企业常用)

✅ 项目权限

  • main 分支:仅 MR
  • Developer:可 push 开发分支
  • Maintainer:负责合并

✅ 系统权限

  • 禁止普通用户直接登录 GitLab 服务器
  • 使用 sudo 管理 gitlab-ctl

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

  • GitLab 版本
  • 是否企业版 / 社区版
  • 想限制的是:用户 / 分支 / 系统 / API

我可以给你更精确的配置方案。

0