Як запобігти збереженню пароля чи іншої конфіденційної інформації в історії баш при використанні grep?


21

Нещодавно мені довелося поздоровитись за паролем, який може бути збережено у файлі. Я не хотів, щоб ця лінія з'являлася в історії баш.

Як я можу запобігти збереженню пароля чи іншої конфіденційної інформації в історії баш при використанні grep? Наприклад, як я можу отримати бажання прочитати шаблон із stdin чи консолі?

Відповіді:


37

Якщо ви HISTCONTROL=ignorespaceвведете свій .bashrc і ви поставите пробіл перед ім'ям команди, він не буде доданий до вашої історії.

$ export HISTCONTROL=ignorespace
$ grep "passwd" secret_password_file.txt   # added to history
$  grep "passwd" secret_password_file.txt  # not added to history

3
FWIW: Питання в заголовку та питання в тілі абсолютно різні. Я відповів на запитання у назві.

Ваша критика доречна. Я щойно редагував заголовок. Чи краще зараз? Я все ще думаю (і так здається громаді), що ваша відповідь є найбільш актуальною.
Лев

1
Я змінив ваше запитання, щоб уточнити речі, зробивши доступними обидва запитання (не дозволяючи щось зберігати в історії та читати з stdin with grep). Таким чином, всі відповіді все ще справедливі, але дуже різні рішення не будуть заплутати.

5

Просто для повноти я відповідаю на питання в тілі: як отримати греп для читання шаблонів зі stdin:

Ви можете скористатися -fопцією:

grep -f- /path/to/file

Це буде читати будь-яку кількість шаблонів stdin, по одному на рядок. ( -означає stdin, що ви також можете вказати файл із шаблонами, по одному на рядок.) grepвідповідатимуть рядкам, у /path/to/fileяких відповідають будь-якому із заданих шаблонів.


Дякую за це. Це хороший внесок і корисний трюк, щоб використовувати і в інших місцях, скажіть, коли потрібен узорний шаблон
Лев,

2

Це найкраще, що я міг придумати:

grep $(read -p "Pattern: "; echo $REPLY) .*

Це досить безпечно? Чи є в будь-якому випадку відновити шаблон, окрім прокрутки терміналу? Чи є приємніший спосіб?


3
Ви можете використовувати read -sдля запобігання відлуння (див. Також це питання ). Секрет буде видно у psвисновку. Ви можете використовувати натомість grep -f /dev/stdin *(або grep -f - *), щоб grep читав схему (-и) з файлу, замість цього закінчував введення ^D, або:(read -es; echo $REPLY) | grep -f - *
mr.spuratic

1
Оболонка захоплення повинна мати навколо себе подвійні лапки. На даний момент це порушиться, якщо користувач введе пробіли або якісь спеціальні символи.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.