Назад | Перейти на главную страницу

Запуск привилегированного сценария из обработчика git после получения на моем сервере

Скажем, у меня есть следующий рабочий процесс для развертывания новой версии моего веб-приложения. Это небольшое приложение, поэтому вся работа по сборке и развертыванию выполняется на одном сервере (example.co)

Репозиторий git управляется специальным git пользователь на моем сервере. Это сделано для того, чтобы любой разработчик мог добавить удаленный URL-адрес ssh git, например ssh://git@example.co:/some/path.git и подтолкнуть к нему с помощью SSH

Работа по сборке и развертыванию выполняется deploy пользователь, поскольку для этого требуется sudo разрешение.

Как мне получить git пользователь запускает скрипт как deploy пользователь? Если у пользователя git есть какой-либо способ сделать это, потому что любой может ssh в машину под git пользователь правильно?

Есть ли лучший способ сегментировать эти разрешения?

Спасибо!

Вы даете разрешение git пользователь, чтобы запустить сценарий, который вы хотите запустить как deploy пользователь:

git ALL=(deploy) NOPASSWD: /usr/local/bin/some-script ""

Должен ли пользователь git иметь какой-либо способ сделать это, потому что кто угодно может подключиться к машине по ssh с правами пользователя git?

Ну, для начала, надеюсь, нет кто угодно могут войти в систему только люди, у которых есть законная потребность в доступе к этой учетной записи. Во-вторых, SSH как git Пользователь должен запускать принудительную команду, поэтому люди, входящие в систему, не должны иметь возможность произвольно запускать сценарий развертывания. Наконец, вызываемый скрипт должен быть написан таким образом, чтобы он не мог сделать ничего более разрушительного, чем «повторное развертывание заведомо безопасного кода, который уже был развернут ранее», поэтому на самом деле не должно быть никаких недостатков в том, что кто-то может запускать сценарий повторно, за исключением, возможно, исчерпания ресурсов.