CentOS中GitLab权限管理设置指南
在设置GitLab权限前,需确保系统目录、用户及服务的权限正确,避免因权限问题导致服务异常或安全隐患。
GitLab需以专用用户(默认git)运行,且数据目录需归属该用户。执行以下命令:
# 创建git用户(若未创建) sudo adduser git --system --shell /bin/bash --gecos 'Git Version Control' --disabled-login --home /var/opt/gitlab # 设置数据目录所有者(GitLab默认数据目录为/var/opt/gitlab) sudo chown -R git:git /var/opt/gitlab # 设置目录权限(755为推荐权限,确保git用户可读写,其他用户可读) sudo chmod -R 755 /var/opt/gitlab 编辑/etc/gitlab/gitlab.rb(GitLab主配置文件),确保其所有者为git用户:
sudo chown git:git /etc/gitlab/gitlab.rb 修改配置后需重新加载:
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart 若系统启用SELinux,需调整策略以避免拦截GitLab操作。临时关闭SELinux测试(生产环境建议配置正确策略):
sudo setenforce 0 查看SELinux状态:
sestatus 参考GitLab官方文档配置永久策略:GitLab SELinux配置。
允许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 GitLab权限管理主要通过角色分配、项目访问级别及分支保护实现,覆盖从用户到项目的精细化控制。
GitLab内置5种核心角色,每种角色对应不同的操作权限:
sudo useradd -m -s /bin/bash gitlab-user sudo passwd gitlab-user # 命令行创建(需进入gitlab-rails console) sudo gitlab-rails console user = User.new(username: 'new_user', email: 'new_user@example.com', password: 'password123', password_confirmation: 'password123') user.admin = false # 是否为管理员 user.save exit 为防止误操作,可设置保护分支(如main分支),限制推送/合并权限:
main),设置: 若企业使用LDAP(如Active Directory),可通过GitLab同步LDAP用户及组,实现集中权限管理:
/etc/gitlab/gitlab.rb,启用LDAP配置:gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = { 'main' => { 'label' => 'LDAP', 'host' => 'ldap.example.com', 'port' => 389, 'uid' => 'uid', # LDAP用户标识字段(如uid) 'bind_dn' => 'cn=admin,dc=example,dc=com', # LDAP管理员DN 'password' => 'ldap_password', # LDAP管理员密码 'user_search_base' => 'dc=example,dc=com', # 用户搜索基础DN 'user_search_filter' => '(uid=%{username})' # 用户搜索过滤器 } } gitlab_rails['ldap_group_sync_enabled'] = true gitlab_rails['ldap_group_base_dn'] = 'ou=groups,dc=example,dc=com' # 组搜索基础DN gitlab_rails['ldap_group_sync_strategy'] = 'group' # 同步策略(group/user) sudo gitlab-ctl reconfigure sudo gitlab-ctl restart /etc/gitlab/gitlab.rb及项目配置,避免配置丢失。