¿Cómo leer el historial actual de un usuario que aún ha iniciado sesión?

¿Cómo leer el historial actual de un usuario que aún ha iniciado sesión?

Actualmente tengo una sesión raíz SSH en un servidor Debian Wheezy y veo que otro usuario ha iniciado sesión (con una cuenta sin privilegios). Como el usuario todavía está conectado, el comando historyno muestra lo correcto porque el historial no se vació y luego el ~/.bash_historyarchivo no está actualizado (aún está en la memoria).

¿Cómo puedo volcar la memoria para ver qué ha hecho un usuario durante su sesión cuando todavía está conectado?

Respuesta1

Aquí hay un pequeño script que debería deshacerse del historial. Tenga en cuenta que necesita ser root para robar espacio en la memoria de otros procesos.

#!/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 Ver un error como 'advertencia: No se pudieron cargar los símbolos de la biblioteca compartida para...' puede ocurrir junto con algunas otras líneas de error. Intente encontrar el archivo histórico de /tmp/ antes de comenzar demasiado convencido de que el script no funcionó.

Respuesta2

Realmente no puedes confiar en bash_history porque no siempre se guarda o se puede sobrescribir. Además, normalmente no todo se guarda durante el uso de sesiones múltiples (eso depende de la configuración, por supuesto).

Si realmente necesita realizar un seguimiento de dichos datos, continuaría configurando acctherramientas útiles como:

  • acEl comando imprime las estadísticas de inicios y cierres de sesión de los usuarios (tiempo de conexión) en horas.
  • lastcommEl comando imprime la información de los comandos del usuario ejecutados previamente.
  • acctonEl comando se utiliza para activar o desactivar el proceso de contabilidad.
  • saEl comando resume la información de los comandos ejecutados previamente.
  • lasty lastblos comandos muestran una lista de los últimos usuarios que iniciaron sesión.

Instalar:

apt-get install acct

Luego debes habilitar el servicio.

service pcacct start

información relacionada