我有一个gitlab-runner
运行 CI 的用户,基本上每当我将某些东西推送到 gitlab 存储库时,它都会构建该项目,然后将其复制到/var/www/stanislavromanov.com
。
问题是它没有权限这样做。
错误
$ cp -R ./build/* /var/www/stanislavromanov.com/
cp: cannot create regular file '/var/www/stanislavromanov.com/404.html': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/blog': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/ci.log': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/favicon.ico': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/fonts': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/img': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/index.html': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/index.xml': Permission denied
cp: cannot create directory '/var/www/stanislavromanov.com/privacy': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/scripts.js': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/sitemap.xml': Permission denied
cp: cannot create regular file '/var/www/stanislavromanov.com/styles.css': Permission denied
ERROR: Build failed: exit status 1
我已经尝试过这个:sudo chown -R gitlab-runner /var/www
和这个sudo chown -R gitlab-runner:gitlab-runner /var/www
。
仍然有同样的错误。我 100% 确定用户是,gitlab-runner
因为当我执行此操作时whoami
,它显示gitlab-runner
。
我究竟做错了什么?
我通过将 chmod 777 设置为来修复此问题,stanislavromanov.com
但我认为这远非最佳解决方案。
答案1
首先,我不会递归更改整个 www 目录的 POSIX 所有者或组,您可以使用扩展 acl 来实现这一点。为此,您需要执行sudo setfacl -R -m u:gitlab-runner:rwx /var/www
。
然后,您可以将 gitlab-runner 用户添加到 sudoers 文件中,并通过在sudo
相关命令前面添加内容来更改脚本。如果失败,您需要查看getfacl
目标目录中的输出。