Почему git все еще печатает на экран, когда и stdout, и stderr были перенаправлены? - PullRequest
0 голосов
/ 14 января 2019

Я хочу отключить вывод команды git push, используемой в моей системе CI, что может привести к утечке конфиденциальной информации.

Команда:

git --quiet push > /dev/null 2>&1

, поэтому он не должен ничего печатать на экране. Но он все равно печатает Password for 'https://xxxx@github.com':, когда не удается выполнить аутентификацию.

Как это могло произойти и как отключить звук?

Обновление: Хотя я не уверен, я думаю, что git вызывает getpass() или что-то подобное, что пишет в /dev/tty напрямую.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Git явно открывает /dev/tty для чтения и записи, которая используется для запроса пароля.

/dev/tty был добавлен в Unix примерно в 1979 году, что позволило программам получить дескриптор файла на управляющий терминал, поэтому ввод пользователя стал возможен, когда stdin занят, а также когда перенаправлены и stdout, и stderr.

См. Как less получает данные со стандартного ввода, в то же время имея возможность читать команды от пользователя?

0 голосов
/ 14 января 2019

Для предотвращения регистрации ключей и обхода переадресации пароль запрашивается через /dev/tty. Посмотрите, как это делается в Python getpass .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...