Показывать символы пароля при входе в Linux

11

Я устанавливаю беспроводной дальний последовательный терминал (с парой XBees, если кому-то интересно), подключенный к моей Linux-системе. Это идет отлично, но иногда нажатие клавиши не проходит. Это обычно выполнимо, я увижу недостаток этого и поражу это снова. Однако плохо, когда мне приходится несколько раз пытаться ввести свой пароль, потому что Linux ничего не показывает. Я уже добавил pwfeedbackстроку в свой файл sudoers, но мне хотелось бы, чтобы приглашение для входа показывало также некоторые отзывы. На машине Linux установлен Debian (на самом деле это Raspberry Pi, который управляет большей частью моей домашней сети).

Можно ли изменить подсказку для входа в tty, чтобы она давала отзыв при вводе пароля?


Вместо этого:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password:

Я хотел бы это:

Raspbian GNU/Linux 7 linuxbox ttyAMA0

linuxbox login: skylarmt
Password: **********
Скайлар Иттнер
источник
см. этот ответ: unix.stackexchange.com/a/141272/27616
Оливье Дюлак
Я не думаю, что такое изменение в настоящее время возможно на уровне конфигурации. Вход в терминал управляется agetty, который вызывает / bin / login для запроса пароля. Вы можете достичь описанного эффекта, изменив правильно исходный код входа в систему, перекомпилируйте его и используйте модифицированную версию, но это требует определенных знаний ANSI C.
DevilaN

Ответы:

1

Я не знаю какой-либо конфигурации для этого, если вы ДЕЙСТВИТЕЛЬНО хотите это сделать, вы можете сделать это следующим образом:
1 - изменив функцию getpass в файле getpass.c в пакете glibc.
2 - сборка libc- (VERSION) .so
3 - резервное копирование исходной библиотеки lib / (ваша архитектура) /libc.so (скажем, переименование в libc- (VERSION) .so.bak
4 - перемещение нового файла в lib / (ваша архитектура). ) / 5 - запустить ldconfig для обновления кэша.
В качестве примера вы можете заменить код, который читает пароль, кодом, который может выглядеть следующим образом:

  /* 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;
Баруди Сафвен
источник