리눅스 : 내 시스템에서 모든 로그인 로그를 얻는 방법 [닫기]


12

작년부터 사용자가 시스템에 로그인하는 모든 시간을 알고 싶습니다. 명령을
사용 last했지만 유용하지 않습니다.


1
Stack Exchange에 오신 것을 환영합니다! 우리 모두 여기 자원 봉사자임을 기억하십시오. 따라서 기본적인 연구를 수행 한 것으로 예상됩니다. 당신이 시작을 것 같습니다 - 당신이 노력 말할 것도 있기 때문에 last명령을 -하지만 당신은 그 이상 연구를 수행해야하며, 어떤 경우에, 당신이 실제로 지정하지 않은 이유last 명령이 유용하지 않습니다. 또한 "로그인"을 정의하십시오. 콘솔 로그인을 추적 하시겠습니까? SSH 로그인? 이맥스, telnet로그인 금지 ? 아니면 PAM으로 인증하는 것이 있습니까? 수 특정 .
strugee

답변:


10

레드햇 스타일의 리눅스에 로그인 로그라고 wtmp( man wtmp,)를 저장 /var/log/기본적으로, 당신은 사용하여 검색 할 수 있습니다 utmpdump(RHEL6에).

[root@server ~]# utmpdump /var/log/wtmp* | awk '$4~"root" {print}'
Utmp dump of /var/log/wtmp
[7] [01320] [ts/0] [root    ] [pts/0       ] [192.168.1.101       ] [192.168.1.101  ] [Tue Sep 24 00:31:47 2013 UTC]
[7] [01817] [ts/3] [root    ] [pts/3       ] [192.168.1.101       ] [192.168.1.101  ] [Tue Sep 24 00:38:22 2013 UTC]
[7] [01690] [ts/0] [root    ] [pts/0       ] [192.168.1.101       ] [192.168.1.101  ] [Tue Sep 24 00:59:04 2013 UTC]
[7] [23641] [ts/0] [root    ] [pts/0       ] [192.168.1.101       ] [192.168.1.101  ] [Wed Sep 25 19:12:44 2013 UTC]
[7] [03020] [ts/0] [root    ] [pts/0       ] [192.168.1.100       ] [192.168.1.100  ] [Fri Sep 27 21:33:40 2013 UTC]
...

1

last당신이하려는 일을 달성하는 데 사용될 수있는 것 같습니다 . 정보를 추출하려면 마지막 명령에 날짜를 추가해야합니다.

last | while read line; do date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`; [[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line; done

그러나 특정 사용자에 대한 정보를 찾는 데 관심이있는 경우 마지막 명령을 수정 last username한 다음 while루프를 파이프로 파이프 할 수 있습니다. 지난 1 년 동안 특정 사용자의 로그인 정보에 대한 정보를 제공합니다.

위의 명령을 테스트했으며 시스템에서 완벽하게 작동합니다. 나는 여기 에서 위의 명령을 받았다 .

요구 사항에 맞게 명령의 날짜를 변경할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.