Gestire e disattivare la cronologia dei comandi da terminale
Vi siete mai chiesti come fa il terminale a ricordare tutti i comandi digitati durante qualsiasi sessione? Semplice: il tutto viene memorizzato in un file speciale, il file .bash_history (presente nella directory utente), e può essere richiamato utilizzando il comando history.
In linea di massima qualsiasi utente con privilegi di root potrebbe accedere all’history file di ciascun utente, ed è anche vero che chiunque in possesso del vostro nome utente e della vostra password d’accesso al computer può tranquillamente visualizzare i comandi digitati da terminale, sia accedendo al file .bash_history, sia invocando il comando history, sia premendo la freccia direzionale in alto.
E’ possibile evitare tutto ciò in maniera piuttosto semplice grazie a degli accorgimenti da applicare durante l’utilizzo del terminale: i consigli di seguito vi aiuteranno a gestire e disattivare la cronologia dei comandi da terminale per tenere la vostra attività al sicuro da occhi indiscreti.
Galeotto fu lo spazio…
Nei terminali dei sistemi operativi più diffusi, per impostazione predefinita la variabile HISTCONTROL viene impostata su ignorespace o ignoreboth: ciò significa che qualsiasi comando voi digitiate dopo uno spazio non sarà memorizzato dal buffer dei comandi e, di conseguenza, non sarà scritto nell’history file. Potrete accertarvi che sia il vostro caso digitando a terminale il comando
echo $HISTCONTROL
Quindi, per evitare che un singolo comando venga memorizzato dalla cronologia, non vi resta che anteporvi uno spazio:
#spazio# ls -al
Se HISTCONTROL non fosse impostato ad ignorespace/both non disperate: potrete farlo manualmente unicamente per la sessione in uso impartendo il comando
HISTCONTROL=ignoreboth
Occhio: da questo momento potrete iniziare a digitare comandi preceduti da uno spazio soltanto per la sessione corrente, ma il set verrà memorizzato! Per eliminarlo (capirete in seguito il perché), potrete usare il comando
#spazio# history -d $((HISTCMD-2))
Il comando history
Banalmente, digitare a terminale il comando
history
vi farà accedere all’intera cronologia dei comandi digitati, sia quelli presenti nel file .bash_history (quindi già memorizzati) sia quelli presenti nel buffer del terminale, che saranno scritti nel suddetto file nel momento in cui il terminale stesso verrà chiuso. Ora notate come di fianco ad ogni comando elencato sia presente un numero: usando quel numeretto potrete eliminare uno o più comandi (magari impartiti senza pensarci) senza però eliminare l’intero file della cronologia, come nulla fosse.
Quindi, per eliminare un preciso comando dalla cronologia, è sufficiente digitare a terminale
#spazio# history -d numero_comando
In questo modo il comando sarà eliminato dall’histfile ma non dal buffer di memoria. Per eliminare invece tutto ciò che è presente nel buffer di memoria del terminale (di conseguenza non verrà scritto nel file quando il terminale verrà chiuso), è sufficiente digitare
history -c
Disabilitare il file history
I metodi visti fino ad ora ci son serviti per “ovviare” a situazioni in cui i comandi da tener privati fossero stati delle “improvvisate”, ovvero quando non avevate previsto di impartirli, e soprattutto quando si vogliono nascondere senza lasciar “segni” di averlo fatto (cosa che, invece, sarebbe evidente cancellando del tutto l’history file).
Usando il metodo descritto in basso potremo disabilitare a priori l’intero meccanismo di cronologia, con la possibilità di attivarlo in qualsiasi momento. Quindi per disabilitare l’histfile e l’intera memorizzazione della cronologia andremo a digitare, appena aperto il terminale, il comando
shopt -uo history
La cronologia sarà in questo modo disattivata soltanto per il terminale corrente. Bisogna comunque notare che la pressione del tasto “Su” richiamerà comunque i comandi già impartiti.
Eliminare il file history
Se proprio siete paranoici e volete liberarvi del file della cronologia, eliminando quindi tutte le tracce delle operazioni svolte da terminale fino a quel momento, potrete tagliare la testa al toro eliminando l’intero file della cronologia, tenendo comunque presente che questo sarà ricreato automaticamente e che la cronologia verrà attivata all’apertura di un nuovo terminale.
Per procedere, digitate in sequenza i comandi
shopt -uo history unset HISTFILE rm $HISTFILE history -c kill -9 $$
Piccola spiegazione:
- come già detto, il primo comando disattiva provvisoriamente la cronologia;
- il secondo comando fa “dimenticare” alla shell il percorso dell’history file (di norma ~/.bash_history)
- il terzo comando elimina l’history file;
- il quarto comando elimina la cronologia nel buffer del terminale;
- il quinto comando letteralmente “ammazza” il terminale, impedendo così che l’history file sia ricreato alla chiusura e che vi venga scritto qualcosa.
In definitiva…
Giocare con la cronologia del terminale non è complesso: basta semplicemente un po’ di dimestichezza e sarete in grado di decidere come, quando e perché memorizzare o dimenticare precisi comandi eseguiti! Tuttavia ricordate sempre una cosa: Linux è fatto per essere multiutente quindi, anziché dover pensare a tanti accorgimenti per evitare di essere “beccati” a fare cose strambe, semplicemente create un account separato per ogni utilizzatore del PC!
Il discorso cambia nel caso si parli di macchine aziendali, nelle quali solitamente non siete autorizzati a creare nuove utenze e c’è sempre un boss che sorveglia tutto: la raccomandazione, in questo caso, è di non abusare di quanto spiegato fino ad ora e soprattutto di non eseguire comandi malandrini con la certezza di poterne eliminare le tracce!
L’articolo Gestire e disattivare la cronologia dei comandi da terminale appare per la prima volta su Chimera Revo – News, guide e recensioni sul Mondo della tecnologia.
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.