«sudo -u www-data git pull» Сохранение учетных данных?

У меня есть каталог веб-сервера apache2 в виде каталога Git, поэтому, когда я и члены моей команды (школьный проект) вносим изменения в нашу папку GitHub, ее можно легко извлечь, запустив «git pull» в шпатлевке.

Я хочу сделать это автоматически (используя WebHook), имея файл «pull.php», внутри которого есть «<?php exec("git pull"); <?».

Однако пользователь, который появляется, когда я запускаю функцию whoami в php, это «www-data».
Чтобы позволить www-data работать git pull без необходимости вводить учетные данные (я пытался настроить SSH, и он отказался работать), мне нужно разрешить им хранить учетные данные.

Это проблематично, потому что, в отличие от других пользователей, у www-data нет каталога в /home/accountname для сохранения .gitconfig.

Как мне заставить "git credential.helper store" работать на www-data?

Я также не против иметь SSH, но я столкнулся с той же проблемой, когда в каталоге по умолчанию для сохранения файла id_rsa указано, что разрешения нет / не существует, поэтому я бы предпочел, чтобы был дан ответ на предыдущий вопрос.

Обновлено: В конце концов, это было множество проблем. он пытался использовать HTTPS, потому что я клонировал его с помощью HTTPS. Короче говоря, я удалил репо и повторно клонировал его с помощью SSH, и все мои проблемы исчезли. Между ними было много шагов, но любой, у кого есть похожая проблема, может просто сделать это и пропустить головную боль, ха-ха.

Можно ли вытащить репозиторий git по https?

Sixtus 08.04.2022 10:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас похожая проблема в WordOps/WordOps #305

www-data user cannot write anything in /var/www because this directory's owner is root. So you can create the .gitconfig file as root, and then change owner and permissions (following this recommendation) with

chown www-data:www-data /var/www/.gitconfig
chmod 644 /var/www/.gitconfig.

Or you can change /var/www directory owner (chown www-data /var/www) to allow www-data to create files in this directory.

ОП КристианВагнер подтверждает, что клонирование репозитория с помощью SSH вместо HTTPS позволяет работать git pull.

Сделав это и запустив «sudo -u www-data git config credential.helper store», а затем попытавшись «sudo -u www-data git pull» и заполнив учетные данные, я столкнулся с этим: фатальный: не удалось получить учетные данные блокировка хранилища: в доступе отказано, поэтому я не знаю, как это исправить - я столкнулся с этой проблемой ранее и попытался удалить кучу вещей, как было сказано в Интернете, и ничего не сработало.

ChristianWagner 08.04.2022 10:20

Ах, ваш второй комментарий был исправлением! Мне нужно было сделать www-data владельцем каталога, чтобы иметь разрешения на файл хранилища для создания учетных данных. Вы только что помогли мне решить проблему, с которой у меня были проблемы в течение 7 часов, спасибо, ха-ха! (также спасибо за исправление моего поста, теперь он выглядит красиво, а не в беспорядке, как раньше)

ChristianWagner 08.04.2022 10:29

@ChristianWagner Отлично, молодец! Рад, что был полезен.

VonC 08.04.2022 10:32

... извините, что беспокою вас снова, но после того, как все это заработало, у меня все еще возникают проблемы с переводом моего php в автоматический "git pull"... мой веб-хук направлен на мойдомен.xyz/pull.php, а мой pull.php содержит "exec("sh -c cd /var/www/mydomain.com/public_html/351Project && git pull");" я также пробовал просто "git pull" и т. д., и ничего не работает. Каталог принадлежит www-data и "echo exec('whoami');" возвращает www-данные. Выполнение «sudo -u git pull» отлично работает в шпатлевке, но я не могу заставить его работать через webhook и php. Можете ли вы пролить свет на то, как правильно заставить это работать?

ChristianWagner 08.04.2022 11:21

@ChristianWagner будет работать простой id -a && ls в вашем php-файле? Просто чтобы проверить, работают ли более простые команды.

VonC 08.04.2022 11:33

да, когда я добавляю "echo exec("id -a && ls");" он возвращает «welcome.php», когда я перехожу к mydomain.com/pull.php, который является файлом в том же каталоге, что и pull.php, поэтому некоторые команды выполняются, но я не думаю, что это правильно, лол

ChristianWagner 08.04.2022 20:47

это то, что происходит, когда я захожу в каталог и запускаю команду, заданную из командной строки https://i.imgur.com/5Bbnu5t.png, которая сильно отличается от возврата «welcome.php», когда команда запускается с перехода на mydomain.com/pull.php ---> "добро пожаловать.php" || это информация из "ls -l" https://i.imgur.com/v8zNuPZ.png @VonC

ChristianWagner 08.04.2022 21:09

@ChristianWagner Попробуйте протестировать этот обработчик веб-перехватчиков php: gist.github.com/slowkow/92f021272e760d10d111d7fb72679276

VonC 08.04.2022 23:52

Давайте продолжить обсуждение в чате.

ChristianWagner 09.04.2022 05:51

Другие вопросы по теме