Lo script che hai scritto non inserisce la password in nessuna memoria a lungo termine facilmente accessibile (come un file). Anche se il tipico controllo di linux sarebbe abilitato (che scriverebbe tutte le chiamate di programma unix in un file di log, inclusi gli argomenti), la password non è visibile, poiché è passata solo attraverso i flussi. L'unica eccezione è il comando "echo", che risulta essere una shell incorporata su bash, quindi non è una "invocazione del programma unix".
Se lo script è finito, la memoria allocata a $PASSWORD
viene liberata e se si verifica un altro processo per allocare quella memoria, verrà cancellata prima. Ma la memoria usata per "$ PASSWORD" (o le copie fatte all'interno di chpasswd, l'echo incorporato, la libreria grafica per mostrare la password) non viene necessariamente pulita dopo la terminazione di quello script. Se ti capita di utilizzare una GUI con una finestra della console, la password ovviamente è in memoria fino a quando puoi tornare ad essa. A seconda delle impostazioni di sicurezza nel kernel, i processi di root potrebbero essere in grado di cercare l'intera memoria fisica o lo spazio di swap per le copie della password, ma qualsiasi programma che assegna memoria tramite il kernel è garantito per non trovare la password, perché la memoria essere cancellato prima che venga distribuito per un altro processo.
Se il tuo computer ha un sacco di memoria, o se la password è finita nello spazio di swap, potrebbe essere in giro per un lungo periodo di tempo dopo che hai finito lo script. Non avere scambio (o disabilitare lo swap e cancellare l'intera partizione / file di swap) impedisce che la password finisca nel file di swap. Assegnare e sovrascrivere molta memoria può cancellare la password dalla memoria, ma è una cosa pericolosa da fare su linux perché il killer di OOM che kickerà proprio come si può essere sicuri di aver sovrascritto tutta la memoria che potrebbe contenere la password potrebbe uccidere alcuni non collegati processo.
Se hai bisogno di sicurezza contro lo scraping della memoria, la generazione della password dovrebbe accertarsi che la password non venga mai copiata in una memoria non controllata e che la memoria controllata venga cancellata prima che il programma esca. Non c'è modo di farlo in shell. Penso che non sia nemmeno possibile visualizzare una password (non scrivendola direttamente alla memoria video) che è garantita al 100% di non copiare la password in qualche memoria casuale.