Pokaż znaki hasła podczas logowania do systemu Linux

11

Konfiguruję bezprzewodowy terminal szeregowy dalekiego zasięgu (z parą XBee, jeśli ktoś się zastanawia) podłączony do mojego Linux-a. Idzie świetnie, ale czasami nie można użyć żadnego klawisza. Zwykle jest to możliwe do opanowania, zauważę jego brak i uderzę ponownie. Jednak źle jest, gdy muszę kilka razy wpisać hasło, ponieważ Linux nic nie pokazuje. Już dodałem pwfeedbackwiersz do mojego pliku sudoers, ale chciałbym, aby prośba o zalogowanie również pokazała informację zwrotną. Na maszynie z Linuksem działa Debian (tak naprawdę to raspberry pi, która zarządza większością mojej sieci domowej).

Czy można zmienić monit logowania do tty, aby wyrazić opinię podczas wpisywania hasła?


Zamiast tego:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password:

Chciałbym to:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password: **********
Skylar Ittner
źródło
zobacz tę odpowiedź: unix.stackexchange.com/a/141272/27616
Olivier Dulac
Nie sądzę, że taka zmiana jest obecnie możliwa na poziomie konfiguracji. Logowaniem do terminala zarządza agetty, który wywołuje / bin / login w celu wyświetlenia hasła. Możesz osiągnąć opisany efekt, zmieniając poprawnie kod źródłowy, ponownie go skompiluj i użyj zmodyfikowanej wersji, ale wymaga to pewnej wiedzy ANSI C.
DevilaN

Odpowiedzi:

1

Nie znam żadnej konfiguracji, aby to zrobić, jeśli NAPRAWDĘ chcesz to zrobić, możesz to zrobić poprzez:
1 - modyfikację funkcji getpass w pliku getpass.c w pakiecie glibc.
2 - buduj libc- (VERSION) .so
3 - wykonaj kopię zapasową oryginalnej biblioteki lib / (twoja architektura) /libc.so (powiedz zmień nazwę na libc- (VERSION) .so.bak
4 - przenieś nowy plik do lib / (twoja architektura) ) / 5 - uruchom ldconfig, aby zaktualizować pamięć podręczną
Jako przykład możesz zastąpić kod odczytujący hasło kodem, który może wyglądać następująco:

  /* 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
źródło