¿Cómo establecer contraseñas de usuario usando passwd sin un aviso?

21

Estoy escribiendo un script para agregar una gran cantidad de usuarios a un sistema. Parte de esto implica establecer contraseñas predeterminadas para cada usuario. ¿Cómo puedo configurar las contraseñas de los usuarios sin que se me solicite la contraseña por adelantado?

Lamentablemente, passwd no parece tomar un argumento que indique la nueva contraseña para establecer. Estoy usando Ubuntu 11.10.

Jake Petroules
fuente

Respuestas:

22

Prueba usermod:

usermod --password PASSWORD USERNAME

Lo único es que esto necesita una cadena de contraseña preencriptada que primero debería generar.

Cesio
fuente
1
... que puedo generar usando mkpasswd. ¡Excelente, gracias!
Jake Petroules
16
También puede usar openssl para generar la contraseña cifrada. Por ejemplo:usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME
Eric Smith
1
Tres años demasiado tarde. No pude responder @EricSmith, pero descubrí una versión más simple del comando que funcionó:usermod --password $(openssl passwd -1 {password}) {username}
BoCoKeith
13

Debe mirar el chpasswdcomando (si está disponible en su sabor de Linux):

echo 'userid:newpasswd' | chpasswd

O bien, puede colocar un archivo que enumera userid: passwd para cada cuenta en una línea separada.

Eso es.

Alano
fuente
esto funcionó para mí enDockerfile
Vishrant
1

Inspirado por la idea de Eric Smith, la combinación openssl passwdy el usermod -pcomando funcionaron. Generar valor hash de contraseña junto con valor de sal.

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

Luego, copie la cadena encriptada a usermod. Asegúrese de envolverlo con comillas simples.

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

Compruébalo en el archivo de sombra.

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

Debe usar el envejecimiento de la contraseña y configurar los usuarios para que cambien su contraseña en el primer inicio de sesión. Ver este artículo .

Waltinator
fuente
Estos pretendían ser cuentas solo de FTP, pero un buen consejo. ;)
Jake Petroules
0
(echo user; echo password) | passwd

funciona para mí tanto en host físico como en contenedor, para varios sistemas operativos (ubuntu xenial, bionic, debian9,10, centos75,76, coreos)

echo user:password | chpasswd

funciona para algunos sistemas operativos, pero algunos sistemas operativos como debian9,10 mostrarán un error can not connect to /var/run/nscd/socketya que usan /etc/nsswitch.conf para determinar dónde almacena la contraseña.

osexp2003
fuente