
В настоящее время у меня есть сеанс root SSH на сервере Debian Wheezy, и я вижу, что другой пользователь в настоящее время вошел в систему (с непривилегированной учетной записью). Поскольку пользователь все еще вошел в систему, команда history
не показывает правильные данные, поскольку история не была очищена, а ~/.bash_history
файл не является актуальным (он все еще находится в памяти).
Как сделать дамп памяти, чтобы увидеть, что делал пользователь во время сеанса, когда он все еще находится в системе?
решение1
Вот небольшой скрипт, который должен выгрузить историю. Обратите внимание, что вам нужно быть root, чтобы украсть память других процессов.
#!/bin/bash
if [ $# -eq 0 ]; then
echo "usage: $0 <bash_pid>"
exit 1
fi
gdb -batch \
--eval "set sysroot /" \
--eval "attach $1" \
--eval "call write_history(\"/tmp/bash_history-$1.txt\")" \
--eval 'detach' \
--eval 'q'
exit 0
ps Видеть ошибку типа «предупреждение: не удалось загрузить символы общей библиотеки для...» может происходить вместе с несколькими другими строками, выглядящими как ошибка. Попробуйте найти файл истории из /tmp/, прежде чем начать, слишком уверенный, что скрипт не работает.
решение2
На bash_history нельзя полагаться, потому что она не всегда сохраняется или может быть перезаписана. Также не все обычно сохраняется при многосессионном использовании (конечно, это зависит от конфигурации).
Если вам действительно необходимо отслеживать такие данные, то я бы рекомендовал вам воспользоваться настройкой, acct
которая включает в себя такие полезные инструменты, как:
ac
команда выводит статистику входов/выходов пользователей (время подключения) в часах.lastcomm
команда выводит информацию о ранее выполненных командах пользователя.accton
команда используется для включения/выключения процесса учета.sa
команда обобщает информацию о ранее выполненных командах.last
иlastb
команды показывают список последних вошедших в систему пользователей.
Установить:
apt-get install acct
Затем вам необходимо включить услугу
service pcacct start