GitLab在Debian上的权限设置指南
GitLab需以专用用户身份运行,避免使用root。默认用户为git,组为git(部分版本可能使用gitlab):
sudo addgroup git # 创建git组
sudo adduser --system --group --disabled-login --home /var/opt/gitlab git # 创建git用户(禁用登录,指定home目录)
GitLab的核心数据(仓库、配置、数据库)存储在/var/opt/gitlab,需确保git用户拥有完全控制权:
sudo chown -R git:git /var/opt/gitlab # 递归修改所有者
sudo chmod -R 750 /var/opt/gitlab # 递归设置权限(所有者可读写执行,组可读执行,其他无权限)
日志文件默认存放在/var/log/gitlab,需允许git用户写入,同时允许系统日志服务(如syslog)读取:
sudo chown -R git:adm /var/log/gitlab # adm组包含syslog等系统日志服务
sudo chmod -R 750 /var/log/gitlab
若启用SSH访问,需确保git用户的.ssh目录权限正确(严格限制为700):
sudo mkdir -p /var/opt/gitlab/.ssh
sudo chown -R git:git /var/opt/gitlab/.ssh
sudo chmod -R 700 /var/opt/gitlab/.ssh
GitLab的主配置文件为/etc/gitlab/gitlab.rb,需确保其仅能被root用户修改:
sudo chown root:root /etc/gitlab/gitlab.rb
sudo chmod 644 /etc/gitlab/gitlab.rb # root可读写,其他用户只读
Groups -> New group,填写组名(如developers)和描述,创建后设置组的可见性(私有/内部/公开)。Members -> Invite member,输入用户名或邮箱,选择角色(角色决定权限):
项目权限默认继承所属组的权限,也可单独设置:
Settings -> Members,添加用户或组,分配角色(如Developer),覆盖组权限。允许HTTP(80)、HTTPS(443)和SSH(22)端口访问(若使用HTTPS,需提前配置SSL证书):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable # 启用防火墙
若系统启用SELinux或AppArmor,需调整策略允许GitLab访问必要资源:
policycoreutils-python-utils):sudo chcon -Rv --reference=/var/www/html /var/opt/gitlab # 参考Apache默认目录设置上下文
/etc/apparmor.d/usr.sbin.gitlab-runsvdir,添加/var/opt/gitlab/** rwk规则,允许GitLab读写数据目录。ls -ld /var/opt/gitlab # 应显示drwxr-x---(750)
ls -l /var/opt/gitlab/.ssh # 应显示drwx------(700)
developer)克隆项目,验证是否能正常推送代码。/admin),验证权限是否限制。通过以上步骤,可完成GitLab在Debian系统上的权限设置,确保系统安全性和团队协作需求。