我有运行CI的用户gitlab-runner
,基本上每当我把东西推到gitlab库它将build立项目,然后将其复制到/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
来解决这个问题,但我相信这并不是最佳解决scheme。
首先,我不会为整个www目录recursion地更改POSIX所有者或组,您可以使用扩展的acls。 要做到这一点,你需要做sudo setfacl -R -mu:gitlab-runner:rwx /var/www
。
然后,您可以将gitlab-runner用户添加到sudoers文件中,并通过将sudo
添加到相关命令来更改脚本。 如果不行,你需要在目标目录上看到一个getfacl
的输出。