Cambiar la contraseña de usuarios Linux con stdin, en una línea de comando

Vamos a ver cómo cambiar la contraseña de usuario de Linux con stdin en una línea de comandos, usando el comando passwd y la opción stdin (entrada por teclado), por medio de una sola línea de comando y sin tener que introducir la contraseña de forma interactiva.

 
cambiar password usuario linux en una linea de comando
 
El comando passwd es la forma de modificar la contraseña de un usuario en Linux, y requiere de la entrada por teclado de la nueva contraseña de forma interactiva (stdin).

--stdin
This option is used to indicate that passwd should read the new
password from standard input, which can be a pipe.

 
comando passwd linux opcion stdin

Pero existe una forma de utilizar el comando passwd de forma no interactiva y con una sola línea de comando para cambiar la contraseña de usuarios en Linux, es decir, sin tener que introducir la contraseña dos veces de forma manual cuando el menú interactivo la pida. Esto es especialmente útil en el caso de tener que crear varias cuentas de usuario.

 

 
En este artículo:

 
 

Cambiar la contraseña de usuario con una línea de terminal

 

Veamos un ejemplo sobre cómo cambiar la contraseña de usuario con una línea de terminal en Linux.
 
Para cambiar la contraseña de un usuario en una sola línea de terminal utilizaremos el comando echo, una tubería y el comando passwd con la opción stdin.

echo "mipassword" | passwd --stdin usuario1

 
cambiar password usuario linux en una linea de comando
 

 

Cambiar la password en modo interactivo con echo -e (interpretar caracteres escapados), usando una sola línea de comando en la terminal

 
Por defecto, el comando echo no interpreta los caracteres escapados. Así que vamos a utilizar la opción echo -e, que sí que interpreta los caracteres escapados, y vamos a ver cómo utilizarlo para cambiar la contraseña en modo interactivo, pero usando una sola línea de comando en la terminal (y sin usar la opción stdin del comando passwd).
 

ECHO(1) User Commands ECHO(1)
 
NAME
echo - display a line of text
 
SYNOPSIS
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
 
DESCRIPTION
 
-e enable interpretation of backslash escapes

 
manual echo linux opcion-e interpretar caracteres escapados
 

[root@localhost ~]# echo -e "mipassnueva\nmipassnueva" | passwd usuario1
Cambiando la contraseña del usuario usuario1.
Nueva contraseña: Vuelva a escribir la nueva contraseña: passwd: todos los tokens de autenticación se actualizaron exitosamente.

 
cambiar password linux echo-e
 
Vemos que usamos el comando echo con la opción para interpretar caracteres escapados, y le pasamos directamente la contraseña, un salto de línea y de nuevo la contraseña; después usamos la tubería (pipe) y el comando passwd.
 

 

Cambiar la password de usuarios Linux forma remota por medio de SSH con el comando passwd

 
De nuevo gracias al comando echo y la opción -e, podremos cambiar la contraseña de un usuario en una máquina remota, pasando a través de ssh la línea de comando usando echo :

passwd cambiar password maquina remota con ssh

 

[root@localhost ~]# ssh 192.168.8.125 \ 'echo -e "nuevopass\nnuevopass" | passwd usuario2'
[email protected]'s password:
Nueva contraseña: Vuelva a escribir la nueva contraseña: Cambiando la contraseña del usuario usuario2.
passwd: todos los símbolos de autenticación se actualizaron con éxito.

 
Y con estos métodos que hemos visto, podremos cambiar la contraseña de usuarios en Linux usando la opción stdin del comando passwd. Muy útil en el caso de tener que realizar el cambio para muchos usuarios de una vez.