Zeigen Sie Kennwortzeichen an, wenn Sie sich bei Linux anmelden

11

Ich richte ein drahtloses serielles Langstrecken-Terminal (mit einem Paar XBees, falls sich jemand wundert) ein, das an meine Linux-Box angeschlossen ist. Es läuft großartig, aber manchmal geht ein Tastendruck nicht durch. Dies ist normalerweise überschaubar, ich werde das Fehlen sehen und es erneut treffen. Es ist jedoch schlecht, wenn ich ein paar Mal versuchen muss, mein Passwort einzugeben, da Linux nichts anzeigt. Ich habe die pwfeedbackZeile bereits zu meiner sudoers-Datei hinzugefügt , möchte aber, dass die Anmeldeaufforderung auch Feedback gibt. Auf dem Linux-Computer wird Debian ausgeführt (es ist eigentlich ein Himbeer-Pi, der den größten Teil meines Heimnetzwerks verwaltet).

Ist es möglich, die tty-Anmeldeaufforderung zu ändern, um Feedback zu geben, während ich mein Passwort eingebe?


An Stelle von:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password:

Das würde mir gefallen:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password: **********
Skylar Ittner
quelle
Siehe diese Antwort: unix.stackexchange.com/a/141272/27616
Olivier Dulac
Ich denke nicht, dass eine solche Änderung derzeit auf Konfigurationsebene möglich ist. Die Terminalanmeldung wird von agetty verwaltet, die / bin / login für die Kennwortabfrage aufruft. Sie können den beschriebenen Effekt erzielen, indem Sie den Quellcode ordnungsgemäß anmelden, neu kompilieren und die geänderte Version verwenden. Dies erfordert jedoch einige ANSI C-Kenntnisse.
DevilaN

Antworten:

1

Mir ist keine Konfiguration dafür bekannt. Wenn Sie dies WIRKLICH möchten, können Sie dies erreichen, indem Sie:
1 - die Funktion getpass in der Datei getpass.c im Paket glibc ändern.
2 - Erstellen Sie libc- (VERSION) .so
3 - Sichern Sie die ursprüngliche lib / (Ihre Architektur) /libc.so (sagen Sie Umbenennen in libc- (VERSION) .so.bak
4 - verschieben Sie die neue Datei in lib / (Ihre Architektur) ) / 5 - Führen Sie ldconfig aus, um den Cache zu aktualisieren.
Als Beispiel können Sie den Code, der das Kennwort liest, durch einen Code ersetzen, der folgendermaßen aussehen kann:

  /* 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
quelle