Supponiamo che stavo usando sha1pass
per generare un hash di una password sensibile sulla riga di comando. Posso usare sha1pass mysecret
per generare un hash di mysecret
ma questo ha lo svantaggio che mysecret
è ora nella storia di Bash. C'è un modo per raggiungere l'obiettivo finale di questo comando evitando di rivelare mysecret
in testo semplice, magari usando un passwd
prompt in stile?
Sono anche interessato in un modo generalizzato a fare questo per passare dati sensibili a qualsiasi comando. Il metodo cambierebbe quando i dati sensibili vengono passati come argomento (come in sha1pass
) o su STDIN a un comando.
C'è un modo per raggiungere questo obiettivo?
Modifica : questa domanda ha attirato molta attenzione e ci sono state diverse buone risposte offerte di seguito. Un riassunto è:
- Secondo la risposta di @ Kusalananda , idealmente non si dovrebbe mai dare una password o un segreto come argomento della riga di comando a un'utilità. Questo è vulnerabile in diversi modi come descritto da lui, e si dovrebbe usare un'utilità meglio progettata in grado di prendere l'input segreto su STDIN
- La risposta di @ vfbsilva descrive come impedire che le cose vengano archiviate nella storia di bash
- @La risposta di Jonathan descrive un metodo perfettamente valido per raggiungere questo obiettivo, purché il programma possa prendere i suoi dati segreti su STDIN. Come tale, ho deciso di accettare questa risposta.
sha1pass
nel mio PO era solo un esempio, ma la discussione ha stabilito che esistono strumenti migliori che raccolgono dati su STDIN. - come osserva @R .. nella sua risposta , l'uso dell'espansione del comando su una variabile non è sicuro.
Quindi, in sintesi, ho accettato la risposta di @ Jonathan poiché è la soluzione migliore dato che hai un programma ben progettato e ben educato con cui lavorare. Sebbene passare una password o un segreto come argomento della riga di comando sia fondamentalmente non sicuro, le altre risposte forniscono modi per mitigare i semplici problemi di sicurezza.
sha1pass mysecret
è in esecuzione, e quindi sapere cos'èmysecret
. (Funziona solo per pochi secondi mentre il programma è effettivamente in esecuzione, ovviamente ...)