Tampilkan karakter kata sandi saat masuk ke Linux


11

Saya menyiapkan terminal serial nirkabel jarak jauh (dengan sepasang XBees, jika ada yang bertanya-tanya) terhubung ke kotak Linux saya. Ini bagus, tapi kadang-kadang keystroke tidak berhasil. Ini biasanya dapat dikelola, saya akan melihat kekurangannya dan memukulnya lagi. Namun, itu buruk ketika saya harus mencoba beberapa kali untuk mengetik kata sandi saya karena Linux tidak menunjukkan apa-apa. Saya sudah menambahkan pwfeedbackbaris ke file sudoers saya, tetapi saya ingin prompt login untuk menunjukkan umpan balik juga. Mesin Linux menjalankan Debian (sebenarnya ini adalah raspberry pi yang mengelola sebagian besar jaringan rumah saya).

Apakah mungkin untuk mengubah prompt login tty untuk memberikan umpan balik saat saya mengetik kata sandi?


Alih-alih ini:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password:

Saya ingin ini:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

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


Saya tidak berpikir perubahan seperti itu saat ini dimungkinkan pada tingkat konfigurasi. Login terminal dikelola oleh agetty yang memanggil / bin / login untuk kata sandi. Anda dapat mencapai efek yang dijelaskan dengan mengubah kode sumber login dengan benar, mengkompilasi ulang dan menggunakan versi yang dimodifikasi, tetapi ini membutuhkan beberapa pengetahuan ANSI C.
DevilaN

Jawaban:


1

Saya tidak mengetahui adanya konfigurasi untuk melakukan ini, jika Anda BENAR-BENAR ingin melakukannya, Anda dapat mencapainya dengan:
1 - memodifikasi fungsi getpass dalam file getpass.c dalam paket glibc.
2 - build libc- (VERSION) .so
3 - backup lib asli / (archcitecture Anda) /libc.so (katakan ganti nama menjadi libc- (VERSION) .so.bak
4 - pindahkan file baru ke lib / (archcitecture Anda ) / 5 - jalankan ldconfig untuk memperbarui cache.
Sebagai contoh, Anda dapat mengganti kode yang membaca kata sandi dengan kode yang dapat terlihat seperti ini:

  /* 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;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.