GitLab在CentOS上的权限设置指南
GitLab需专用用户(通常为git)运行服务,避免使用root。首先创建用户及所属组:
sudo groupadd git # 创建git组
sudo useradd -r -g git -d /var/opt/gitlab -s /bin/bash git # 创建系统用户git,归属git组,指定家目录
若需将其他用户加入git组(便于协作):
sudo usermod -aG git 目标用户名 # 将用户添加到git组
GitLab核心数据目录(如/var/opt/gitlab)的所有权需设为git:git,权限设为755(所有者可读写执行,组及其他用户仅可读执行):
sudo chown -R git:git /var/opt/gitlab # 递归修改所有权
sudo chmod -R 755 /var/opt/gitlab # 递归设置权限
若存在自定义数据目录(如/home/git/gitlab),需同步调整:
sudo chown -R git:git /home/git/gitlab
sudo chmod -R 755 /home/git/gitlab
编辑/etc/gitlab/gitlab.rb(GitLab主配置文件),确保以下关键路径的权限设置正确:
git_data_dirs({ "default" => { "path" => "/var/opt/gitlab", "permissions" => "755" } }) # 数据目录权限
log_dir("/var/log/gitlab", "755") # 日志目录权限
tmp_dir("/var/tmp/gitlab", "1777") # 临时目录权限(1777允许所有用户创建文件,但仅所有者可删除)
修改后需重新配置GitLab使设置生效:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
通过systemd管理GitLab服务时,需确认服务文件(/etc/systemd/system/gitlab.service或/usr/lib/systemd/system/gitlab-runsvdir.service)中的User和Group设置为git:
[Service]
User=git
Group=git
修改后需重新加载systemd并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart gitlab-runsvdir
若系统启用SELinux(sestatus显示Enforcing),需调整策略避免GitLab被拦截:
sudo setenforce 0
/etc/selinux/config,将SELINUX=enforcing改为disabled,并重启系统):sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo yum install -y policycoreutils-python-utils
sudo semanage fcontext -a -t git_conf_t "/var/opt/gitlab(/.*)?"
sudo restorecon -Rv /var/opt/gitlab
允许HTTP(80)和HTTPS(443)流量通过防火墙,确保外部可访问GitLab:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
权限设置需结合Web界面完成,核心角色包括:
操作步骤:
Settings→Members;Invite即可。