Mostrar caracteres de contraseña al iniciar sesión en Linux

11

Estoy configurando un terminal serie inalámbrico de largo alcance (con un par de XBees, si alguien se lo pregunta) conectado a mi caja Linux. Está yendo muy bien, pero a veces no se pulsa una tecla Esto suele ser manejable, veré la falta y volveré a golpearlo. Sin embargo, es malo cuando tengo que intentar varias veces escribir mi contraseña porque Linux no muestra nada. Ya he agregado la pwfeedbacklínea a mi archivo de sudoers, pero me gustaría que la solicitud de inicio de sesión también muestre algunos comentarios. La máquina Linux está ejecutando Debian (en realidad es una frambuesa pi que gestiona la mayor parte de mi red doméstica).

¿Es posible cambiar la solicitud de inicio de sesión de tty para enviar comentarios mientras escribo mi contraseña?


En lugar de esto:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password:

Me gustaría esto:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password: **********
Skylar Ittner
fuente
vea esta respuesta: unix.stackexchange.com/a/141272/27616
Olivier Dulac
No creo que tal cambio sea posible actualmente en el nivel de configuración. El inicio de sesión en el terminal lo gestiona agetty, que invoca / bin / login para solicitar la contraseña. Puede lograr el efecto descrito cambiando correctamente el código fuente de inicio de sesión, volver a compilarlo y usar la versión modificada, pero esto requiere algunos conocimientos de ANSI C.
DevilaN

Respuestas:

1

No conozco ninguna configuración para hacer esto, si REALMENTE desea hacerlo, puede lograr esto:
1 - modificando la función getpass en el archivo getpass.c en el paquete glibc.
2 - compilar libc- (VERSIÓN) .so
3 - hacer una copia de seguridad de la lib / (su arquitectura) original /libc.so (diga renombrar a libc- (VERSIÓN) .so.bak
4 - mueva el nuevo archivo a lib / (su arquitectura) ) / 5: ejecute ldconfig para actualizar la memoria caché.
Como ejemplo, puede reemplazar el código que lee la contraseña con un código similar a este:

  /* Read the password. */
  // nread = __getline (&buf, &bufsize, in);

  int index=0;
  char c;
  while ( (c=getchar())!= EOF ){
     putch('*');
     buf[i]=c;
     ++i;
  }
  buf[i]='\0';
  nread=i;
Baroudi Safwen
fuente