Разверните git pull в качестве пользователя домашнего каталога

Интересно, можно ли установить пользователя и группу сервера для каждого клонированного репозитория git.

Например, если репозиторий находился в каталоге:

/home/example/domains/example.com/public_html/

чем пользователь будет example, и группа будет также example. Но когда я клонирую или извлекаю через терминал (войдя в систему как root), файлы будут сохранены как root:root вместо пример:пример.

Как лучше всего предотвратить это без необходимости chown каждый раз при добавлении нового файла.

Так что же должно произойти?

  1. Перейдите в каталог другого пользователя cd /home/example/, как вы можете видеть, набрав ls -all, что все файлы в этом каталоге принадлежат пользователю примера и группе примеров.
  2. Перейдите в репозиторий git или создайте его, в этом примере я создал его по адресу /home/example/domains/example.com/public_html/.
  3. Выполните там команду ls снова, и вы заметите, что пользователь и группа равны root:root, но я не хочу, чтобы это было так, как должно быть example:example.

Простое, но ручное решение было бы.

chown -R example:example /home/example/domains/example.com/public_html/

Только я ищу что-то более динамичное, также оно должно работать со всеми другими командами git, такими как pull, потому что, когда вы вытаскиваете новые коммиты из репозитория в свой локальный, они будут принадлежать root:root.


person luukvhoudt    schedule 23.10.2014    source источник


Ответы (1)


Переключитесь на пользователя «пример», используя sudo -u. Вы захотите сделать это в любом запущенном хуке git pull. Если git pull не запускает никаких хуков, я предлагаю вам прочитать это руководство по развертыванию с помощью git.

Git отслеживает исполняемый бит прав доступа к файлу, и не более того.

В общем, вам следует избегать запуска подобных вещей от имени пользователя root: нет причин не выполнять отправку в качестве выделенного пользователя git (или пользователя-примера), и есть много причин не выполнять отправку в качестве пользователя root.

person canton7    schedule 03.11.2014