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

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

В настоящее время у меня есть сеанс 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

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