Используя sudo в рычаге Мерзавца для установки полномочий после того, как развертываются

Я выполняю несколько сайтов на Ubuntu, и я настраиваю новое, развертывают worflow следующим образом (пример использует среду подготовки):

На моей dev машине я делаю git push staging который продвигает в пустой репозиторий и инициировал post-receive рычаг, которые делают эти вещи:

  • Контроль проект на отдельной папке
  • Скопируйте текущий развернутый каталог
  • Разверните файлы с rsync
  • Установите соответствующие полномочия с помощью a post_deploy.sh сценарий

Вышеупомянутое хорошо работает, кроме полномочий, устанавливающих часть.

Так как я должен использовать sudo сделать a chgrp и chown, Я пытался добавить следующее к /etc/sudoers:

myusername ALL=(ALL:ALL) NOPASSWD: /path/to/post_deploy.sh

Но при выполнении git push Я получаю эту ошибку:

remote: sudo: no tty present and no askpass program specified

Если я работаю post_deploy.sh непосредственно с развернутого сервера у меня нет проблем.

Как я могу работать post_deploy.sh сценарий от рычага мерзавца? Я не возражаю иметь необходимость ввести дополнительный пароль, но от того, что я считал, askpass вещь не для командной строки (действительно ли я прав?).

2
задан 1 October 2014 в 19:27
1 ответ

Это проблема с файлом /etc/sudoers, в котором есть следующая запись:

Requaults requiretty

Он подробно описан в ЭТОМ ПОСТ

Есть два варианта, прокомментируйте установку Defaults requiretty в файле /etc/sudoers или используйте псевдо-тройку (-t) аргумента для ssh.

Попробуйте следующее в вашем пост-приемном скрипте:

ssh -t 127.0.0.1 "sudo chown user /path/to/pushfile"

Хотя вы должны настроить ssh pre-shared ключи и запустить его один раз вручную, чтобы добавить запись на известные хосты (или найти аргумент, чтобы проигнорировать это).

2
ответ дан 3 December 2019 в 11:41

Теги

Похожие вопросы