Как получить доступ к ssh-ключам пользователя из программы, которая запускается с помощью sudo?
Дилемма: программа для Linux, над которой я работаю, должна:
- Получить "пакет" по протоколу git+ssh:// (используя Git).
- Установите этот "пакет" в системе.
Чтобы 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}, чтобы узнать, кем был первоначальный пользователь.