btmp가 로그인한 사용자의 사용자 이름을 표시하지 않는 이유는 무엇입니까?

btmp가 로그인한 사용자의 사용자 이름을 표시하지 않는 이유는 무엇입니까?

btmpwho -a파일과 명령의 출력을 비교하려고 합니다 .

이유는 모르겠지만 btmp file현재 사용자 이름이 표시되지 않고 UNKNOWN사용자 이름 필드에 표시됩니다. 나(사용자 이름: debian)가 세션에 로그인했습니다.

아래 출력을 관찰하십시오.

virt00# who -a
           system boot  2016-03-06 19:36
           run-level 5  2016-03-06 19:36
debian   - tty1         2016-03-06 19:36 00:33        1006
debian   + pts/0        2016-03-06 19:43   .          1037 (192.168.56.1)

virt00# last -f /var/log/btmp | grep still
UNKNOWN  tty1                          Sat Feb 20 16:24   still logged in
virt00#

둘 사이에 차이점이 있는 이유와 SSH를 통해 로그인하고 가상 머신에서 다른 세션이 실행되는 이유를 설명해 주시겠습니까?

감사해요.

답변1

현재 로그인한 사용자는 who -a절대 읽 /var/log/btmp거나 who읽 거나 표시할 수 없기 때문입니다 ./var/run/utmp

반면, /var/log/btmp실패한 로그인 시도는 저장됩니다.


나는 상황을 재현하고 다음과 같이 했습니다.

  • 거기에 가봤어 tty5(무엇이든 될 수 있어 tty)

  • 시스템에 존재하지 않는 사용자가 입력되었습니다.

  • 무작위 비밀번호가 주어졌을 때

  • 로그인 프롬프트에 잘못된 비밀번호가 다시 표시됩니다.

  • /var/log/btmp하지만 다음과 같은 항목이 있습니다.

    UNKNOWN  tty5  Mon Mar 21 16:16   still logged in 
    

    잠시 후 다음과 같이 됩니다.

    UNKNOWN  tty5  Mon Mar 21 16:16    gone - no logout
    

답변2

이 파일은 /var/log/btmp추적합니다실패로그인 시도. 모두가 문제 없이 로그인하면 아무 것도 표시되지 않습니다.

기능을 테스트할 때 telnet(ssh 아님)을 사용하면 "알 수 없는" 레코드(Debian 7에서)만 볼 수 있는데, 프롬프트에서 알 수 없는 사용자 이름을 제공하면 오류가 발생합니다. 이는 Ubuntu 스레드에 표시된 시나리오와 유사합니다.sshd가 /var/log/btmp에 추가되지 않습니다.. 이 시스템에서는 SSH를 사용한 연결이 절대 실패하지 않습니다.

속독소스 코드last직접 제공할 수 있는 곳은 표시되어 있지 않습니다 . UNKNOWN이는 레코드가 생성된 응용 프로그램에서 발생할 수 있습니다 /var/log/btmp.

귀하의 구성에서 로그인 프로세스가 실제 사용자 이름을 가져와 기록할 수 없는 것 같습니다.저것의 질문으로 /var/log/btmp. 처럼 utmp, 있을 수 있습니다쓸모없는삭제되지 않는 항목 btmp(항목을 생성한 프로그램이 해당 항목을 삭제해야 함 - 이는아니요자동완성). 귀하의 예는 한 달 전(2월 20일)의 항목을 보여 주며 (동일한 tty에 알려진 사용자로 로그인했기 때문에) 현재 로그인과 아무 관련이 없습니다.앞으로기계가 마지막으로 시작된 시간(3월 3일)입니다.

추가 자료:

관련 정보