为什么在 tty 中输入用户名后密码提示会稍微滞后?

为什么在 tty 中输入用户名后密码提示会稍微滞后?

我有这种行为,我不知道如何修复它,甚至不知道如何搜索修复它,因为我不知道如何称呼它。

这是发生的事情:

第一次启动时,当我输入用户名并按Retrun密码时,大约半秒或四分之一秒后会出现提示。问题是,在我输入用户名后,我通常会按下Return并立即开始输入密码;但是,由于Password:尚未出现,因此tty开始将我直接键入的字符打印到屏幕上。

例如,假设我的用户名和密码分别是:UsernamePassword。如果我要登录,tty1它看起来会像这样。开头的“Pa”之所以存在,是因为我在Password:实际出现之前就开始输入“Password”。

Debian GNU/Linux stretch/sid hostname tty1

hostname login: Username
PaPassword:

一个简单的解决方案当然是输入用户名并稍等一下,然后再输入密码,但是我希望深入了解并找到此问题的原因。我担心有一天提示可能会滞后超过四分之一秒(例如几秒钟),并且我会在Password:最终出现之前不小心在屏幕上输入了整个密码。

有没有办法知道这里发生了什么?

答案1

TTY 的默认行为是回显(立即显示)用户在屏幕上键入的任何内容。这提供了按下按键的即时反馈。这是login:显示提示时 TTY 设备所处的模式。

在询问密码之前,登录程序会进行系统调用以将 TTY 模式更改为不是回显键入的字符(以便您键入密码时不会显示密码)。但是,如果您在登录程序实际执行该系统调用之前开始键入字符,那么这些字符确实会显示。

询问密码后,登录程序将 TTY 回显模式设置回默认值(回显用户键入的内容)。

答案2

正如 @wurtel 在他的评论中所说,我相信登录过程正在被其他启动时进程与硬盘 I/O 结合进行时间切片。具有讽刺意味的答案是登录(当然!)并观察top和/或iostat和/或vmstat在您尝试(再次)登录时查看系统正在忙着做什么。

我会说“永远等待密码提示”(因为您不想冒险将密码提供给错误的程序或人员!),但我将是第一个承认我已经这样做过很多次的人。我见过系统日志,其中用户明显混淆了用户名提示和密码提示,并且我们得到诸如“P@ssW0rD 登录失败”之类的系统日志。它可以是远程 ssh 会话、FTP 会话、任何在系统忙于执行其他操作时要求凭据的内容 - 我要指出的要点是,在提供输入之前,您应该确保获得正确的系统关注。

相关内容