Vorrei modificare le impostazioni della cronologia per tutti gli utenti sui sistemi che gestisco. Vorrei che contenesse le informazioni dal terminale di connessione come dawho
sysadmin:/ # who
sysadmin pts/0 Mar 26 07:11 (sysadmin.doofus.local)
Attualmente modifico la mia cronologia nei seguenti modi. So che molte di queste impostazioni sono state trattate qui diverse volte. Tuttavia, ho estratto questo codice da " Ricette di amministrazione del sistema Linux di: Juliet Kemp " molto tempo fa.
shopt -s histappend
PROMPT_COMMAND='history -n;history -a'
HISTSIZE=100000
HISTFILESIZE=100000
HISTTIMEFORMAT="%m/%d/%y %T "
shopt -s histappend
risolve il problema quando si hanno più terminali aperti che potrebbero andare perse informazioni.
PROMPT_COMMAND='history -n;history -a'
si estende per fornire in tempo reale l'aggiunta alla cronologia su più terminali.
HISTSIZE=100000
HISTFILESIZE=100000
estende la quantità di history
ritenzione
HISTTIMEFORMAT="%m/%d/%y %T
"sostituisce ogni riga della storia con un timestamp
Cosa ottieni in genere history
835 ls
836 cd ..
I miei history
risultati attuali modificati
5853 03/26/12 07:16:49 ls
5854 03/26/12 07:16:50 ll
Il ritorno da history
mi piacerebbe vedere
5853 03/26/12 07:16:49 sysadmin.doofus.local ls
5854 03/26/12 07:16:50 sysadmin.doofus.local ll
001 03/26/12 05:11:29 demo_user.doofus.local cd
002 03/26/12 05:11:30 demo_user.doofus.local ll
Non sono "sposato" nel vedere il DNS
nome. Lo vorrei solo lì se lo estrae da who
o in un'altra posizione senza la necessità di eseguire una ricerca o una query di qualsiasi tipo. Sarei felice con l'indirizzo IP.
002 03/26/12 05:11:30 192.168.0.2 ll
Perché? Gestisco diversi sistemi in cui un userid condiviso da più utenti dello stesso gruppo per svolgere le proprie attività quotidiane. Ciò mi consentirebbe di correlare la loro posizione reale e l'utente reale all'interno dell'organizzazione a ciò che hanno fatto nella storia.
Sono consapevole che questo non è ottimale e vorrei cambiarlo ma, quando sei su una nave delle dimensioni di una nave da crociera, non cerchi di fare virate. (Nota: quando lo fai i passeggeri cercano di buttarti fuori bordo)
Ad ogni modo, fino a quando non sarò in grado di migrarli verso una soluzione migliore, vorrei avere questa capacità di tracciamento.
Inoltre, se hai qualche consiglio su quello che sto attualmente usando per le mie history
modifiche, mi piacerebbe ascoltarlo.
Grazie,
Modifica: 1
Non voglio eseguire altri programmi o non devo configurare nulla di aggiuntivo "entro limiti ragionevoli".
Voglio aggiungere un 0
sovraccarico, se devo aggiungere deve essere piccolo.
Mi fido dei miei utenti che vorrei (se dovesse succedere qualcosa) vedere quale dei 10 utenti che hanno effettuato l'accesso al sistema con lo stesso utente: password lo ha fatto. Oppure, potrebbe non essere stato un utente, potrebbe essere stato dimenticato cron
su un sistema che esegue una connessione come utente per fare qualcosa. O un'applicazione Ex: BMC Control-M
che si connette ssh
ed esegue attività. Non si tratta tanto di trovare "cattivi utenti" quanto di riuscire a rintracciarlo con il minimo sforzo.
Modifica 2:
I sistemi eseguono SLES e RHEL
/proc
/dev
e le /home
directory degli utenti . Questo aggiunge spese generali. Considerando che history
è già in fase di registrazione e le loro informazioni di connessione sono note al sistema di connessione IP ecc ... Queste informazioni, se non già disponibili "staticamente", potrebbero essere impostate in questo modo o memorizzate in una variabile o file e inserite nei history
record e nel risultato delle prestazioni sarebbe molto piccolo o 0.
auditd
. Non sono sicuro che i suoi registri ti forniranno informazioni sufficienti. La difficoltà di ciò che desideri è proprio il motivo per cui gli account condivisi sono così criticati.
auditd
è un po 'come se inotify
dovessi dirgli cosa monitorare per i cambiamenti. Singoli file, directory, ecc. Non voglio andare a quel livello di configurazione. In effetti (lo faccio) ma essenzialmente non mi interessa così tanto. Devo puppet
gestire quella roba. auditd
viene fornito con il carico aggiuntivo e il tempo di installazione. Se un account sta modificando qualcosa, vorrei comunque guardare indietro nella cronologia e vedere chi o cosa sta effettuando l'accesso e provando.
PROMPT_COMMAND=
che esegue solo i normali comandi prima del prossimo prompt, non potresti scrivere una funzione che chiama sed / awk che funziona sull'ultima riga del file della cronologia per aggiungere le informazioni. quindi chiamare quella funzione PROMPT_COMMAND=
per aggiungere i dati? sarebbe un trucco, ma dovrebbe fare il lavoro.