Linux环境下GitLab权限管理设置指南
在开始权限设置前,需确保GitLab已正确安装在Linux服务器上(如Ubuntu/CentOS),并完成初始化配置(如设置external_url、调整服务运行用户为git等)。可通过sudo gitlab-ctl reconfigure应用配置并重启服务。
sudo gitlab-rake gitlab:create_user[username,email,password] # 例如:sudo gitlab-rake gitlab:create_user[testuser,test@example.com,Test@123]
sudo gitlab-rake gitlab:create_group[group_name] # 例如:sudo gitlab-rake gitlab:create_group[dev-team]
sudo gitlab-rake gitlab:add_user_to_group[user_id,group_id,access_level] # 例如:sudo gitlab-rake gitlab:add_user_to_group[1,2,30](30对应Developer角色)
组内用户可继承组的权限,适用于团队协作场景。GitLab采用**RBAC(基于角色的访问控制)**模型,定义了5种核心角色,覆盖从访客到所有者的权限范围:
项目级权限是GitLab权限管理的核心,需通过Web界面完成:
main),设置允许的操作:
组是权限批量管理的工具,适用于团队或部门:
对于企业用户,可通过LDAP/AD实现统一身份认证与权限管理:
/etc/gitlab/gitlab.rb,启用LDAP并配置参数:gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'LDAP'
host: 'ldap.example.com'
port: 389
uid: 'uid'
method: 'plain'
bind_dn: 'cn=admin,dc=example,dc=com'
password: 'your_password'
user_search_base: 'ou=users,dc=example,dc=com'
user_search_filter: '(uid=%{username})'
EOS
sudo gitlab-ctl reconfigure重启GitLab,即可通过LDAP账号登录并继承AD组权限。通过.gitlab-ci.yml文件的rules关键字,可限制特定用户或组触发CI/CD作业:
test_job:
stage: test
script: echo "Running tests..."
rules:
- if: '$CI_PIPELINE_SOURCE == "push" && $GITLAB_USER_LOGIN == "maintainer"'
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: manual
上述配置仅允许maintainer用户推送代码触发测试作业,或通过merge request手动触发。
main、develop等核心分支启用保护,限制推送/合并权限。