แสดงอักขระรหัสผ่านเมื่อลงชื่อเข้าใช้ Linux


11

ฉันกำลังตั้งค่าเทอร์มินัลอนุกรมไร้สายระยะไกล (พร้อม XBees คู่หนึ่งหากใครสงสัย) ที่เชื่อมต่อกับกล่อง Linux ของฉัน มันดีมาก แต่บางครั้งการกดแป้นก็ไม่ผ่าน โดยปกติจะจัดการได้ฉันจะเห็นการขาดและกดอีกครั้ง อย่างไรก็ตามมันไม่ดีเมื่อฉันต้องลองสองสามครั้งเพื่อพิมพ์รหัสผ่านของฉันเพราะ Linux ไม่แสดงอะไรเลย ฉันได้เพิ่มpwfeedbackบรรทัดลงในไฟล์ sudoers แล้ว แต่ฉันต้องการให้ระบบแจ้งเตือนเพื่อแสดงความคิดเห็นเช่นกัน เครื่องลีนุกซ์กำลังเรียกใช้ 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
Olivier Dulac

ฉันไม่คิดว่าการเปลี่ยนแปลงดังกล่าวจะเกิดขึ้นได้ในระดับการกำหนดค่า เทอร์มินัลล็อกอินถูกจัดการโดย agetty ซึ่งเรียกใช้ / bin / เข้าสู่ระบบเพื่อขอรหัสผ่าน คุณสามารถบรรลุผลที่อธิบายไว้ได้โดยการเปลี่ยนรหัสที่มาสำหรับเข้าสู่ระบบอย่างถูกต้องคอมไพล์ใหม่และใช้เวอร์ชันที่แก้ไข แต่ต้องใช้ความรู้ ANSI C
DevilaN

คำตอบ:


1

ฉันไม่ได้ตระหนักถึงการกำหนดค่าใด ๆ ที่จะทำเช่นนี้ถ้าคุณต้องการที่จะทำมันคุณสามารถทำได้โดย:
1 - การแก้ไขฟังก์ชั่น getpass ในไฟล์ getpass.c ในแพ็คเกจ glibc
2 - build libc- (VERSION) .so
3 - สำรองข้อมูล lib ดั้งเดิม / (archcitecture ของคุณ) /libc.so (พูดว่าเปลี่ยนชื่อเป็น libc- (VERSION) .so.bak
4 ) - ย้ายไฟล์ใหม่ไปยัง lib / (archcitecture ของคุณ ) / 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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.