ubuntu上gitlab权限如何设置
小樊
44
2025-12-18 19:22:26
Ubuntu 上 GitLab 权限设置指南
一 系统与服务权限
- 确认 GitLab 以专用系统用户 git:git 运行,数据目录归属正确,避免权限错乱导致 Runner、备份、日志等组件异常。
- 查看与修正数据目录归属:
- sudo chown -R git:git /var/opt/gitlab
- sudo chmod -R u=rwX,go=rX /var/opt/gitlab
- 仅开放必要端口,避免安全风险:
- sudo ufw allow 80,443,22/tcp
- sudo ufw enable && sudo ufw status
- 如启用安全模块,确保策略允许 GitLab(不建议直接长期关闭 SELinux/AppArmor,必要时仅做临时排障):
- getenforce(返回 Enforcing 为开启)
- sudo aa-status(查看 AppArmor 状态)
- 修改 /etc/gitlab/gitlab.rb 后需应用配置并重启相关服务:
- sudo gitlab-ctl reconfigure
- sudo gitlab-ctl restart
- 排查权限/访问问题时优先查看日志:
- sudo gitlab-ctl tail
- sudo gitlab-ctl tail nginx/gitlab_access.log
二 项目与组成员权限
- 角色与能力速览(项目级):
- Guest:创建 Issue、发表评论,不能读写代码
- Reporter:可 克隆 代码,不能提交
- Developer:克隆、开发、Push、创建 Merge Request
- Maintainer:可创建项目、打 Tag、管理 保护分支、添加成员、编辑项目设置
- Owner:最高权限,管理组成员、可见性、迁移/删除项目
- 推荐授权流程
- 创建 Group(如:team-alpha),设置组可见性(Private/Internal/Public)
- 在 Group 下创建 Project,统一在 Group 层添加成员并分配角色(便于继承与批量授权)
- 进入 Project → Settings → Members 添加用户/组,选择角色;必要时在 Settings → Repository → Protected branches 配置保护分支与允许推送/合并的角色
- 对外部协作可使用 Deploy Key(只读或读写)或 CI/CD 变量/Runner 的受限令牌,避免直接赋予高权限账号
三 SSH 与本地客户端权限
- 确保本地私钥权限最小化,避免 Git 操作被拒或安全风险:
- chmod 600 ~/.ssh/id_rsa
- chmod 644 ~/.ssh/id_rsa.pub
- 如服务器 SSH 端口非 22,在客户端使用:
- git clone ssh://git@your-domain.com:PORT/namespace/project.git
- 或在 ~/.ssh/config 中配置 Host 别名指定端口
- 服务器侧保持 git 用户仅用于 Git 操作,不要为其设置可登录 Shell(Omnibus 默认已配置);如需排查,可用 sudo gitlab-rails console 进入控制台进行用户/权限核验
四 备份与恢复的安全权限
- 备份目录默认在 /var/opt/gitlab/backups,确保运行 GitLab 的系统用户对备份目录具备读写权限;必要时在 /etc/gitlab/gitlab.rb 中调整 gitlab_rails[‘backup_path’] 并重新配置。
- 创建备份(会在备份目录生成时间戳 .tar 包):
- sudo gitlab-rake gitlab:backup:create
- 恢复时建议先停止数据相关服务,恢复完成后再启动,避免写入冲突:
- gitlab-ctl stop unicorn
- gitlab-ctl stop sidekiq
- sudo gitlab-rake gitlab:backup:restore BACKUP=YYYY_MM_DD_HHMMSS_gitlab_version
- gitlab-ctl start
- 注意:备份文件包含敏感数据,设置合适的文件系统权限与访问控制,仅允许 git 用户及必要管理员访问