Установите HISTIGNORE на “sudo -S”
$ export HISTIGNORE='*sudo -S*'
Затем надежно передайте свой пароль в sudo:
$ echo "your_password" | sudo -S -k <command>
“HISTIGNORE” означает не сохранять эту команду в истории. Это история в памяти или файл “~/.bash_history”.
Например, ниже будет безопасно передавать ваш пароль на команду sudo, без сохранения истории вашего пароля.
“-S”, означает использовать stdin для пароля,
“-k” означает игнорировать кэшированные учетные данные, чтобы заставить sudo всегда спрашивать. Это для последовательного поведения.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
Недостатком вышеуказанного метода является то, что если вы хотите увидеть команды, которые вы выполняли в истории позже, то их там не будет. Другим методом является обновление кэша учетных записей sudo аутентификации (по умолчанию включен тайм-аут на 5 минут), а затем запуск sudo отдельно. Но недостатком этого является то, что вам нужно знать о 5-минутном кэше.
Например:
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
Обратите внимание, что я выполнил sudo перед каждой командой, чтобы убедиться, что кэш sudo обновлен, так как по умолчанию 5 минут. Да, whoami не должны занимать 5 минут, но я подумал, что для последовательности я могу запустить его перед каждой командой. Вы также можете поместить “export HISTIGNORE=‘sudo -S’” в ваш файл ~/.bashrc, а затем загрузить его “. ~/.bashrc” или логотипом, затем войдите в систему. Тем не менее, я думаю использовать это для целей скриптов, так что я буду держать это в верхней части всех моих скриптов для лучших методов безопасности. Установка вместо этого “echo ”“ | sudo -S -v” в переменную также может быть хорошей идеей, затем просто запустите переменную перед каждой командой, которая нуждается в привилегиях root, смотрите комментарий Janar. Комментарий “John T” также должен включать параметр “-k”, как если бы вы запустили “sudo -S” без “-k” и в кэше аутентификации sudo уже есть ваши учетные данные (и он все еще действителен, кэш аутентификации sudo по умолчанию составляет 5 минут), то bash вместо этого запустит ваш пароль как команду, что плохо.