Как получить доступ к ssh-ключам пользователя из программы, которая запускается с помощью sudo?

Дилемма: программа для Linux, над которой я работаю, должна:

  1. Получить "пакет" по протоколу git+ssh:// (используя Git).
  2. Установите этот "пакет" в системе.

Чтобы git + ssh работал, Git должен видеть мои ключи.

Для установки "пакета" программа должна иметь привилегии суперпользователя.

Ограничение: программа не должна повышать привилегии (вызывать sudo) сама по себе. Пользователь должен явно вызвать его с помощью sudo. (Позволяет игнорировать случай, когда пользователь запускает программу, когда начинает вход в систему как root - при условии, что он правильно настроит ключи.)

Итак, вопрос: как сделать ssh доступ с помощью пользовательских ключей из программы, которая вызывается с помощью sudo?

1 ответ

Решение

Используйте параметры -i -_dentity_file ssh. Чтобы заставить git использовать правильную команду, вы должны установить переменную GIT_SSH в файл, который будет вызывать ssh -i "$@".

Если вы не можете этого сделать, вы должны отбросить привилегии при выполнении команды git pull.

sudo -u <original_user> git fetch git+ssh:// 

Вы можете использовать переменную среды ${SUDO_USER}, чтобы узнать, кем был первоначальный пользователь.

Другие вопросы по тегам