È possibile aprire una sessione in incognito in bash
?
Ad esempio, quando dobbiamo inserire le password nei comandi e non vogliamo bash
aggiungerle alla cronologia.
secrectcommand
non sarà nella storia di Bash.
È possibile aprire una sessione in incognito in bash
?
Ad esempio, quando dobbiamo inserire le password nei comandi e non vogliamo bash
aggiungerle alla cronologia.
secrectcommand
non sarà nella storia di Bash.
Risposte:
Quando vuoi bash
interrompere la registrazione dei tuoi comandi, disattiva la HISTFILE
variabile:
HISTFILE=
Tutti gli altri comandi non dovrebbero più essere registrati .bash_history
.
D'altra parte, se in realtà stai fornendo password come argomenti ai comandi, stai già facendo qualcosa di sbagliato. .bash_history
non è leggibile dal mondo e quindi non è la più grande minaccia in questa situazione:
ps
e /proc
sono il grosso problema. Tutti gli utenti del sistema possono vedere i comandi che stai attualmente eseguendo con tutti i loro argomenti . Il passaggio di password come argomenti della riga di comando è quindi intrinsecamente insicuro . Utilizzare variabili di ambiente o file di configurazione (che sono stati scelti 600) per fornire password in modo sicuro.
unset HISTFILE
ha un effetto simile. Ho una funzione per questo: n() { HISTFILE=; PS1="~${PS1#\~}"; }
. In questo modo posso vedere chiaramente se sono in "modalità di navigazione in incognito" o no.
HISTCONTROL=ignorespace
Se questa opzione non è già impostata per bash
, potrebbe essere proprio quello che ti serve. È meno debilitante che disabilitare tutta la storia. Con questo set, qualsiasi riga di comando che inizia con un carattere spazio non verrà salvata nell'elenco cronologico.
Da questi collegamenti correlati:
Perché bash ha un'opzione HISTCONTROL = ignorespace?
Perché bash non memorizza i comandi che iniziano con gli spazi?
Puoi disabilitare temporaneamente la cronologia: set +o history
set +o history
...
set -o history
C'è una differenza tra la disabilitazione della cronologia e il disinserimento HISTFILE
:
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
produce qualcosa del genere:
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
cioè tutti i comandi vengono salvati nell'elenco cronologico. Digita exit
per salvarlo.
Ma
set +o history
date
ls
set -o history
history
produce qualcosa del genere:
115 set +o history
116 history
Riepilogo :
set +o history
per sessioni lunghe.
HISTCONTROL
e <space>command
altre volte.
cat | bash
eseguirà una modifica non interattivabash
senza prompt, da riga di comando (solo l'editor interno della disciplina di riga) o cronologia.