Un comando molto potente e interessante in Bash è la storia. In poche parole, per impostazione predefinita, Bash memorizzerà una cronologia di tutti i comandi digitati. Il valore della variabile HISTSIZE determina il numero di eventi conservati nell'elenco della cronologia durante una sessione. Sebbene il valore predefinito per HISTSIZE sia 500, potresti voler impostarlo su un valore più conveniente, come 10000. Quando esci dalla shell, i comandi eseguiti più di recente vengono salvati nel file fornito dalla variabile HISTFILE (l'impostazione predefinita è .bash_history nella tua home directory). Questo post descrive i passaggi per salvare la cronologia dei comandi di un utente specifico in Linux.
1. Creare un nuovo monitor di gruppo. Aggiungi utenti deve essere monitorato come gruppo secondario.
# groupadd monitor # usermod -a -G monitor [user]
Ad esempio:
# usermod -a -G monitor opc # id opc uid=1000(opc) gid=1000(opc) groups=1000(opc),1002(admins),1003(monitor)
2. Creare la directory /var/log/shelllogs in cui verrà salvata la cronologia della shell.
# mkdir /var/log/shelllogs # chown root:monitor /var/log/shelllogs # chmod 770 /var/log/shelllogs # chmod +t /var/log/shelllogs
3. Crea uno script in /etc/profile.d con il formato della cronologia ottimizzato in modo che venga esportato ogni volta che l'utente accede.
# 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. Modifica /etc/bashrc e aggiungi la riga successiva entro la fine del file.
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)
Accedi allo stesso server tramite un'altra sessione ssh/putty per assicurarti che i file vengano creati.