Come eseguire i comandi di crittografia su Linux senza registrazione cronologica della shell


2

Voglio crittografare qualcosa senza registrare alcuna parte del comando shell per bash cronologia. Non voglio che la password, i nomi dei file o il comando compaiano nella cronologia della shell. Come farlo usando AES 256 con SHA2? (Credo che questa sia la configurazione più segreta oggi, vero?)


Questa è in realtà 2 domande. Potresti considerare di aprire un'altra domanda per "la configurazione più segreta oggi".
RobertL,

Prefisso il tuo comando con uno spazio.
Ciro,

@Cyrus, vero, dovrebbe menzionare che funziona solo con bash, e dipende anche dalla configurazione
RobertL

@RobertL: è corretto. La variabile HISTCONTROLdeve contenere una parola chiave ignorespace.
Ciro,

Risposte:


3
$ unset HISTFILE
$ cat something | openssl enc -e -aes256 > encrypted-something
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

@GuerlandoOCs: somethingecco solo il nome del file - non hai mai detto che il nome del file fosse sensibile.
Scott,

Si deve sapere che unsette le HISTFILEvariabili non salverà alcuna della lista storia per il file, anche quelli comandi prima HISTFILEera unset. bashha un "elenco cronologico" in memoria che viene scritto HISTFILEquando bashesce.
RobertL

2
Può avviare la riga di comando con uno spazio per non accedere all'elenco cronologico in memoria.
BowlOfRed

1
@BowlOfRed, dipende da HISTCONTROL/HISTIGNORE
ilkkachu il

@BowlOfRed Buon punto. Nota che funziona solo in bashe dipende dalla configurazione di bashcon le variabili di ambiente come da @ilkkachu. Di solito la bashconfigurazione predefinita supporta questo utilizzo.
RobertL

8

Il modo migliore per disattivare temporaneamente la cronologia è avviare una subshell con la HISTSIZE variabile di ambiente impostata su 0:

HISTSIZE=0 $0
type your commands here
<ctrl-D>

La registrazione della cronologia nella shell di accesso originale rimane invariata dopo essere usciti dalla subshell.

Le $0assicura che si avvia la stessa shell che si sta utilizzando. Si potrebbe sostituire $0con il percorso a qualsiasi shell, per esempio: /bin/sh.

Questo funziona con la maggior parte delle conchiglie comuni, tra cui bash, ksh, zsh, dash. Penso che questo sia uno standard POSIX.

È inoltre possibile digitare exitper uscire dalla subshell.

Esempio

$ true 1
$ true 2
$ HISTSIZE=0 $0
$ true 3
$ true 4
$ exit
$ history 4
500  true 1
501  true 2
502  HISTSIZE=0 $0
503  history 4

2

Se i nomi dei file nella riga di comando ti danno fastidio, puoi leggerli dal terminale:

read infile; read outfile; cat $infile | openssl enc -e -aes256 > $outfile;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.