Come impostare le password degli utenti utilizzando passwd senza un prompt?


21

Sto scrivendo uno script per aggiungere una grande quantità di utenti a un sistema. Parte di ciò comporta l'impostazione di password predefinite per ciascun utente. Come posso impostare le password degli utenti senza che mi richieda la password in anticipo?

Sfortunatamente passwd non sembra prendere un argomento affermando la nuova password da impostare. Sto usando Ubuntu 11.10.

Risposte:


22

Prova usermod:

usermod --password PASSWORD USERNAME

L'unica cosa è che questo ha bisogno di una stringa di password pre-crittografata che dovresti generare prima.


1
... che posso generare usando mkpasswd. Eccellente grazie!
Jake Petroules,

16
Puoi anche usare openssl per generare la password crittografata. Ad esempio:usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME
Eric Smith,

1
Tre anni troppo tardi. Non sono riuscito a rispondere @EricSmith, ma ho scoperto una versione più semplice del comando che ha funzionato:usermod --password $(openssl passwd -1 {password}) {username}
BoCoKeith

13

Dovresti guardare il chpasswdcomando (se disponibile nel tuo sapore Linux):

echo 'userid:newpasswd' | chpasswd

In alternativa, puoi catalogare un file che elenca userid: passwd per ciascun account su una riga separata.

Questo è tutto.


questo ha funzionato per me inDockerfile
Vishrant il

1

Ispirato dall'idea di Eric Smith, la combinazione openssl passwde il usermod -pcomando hanno funzionato. Genera il valore hash della password insieme al valore salt.

$ openssl passwd -1  -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.

Quindi, copia la stringa crittografata su usermod. Assicurati di avvolgerlo con una singola citazione.

$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root

Dai un'occhiata nel file shadow.

$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::

0

È necessario utilizzare l'invecchiamento della password e impostare gli utenti in modo che debbano modificare la password al primo accesso. Vedere questo articolo .


Questi intendevano essere solo account FTP, ma un buon consiglio. ;)
Jake Petroules,

0
(echo user; echo password) | passwd

funziona sia per l'host fisico che per il container, per vari sistemi operativi (ubuntu xenial, bionic, debian9,10, centos75,76, coreos)

echo user:password | chpasswd

funziona per alcuni sistemi operativi, ma alcuni sistemi operativi come debian9,10 mostreranno un errore can not connect to /var/run/nscd/socketpoiché utilizzano /etc/nsswitch.conf per determinare dove memorizza la password.

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.