Мое приложение работает как sudo, как я могу заставить его git pull использовать учетные данные моего пользователя?

Я запускаю свое приложение как sudo, но мне нужно, чтобы он использовал git pull на основе информации в ~/.gitconfig и ~/.netrc файлы текущего пользователя. Как это сделать, не помещая учетные данные в учетную запись пользователя root.

14
задан JakeGould
10.02.2023 12:00 Количество просмотров материала 3413
Распечатать страницу

1 ответ

по словам sudo man page изменение HOME переменная окружения может быть поведением по умолчанию, но это не обязательно. Если HOME переменная окружения не обновляется, вы можете просто ничего не менять и она будет работать. Проверьте пользователям использовать sudo? man-страницы подробнее о sudo политики, включая обновление HOME переменные среды.

это StackOverflow вопрос обложки найти домашний каталог пользователя программно. Вы могли бы использовать этот подход (очевидно не используя HOME переменная окружения, если она изменяется на sudo). Обратите внимание, что getuid возвращает "реальный" UID вызывающего процесса, который будет пользователем, которого вы хотите (geteuid получает эффективное UID вместо этого, который в вашем случае будет root). Затем можно найти файлы конфигурации и учетных данных пользователя и использовать их или, возможно, просто (временно или иным образом) отредактируйте процесс'HOME переменные среды перед вызовом git функции.

вы также можете просто указать программе путь к git файл конфигурации и / или учетных данных в качестве параметра. Пользователи должны были бы поставить их вручную, но вы могли бы тогда передать их к git в вашей программе.

важное предостережение: все эти предложения работают в предположении, что пользователю можно доверять (то есть, если пользователь может вызвать sudo, они разрешено полностью взять на себя систему).

если ваша программа использует обычай sudo политика, которая позволяет вызываться ненадежными пользователями (или setuid сам корень и исполняемый ненадежными пользователями), то вам нужно быть гораздо более осторожным. Например, ненадежный пользователь, который хотел получить доступ к чему-либо с помощью <другого пользователя!--9 -- > учетные данные могут создать символическую ссылку на файл (ы) конфигурации / учетных данных целевого пользователя, а затем использовать вашу программу (или передать другой Профиль пользователя, если вы пошли с аргументом командной строки подход). Лучший способ уменьшить эту угрозу, Помимо "не запускать программу от имени root", - использовать seteuid(getuid()) чтобы временно понизить эффективный UID до реального UID пользователя, что означает, что попытка доступа к файлам других пользователей приведет к запрету доступа. Вы можете восстановить эффективный UID позже, если это необходимо.

1
отвечен CBHacking 2023-02-11 19:48

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх