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.