使用GitLab Runner访问ec2-user目录时遇权限拒绝问题求助
解决GitLab Runner访问/home/ec2-user目录的权限拒绝问题
问题根源
GitLab Runner的Shell执行器默认以gitlab-runner系统用户运行,而/home/ec2-user及其子目录的所有者是ec2-user,默认权限配置下,gitlab-runner用户没有进入该目录的权限,导致执行CI任务时触发「Permission Denied」错误。
解决方法
方法一:将gitlab-runner用户加入ec2-user用户组(推荐)
这种方式不会改变目录的所有权,同时赋予gitlab-runner用户访问目录的权限:
- 登录Runner所在的EC2实例,执行命令将gitlab-runner添加到ec2-user用户组:
sudo usermod -aG ec2-user gitlab-runner - 调整目标目录的组权限,确保组内用户拥有读和执行权限(进入目录需要执行权限):
sudo chmod g+rx /home/ec2-user sudo chmod g+rx /home/ec2-user/deployer sudo chmod g+rx /home/ec2-user/deployer/safety sudo chmod g+rx /home/ec2-user/deployer/safety/httpdocs - 重启GitLab Runner服务,让用户组变更生效:
sudo systemctl restart gitlab-runner
方法二:修改目标目录的所有者为gitlab-runner
如果该目录不需要归ec2-user所有,可以直接修改目录的所有权:
sudo chown -R gitlab-runner:gitlab-runner /home/ec2-user/deployer/safety/httpdocs
注意:此操作会将目录的所有者彻底改为gitlab-runner,若有其他服务依赖ec2-user对该目录的权限,谨慎使用。
额外检查
错误日志中出现mkdir: cannot create directory ‘/home/ec2-user’,需确认GitLab Runner的工作目录配置是否被错误设置为/home/ec2-user。可以查看Runner的配置文件(通常位于/etc/gitlab-runner/config.toml),确保builds_dir路径是Runner有权访问的目录(如默认的/var/gitlab-runner/builds)。
内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

