Tengo un caso de uso específico en el que realmente me gustaría poder cambiar la contraseña de un usuario con un solo comando sin interactividad. Esto se está haciendo de manera segura (a través de SSH y en un sistema con un solo usuario que puede iniciar sesión), por lo que está bien exponer la nueva contraseña (e incluso la antigua, si es necesario) en la línea de comandos. FWIW, es un sistema Ubuntu.
Solo quiero evitar tener que agregar algo similar a lo esperado a este sistema solo para esta tarea.
ubuntu
command-line-interface
freebsd
password
Paul Hoffman
fuente
fuente
echo "newpassword" | pw usermod theusername -h 0
Respuestas:
Podrías usar chpasswd .
fuente
Puede usar
usermod
con la-p
opción para proporcionar un hash de contraseña (no la contraseña real). Puede generar el hash de contraseña usando algo comomkpasswd -m sha-256
omkpasswd -m md5
fuente
usermod
: '(Seguro.
sed
script que actualiza archivos por contraseña del sistema (/etc/shadow
,/etc/master.passwd
, sea lo que pasa a ser).fuente
La
passwd
utilidad tiene una opción --stdin que establece:Sintaxis:
Aunque mencionaste que no te importa, puedes poner la contraseña en un archivo de texto y luego hacerlo en
cat pass.txt
lugar del comando echo, de esa manera no aparece en el historial de bash.fuente
echo VerySecret | passwd --stdin username
--stdin
una opción parapasswd
.--stdin
, principalmente porque es un gran agujero de seguridad gigante que espera suceder :-)echo "newpass" | passwd --stdin user1
línea con un espacio; de esa manera no irá a la historia de bash en absoluto.Si la
--stdin
opción no funciona, básicamente podemos usar dos opciones:chpaswd
en su script.echo "current_password\nnew_password\nnew_password" | passwd user_name
fuente