Отключить возможность скрывать историю команд bash

Пользователь может скрыть историю команд в bash:

  1. добавить пробел перед командой
  2. неустановленный HISTFILE

Как это отключить?

1 ответ

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

Вы можете установить соответствующие переменные управления историей (HISTFILE,HISTFILESIZE,HISTSIZE,HISTCONTROL,HISTIGNORE) в значения, которые вы хотите, и сделать их доступными только для чтения. Сделайте это в удобном общесистемном файле инициализации, который пользователи не смогут редактировать. Так, например, вы могли бы установить

readonly HISTFILE=~/.bash_history
readonly unset HISTCONTROL 

или же

readonly HISTCONTROL=ignoredupes

Это, однако, не мешает пользователю редактировать $HISTFILE и удалять из него команды или удалять файл, а затем связывать его с /dev/null, чтобы команды снова были скрыты.

Вы можете решить эту проблему, добавив $HISTFILE только с помощью chattr.

chattr +a /home/alice/.bash_history

Теперь.bash_history не может быть изменен, только добавлен (не забудьте поставить на место некую обрезку). Мы можем видеть все, что делает пользователь... Нет,

Пользователь может легко обойти эти ограничения

  • Они могут запустить другую оболочку (есть несколько доступных). Конечно, вы можете помешать им выполнить их, но это может вызвать неожиданные проблемы и в других местах.
  • Они могут бежать bash --norc --noprofile который обходит все сценарии инициализации, они могут затем тривиально получить сценарий, содержащий требуемые настройки / инициализацию. Вы сможете увидеть, что они сделали это, но не то, что они впоследствии сделали.

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

Другие вопросы по тегам