Как я могу поделиться живым BZR-репозиторием с несколькими пользователями?
Я не уверен, как лучше задать этот вопрос. За несколько лет я превратил свой путь в угол и должен кое-что придумать. Я почти наверняка не следовал лучшим практикам до сих пор, но вы идете.
Я создаю и размещаю сайты Django на своем собственном сервере Linux (Ubuntu). Я управляю их контролем версий с помощью Bazaar и загружаю через SSH+BZR. Все они идут в родительский каталог с образным названием /websites/
, Производственные копии - это просто основные филиалы BZR (не экспорт). Я не использую FTP-сервер, только SSH.
Мой рабочий процесс - я редактирую локальную копию сайта, фиксирую изменения. Поскольку все они являются связанными ветвями, коммит, который он передает на сервер автоматически, имеет хук, который затем запускает обновление, которое, в свою очередь, решает, нужно ли перезагружать сайт Django. Я только что написал сценарий, чтобы он работал на меня.
Все файлы сайтов принадлежат моей учетной записи oli
, В настоящее время все сайты работают под этой учетной записью.
Иногда клиент хочет получить доступ к своим сайтам достаточно справедливо, но я не уверен, смогу ли я сделать это в рамках текущей структуры. Я думаю, что вещи должны измениться, чтобы позволить мне достичь следующих вещей:
Я могу создать новую учетную запись пользователя для клиента, чтобы он мог войти в систему и играть со своими сайтами (и только своими). Я доверяю своим клиентам, но других моих клиентов не следует ставить в такое положение, когда я заставляю их доверять друг другу.
Я все еще могу работать на всех сайтах так же, как и со своей собственной учетной записью, в идеале в одном месте, но я бы выжил, если бы на сервере они были разделены по пользователям.
Если возможно, заставьте пользователей проходить через BZR, чтобы они не испортили производственную ветвь с глупыми ошибками, которые нельзя легко откатить. Вы знаете, как это работает: если я даю клиенту доступ и что-то "загадочно" перестает работать, это моя вина, независимо от того, что произошло. Мне нужно иметь возможность отслеживать, что происходит, но аналогичным образом клиенты должны иметь возможность вносить изменения без моего взаимодействия (модель привратника VCS не будет работать для меня).
Итак, если я могу сделать что-нибудь, чтобы изменить текущие настройки, каков наилучший способ сделать это?
Мои нынешние мысли:
Установка простого FTP (и др.) Сервера, который работает как
oli
чтобы сохранить какие-либо разрешения и попытаться заставить их использовать BZR, но в противном случае необходимо синхронизировать обновления.Если вы считаете это жизнеспособным, существует ли безопасный эквивалент FTP, который система видит как одного пользователя, но аналогичным образом я могу произвольно ограничить некоторые каталоги (например, пользователь client-a может просматривать только подмножество каталогов веб-сайта).
Встряхните это полностью, используйте различные SSH-логины, держите сайты в клиентах
$HOME
каталоги. Если это получит ваш голос, какова моя лучшая тактика, чтобы они не делали ничего, кроме доступа к своим файлам? Есть ли хорошая комбинация для ограниченияForceCommand internal-sftp
с механизмом chroot?
Но я выучил вредные привычки, взламывая вещи вокруг. Как бы вы это сделали?
1 ответ
Я бы поменял владельца группы каждого каталога на группу для каждого соответствующего клиента (и установил липкий бит в директории, чтобы новые файлы наследовали этот гид), и дал бы им учетную запись только с доступом bzr+ssh, а затем попросил бы их использовать bzr проверить их сайт и работать над ним так же, как вы. Очевидно, добавьте себя во все группы клиентов.