Есть пара команд, которые я хочу запустить в терминале, которые требуют от меня ввода пароля. Я действительно не хочу, чтобы эти команды попали в какую-либо историю или где-либо еще, где они могли быть замечены кем-то после запуска команды. Существуют ли какие-либо оболочки / терминалы для Ubuntu, которые я мог бы использовать (или опции для bash / zsh / etc), которые обеспечили бы мне безопасную среду, в которой мне не нужно было бы беспокоиться о сохранении моей истории?

3 ответа3

3

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

HIST_IGNORE_SPACE (-g)

   Remove command lines from the history list when the first 
   character on the line is a space, or when one of the expanded
   aliases contains a leading  space.   

   Note that  the  command  lingers in the internal history until
   the next command is entered before it vanishes, allowing you to
   briefly reuse or edit the line.  If you want to make it vanish 
   right away without entering another command, type a space and
   press return.

используйте setopt HIST_IGNORE_SPACE в вашем .zshrc чтобы активировать эту функцию.

3

Вы действительно имеете в виду, что команды требуют, чтобы вы указали свой пароль в качестве аргумента? Большинство команд запрашивают вас об этом, и это не входит ни в один файл истории.

Обратите внимание, что если вы используете многопользовательский компьютер, другой пользователь может видеть команды, которые вы выполняете, если они вызывают ps в нужное время. Таким образом, битва проиграна, если вы не вызовете подкрепление, такое как виртуальная машина.

Хорошо, давайте предположим, что ваши команды действительно плохо написаны, или что вы не хотите оставлять след этих команд по какой-то другой причине.

Все оболочки с функцией сохранения истории позволяют вам отключить ее (у каждой есть своя собственная команда для этого), и многие могут исключить определенные команды из списка истории (то есть не просто исключить их из файла истории, но даже сделать их недоступными для команда Up (кто-то сбрасывает вашу оперативную память, все равно может их найти). В bash и zsh история не будет сохранена при выходе из оболочки, если HISTFILE не установлен (обратите внимание, что zsh может также сохранять историю после каждой команды, если включена опция inc_append_history ). В bash и строки, соответствующие шаблону в HISTIGNORE , не записываются в историю; в zsh вы можете решить игнорировать команды, начинающиеся с пробела, с параметром hist_ignore_space . Обе оболочки позволяют вам редактировать историю с помощью встроенной команды fc .

Все, что вы печатаете и что видно на экране, сохраняется в истории вашего терминала. Обычно это легко очистить (обычно через пункт меню или просто выйдя из эмулятора терминала). Конечно, вы не должны использовать терминал, который регистрирует все выходные данные, но если это так, возможно, это потому, что вы его настроили, чтобы вы знали.

Если вас беспокоит конкретная строка, такая как пароль, вы можете сохранить ее в файле (который, конечно, храните в зашифрованной файловой системе) и вызывать ее содержимое, когда вам это нужно (таким образом, кто-то смотрит через ваше плечо). не увидит пароль):

mycommand -u herms -p "$(cat ~/encrypted/passwords/mycommand)"

Возможно, команда оставит другие крошки позади. Вы можете попробовать запустить оболочку с переменной окружения HOME установленной во временный каталог, в который вы просто скопируете rc оболочки и файлы конфигурации для вашей команды. После выполнения команды проверьте, хотите ли вы сохранить какие-либо данные, которые она произвела, а затем удалите временный каталог. Пример сеанса:

mkdir /tmp/private
chmod 700 /tmp/private
cp -a ~/.zshrc ~/.config/mycommand /tmp/private
HOME=/tmp/private zsh
# subsequent commands are executed from the child shell started above
cd
mycommand ...
exit
# back to the parent shell
# inspect /tmp/private for files you want to keep
rm -rf /tmp/private

Если вы беспокоитесь не только о защите паролей, более радикальным подходом является создание другого пользователя и запуск вашей команды в качестве этого пользователя. Это имеет то преимущество, что даже если команда написана плохо, она не оставит компрометирующий вывод в вашем домашнем каталоге, потому что у нее нет разрешения. Вы можете настроить оболочку этого пользователя так, чтобы она не оставляла историю, и очищать ее домашнюю директорию по своему усмотрению.

2

Это все для оболочки BASH: history -c

очистит список истории и

history -d N

удалит запись истории N.

Также вы можете изменить ваш файл .bashrc, чтобы включить

export HISTIGNORE="[ ]*"

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

export HISTIGNORE="&:[ ]*:exit"

заставит историю игнорировать любые дубликаты команд, записи, начинающиеся с пробела, и выход.

Источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .