GitLab在Linux上的权限设置指南
在Linux系统中,需先创建专用用户和组来运行GitLab服务及管理权限,避免使用root用户直接操作,提升安全性。
git
用户及同名的组,并设置家目录:sudo groupadd git
sudo useradd -g git git
sudo mkdir -p /home/git
sudo chown git:git /home/git
gitlab-devs
),并将开发人员用户添加至该组:sudo groupadd gitlab-devs
sudo usermod -aG gitlab-devs user1 # 将user1添加至gitlab-devs组
sudo usermod -aG gitlab-devs user2
通过修改GitLab主配置文件/etc/gitlab/gitlab.rb
,调整服务运行权限及数据目录访问控制。
unicorn['user'] = 'git'
unicorn['group'] = 'git'
nginx['user'] = 'www-data' # Nginx运行用户(根据实际调整)
postgresql['user'] = 'postgres' # 数据库用户
/var/opt/gitlab/git-data
)的所有者和权限,确保git
用户有读写权限,组用户可读取:git_data_dirs({
"default" => {
"path" => "/var/opt/gitlab/git-data",
"owner" => "git",
"group" => "git",
"permissions" => "0750" # 所有者rwx,组rx,其他无权限
}
})
sudo gitlab-ctl reconfigure # 重新配置GitLab
sudo gitlab-ctl restart # 重启服务
GitLab通过内置角色和**访问控制列表(ACL)**实现细粒度权限管理,覆盖项目、组及实例级别。
GitLab定义了5种核心角色,权限从低到高排列:
通过Web界面为项目添加成员并分配角色:
将多个用户加入同一组,统一分配权限,适用于团队协作:
frontend-team
)。通过Protected Branches功能,限制关键分支(如main
)的推送/合并权限,防止误操作:
main
),设置:
强制使用SSH密钥进行身份验证,避免密码泄露风险:
ssh-keygen -t rsa -b 4096 -C "user@example.com"
~/.ssh/id_rsa.pub
)内容复制至GitLab账户的Profile Settings → SSH Keys中。对于企业用户,可通过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' # LDAP用户唯一标识字段
method: 'plain' # 认证方式(plain/ssl/tls)
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
user_search_filter: '(uid=%{username})' # 用户搜索过滤器
EOS
sudo gitlab-ctl reconfigure
重启GitLab,实现LDAP用户同步。main
、release
等分支启用合并保护,仅允许审核通过后合并。