配置SSL及HTTPS重定向后GitLab CI出现权限错误求助
GitLab CI 权限错误排查与解决
错误原因分析
出现mkdir: cannot create directory ‘/root’: Permission denied和删除文件权限拒绝的问题,核心原因是GitLab Runner的执行用户没有目标目录的读写权限,具体场景包括:
- Runner默认工作目录被配置为
/root/builds,但Runner是以非root用户(比如默认的gitlab-runner用户)运行,无法访问/root目录 - 工作目录的权限配置错误,Runner用户对该路径没有读写权限
- 配置SSL和HTTPS重定向后,Runner的环境变量或配置文件被意外修改,导致工作路径指向了无权限的目录
解决方法
1. 检查并修改Runner配置文件
找到Runner的配置文件(通常路径为/etc/gitlab-runner/config.toml),查看[[runners]]段中的builds_dir和cache_dir配置:
[[runners]] name = "your-runner-name" url = "https://your-gitlab-url/" token = "your-token" executor = "shell" builds_dir = "/var/gitlab-runner/builds" # 替换为非root路径,确保runner用户有权限 cache_dir = "/var/gitlab-runner/cache"
修改后重启GitLab Runner服务:
sudo gitlab-runner restart
2. 修复工作目录权限
如果必须使用现有路径(不推荐用/root),执行以下命令赋予Runner用户权限:
# 假设runner用户是gitlab-runner sudo chown -R gitlab-runner:gitlab-runner /root/builds sudo chmod -R 755 /root/builds
3. 确认Runner运行用户
检查Runner的运行用户:
- 如果是systemd管理,查看service文件:
cat /etc/systemd/system/gitlab-runner.service | grep User
确保该用户对工作目录有完整读写权限,若配置错误,修改service文件后重新加载并重启:
sudo systemctl daemon-reload sudo systemctl restart gitlab-runner
4. 检查CI/CD变量
进入GitLab项目的Settings > CI/CD > Variables,确认没有手动设置CI_PROJECT_DIR或其他路径相关变量,强制指向了无权限的目录,如有则删除或修改。
5. 重新注册Runner(可选)
如果配置混乱,直接重新注册Runner,过程中指定正确的工作目录:
sudo gitlab-runner register
按照提示输入GitLab地址、token、executor等信息,设置builds目录为非root路径(如/var/gitlab-runner/builds)。
内容的提问来源于stack exchange,提问作者Nurgisa A
相关产品推荐
相关产品推荐

