Как ограничить доступ заказчика к Git на production сервере, при условии, что заказчик имеет доступ по ftp?
Добрый день.
Есть VPS сервер c ОС Debian с несколькими сайтами. У меня root доступ.
На этот сервер для заказчика в одну из директорий выгружаю его сайт.
У заказчика есть доступ к директории с его сайтом. Заказчик работает от пользователя user, Владелец файлов его проекта - также пользователь user.
Я в основном использую GIT для выгрузки файлов на сервер. Также в некоторых случаях я комичу в GIT файлы, которые я или заказчик изменили прямо на продакшен сервере. GIT на различных машинах (разработчика и продакшен) синхронизирую через общий репозитарий.
Заказчик имеет полное право видеть исходные файлы его сайта. Но я не хочу, чтобы заказчик имел доступ к GIT, чтобы он мог видеть историю изменений или мог скопировать репозитарий.
Каким образом лучше ограничить возможность заказчика работать с git и возможность скопировать репозитарий GIT, при условии, что мне GIT нужен для работы?
Пока я для себя такое временное решение нашел. После работы с GIT ставлю владельцем папки c GIT пользователя root с правами на папку 0700. Таким образом заказчик, залогинившись по ftp как пользователь user не может получить доступ к папке. Когда мне нужно еще раз воспользоваться GIT, я вручную возвращаю владельца и права папки и работаю с ним. После окончания работы опять меняю владельца папки. Для автоматизации открытия и закрытия прав на папку GIT думаю написать пару скриптов.
Хоть это и решение вопрос, но у него есть недостатки. Приходится сначала загружаться от имени root, чтобы поменять права на папку. Потом логиниться от имени user, чтобы работать c GIT. Второй недостаток - на какое-то время (полчаса-час), директория с GIT может остаться доступной пользователю user и заказчик ее может увести.
Теоретически можно было бы поставить сразу права на папку с GIT только пользователю root и работать с GIT только от рута. Но в этом случае при чекауте GIT новые файлы проекта будут создаваться с владельцем root и эти файлы будут недоступны для процессов веб-сервера. Умеет GIT при работе от одного пользователя, менять владельца и права файлов?
В общем хотелось бы получить совет, есть ли в данной какое-нибудь красивое решение?
Например не заниматься садомазохизмом и держать репозиторий на гитхабе или битбакете, деплоить всё культурно а заодно и с доступом заказчика к репе не будет проблем.
1. Заказчик может привлечь какого-то программиста, который что-то изменит в коде сайта.
2. Иногда встречаются взломы сайта и в одну из дальних никому не нужных директорий заливают шел или какой-нибудь вирус.
3. В редких случаях я сам не имея доступа к рабочей машине, могу что-то поправить прямо на продакшене.
Мне удобно, что имея GIT на продакшене я могу отследить любые измениния файлов проекта, которые по-другому очень трудно найти. А также удобно, что если кто-то (я или представитель заказчика) сделают полезные изменения на продакшене, я легко могу их закомитить и получить последнюю версию проекта на любой машине для разработки.
xbox: то, что вам удобно считается, мягко говоря, не очень нормальным. Заказчик не должен иметь доступа к исходникам на продакшене. "Полезные изменения" не вносят прямо на продакшене, их вносят через дев ветку, потом мержат в мастер ветку, а уже затем ci сервер собирает проект и деплоит его на продакшен.
Тоже имеем опыт работы по такой схеме когда клиент имеет доступ к исходникам своего сайта, а поддержкой и развитием занимаемся мы, дико бесит когда клиент реализует своими средствами функционал причем в обход движка на котором сайт вертится и в итоге: конфликты с системным функционалом, никакого деплоя через CI, заливка доработок на сайт по фтп путем сверки каждого файла! (не дай бог перетрем функционал клиента), обновление composer пакетов ручками по фтп, и тд. А все потому что клиент требует доступ к своему сайту и все тут.