나는 이런 행동을 하고 있는데 그것을 어떻게 부를지 모르기 때문에 그것을 고치는 방법이나 고치기 위해 검색조차 할 수 없습니다.
일어나는 일은 다음과 같습니다.
처음 시작할 때 사용자 이름을 입력하고 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 세션 등 시스템이 다른 작업을 수행하는 동안 자격 증명을 요청하는 모든 것이 될 수 있습니다. 제가 하려는 요점은 입력을 제공하기 전에 올바른 시스템 주의를 기울여야 한다는 것입니다. .