15 votos

¿Puedo cambiar una contraseña de usuario en Linux desde la línea de comandos con ninguna interactividad?

Tengo un caso de uso específico donde realmente quisiera poder cambiar la contraseña de un usuario con un solo comando con ninguna interactividad. Esto se está haciendo de manera segura (sobre SSH y en un sistema con sólo un usuario puede estar conectado), por lo que está bien exponer la nueva contraseña (y hasta el viejo, si es necesario) en la línea de comandos. FWIW, es un sistema Ubuntu.

Sólo quiero evitar tener que añadir algo de esperar como a este sistema solo esta una de las tareas.

25voto

xofer Puntos 2406

Usted podría utilizar chpasswd.

echo user:pass | /usr/sbin/chpasswd

5voto

stew Puntos 5826

Usted puede utilizar usermod con la -p opción de ofrecer un hash de contraseña (no la contraseña real). Puede generar el hash de contraseña utilizando algo como mkpasswd -m sha-256 omkpasswd -m md5

3voto

voretaq7 Puntos 63415

Seguro.

  1. Hash de la contraseña en el sistema local.
  2. Conectar a la máquina remota (donde desea cambiar la contraseña)
  3. Alimentar la contraseña hash y el nombre de usuario a un creativo sed secuencia de comandos que actualiza el archivo de contraseñas del sistema ( /etc/shadow , /etc/master.passwd , lo que pasa a ser).

1voto

La passwd utilidad tiene una opción--stdin que dice:

Esta opción se utiliza para indicar que passwd debe leer la nueva contraseña desde la entrada estándar, que puede ser una tubería.

Sintaxis:

echo "newpass" | passwd --stdin user1

A pesar de que usted ha mencionado que no importa, podría poner la contraseña en un archivo de texto y luego hacer cat pass.txt en lugar del comando echo, así no aparece en la historia de bash.

1voto

Sanjay s. Puntos 1

Si --stdin no funciona la opción podemos usar básicamente dos opciones:

  1. O bien utilizar otra utilidad llamada chpaswd en la secuencia de comandos.
  2. O el usoecho "current_password\nnew_password\nnew_password" | passwd user_name

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: