linux

GitLab在Linux上的权限如何设置

小樊
39
2025-10-10 02:44:39
栏目: 智能运维

GitLab在Linux上的权限设置指南

一、基础环境准备:用户与组管理

在Linux系统中,GitLab的服务运行需专属用户/组,且项目目录需合理分配权限。

  1. 创建GitLab专用用户/组
    执行以下命令创建git用户及同名的组,并设置家目录:

    sudo groupadd git
    sudo useradd -g git git
    sudo mkdir -p /home/git
    sudo chown git:git /home/git
    

    此用户将用于运行GitLab服务及管理仓库文件。

  2. 配置GitLab运行用户
    编辑GitLab主配置文件/etc/gitlab/gitlab.rb,指定服务运行的用户/组:

    unicorn['user'] = 'git'
    unicorn['group'] = 'git'
    nginx['user'] = 'www-data'  # Nginx用户(默认)
    postgresql['user'] = 'postgres'  # 数据库用户
    

    保存后执行sudo gitlab-ctl reconfigure使配置生效。

二、GitLab配置文件权限设置

需确保GitLab数据、日志目录的权限正确,避免服务异常。

  1. 设置数据目录权限
    /etc/gitlab/gitlab.rb中配置数据目录(默认/var/opt/gitlab/git-data)的所有者、组及权限:
    git_data_dirs({
      "default" => {
        "path" => "/var/opt/gitlab/git-data",
        "owner" => "git",
        "group" => "git",
        "permissions" => "0755"  # 所有者可读写执行,组及其他用户可读执行
      }
    })
    
  2. 设置日志目录权限
    同样配置日志目录(默认/var/log/gitlab):
    git_log_dirs({
      "default" => {
        "path" => "/var/log/gitlab",
        "owner" => "git",
        "group" => "git",
        "permissions" => "0755"
      }
    })
    
    执行sudo gitlab-ctl reconfigure应用配置。

三、GitLab内置角色与权限分配

GitLab通过角色实现细粒度的权限控制,覆盖项目/组两个层级:

  1. 内置角色说明

    • Guest(访客):仅能查看公开项目、创建Issue及发表评论;
    • Reporter(报告者):可克隆代码、查看所有Issues/MRs(包括内部项目);
    • Developer(开发者):具备Reporter权限,可推送代码、创建分支、提交Merge Request;
    • Maintainer(维护者):具备Developer权限,可管理项目设置(如标签、里程碑)、添加项目成员;
    • Owner(所有者):拥有最高权限,可转让项目所有权、删除项目、管理组权限。
  2. 项目级权限设置

    • 登录GitLab Web界面,进入目标项目→点击左侧SettingsMembers
    • 输入用户名称,选择对应角色(如Developer),点击Invite即可分配权限。
  3. 组级权限设置

    • 创建组:通过GroupsNew group命名并设置可见性(Private/Internal/Public);
    • 添加成员:进入组→Members→输入用户名称,分配角色(如Developer);
    • 组内项目继承组权限,也可单独调整项目内成员角色。

四、项目级高级权限控制

  1. 项目可见性设置
    在项目SettingsGeneral中,修改Visibility

    • Public:任何人可访问(无需登录);
    • Internal:登录用户可访问;
    • Private:仅项目成员可访问。
  2. 分支保护规则
    进入项目SettingsRepositoryProtected Branches,选择需保护的分支(如main):

    • 设置Allowed to push(如Maintainer/Owner);
    • 设置Allowed to merge(如Maintainer/Owner);
    • 可勾选Require approval(需代码审核)或Require status checks to pass(需CI/CD通过)。

五、安全增强配置

  1. SSH密钥认证
    要求用户生成SSH密钥(ssh-keygen -t rsa -b 4096 -C "email@example.com"),将公钥(~/.ssh/id_rsa.pub)添加至GitLab账户→PreferencesSSH Keys,确保安全访问。

  2. 防火墙设置
    开放HTTP(80)及HTTPS(443)端口,允许外部访问:

    sudo firewall-cmd --permanent --zone=public --add-service=http
    sudo firewall-cmd --permanent --zone=public --add-service=https
    sudo firewall-cmd --reload
    
  3. SELinux配置(若启用)
    调整GitLab数据目录的SELinux上下文,避免权限拒绝:

    sudo chcon -Rv --reference=/var/www/html /var/opt/gitlab/git-data
    sudo chcon -Rv --reference=/var/log/httpd /var/log/gitlab
    

六、权限管理最佳实践

0
看了该问题的人还看了