私はこのような行動をしていますが、それをどのように呼ぶかわからないので、それを修正する方法や修正するために検索すらできません。
何が起こるかは次のとおりです。
初めて起動するときにユーザー名を入力してRetrunパスワードを押すと、約0.5秒または1/4秒後にプロンプトが表示されます。問題は、ユーザー名を入力した後、通常はキーを押してReturnすぐにパスワードを入力し始めることです。しかし、Password:
まだそのようなことは起こらないので、tty
私が直接入力した文字が画面に印刷され始めます。
Username
たとえば、私のユーザー名とパスワードが、と仮定しますPassword
。ログインするようになればtty1
こんな姿になりそうです。最初に「Pa」がある理由は、Password:
「Password」が実際に表示される前に入力を開始したためです。
Debian GNU/Linux stretch/sid hostname tty1
hostname login: Username
PaPassword:
もちろん、簡単な解決策は、ユーザー名を入力してしばらく待ってからパスワードを入力することですが、この問題の原因をもう少し詳しく調べたいと思います。ある日、メッセージが1/4秒以上(例:数秒)遅れて最終的Password:
に表示される前に、誤ってパスワード全体を画面に入力するのではないかと心配です。
ここで何が起こっているのかを知る方法はありますか?
答え1
TTYのデフォルトの動作は、ユーザーが画面に入力するすべての内容をエコー(即時表示)することです。これにより、キーの押下に関する即時フィードバックが提供されます。これはlogin:
プロンプトが表示されたときのTTYデバイスのモードです。
パスワードを要求する前に、ログインプログラムは次のTTYモードを変更するためにシステムコールを実行します。いいえ入力した文字をエコーします(入力時にパスワードが表示されないように)。ただし、ログインプログラムが実際にシステムコールを実行する前に文字入力を開始すると、その文字が表示されます。
パスワードを要求すると、ログインプログラムはTTYエコーモードをデフォルトに戻します(ユーザーが入力したものをエコーします)。
答え2
@wurtelがコメントしたように、ログインプロセスはハードディスクI / Oと組み合わせた別のブートタイムプロセスによって時間分割されていると思います。皮肉な答えは、(もちろん!)ログインして(再び)ログインしようとしたときにシステムが何をしているのかを観察および/またはtop
確認iostat
することです。vmstat
私は「パスワードプロンプトを永遠に待ってください」と言いたいと思います(間違ったプログラムや人にパスワードを与える危険を冒したくないからです!)。しかし、私はこれを何度も実行したことを最初に認めます。ユーザーがユーザー名プロンプトとパスワードプロンプトを明確に混同したsyslogを見たことがあり、「P@ssW0rDログイン失敗」などのsyslogが表示されます。リモートSSHセッション、FTPセッションなど、システムが他のタスクを実行している間に資格情報を要求するすべてのものにすることができます。私がしたいのは、入力を提供する前に正しいシステム注意を払う必要があることです。 。