Nuestra pequeña empresa ejecuta un Ubuntu Server 11.10, al cual un par de personas tienen acceso SSH. Los terminales reales a veces también se usan. ¿Cómo podemos registrar localmente todos los comandos Bash ejecutados, junto con el usuario y la marca de tiempo?
Podemos suponer que nadie es nefasto e intenta activamente evitar el registro, pero aún preferimos que los usuarios no tengan acceso directo de escritura a sus archivos de registro. Las sesiones simultáneas se deben manejar correctamente.
PROMPT_COMMAND
o ejecutando un shell que no sea bash.Un sistema de contabilidad de procesos puede ser útil a este respecto, particularmente el acct paquete que proporciona los comandos lastcomm y ac.
Los comandos ac imprimen estadísticas sobre el tiempo de conexión de los usuarios, en horas. Esta es la cantidad de tiempo que el usuario ha estado conectado al sistema, ya sea de forma remota a través de SSH o un terminal en serie, o mientras está en la consola.
El comando lastcomm muestra información sobre los comandos ejecutados anteriormente. Las entradas más recientes se encuentran en la parte superior de la lista. También se muestra la cantidad total de tiempo de CPU que utilizó cada proceso.
Aquí hay un tutorial antiguo que puede ser útil:
http://www.linuxjournal.com/article/6144?page=0,1
Otros comandos de contabilidad como last y así sucesivamente se pueden encontrar en este tutorial:
http://www.techrepublic.com/article/system-accounting-in-linux/1053377
fuente
Podrías usar snoopy .
Snoopy Logger puede adaptarse bien a su propósito. No pretende ser una solución de registro inevitable, sino más bien una herramienta útil para administradores diligentes que prefieren realizar un seguimiento de sus propias acciones.
Divulgación: soy el mantenedor de Snoopy.
fuente
Puede encontrar aquí un script para registrar todos los comandos / incorporaciones bash en un archivo de texto o un servidor syslog sin usar un parche o una herramienta ejecutable especial.
Muy fácil de implementar, ya que es un script de shell simple que debe llamarse una vez en la inicialización del bash .
Es gratis y espero que se ajuste a tus necesidades.
fuente
Para ocuparse de múltiples sesiones sin sobreescribir el archivo de historial, deberá colocar "shopt -s histappend" en un archivo de inicio de Bash. Ver, también esta pregunta sobre el mismo problema.
fuente
intente esto (las soluciones anteriores no funcionarán al 100% con bash 4.3):
esto hace el registro Y evita el registro de las marcas de tiempo que se usan para el archivo de historial de bash. se necesita la trampa, ya que bash enviará las señales al "subtrabajo" después de presionar strg + c varias veces (probado con bash 4.3). esto forzará el cierre de sesión del usuario actual (por ejemplo, conectado con sudo)
fuente
También puede intentar instalar acct. Acct mantiene un registro de auditoría detallado de lo que se está haciendo en sus sistemas Linux.
fuente