git)运行,避免权限过高导致安全风险。sudo adduser git --system --shell /bin/bash --gecos 'Git Version Control' --disabled-login --home /home/git
/var/opt/gitlab)需归属git用户及组,权限设为755(确保用户可读写执行,组及其他用户仅可读执行)。sudo chown -R git:git /var/opt/gitlab
sudo chmod -R 755 /var/opt/gitlab
/etc/gitlab/gitlab.rb)需由git用户拥有,防止未经授权的修改。sudo chown git:git /etc/gitlab/gitlab.rb
/etc/systemd/system/gitlab.service),确认User参数设置为git,确保服务以正确用户启动。[Service]
User=git
Group=git
修改后需重载Systemd并重启GitLab:sudo systemctl daemon-reload
sudo gitlab-ctl restart
GitLab通过角色分配实现细粒度的权限控制,主要角色及权限如下:
设置方法:
Settings -> Users,找到目标用户,点击Edit user,在Roles部分选择对应角色并保存。Settings -> Members,添加用户并分配角色(如Developer),可针对不同项目设置差异化权限。若企业使用LDAP(如Active Directory),可通过同步LDAP组实现集中权限管理:
/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_ldap_password'
user_search_base: 'dc=example,dc=com'
user_search_filter: '(uid=%{username})'
group_sync_enabled: true
group_sync_base_dn: 'ou=groups,dc=example,dc=com'
group_sync_strategy: 'group'
EOS
sudo gitlab-ctl reconfigure同步LDAP组,然后在GitLab中进入Settings -> Groups,将LDAP组映射到GitLab角色(如将Developers组映射为Developer角色)。若系统启用SELinux,需调整策略以避免GitLab被拦截:
sestatus
sudo setenforce 0
/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,重启系统生效。确保防火墙允许GitLab所需的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
以上步骤覆盖了CentOS上GitLab权限设置的核心环节,从基础系统权限到角色管理均进行了详细说明,可根据实际需求调整(如启用LDAP集成或调整SELinux策略)。