Назад | Перейти на главную страницу

Как убедиться, что у пользователя есть рекурсивное разрешение на создание папок и файлов

У меня есть пользователь 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 однако я считаю, что это далеко не оптимальное решение.

Во-первых, я бы не стал менять владельца или группу POSIX рекурсивно для всего каталога www, для этого можно использовать расширенные списки контроля доступа. Для этого вам нужно сделать sudo setfacl -R -m u:gitlab-runner:rwx /var/www.

Затем вы можете добавить пользователя gitlab-runner в файл sudoers и изменить свои сценарии, добавив sudo к соответствующим командам. В противном случае вам нужно будет увидеть результат getfacl в целевом каталоге.