Есть виртуальный сервер с десятком сайтов под разными пользователями. Управляется через ISPManager.
Необходимо запихнуть некоторые сайты в Git репозитории для удобной совместной работы.
Git установлен; настроен пользователь с SSH доступом git:git; создана папка /var/git под bare репозитории. Далее, соответственно, нужно: создать репозиторий, клонировать разработчикам и в папку с веб-сервером. И тут возникает вопрос:
Сайт работает из-под конкретного и отдельного пользователя (например, user), он является владельцем файлов, через него обеспечивается доступ к ftp. К терминалу этот пользователь доступа не имеет.
Bare репозиторий я обновляю через SSH и пользователя git, соответственно при вызове pull (через hook) файлы создаются от его имени.
Как быть в такой ситуации? В идеале делать pull через user, но у него нет терминала.
Возможно, нужно решать через группы, но я не очень понимаю их логику.
По хуку через sudo вызываем скрипт, который подменяет права и обновляет сорцы. В sudoers добавляем разрешение на один (и только на него) файл. Важно: в этот файл нельзя давать писать гиту! Владелец скрипта — рут, но права на чтение всем. Почему? Если дать писать — можно выполнять любые команды. Если не дать читать — выполнить не выйдет.