Un comando muy poderoso y genial en Bash es la historia. En pocas palabras, de forma predeterminada, Bash almacenará un historial de todos los comandos que escriba. El valor de la variable HISTSIZE determina el número de eventos conservados en la lista de historial durante una sesión. Aunque el valor predeterminado para HISTSIZE es 500, es posible que desee configurarlo en un valor más conveniente, como 10000. Cuando sale del shell, los comandos ejecutados más recientemente se guardan en el archivo proporcionado por la variable HISTFILE (el valor predeterminado). es .bash_history en su directorio de inicio). Esta publicación describe los pasos para guardar el historial de comandos de un usuario específico en Linux.
1. Cree un nuevo monitor de grupo. Agregar usuarios debe ser monitoreado en él como un grupo secundario.
# groupadd monitor # usermod -a -G monitor [user]
Por ejemplo:
# usermod -a -G monitor opc # id opc uid=1000(opc) gid=1000(opc) groups=1000(opc),1002(admins),1003(monitor)
2. Cree el directorio /var/log/shelllogs donde se guardará el historial de shell.
# mkdir /var/log/shelllogs # chown root:monitor /var/log/shelllogs # chmod 770 /var/log/shelllogs # chmod +t /var/log/shelllogs
3. Cree un script en /etc/profile.d con un formato de historial modificado para que se exporte cada vez que el usuario inicie sesión.
# cat /etc/profile.d/history.sh export HISTSIZE=10000 export HISTTIMEFORMAT='%F %T ' export HISTFILE=/var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T) export PROMPT_COMMAND='history -a'
4. Edite /etc/bashrc y agregue la siguiente línea al final del archivo.
test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -f /var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T)_console.log)
Inicie sesión en el mismo servidor a través de otra sesión de ssh/putty para asegurarse de que se están creando los archivos.