Cambia password a livello di codice


11

Nella versione corrente di Raspian, so che è possibile modificare la password dell'utente attualmente connesso dalla riga di comando in questo modo:

sudo passwd

che quindi richiederà all'utente di inserire una nuova password due volte. Questo produrrà output in questo modo:

Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Mi chiedevo se esiste un modo possibile per cambiare una password a livello di codice, come da uno script di shell.

Sto cercando di creare uno script di configurazione da distribuire sul mio Raspberry Pis e non voglio digitare manualmente nuove password per loro.


1
Per modificare la password dell'utente corrente non è necessario il prefisso sudo. Se lo utilizzi sudo, puoi forzare una nuova password per qualsiasi utente senza dover conoscere la password corrente dell'utente.
roaima,

expect(1)potrebbe aiutare pure.
SailorCire,

Assicurarsi di considerare le implicazioni di sicurezza quando si cambia la password a livello di codice.
Josh Habdas,

Risposte:


18

Stai cercando il chpasswdcomando. Faresti qualcosa del genere:

echo 'pi:newpassword' | chpasswd # change user pi password to newpassword

Si noti che deve essere eseguito come root, almeno con la configurazione PAM predefinita. Ma presumibilmente eseguito come root non è un problema per uno script di distribuzione del sistema.

Inoltre, puoi fare più utenti contemporaneamente alimentandolo con più righe di input.


9

Un'altra alternativa è usare il yescomando nel tuo script.

yes newpassword | passwd youruser

Questo invierà newpasswordal passwdcomando per youruser.

Va detto che l'impostazione / la modifica delle password degli utenti tramite script può presentare rischi per la sicurezza e dovrebbe essere evitata quando possibile.

MODIFICARE:

Questa risposta richiede l'accesso come root. Ci scusiamo per non averlo menzionato in precedenza. È un metodo che utilizzo quando eseguo attività di amministrazione che richiedono l'accesso come root.


Hai provato questo?
roaima,

Sì. Uso questo metodo da anni. L'ho provato prima di pubblicare la mia risposta e di nuovo proprio ora.
Timothy Martin,

Anche supponendo che sia passwdletto stdinpiuttosto che da un terminale (tastiera), come può funzionare quando passwdrichiede prima la vecchia password di un utente e poi la nuova?
roaima,

@roaima probabilmente Timothy lo esegue come root (il che spiegherebbe perché youruseralla fine ha bisogno ). Potrebbe funzionare da qualche parte ...
derobert,

1
@roaima Il passwdcomando delle utility shadow di Linux accetta input reindirizzati (a differenza, ad esempio, di OpenSSH ssh). L'uso yesnon è tuttavia una buona idea: espone la password ai ficcanaso che guardano l'elenco dei processi nel momento sbagliato. L'uso echonon avrebbe questo difetto perché è incorporato nella shell.
Gilles 'SO- smetti di essere malvagio' il
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.