Как дать PHP доступ на запись к определенным каталогам, созданным git?

Здесь есть несколько похожих вопросов, такой как этот, но ответ на этот вопрос (и несколько других, которые я прочитал):

пусть PHP создаст сам каталог в первую очередь.

я использую git на моем сайте, поэтому невозможно разрешить PHP «создавать сам каталог».

Чтобы вытащить изменения, я бегу git pull origin master команда при входе на мой сервер через SSH, что делает меня владельцем моего файла cpanel user как я.

Мне нужен PHP, чтобы иметь возможность создавать файлы в определенных каталогах. Это единственный способ разрешить это chmod папки для 777или есть лучший способ?

Я не очень хорошо понимаю разрешения Linux, но из того, что я прочитал, изменился каталог и права доступа к файлу 777 как правило, не очень хорошая идея. Кроме того, если я chmod папки для 777Я подозреваю, что разрешения будут перезаписаны при запуске git pull origin masterХотя я не проверял это.

1

Решение

  1. Git не будет переопределять разрешения для уже существующих каталогов.
  2. Вы должны проверить, под чем user Apache (или любой другой http-сервер, который вы используете) работает.

Было бы вероятно www-data для apache:

ps aux | grep http | cut -f 1 -d ' '
  1. Как только вы узнаете пользователя, сервер https работает как, смените владельца.

Эта команда оболочки в порядке:

chown -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO

Выше будет установлен владелец папки в www-dataпо-видимому, давая разрешение на запись для https-сервера для записи туда.

Если вы боитесь потерять контроль над этим каталогом, сделайте это через group разрешение:

chgrp -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO
chmod -R g+w FOLDER_PHP_NEEDS_TO_WRITE_TO

Теперь вы все еще являетесь владельцем, в то время как http-сервер может писать туда, потому что он принадлежит этой группе. Вы можете сделать это по-другому, добавив себя в www-data группы и давая разрешения на запись для этой группы в нужную папку.

Другой вариант — запустить git как www-data:

sudo runuser -l  www-data -c 'git pull'

Но я бы предложил решение с группой.

3

Другие решения

Это может быть то, что вы можете использовать — я сам не пробовал, поэтому я не знаю, работает ли это на самом деле:

https://stackoverflow.com/a/3208143/609855

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector