@accountnujen

Как сделать, чтобы пользователь www-data имел доступ ко всему, что создаёт пользователь git?

У меня установлен git. Я с компьютера редактирую файлы, а затем делаю
git add .
git commit -m "fromlocal"
git push origin master:master
pause

чтобы файлы оказались на сервере.

Всё хорошо до момента, папка я не создам папку и отправлю её на сервер. В данном случае есть папка video2, созданная на моём компьютере и отправленная через git. Если я захочу выполнить PHP скрипт, который записывает что-то в эту папку, то получу ошибку:
Warning: file_put_contents(video2/2.dav): Failed to open stream: Permission denied

Если я сделаю chown -R www-data /var/www, то ошибка уйдёт до того момента, пока я снова не грузану на сервер новую папку.

ChatGPT предложил добавить пользователя www-data в группу git. После этого я потерял доступ к ssh у пользователя git. Когда удалил его из группы - всё вернулось.
$ groups git
git : git www-data
$ groups www-data
www-data : www-data
$ ls -l /var/www/web/cam
total 44
-rw-rw-r-- 1 www-data git 20340 Mar 21 16:07 engine.php
-rw-rw-r-- 1 www-data git    47 Mar 21 02:04 index.php
-rw-rw-r-- 1 www-data git   821 Mar 21 04:57 mjpg.php
-rw-rw-r-- 1 www-data git   276 Mar 21 15:37 test.php
drwxrwxr-x 2 www-data git  4096 Mar 21 15:49 video
drwxrwxr-x 2 git      git  4096 Mar 21 16:43 video2
-rw-rw-r-- 1 www-data git   385 Mar 21 02:10 webapp.php
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ответы на вопрос 1
ValdikSS
@ValdikSS
Вариантов множество.
Можете воспользоваться Posix ACL, добавив пользователю www-data права на чтение и запись рекурсивно.
Можете наоборот, добавить пользователю git права на запись нужной директории, а user и group у неё останутся www-data.
Можно сделать git hook, который при pull будет менять права необходимым образом.

В любом случае, судя по ошибке, у вас php выполняется от пользователя www-data, что небезопасно. Лучше создайте отдельного пользователя под этот проект, запускайте и git, и php из-под него.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы