Как запустить команды шифрования в Linux без ведения журнала истории оболочки

1340
Guerlando OCs

Я хочу что-то зашифровать, не регистрируя какую-либо часть команды оболочки для уничтожения истории. Я не хочу, чтобы пароль или какие-либо имена файлов или команды появлялись в истории оболочки. Как это сделать с помощью AES 256 с SHA2? (Я считаю, что это самая секретная конфигурация сегодня, не так ли?)

2
Это на самом деле 2 вопроса. Вы могли бы рассмотреть вопрос об открытии другого вопроса для «самой секретной конфигурации сегодня». RobertL 6 лет назад 0
Префикс вашей команды с одним пробелом. Cyrus 6 лет назад 0
@Cyrus, правда, должен отметить, что работает только с `bash`, а также зависит от конфигурации RobertL 6 лет назад 0
@ РобертЛ: Это правильно. Переменная «HISTCONTROL» должна содержать ключевое слово «ignorespace». Cyrus 6 лет назад 0
Смотрите также: https://unix.stackexchange.com/questions/6094/is-there-any-way-to-keep-a-command-from-being-added-to-your-history BowlOfRed 6 лет назад 0

3 ответа на вопрос

8
RobertL

Лучший способ временно отключить историю - это запустить подоболочку с HISTSIZE переменной среды, установленной в 0:

HISTSIZE=0 $0 type your commands here <ctrl-D> 

Ведение журнала в исходной оболочке входа остается незатронутым после выхода из подоболочки.

В $0гарантирует, что вы начинаете ту же оболочку, что вы используете. Вы могли бы заменить $0на пути к любой оболочке, например: /bin/sh.

Это работает с большинством распространенных оболочек в том числе bash, ksh, zsh, dash. Я думаю, что это стандарт POSIX.

Вы также можете напечатать, exitчтобы выйти из подоболочки.

пример

$ true 1 $ true 2 $ HISTSIZE=0 $0 $ true 3 $ true 4 $ exit $ history 4 500 true 1 501 true 2 502 HISTSIZE=0 $0 503 history 4 
3
Ipor Sircer
$ unset HISTFILE $ cat something | openssl enc -e -aes256 > encrypted-something enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: 
@GuerlandoOCs: `что-то` здесь - это просто имя файла - вы никогда не говорили, что имя файла было чувствительным. Scott 6 лет назад 0
Вы должны знать, что `unset` при установке переменной` HISTFILE` не сохранит * любой * список истории в файл, даже те команды до того, как `HISTFILE` был` unset`. `bash` имеет в памяти" список истории ", который записывается в` HISTFILE` при выходе из `bash`. RobertL 6 лет назад 0
Можно запустить командную строку с пробелом, чтобы не входить в список истории в памяти. BowlOfRed 6 лет назад 2
@BowlOfRed, это зависит от `HISTCONTROL` /` HISTIGNORE` ilkkachu 6 лет назад 1
@BowlOfRed Хороший вопрос. Обратите внимание, что он работает * только * в `bash` и зависит от конфигурации` bash` с переменными среды согласно @ilkkachu. Обычно конфигурация по умолчанию `bash` поддерживает это использование. RobertL 6 лет назад 0
2
xenoid

Если имена файлов в командной строке вас беспокоят, вы можете прочитать их из терминала:

read infile; read outfile; cat $infile | openssl enc -e -aes256 > $outfile; 

Похожие вопросы