確保GitLab服務以專用用戶(如git)運行,避免權限沖突。若未創建,可使用以下命令:
sudo groupadd git # 創建git組
sudo useradd -g git -s /bin/bash -d /home/git -m git # 創建git用戶并關聯組
sudo passwd git # 設置git用戶密碼(可選)
將需要訪問GitLab的系統用戶加入git組(如developer用戶):
sudo usermod -aG git developer
GitLab的核心數據目錄(如/var/opt/gitlab)需歸屬git用戶及組,且權限設置為755(允許所有者讀寫執行,其他用戶讀執行):
sudo chown -R git:git /var/opt/gitlab # 遞歸修改所有者
sudo chmod -R 755 /var/opt/gitlab # 遞歸設置權限
若使用自定義數據目錄(如/home/git/gitlab),需同步調整:
sudo chown -R git:git /home/git/gitlab
sudo chmod -R 755 /home/git/gitlab
GitLab的主配置文件(/etc/gitlab/gitlab.rb)需由git用戶擁有,防止未經授權的修改:
sudo chown git:git /etc/gitlab/gitlab.rb
sudo chmod 644 /etc/gitlab/gitlab.rb
修改配置后,需重新加載配置并重啟GitLab服務:
sudo gitlab-ctl reconfigure # 應用配置變更
sudo gitlab-ctl restart # 重啟服務
若使用Nginx作為反向代理,需確保Nginx用戶(默認nginx)有權訪問GitLab的靜態文件(如上傳的附件、靜態資源):
sudo usermod -aG git nginx # 將nginx用戶加入git組
sudo chown -R git:git /var/opt/gitlab/uploads # 修改上傳目錄權限
重啟Nginx使變更生效:
sudo systemctl restart nginx
若系統啟用了SELinux(sestatus顯示Enforcing),需調整策略允許GitLab運行:
sudo setenforce 0
/etc/selinux/config,將SELINUX=enforcing改為SELINUX=permissive,然后重啟系統。semanage命令設置正確的上下文。通過GitLab Web界面管理項目權限,常見角色及權限如下:
設置步驟:
為確保安全的Git訪問,建議使用SSH密鑰認證:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
~/.ssh/id_rsa.pub)添加到GitLab用戶賬戶:
ssh -T git@your-gitlab-domain.com
確保防火墻允許HTTP(80)和HTTPS(443)流量,以便用戶通過瀏覽器訪問GitLab:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
通過以上步驟,可解決CentOS系統下GitLab的常見權限問題。若仍遇到問題,可通過GitLab日志(/var/log/gitlab/gitlab-rails/production.log)排查具體錯誤。