GitLab的权限管理需结合系统级配置(用户/组、目录/文件权限)与应用级配置(项目/组角色分配),以下是具体步骤:
GitLab服务需以专用用户git(默认)运行,避免权限冲突。通过以下命令确认:
cat /etc/passwd | grep git # 应显示git用户的家目录为/home/git,shell为/bin/bash 若未创建,可通过以下命令添加:
sudo adduser --system --group --disabled-login --gecos '' git GitLab的核心数据目录为/var/opt/gitlab(包含仓库、配置、日志等),需归属git:git并设置合理权限:
sudo chown -R git:git /var/opt/gitlab # 归属git用户/组 sudo chmod -R 755 /var/opt/gitlab # 目录可读可执行(755),文件默认权限足够 编辑GitLab主配置文件/etc/gitlab/gitlab.rb,确保以下参数正确:
user['username'] = 'git' # 确认运行用户 user['group'] = 'git' # 确认运行组 git_data_dirs({ # 数据目录权限 "default" => { "path" => "/var/opt/gitlab/git-data", "permissions" => "755" } }) 应用配置:
sudo gitlab-ctl reconfigure # 重新加载配置 sudo gitlab-ctl restart # 重启服务 若用户通过SSH克隆/推送代码,需确保其~/.ssh目录及密钥文件权限正确:
chmod 700 ~/.ssh # 私有目录仅所有者可访问 chmod 600 ~/.ssh/id_rsa # 私钥文件严格限制(600) chmod 644 ~/.ssh/id_rsa.pub # 公钥文件可读(644) GitLab的权限分为角色(Owner/Admin/Developer/Reporter/Guest)和层级(项目/组),通过Web界面完成分配:
dev-team)→ 保存。Developer)→ 发送邀请。Owner(可管理项目设置、成员)→ 点击「Add member」。Developer(可推送/拉取代码)、Reporter(仅查看)、Guest(仅限读取)等角色。Admin角色(可管理整个GitLab实例)。若需通过LDAP(如Active Directory)统一管理用户权限,需编辑/etc/gitlab/gitlab.rb配置:
gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' main: label: 'LDAP' host: 'ldap.example.com' # LDAP服务器地址 port: 389 # 端口(默认389) uid: 'uid' # 用户标识字段(如uid、sAMAccountName) method: 'plain' # 认证方式(plain/simple) bind_dn: 'cn=admin,dc=example,dc=com' # LDAP管理员DN password: 'your_ldap_password' # LDAP管理员密码 user_search_base: 'ou=users,dc=example,dc=com' # 用户搜索基础DN user_search_filter: '(uid=%{username})' # 用户搜索过滤器 EOS 应用配置并重启:
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart sudo tail -f /var/log/gitlab/gitlab-rails/production.log 通过以上步骤,可完成Ubuntu系统下GitLab的权限设置,覆盖系统级基础权限与应用级角色分配,满足团队协作需求。