Скрыть историю своих команд от других пользователей на сервере Linux

Скрыть историю своих команд от других пользователей на сервере Linux

Когда я вхожу через ssh на сервер Linux(Ubuntu), я замечаю, что все команды bash, выполненные другими пользователями на сервере, сохраняются в истории команд. Есть ли способ, который позволит мне скрыть команды, которые я ввел в командной строке, от других пользователей на сервере?

решение1

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

  1. Самое быстрое решение: Типunset HISTFILE

    Это предотвратит сохранение всех команд, запущенных в текущем сеансе входа, в файл .bash_history при выходе из системы. Обратите внимание, что HISTFILE будет сброшен при следующем входе в систему, поэтому история будет сохранена как обычно. Также обратите внимание, что это удаляетвсекоманды из сеанса, включая те, которые были запущены до того, как вы ввели unset HISTFILE, что может быть не тем, что вам нужно. Другим недостатком является то, что вы не можете быть уверены, что сделали все правильно, пока не выйдете из системы, так как bash все равно позволит вам использовать стрелку вверх, чтобы увидеть предыдущие команды.

  2. Лучшее решение: введите пробел перед командой

    Попробуйте, а затем нажмите стрелку вверх, чтобы увидеть, добавилось ли это в вашу историю. На некоторых сайтах это уже настроено, так что такие команды не сохраняются. Если это не сработает, добавьте строку export HISTCONTROL=ignorebothв ваш файл .bashrc. При входе в систему в будущем команды, начинающиеся с пробела, будут немедленно забыты.

  3. Самый простой для запоминания: Типsh

    Это запустит подоболочку с оригинальной оболочкой Bourne. Любые команды, написанные в ней (до вас exit), не будут сохранены в вашей истории. Любой, кто просматривает ваш файл истории, сможет увидеть, что вы запустили sh (что подозрительно), но не увидит, что вы запустили после этого.

Есть много других способов сделать это. Вы даже можете указать bash, какие команды никогда не следует запоминать (HISTIGNORE). Посмотрите страницу руководства bash(1) и найдите HIST, чтобы увидеть множество возможностей.

решение2

История командной строки для bashсеансов оболочки хранится в ~/.bash_historyфайле. Если этот файл не существует, он создается без прав на чтение для других пользователей.

Вы можете изменить количество команд, bashсохраняемых в этом файле, установив HISTFILESIZEпеременную окружения. Установка ее в ноль приведет к усечению файла истории до нулевого размера. Значение по умолчанию — 500. Отмена установки переменной HISTFILE( unset HISTFILE) также предотвратит сохранение команд в файле истории.

Однако текущая настройка сервера, которую вы описываете (в комментариях), просто неверна.

Не должно быть никаких причин разрешать нескольким пользователям входить в систему и использовать интерактивную оболочку на rootаккаунте. Рассмотрите возможность использования sudoвместо этого, с несколькими частными учетными записями пользователей!

История команд для root, будь то для интерактивных сеансов или при использовании sudo, чрезвычайно ценна,особенноесли у вас есть несколько пользователей с rootдоступом к системе.

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

РЕДАКТИРОВАТЬ: Недавно у нас начались проблемы с оптоволоконной сетью на кластере машин Linux на работе. Оказалось, что некоторые драйверы или другие были заменены на неправильную версию, когда глупый пользователь с sudoдоступом сделал неосторожное обновление пакета. Мы смогли обнаружить это, просмотрев системные журналы и sudoвременные метки в них. «Глупым пользователем» оказался никто иной, как я сам!

решение3

После входа в систему выполните следующую команду:

HISTFILE=

Это заблокирует запись любых последующих команд в файл истории.

Связанный контент