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及项目配置,避免配置丢失。