Warum verzögert sich die Passwortabfrage nach Eingabe des Benutzernamens in tty geringfügig?

7

Ich habe diese Art von Verhalten und weiß nicht, wie ich es beheben oder wie ich nach einem Fix suchen soll, da ich nicht weiß, wie ich es überhaupt nennen würde.

Folgendes passiert:

Das erste Mal, wenn ich starte, wenn ich den Benutzernamen eingebe und Retrundie Passwortabfrage drücke, erscheint ungefähr eine halbe oder eine viertel Sekunde später. Das Problem ist, dass ich nach ReturnEingabe des Benutzernamens normalerweise drücke und sofort mit der Eingabe des Passworts beginne. Da das Password:jedoch noch nicht ttyangezeigt wurde , werden die von mir eingegebenen Zeichen direkt auf dem Bildschirm gedruckt.

Zum Beispiel, lassen Sie uns mein Benutzername und Passwort sagen , sind: Usernameund Passwordjeweils. Wenn ich mich einloggen tty1würde, würde es ungefähr so ​​aussehen. Das "Pa" am Anfang ist da, weil ich angefangen hatte, "Passwort" einzugeben, bevor es Password:tatsächlich erschien.

Debian GNU/Linux stretch/sid hostname tty1

hostname login: Username
PaPassword:

Eine einfache Lösung hierfür wäre natürlich, den Benutzernamen einzugeben und ein wenig zu warten, bevor Sie das Passwort eingeben. Ich möchte jedoch dem auf den Grund gehen und die Ursache für dieses Problem finden. Ich habe die Befürchtung, dass die Eingabeaufforderung eines Tages viel länger als eine Viertelsekunde (z. B. einige Sekunden) zurückbleiben könnte, und ich hätte versehentlich mein gesamtes Passwort auf dem Bildschirm eingegeben, bevor das Password:schließlich erschien.

Gibt es eine Möglichkeit zu wissen, was hier passiert?

orange orange
quelle
1
Verwenden Sie eine lokale Benutzer- / Kennwortdatenbank oder eine entfernte Datenbank wie NIS, AD oder LDAP?
Mark Plotnick
1
Ja, es ist ein lokaler Benutzer, der auf einem lokalen Computer platziert ist.
Orange Orange
Zeigt getent passwd Usernameeine Verzögerung?
Steve
1
Die anfängliche Verzögerung ist wahrscheinlich darauf zurückzuführen, dass Code in den Speicher geladen werden muss. Nach dem ersten Mal befindet sich der Code im Cache und kann daher schnell geladen werden. Alternativ ist das System immer noch mit der Initialisierung von Dämonen usw. beschäftigt, sodass das Anmeldeprogramm die CPU-Zyklen einfach nicht schnell genug erhält.
Wurtel
Ich habe das gleiche Problem. Müssen wir dieses Verhalten einfach akzeptieren oder hat jemand einen Weg gefunden, es zu beheben?
Al.G.

Antworten:

2

Das Standardverhalten des TTY ist das Echo (sofortige Anzeige) aller Benutzertypen auf dem Bildschirm. Dies bietet eine sofortige Rückmeldung der gedrückten Tasten. Dies ist der Modus, in dem sich das TTY-Gerät befindet, wenn die login:Eingabeaufforderung angezeigt wird.

Bevor Sie nach dem Kennwort fragen, führt das Anmeldeprogramm einen Systemaufruf durch, um den Modus des TTY so zu ändern, dass keine eingegebenen Zeichen wiedergegeben werden (sodass Ihr Kennwort während der Eingabe nicht angezeigt wird). Wenn Sie jedoch mit der Eingabe von Zeichen beginnen, bevor das Anmeldeprogramm diesen Systemaufruf tatsächlich ausführt, werden diese Zeichen tatsächlich angezeigt.

Nachdem das Anmeldeprogramm nach dem Kennwort gefragt hat, setzt es den TTY-Echo-Modus auf den Standard zurück (Echo, was der Benutzer eingibt).

Greg Hewgill
quelle
Diese Antwort erklärt, warum das Passwort ursprünglich angezeigt wird, erklärt jedoch nicht, warum die Verzögerung so groß ist.
Bob
2

Wie @wurtel in seinem Kommentar sagte, glaube ich, dass der Anmeldevorgang durch andere Startzeitprozesse in Kombination mit Festplatten-E / A zeitlich begrenzt wird. Die ironische Antwort wäre, sich anzumelden (natch!) Und zu beobachten topund / oder iostatund / oder vmstatzu sehen, was das System gerade tut, während Sie versuchen, sich (erneut) anzumelden.

Ich würde sagen "Warten Sie immer auf die Passwortabfrage" (weil Sie nicht riskieren möchten, Ihr Passwort dem falschen Programm oder der falschen Person zu geben!), Aber ich gebe als Erster zu, dass ich es oft getan habe. Ich habe Systemprotokolle gesehen, bei denen ein Benutzer eindeutig zwischen der Eingabeaufforderung für den Benutzernamen und der Eingabeaufforderung für das Kennwort verwechselt wurde, und wir erhalten Systemprotokolle wie "Anmeldung für P @ ssW0rD fehlgeschlagen". Es kann sich um eine Remote-SSH-Sitzung, eine FTP-Sitzung oder alles handeln, was nach Anmeldeinformationen fragt, während das System andere Aufgaben ausführt. Der wichtigste Punkt, den ich ansprechen möchte, ist, dass Sie sicherstellen, dass Sie die richtige Aufmerksamkeit des Systems haben, bevor Sie Ihre Eingaben machen.

Jeff Schaller
quelle