如何在Ubuntu上设置GitLab权限
小樊
45
2025-11-15 04:15:22
Ubuntu上设置 GitLab 权限的完整指南
一 系统与服务账户权限
- 使用专用的系统账户运行 GitLab,确保目录与进程权限正确,避免越权访问。
- 编辑配置文件:sudo vim /etc/gitlab/gitlab.rb
- 建议显式指定运行用户与组:
- gitlab_rails[‘gitlab_shell_user’] = ‘git’
- gitlab_rails[‘gitlab_shell_group’] = ‘git’
- 修正数据目录属主与权限:
- sudo chown -R git:git /var/opt/gitlab
- sudo chmod -R 755 /var/opt/gitlab
- 应用配置并重启相关服务:
- sudo gitlab-ctl reconfigure
- sudo gitlab-ctl restart
- 说明:Omnibus 包默认使用 git 用户与组;如曾改动运行用户,需同步调整相应目录属主与 sudoers 规则。
二 防火墙与端口访问权限
- 开放 GitLab 所需端口(HTTP/HTTPS/SSH):
- sudo ufw allow 80
- sudo ufw allow 443
- sudo ufw allow 22
- 如使用 HTTPS,建议配置域名与证书(可用 Let’s Encrypt):
- external_url “https://gitlab.example.com”
- letsencrypt[‘enable’] = true
- 执行:sudo gitlab-ctl reconfigure
- 说明:确保云厂商安全组/本机防火墙同步放行,避免端口被拦截。
三 项目与组角色权限
- 角色与能力速览(由低到高):
- Guest:创建 Issue、发表评论,不能读写仓库
- Reporter:可克隆代码,不能提交
- Developer:可克隆、开发、提交、推送
- Maintainer:可创建项目、打 Tag、配置受保护分支、添加成员、编辑项目
- Owner:可设置访问权限与可见性、删除/迁移项目、管理组成员
- 配置路径与操作要点:
- 创建 Group → 在 Group 下创建 Project
- 项目:Settings → Members 添加用户/组并分配角色
- 项目:Settings → Repository → Protected branches 配置分支保护策略(谁能 push/merge、是否需要代码审查)
- 说明:通过“组+项目+受保护分支+角色”的组合,可覆盖大多数团队协作与合规需求。
四 SSH 与本地客户端权限
- 生成并分发 SSH 密钥(服务器端常见做法):
- 客户端生成:ssh-keygen -t rsa -b 4096
- 将公钥(~/.ssh/id_rsa.pub)添加到 GitLab 用户账户的 SSH Keys
- 本地私钥权限必须严格:
- 克隆与推送示例:
- SSH:git clone git@your_server_ip:username/project_name.git
- HTTPS:git clone https://your_server_ip/username/project_name.git
- 说明:错误的私钥权限会导致 SSH 认证失败,务必保持私钥为 600。
五 安全加固与排错
- 安全模块与策略:
- 如启用 SELinux/AppArmor,需为 GitLab 配置相应策略或临时置于宽松/投诉模式以便排查
- 示例:sudo aa-complain /etc/apparmor.d/usr.sbin.gitlab-runsvdir
- 日志与诊断:
- 查看整体状态:sudo gitlab-ctl status
- 实时查看日志:sudo gitlab-ctl tail
- 定位组件日志:sudo gitlab-ctl tail nginx/gitlab_access.log
- 备份与恢复(权限合规的重要保障):
- 创建备份:gitlab-rake gitlab:backup:create
- 说明:遇到权限相关问题时,优先检查服务状态与日志,再回溯配置与系统权限。