GitLab在Debian上的权限管理需结合系统级权限(用户/组、文件系统、SSH)与GitLab应用级权限(角色分配、项目/组访问控制)两部分,以下是具体步骤:
GitLab需以专用用户(如git)运行,避免使用root账户。执行以下命令创建:
sudo addgroup git # 创建git组
sudo adduser --system --group --disabled-login --home /var/opt/gitlab git # 创建git用户(禁用登录,指定家目录)
这一步确保GitLab进程以非特权用户身份运行,降低安全风险。
GitLab的核心数据目录(/var/opt/gitlab)需归属git用户及组,并设置合理权限:
sudo chown -R git:git /var/opt/gitlab # 将数据目录归属给git用户/组
sudo chmod -R 755 /var/opt/gitlab # 允许所有者读写执行,其他用户仅读执行
若使用Nginx/Apache作为反向代理,需确保其用户(如www-data)有权访问静态文件:
sudo chown -R www-data:www-data /var/opt/gitlab/nginx/html # Nginx静态文件目录
日志目录(/var/log/gitlab)也需类似配置,确保GitLab进程可写入日志。
若用户通过SSH克隆/推送代码,需为git用户配置SSH密钥认证:
sudo su - git # 切换至git用户
ssh-keygen -t rsa -b 4096 -C "git@example.com" # 生成SSH密钥(无密码)
cat ~/.ssh/id_rsa.pub # 复制公钥内容
将公钥添加至GitLab用户的SSH密钥设置(Web界面:Settings -> SSH Keys),实现免密码登录。
通过浏览器访问GitLab(http://your_server_ip),使用默认管理员账户(root)登录。首次登录需设置root密码(密码文件位于/etc/gitlab/initial_root_password,首次登录后需删除该文件)。
Groups -> New group,填写组名(如dev-team)、描述,点击Create group。Users -> New user,填写用户名、邮箱、密码,勾选“Send email invitation”(可选),点击Create user。GitLab通过角色控制用户对项目/组的访问权限,常见角色及权限如下:
分配项目权限:
进入项目页面,点击Settings -> Members,输入用户/组名称,选择角色(如Developer),点击Invite即可。
分配组权限:
组权限会继承至组内所有项目。进入组页面,点击Settings -> Members,添加用户并分配角色(如Maintainer),实现批量权限管理。
若企业使用LDAP(如Active Directory),可通过GitLab配置LDAP身份验证,统一管理用户权限:
编辑/etc/gitlab/gitlab.rb,添加以下配置:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'LDAP'
host: 'ldap.example.com'
port: 389
uid: 'uid' # LDAP用户标识字段(如uid、cn)
method: 'plain' # 认证方式(plain、ssl、start_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使配置生效。
使用UFW限制GitLab访问端口(默认80/443),仅允许可信IP访问:
sudo ufw allow from 192.168.1.0/24 to any port 80 # 允许内网IP访问HTTP
sudo ufw allow from 192.168.1.0/24 to any port 443 # 允许内网IP访问HTTPS
sudo ufw enable # 启用防火墙
通过以上步骤,可完成GitLab在Debian上的权限管理设置,实现系统级安全与GitLab应用级权限的协同控制。