如何确保用户具有recursion权限创build文件夹和文件

我有运行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的输出。