Supponiamo che stavo usando sha1passper generare un hash di una password sensibile sulla riga di comando. Posso usare sha1pass mysecretper generare un hash di mysecretma 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 mysecretin testo semplice, magari usando un passwdprompt 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.
sha1passnel 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 ...)