일부 커널 업데이트를 사용하여 RHEL 5.8을 실행하는 테스트 PC의 부팅 및 로그인 기록을 추출하려고 했습니다. 나는 그것을 사용하기 시작했고 last -f /var/log/wtmp
이상한 결과를 발견했습니다. 추가 조사 결과 utmp 형식과 일치하지 않는 파일에 대량의 16진수 데이터가 기록된 것으로 나타났습니다.
이러한 블록은 ASCII 값이 포함된 바이트가 수백 개 있기 때문에 ASCII 값으로 보입니다. 예를 들어 구조에 사용되지 않은 마지막 20바이트에서 가져옵니다 0a30 7831 6234 6636 3762 652c 0930 7839 3562 3037
.0x1b4f67be,.0x95b07
계속 조사했는데 ASCII 텍스트가 시작 중에 인쇄된 일부 텍스트와 일치합니다 dmesg
. 내 프로그램이 시작되면 화면에도 텍스트가 인쇄되고 시작 중에 추출되는 구성 파일이 읽혀지는 것을 보았습니다.
agetty
Wtmp 파일이 1분마다 증가하고 있기 때문에 직렬 포트에 의해 빈 섹션이 생성된 것으로 의심됩니다 . 내가 그 줄을 주석 처리하면i/etc/inittab
7:2345:respawn:/sbin/agetty -h -t 60 ttyS0 115200 vt102
그러면 성장이 멈춥니다.
파일 시스템에 충돌이 있습니까? i-node를 살펴보니 공유되지 않는 것 같습니다.
utmp 구조에는 일부 문자열 값이 포함되어 있지만 대부분은 0으로 설정되어 있는 것 같습니다.
이러한 항목의 원인은 무엇입니까? 이것은 wtmp가 신뢰할 수 없다는 것을 의미합니까? 이 항목이 진짜라면 해독할 수 있는 방법이 있나요?
다음은 16진수 편집기에서 붙여넣은 wtmp 파일에서 발췌한 내용입니다.
마지막 합리적인 입력 및 출력은 다음과 같습니다 last
.
root tty1 Fri Nov 29 10:19 - crash (00:03)
00312300: 0700 0000 850b 0000 7474 7931 0000 0000 ........tty1....
00312310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312320: 0000 0000 0000 0000 3100 0000 726f 6f74 ........1...root
00312330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003123a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003123b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003123c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003123d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003123e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003123f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312400: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312410: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312420: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312430: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312440: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312450: 0000 0000 3e6a 9852 89b0 0000 0000 0000 ....>j.R........
00312460: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312470: 0000 0000 0000 0000 0000 0000 0000 0000 ................
그러면 항목이 완전히 비어 있고 표시되지 않습니다 last
.
00312480: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312490: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003124a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003124b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003124c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003124d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003124e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003124f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312500: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312510: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312520: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312530: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312540: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312550: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312560: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312570: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312580: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312590: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003125a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003125b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003125c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003125d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003125e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003125f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
ASCII 데이터 블록이 파일에 기록될 때까지. 이는 utmp 구조의 일부에서 시작되거나last
00312f00: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f10: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f20: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f30: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f40: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f50: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f60: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f70: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312f90: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312fa0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312fb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312fc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312fd0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312fe0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00312ff0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00313000: 0930 7862 3130 3264 6131 332c 0a30 7830 .0xb102da13,.0x0
00313010: 3939 6264 3532 392c 0930 7863 6634 3364 99bd529,.0xcf43d
00313020: 3936 312c 0930 7838 3235 6336 3331 662c 961,.0x825c631f,
00313030: 0930 7863 6233 6662 3130 372c 0a30 7865 .0xcb3fb107,.0xe
00313040: 3336 3265 3739 392c 0930 7866 3231 3362 362e799,.0xf213b
00313050: 3730 642c 0930 7830 3133 6537 3465 622c 70d,.0x013e74eb,
00313060: 0930 7832 3039 3539 6335 652c 0a30 7865 .0x20959c5e,.0xe
00313070: 3166 6663 6631 642c 0930 7865 6532 6438 1ffcf1d,.0xee2d8
그 뒤에는 아래에 설명된 추가 ASCII 바이트가 옵니다 last
.
27dba1f, 4f6fe3c,*0xe 0xed51abc6,*0xf Sun Oct 8 21:09 - crash (6626+14:13)
00313080: 3232 382c 0930 7865 3466 3666 6533 632c 228,.0xe4f6fe3c,
00313090: 0930 7865 6139 6531 6135 322c 0a30 7862 .0xea9e1a52,.0xb
003130a0: 3035 3935 6366 372c 0930 7863 3237 6462 0595cf7,.0xc27db
003130b0: 6131 662c 0930 7865 6339 3866 3162 612c a1f,.0xec98f1ba,
003130c0: 0930 7835 6135 3465 3261 632c 0a30 7865 .0x5a54e2ac,.0xe
003130d0: 6435 3161 6263 362c 0930 7866 6536 3361 d51abc6,.0xfe63a
003130e0: 3364 352c 0930 7866 3932 3161 3831 352c 3d5,.0xf921a815,
003130f0: 0930 7837 3732 3239 6262 662c 0a30 7837 .0x77229bbf,.0x7
00313100: 3032 3230 3363 392c 0930 7861 6337 6166 02203c9,.0xac7af
00313110: 3635 392c 0930 7834 3632 6639 3338 362c 659,.0x462f9386,
00313120: 0930 7863 3562 3834 3630 622c 0a30 7862 .0xc5b8460b,.0xb
00313130: 6231 6166 3862 382c 0930 7839 3238 3065 b1af8b8,.0x9280e
00313140: 6161 622c 0930 7861 3361 3265 3639 332c aab,.0xa3a2e693,
00313150: 0930 7861 3565 3231 3361 362c 0a30 7832 .0xa5e213a6,.0x2
00313160: 6130 6262 3861 322c 0930 7865 6639 3362 a0bb8a2,.0xef93b
00313170: 3061 632c 0930 7835 3936 3537 3530 352c 0ac,.0x59657505,
00313180: 0930 7839 3066 6632 6366 362c 0a30 7864 .0x90ff2cf6,.0xd
00313190: 3931 3564 6438 322c 0930 7864 6135 3061 915dd82,.0xda50a
003131a0: 3337 332c 0930 7834 6338 3936 3137 612c 373,.0x4c89617a,
003131b0: 0930 7834 6435 3465 3832 662c 0a30 7865 .0x4d54e82f,.0xe
003131c0: 3237 6161 6537 322c 0930 7839 6230 6237 27aae72,.0x9b0b7
003131d0: 6234 312c 0930 7830 3264 6263 3863 352c b41,.0x02dbc8c5,
003131e0: 0930 7865 3134 6532 6139 372c 0a30 7831 .0xe14e2a97,.0x1
003131f0: 6234 6636 3762 652c 0930 7839 3562 3037 b4f67be,.0x95b07
블록은 다음 utmp 블록이 캡처될 때까지 계속됩니다 last
.
reboot system boot 2.6.30.9 Fri Nov 29 10:23 (340+04:17)
00315900: 0800 0000 2302 0000 0000 0000 0000 0000 ....#...........
00315910: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315920: 0000 0000 0000 0000 7369 0000 0000 0000 ........si......
00315930: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315940: 0000 0000 0000 0000 0000 0000 322e 362e ............2.6.
00315950: 3330 2e39 0000 0000 0000 0000 0000 0000 30.9............
00315960: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315970: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315980: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315990: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003159a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003159b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003159c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003159d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003159e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
003159f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a00: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a10: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a20: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a30: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a40: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a50: 0000 0000 1f6b 9852 b481 0600 0000 0000 .....k.R........
00315a60: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a70: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315a80: 0200 0000 0000 0000 7e00 0000 0000 0000 ........~.......
00315a90: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315aa0: 0000 0000 0000 0000 7e7e 0000 7265 626f ........~~..rebo
00315ab0: 6f74 0000 0000 0000 0000 0000 0000 0000 ot..............
00315ac0: 0000 0000 0000 0000 0000 0000 322e 362e ............2.6.
00315ad0: 3330 2e39 0000 0000 0000 0000 0000 0000 30.9............
00315ae0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315af0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b00: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b10: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b20: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b30: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b40: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b50: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b60: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b70: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b80: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315b90: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315ba0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315bb0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315bc0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315bd0: 0000 0000 1f6b 9852 ce16 0700 0000 0000 .....k.R........
00315be0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00315bf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
항목이 일시적으로 다시 이해되고 비슷한 ASCII 데이터가 표시됩니다.
답변1
이는 예를 들어 읽은 바이너리 파일입니다 last
(기본값은 을 /var/log/wtmp
사용하여 다른 대상을 지정할 수도 있습니다 -f
).
따라서 마지막 합리적인 항목이 있는지 여부는 마지막이 파일에 대한 액세스를 구현하는 방법과 파일을 사용하는 방법에 전적으로 달려 있습니다(예: 한 가지 옵션은 라운드 로빈 방식으로 라운드에서 고정된 길이의 고정된 수의 레코드에 액세스하는 것입니다).
답변2
wtmp
파일은 utmp
ASCII가 아닌 바이너리입니다. 따라서 ASCII가 아닌 데이터가 표시될 것으로 예상됩니다. 읽으려면 이 last
명령을 사용하세요. 명령이 작동하면 파일에 문제가 없는 것입니다.
형식 예제는 다음에서 찾아 man 5 wtmp
볼 수 있습니다.여기.
이 페이지에는 다음과 같은 내용도 언급되어 있습니다.
libc5의 utmp 구조가 libc6에서 변경되었습니다. 따라서 이전 libc5 구조를 사용하는 바이너리는 /var/run/utmp 및/또는 /var/log/wtmp를 손상시킵니다.
실패 하면 last
이것이 잘못된 16진수 덤프를 설명할 수 있을까요?
답변3
드디어 찾았어요.
시스템에는 특정 프로세스에 접속할 수 없는 경우 시스템을 다시 시작하는 감시 기능이 있습니다. 문제는 내 응용 프로그램이 SIGTERM 또는 SIGKILL에 의해 종료되고 먼저 감시 장치와의 연결을 끊지 않는다는 것입니다. SIGINT를 사용하면 감시 장치와의 연결이 끊어집니다.
종료 중에 다시 시작하면 이러한 이상한 바이트가 wtmp에 기록됩니다. 이제 chkconfig와 rc#.d의 설정 링크를 사용하여 /etc/init.d에 시작 및 종료 스크립트를 작성했는데 문제가 사라졌습니다.