Як відкрити сеанс анонімного башу?


50

Чи можливо відкрити сеанс анонімного перегляду в bash?

Наприклад, коли нам потрібно вводити паролі в команди і не хочемо bashдодавати їх до історії.


9
cat | bashзапустить неінтерактивний bashбез підказки, редагування командного рядка (лише внутрішній редактор рядкової дисципліни) або історії.
Стефан Шазелас

Напишіть пробіл перед вашою командою: "секретна команда". Зараз secrectcommandне буде в історії башу.
Мартін Тома

Відповіді:


79

Коли ви хочете bashприпинити реєстрацію своїх команд, просто зніміть HISTFILEзмінну:

HISTFILE=

Після цього всі подальші команди більше не повинні реєструватися .bash_history.

З іншого боку, якщо ви фактично подаєте паролі як аргументи командам, ви вже робите щось не так. .bash_historyне читається у всьому світі і тому не є найбільшою загрозою в цій ситуації:

psі /procє великою проблемою. Усі користувачі системи можуть бачити команди, які ви зараз виконуєте, з усіма їх аргументами . Отже, передача паролів як аргументів командного рядка по суті не є безпечною . Використовуйте змінні середовища або конфігураційні файли (яких у вас було 600), щоб надійно поставити паролі.


5
Я використовую Linux 10+ років і ніколи не думав робити це +1
eyoung100

3
unset HISTFILEмає подібний ефект. У мене є функція для цього: n() { HISTFILE=; PS1="~${PS1#\~}"; }. Таким чином я чітко бачу, чи перебуваю я в режимі інкогніто чи ні.
Лекенштейн

13
+1 для вирішення реальної проблеми, а не просто відповіді на питання. Додатковим варіантом для передачі облікових даних є сокети домену Unix.
Натан Осман

1
Ще однією корисною порадою буде поставити пробіл перед тобто "HISTFILE =". будь-яка команда з пробілом до цього не записується.
FUD

Ще одна цікава річ у тому, що навіть попередні команди у цьому вікні також ігноруються. Це як перетворити існуючий сеанс на інкогніто: p
Узумакі Д. Ічіго

37
HISTCONTROL=ignorespace

Якщо цей параметр ще не встановлений bash, він може бути саме тим, що вам потрібно. Це менше виснаження, ніж вимкнення всієї історії. З цим набором будь-який командний рядок, що починається з символу пробілу, не буде збережено до списку історії.

З цих посилань:

Чому bash має параметр HISTCONTROL = ignorespace?

Чому bash не зберігає команди, які починаються з пробілів?


6
Зауважте, що це часто за замовчуванням.
Ángel

3

Ви можете тимчасово відключити історію: set +o history

set +o history
...
set -o history

Існує різниця між відключенням історії та невстановленням HISTFILE:

HISTFILE=
date
ls
HISTFILE=~/.bash_history
history

виводить щось подібне:

84  HISTFILE=
85  date
87  ls
88  HISTFILE=~/.bash_history
89  history

тобто всі команди зберігаються у списку історії. Введіть, exitщоб зберегти його.
Але

set +o history
date
ls
set -o history
history

виводить щось подібне:

115  set +o history
116  history

Підсумок :
set +o historyдля тривалих сеансів.
HISTCONTROLа <space>commandв інший час.

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