A continuación se muestra una imagen del proceso que tomé para crear un usuario en bash en Linux.
Entiendo que la contraseña no debe mostrarse por motivos de seguridad, pero lo que quiero decir es, ¿por qué no aparecen los asteriscos (o los caracteres que ingresé)?
command-line
terminal
password
passwd
Kaiylar
fuente
fuente
Respuestas:
Porque así es como hacemos las cosas en * nix land. :) Da un poco más de seguridad al no mostrar un montón de asteriscos. De esa manera, alguien que ve su pantalla no puede ver la longitud de su contraseña.
Pero debo admitir que da un poco de miedo no recibir comentarios cuando ingresas una contraseña, especialmente si tienes un teclado defectuoso. Por lo tanto, la mayoría de los diálogos de contraseña de la GUI en los sistemas * nix le brindan algún tipo de retroalimentación, por ejemplo, utilizando asteriscos, o más comúnmente ⬤. Y algunos incluso muestran cada carácter a medida que lo escribe, pero luego lo reemplazan inmediatamente con un
*
o ⬤, pero eso no es tan bueno si alguien puede mirar por encima del hombro. O si tienen un dispositivo que puede recoger y decodificar la señal de video que se envía desde su computadora a su monitor.fuente
stty -echo
¿Cuál es la forma más simple de ocultar la entrada del usuario?
¡No lo estoy mostrando!
Ocultar las contraseñas cuando se escriben es una vieja tradición. Tiene sentido desde una perspectiva de seguridad en la mayoría de los contextos: si alguien está mirando por encima de tus hombros, no quieres que sea fácil ver lo que estás escribiendo. (Sin embargo, algunas pautas de seguridad modernas, p. Ej., 1 2 3 4 5 recomiendan tener una opción para hacer que la contraseña sea visible, ya que eso permite al usuario elegir contraseñas más complejas y tener la confianza de que no pasarán su tiempo reparando lo invisible) errores tipográficos: el mayor riesgo no es navegar por el hombro, es adivinar la fuerza bruta, posiblemente fuera de línea).
Habiendo decidido que la contraseña debería estar oculta, los implementadores tuvieron que decidir cómo hacerlo. El terminal tiene un modo donde se muestra la entrada del usuario (eco activado) y un modo donde no se muestra la entrada del usuario (eco desactivado). El modo de desactivación de eco tiene una existencia intrínseca en cierto modo: ese es el modo en el que el terminal no hace el trabajo adicional de repetir la entrada del usuario. Este modo también tiene que existir para aplicaciones en las que escribir una tecla no inserta ese carácter, sino que invoca algún acceso directo de aplicación que está vinculado a esa tecla. Entonces, comandos como
passwd
simplemente configurar el terminal en modo de eco desactivado mientras leen una contraseña.Imprimir asteriscos para cada personaje requeriría un trabajo de implementación adicional por un beneficio relativamente pequeño, que los implementadores del
passwd
comando no han tenido ganas de hacer. No hay modo de terminal para imprimir asteriscos porque sería una característica muy especializada, útil solo al ingresar contraseñas.Por cierto, si desea ver su contraseña al cambiarla, puede usarla
cat | passwd
(al menos en algunos sistemas; algunas versionespasswd
requieren una opción comocat | passwd --stdin
y otras no la aceptan). (Incluso puedes hacerlo{ echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
, pero no hagas eso: guardaría las contraseñas en el historial de shell, de las cuales hay mucho más riesgo de fugas.) Organizar eso con comandos que leen la contraseña desde el terminal en lugar de lo que sea su entrada estándar, comosudo
ossh
, es más compleja; si tiene una GUI disponible, puede usar ssh-askpass que muestra cuántos caracteres ha escrito (SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
para sudo; para ssh es complicado cuando lo invoca desde un terminal).fuente
Hacer que la contraseña sea invisible la hace más segura, ya que otros no pueden ver la longitud de la contraseña. Esto evita el riesgo de que otros intenten adivinar la contraseña a partir de su longitud e inicien sesión en su cuenta.
fuente