Mostra i caratteri della password quando accedi a Linux


11

Sto installando un terminale seriale wireless a lungo raggio (con una coppia di XBees, se qualcuno se lo sta chiedendo) collegato al mio box Linux. Sta andando alla grande, ma a volte una sequenza di tasti non viene eseguita. Questo di solito è gestibile, vedrò la mancanza di esso e colpirlo di nuovo. Tuttavia, è male quando devo provare alcune volte a digitare la mia password perché Linux non mostra nulla. Ho già aggiunto la pwfeedbackriga al mio file sudoers, ma vorrei che anche il prompt di login mostrasse un feedback. La macchina Linux esegue Debian (in realtà è un Raspberry Pi che gestisce la maggior parte della mia rete domestica).

È possibile modificare il prompt di accesso tty per dare un feedback mentre digito la mia password?


Invece di questo:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password:

Mi piacerebbe questo:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password: **********


Non credo che un simile cambiamento sia attualmente possibile a livello di configurazione. L'accesso al terminale è gestito da agetty che invoca / bin / login per la richiesta della password. È possibile ottenere l'effetto descritto modificando correttamente il codice sorgente di accesso, ricompilarlo e utilizzare la versione modificata, ma ciò richiede alcune conoscenze ANSI C.
DevilaN,

Risposte:


1

Non sono a conoscenza di alcuna configurazione per eseguire questa operazione, se si desidera REALMENTE farlo, è possibile ottenere questo risultato:
1 - modificando la funzione getpass nel file getpass.c nel pacchetto glibc.
2 - build libc- (VERSION) .so
3 - backup della libreria originale / (your archcitecture) /libc.so (ad esempio rinomina libc- (VERSION) .so.bak
4 - sposta il nuovo file in lib / (your archcitecture) ) / 5 - esegui ldconfig per aggiornare la cache
Ad esempio puoi sostituire il codice che legge la password con un codice che può assomigliare a questo:

  /* 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;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.