4

Я знаю, что все команды, которые пользователь отправляет на сервер, автоматически регистрируются в ~/.bash_history

Я хочу предоставить коллеге доступ к своему компьютеру (я уже предоставил ему ограниченный доступ к использованию sudo через /etc/sudoers), даже если я ему доверяю, мне бы хотелось достоверно знать, что он сделал на моем компьютере - так что я должен быть уверен:

  • его ~/.bash_history не может быть скомпрометирован (он не может обрезать или как-то изменить файл)
  • он не может изменить критические переменные env, которые могут повлиять на ведение журнала - например, HISTCONTROL, HISTFILE или HISTSIZE
  • он не может запустить что-то вроде history -c

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

1 ответ1

10

Укрепите файлы конфигурации bash_history и bash, сделав их только для добавления:

chattr +a /home/user/.bash_history
chattr +a /home/user/.bash_profile
chattr +a /home/user/.bash_login
chattr +a /home/user/.profile
chattr +a /home/user/.bash_logout
chattr +a /home/user/.bashrc

Защитите переменные env, добавив следующие строки в /home/user/.bashrc:

shopt -s histappend
readonly PROMPT_COMMAND="history -a"
readonly HISTFILE
readonly HISTFILESIZE
readonly HISTSIZE
readonly HISTCMD
readonly HISTCONTROL
readonly HISTIGNORE

histappend сообщает bash добавить последние строки $ HISTSIZE в файл $ HISTFILE при выходе из интерактивной оболочки. PROMPT_COMMAND выполняет данную команду перед выдачей каждого приглашения. history -a добавляет команду, набранную непосредственно перед текущей, к $ HISTFILE.

Отключить доступ к другим оболочкам:

chmod 750 csh
chmod 750 tcsh
chmod 750 ksh

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