CentOS系統下GitLab權限設置方法
確保GitLab核心數據目錄(默認/var/opt/gitlab
)的所有者和權限正確,避免未授權訪問:
sudo chown -R git:git /var/opt/gitlab # 將目錄所有者設為git用戶及組
sudo chmod -R 755 /var/opt/gitlab # 設置目錄權限為755(所有者可讀寫執行,其他用戶可讀執行)
GitLab默認以git
用戶運行,需確認服務配置中的用戶設置:
編輯/etc/gitlab/gitlab.rb
,檢查以下參數是否為git
:
gitlab_rails['git_user'] = 'git' # Git操作對應的系統用戶
gitlab_rails['git_group'] = 'git' # Git操作對應的系統組
修改后執行sudo gitlab-ctl reconfigure
應用配置。
若系統開啟SELinux,需調整策略以避免攔截GitLab操作:
sudo setenforce 0 # 臨時關閉SELinux(測試用)
# 或通過semanage調整策略(永久生效,需安裝policycoreutils-python)
sudo semanage fcontext -a -t git_repo_t "/var/opt/gitlab(/.*)?"
sudo restorecon -Rv /var/opt/gitlab
GitLab采用RBAC(基于角色的訪問控制)模型,權限分為實例級(全局)和項目級(具體項目)兩類:
GitLab預定義5種核心角色,覆蓋不同層級的操作權限:
角色 | 權限范圍 |
---|---|
Guest | 僅能查看項目、創建issue/評論;無法讀寫代碼倉庫。 |
Reporter | 可克隆代碼、查看issue/CI結果;無法推送代碼或修改項目內容。 |
Developer | 可克隆、推送代碼、創建分支/標簽;無法管理項目或成員。 |
Maintainer | 可管理項目(添加成員、編輯描述、保護分支)、創建標簽、觸發CI/CD;核心開發負責人角色。 |
Owner | 擁有項目完全控制權(刪除項目、遷移項目、管理組成員、設置項目可見性);實例管理員角色。 |
通過Web界面為具體項目分配用戶角色:
Guest
(可通過Settings
→General
→Sign-up restrictions
修改默認角色)。Private
僅成員可見、Internal
登錄用戶可見、Public
所有人可見)。限制特定用戶或角色對分支的推送/合并操作,防止誤操作或未授權修改:
main
),設置:
通過MR流程規范代碼合并,確保代碼質量:
若企業使用LDAP(如Active Directory),可將GitLab與LDAP同步,通過LDAP組管理GitLab權限:
/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' => 'your_ldap_password', # LDAP管理員密碼
'user_search_base' => 'ou=users,dc=example,dc=com', # 用戶搜索基礎DN
'group_search_base' => 'ou=groups,dc=example,dc=com', # 組搜索基礎DN
'ldap_group_sync_strategy' => 'group' # 同步策略(group/attribute)
}
}
sudo gitlab-ctl reconfigure
同步LDAP組。dev-team
映射至Developer
角色),實現統一權限管理。