我当前正在构建一个GitLab CI / CD脚本,用于在服务器上自动部署Web应用程序。将文件复制到服务器的最后一项任务失败。 问题在于,所有复制的文件都是按照 gitlab-runner:gitlab-runner 权限创建的(GitLab-runner作为shell运行程序安装)。但是,我希望为 www-data 用户更改这些权限。
因此,我已将以下脚本添加到gitlab-ci.yml
- /bin/chown www-data:www-data /var/www/[NAME]/*
- /usr/bin/find /var/www/[NAME] -type d -exec /bin/chmod 755 {} \;
- /usr/bin/find /var/www/[NAME] -type f -exec /bin/chmod 644 {} \;
- /bin/chmod 660 /var/www/[NAME]/.env
并且,由于我不想在不输入密码的情况下授予gitlab-runner用户root特权,因此我在sudoers文件中创建了以下条目
gitlab-runner ALL=(ALL:ALL) NOPASSWD: /usr/bin/find /bin/chmod /bin/chown
但是,所有操作都会失败,并显示错误消息,例如
/bin/chown: changing ownership of '/var/www/[NAME]/app': Operation not permitted
[NAME]文件夹的权限为
drwxrwxr-x www-data www-data
我在做什么错?也许我更改CI / CD脚本中的权限的方法是错误的?但是,然后,如何在不使用www-data用户下运行gitlab-runner的情况下,防止复制的文件属于gitlab-runner用户呢?