Puoi rimuovere solo la riga offensiva da bash
la cronologia, invece di cancellare l'intera cronologia. Rimuovi semplicemente la riga con il -d
flag, quindi salva (scrivi) la nuova cronologia con il -w
bandiera:
$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
Ci sono due parti in questo:
bash
memorizza la cronologia in un file~/.bash_history
che è, per impostazione predefinita, scritto alla fine della sessione- il
history
che viene tenuto in memoria
Per sicurezza, devi cancellarlo dalla sessione:
history -c
e troncare il file della cronologia secondo necessità:
> ~/.bash_history
Se la tua sessione in cui hai digitato la password è ancora aperta, allora c'è un altro modo per coprire la tua traccia è impostare il HISTFILE
variabile al dispositivo null in modo che la cronologia non venga scritta in ~/.bash_history
quando la sessione esce:
export HISTFILE=/dev/null
Poiché bash (almeno tutte le versioni storiche e attuali di cui sono a conoscenza) non salva automaticamente la cronologia finché non esci, una strategia generalmente applicabile quando hai digitato un comando che vuoi assicurarti che non venga mai salvato è digitare immediatamente:
kill -9 $$
Questo uccide la shell con SIGKILL
, che non può essere catturato, quindi la shell non ha modo di salvare nulla all'uscita.
La maggior parte degli altri approcci prevede lo scrubbing dopo il fatto (ovvero dopo che i dati hanno già raggiunto il disco), che ha molte più possibilità di errore (manca una copia), soprattutto se il sistema potrebbe utilizzare btrfs o simili.