在配置权限前,需确保GitLab已正确安装在Linux服务器上(如Ubuntu/CentOS)。安装完成后,启动GitLab服务并设置开机自启:
sudo systemctl start gitlab-runsvdir
sudo systemctl enable gitlab-runsvdir
访问http://服务器IP完成初始配置(设置root用户密码等)。
权限管理的第一步是创建用户和组,并将用户添加到对应组中:
# 命令行创建用户(用户名:dev1,密码:123456,邮箱:dev1@example.com)
sudo gitlab-rake gitlab:create_user[dev1,dev1@example.com,123456] --trace
# 命令行创建组(组名:dev-team)
sudo gitlab-rake gitlab:create_group[dev-team]
# 获取用户ID和组ID(通过Web界面“用户/组”页面查看,或命令行查询)
USER_ID=$(sudo gitlab-rake gitlab:get_user_id[dev1])
GROUP_ID=$(sudo gitlab-rake gitlab:get_group_id[dev-team])
# 添加用户到组(默认角色:Guest)
sudo gitlab-rake gitlab:add_user_to_group[$USER_ID,$GROUP_ID]
GitLab通过角色控制用户对项目/组的访问权限,分为项目级和组级两类:
| 角色 | 权限说明 |
|---|---|
| Guest | 仅能查看公开项目,创建issue、发表评论,无法读写代码。 |
| Reporter | 可克隆项目、查看代码,提交issue,无法推送代码。 |
| Developer | 可克隆、推送代码,创建分支、合并请求(MR),参与项目开发。 |
| Maintainer | 拥有Developer所有权限,可管理项目设置(如保护分支、设置标签)、添加成员。 |
| Owner | 项目最高权限,可转让项目所有权、删除项目。 |
通过Web界面或命令行为用户/组分配项目权限:
# 为用户分配项目角色(用户:dev1,项目:my-project,角色:Developer)
sudo gitlab-rake gitlab:set_user_project_role[dev1,my-project,Developer]
# 为组分配项目角色(组:dev-team,项目:my-project,角色:Maintainer)
sudo gitlab-rake gitlab:set_group_project_role[dev-team,my-project,Maintainer]
组权限设置需先创建组,再将用户添加到组中,组的权限会自动应用到组内所有项目:
# 创建私有组(组名:dev-team,可见性:private)
sudo gitlab-rake gitlab:create_group[dev-team,private]
# 获取组ID(通过Web界面“组”页面查看,或命令行查询)
GROUP_ID=$(sudo gitlab-rake gitlab:get_group_id[dev-team])
# 添加用户到组并分配Maintainer角色(用户:dev1)
sudo gitlab-rake gitlab:add_user_to_group[$(sudo gitlab-rake gitlab:get_user_id[dev1]),$GROUP_ID,Maintainer]
权限设置需配合安全措施,确保只有授权用户能访问GitLab:
# 用户本地生成SSH密钥(若未生成)
ssh-keygen -t rsa -b 4096 -C "dev1@example.com"
# 复制公钥到GitLab(通过Web界面“用户设置” → “SSH Keys”)
cat ~/.ssh/id_rsa.pub
sudo ufw allow 80
sudo ufw allow 443
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-gitlab-domain.com
设置完成后,需通过不同用户账户登录GitLab,验证权限是否符合预期:
dev1用户登录,尝试克隆项目(应成功,因Developer角色有推送权限):git clone git@your-gitlab-domain.com:dev-team/my-project.git
main分支,需Maintainer及以上角色才能推送),验证权限控制是否有效。通过以上步骤,可在Linux环境下完成GitLab的权限设置,实现用户/组的精细化访问控制。权限设置需遵循最小权限原则,仅授予用户完成工作所需的最低权限,定期审查权限设置以避免安全风险。