Linux 로그 경로 정리 · 04/50 · Part 1. Linux 로그 기본 구조
선행 학습 → 03. /var/log 디렉터리 구조 · 기초 23. head와 tail
이번 글 → Linux 로그 파일과 디렉터리 확인 방법
이어서 → 05. 로그 파일의 권한과 소유권
로그를 "읽기 전에" 먼저 해야 할 일은 로그 파일 자체를 점검하는 것입니다. 언제 마지막으로 기록됐는지, 누가 쓸 수 있는지, 크기가 이상하지 않은지 — 이 메타데이터가 로그 내용의 신뢰도를 결정합니다.
핵심 요약
ls -lah→ 전체 조망,find→ 조건 검색,stat→ 파일 하나의 정밀 메타데이터- 로그 파일의 mtime은 마지막 기록 시각, ctime은 메타데이터 변경 시각
- 조사 시
less·cat은 atime을 바꿀 수 있다 → 필요한 경우 사본으로 작업
| 시간 | 이름 | 로그 파일에서의 의미 |
|---|---|---|
| mtime (Modify) | 내용 변경 | 마지막으로 로그가 추가/수정된 시각 |
| ctime (Change) | inode 변경 | 권한·소유자 변경, 이름 변경, 내용 변경 시에도 갱신 |
| atime (Access) | 읽기 | 누가 읽었는지의 흔적 (relatime 정책으로 부정확) |
| Birth | 생성 | 파일시스템·커널 지원 시 표시 (로테이션 후 새 파일 생성 시각) |

[1] ls -lah /var/log → 무엇이 있나 (크기·권한·mtime 조망)
↓
[2] find 조건 검색 → 최근 변경 / 비정상 권한 / 0바이트
↓
[3] stat 파일 → 정밀 시간(MAC+Birth), inode
↓
[4] 판단 → 기록 중단? 변조? 정상 순환?
이번 글은 특정 파일이 아니라 /var/log 전체와 주요 파일을 대상으로 합니다.
/var/log/ (전체 조망)
/var/log/secure | auth.log (인증 로그 메타데이터 확인 대상 1순위)
/var/log/audit/audit.log (감사 로그 — 권한 0600 기대)
/var/log/journal/ (영구 저널 존재 여부)
# [1] 전체 조망: 사람이 읽기 쉬운 크기 + 정확한 시간
ls -lah --time-style=full-iso /var/log | head -30
# [2] 조건 검색
find /var/log -maxdepth 2 -type f -mmin -60 # 최근 60분 내 기록된 로그
find /var/log -type f -size 0 # 0바이트 로그 (순환 직후 or 비움)
find /var/log -type f -perm -o+w # 누구나 쓸 수 있는 로그 (위험)
find /var/log -type f ! -user root -printf '%u %p\n' # root 소유가 아닌 로그
# [3] 정밀 확인
stat /var/log/secure
stat -c '%n | size=%s | perm=%a | owner=%U:%G | mtime=%y | ctime=%z' /var/log/secure*
stat /var/log/*처럼 와일드카드로 한 번에 볼 수도 있지만 출력이 길어집니다.stat -c포맷으로 한 줄씩 요약하는 편이 비교에 유리합니다.

위 이미지는 Rocky Linux 9.8 실습 환경에서 실제로 실행한 stat 결과입니다.
아래는 판단 예를 설명하기 위한 예시 출력입니다.
[예시 출력]
/var/log/secure | size=0 | perm=600 | owner=root:root | mtime=2026-09-20 02:23:40 | ctime=2026-09-20 02:23:40
/var/log/secure-20260914 | size=211904 | perm=600 | owner=root:root | mtime=2026-09-14 03:11:02 | ctime=2026-09-14 03:11:02
해석: 현재 secure 가 0바이트이고 mtime이 새벽 02:23 — 정기 로테이션 시각(보통 cron.daily 새벽 3시대)과 맞지 않습니다. "비워졌을 가능성"을 가설로 세우고 journald·audit·원격 로그로 확인합니다(44편).
| stat 필드 | 확인 질문 |
|---|---|
Size | 서비스 활동량 대비 너무 작지 않은가? |
Access: (0600/-rw-------) | 로그 권한이 기대값과 같은가? |
Uid / Gid | root / syslog / adm 외 소유자가 있는가? |
Modify | 마지막 기록 시각이 현재와 크게 떨어져 있지 않은가? |
Change | Modify와 다르다면 무엇(권한·소유권·이름)이 바뀌었나? |
Birth | 로테이션으로 새 파일이 만들어진 시각과 맞는가? |
Inode | 파일이 교체(삭제 후 재생성)되면 inode가 바뀐다 |
| 정상 | 의심 |
|---|---|
| mtime이 최근(서비스 활동 중) | 서비스는 활발한데 mtime이 수 시간 전에서 멈춤 |
| Change == Modify (기록에 의한 갱신) | Change만 최근 → 권한/소유자 변경 흔적 |
| 순환 직후에만 0바이트 | 순환 시각과 무관한 0바이트 |
| inode가 로테이션 시점에만 변경 | 로테이션 없이 inode 변경(파일 교체) |
stat 의 mtime.stat 출력은 증거 목록(Chain of Custody)에 함께 기록한다(45편).[ ] ls -lah --time-style=full-iso 로 /var/log 조망
[ ] find 로 최근 변경 / 0바이트 / o+w / 비root 소유 로그 검색
[ ] stat 로 secure(auth.log) 의 MAC 타임 확인
[ ] Modify 와 Change 가 다른 이유 설명 가능
[ ] inode 변화로 파일 교체 여부 판단
[ ] 결과를 증거 목록 형식으로 기록
find 로 0바이트·쓰기 가능·비root 소유 로그를 빠르게 걸러낸다.| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 03. /var/log 디렉터리 구조 |
| ▶ 다음 글 | 05. 로그 파일의 권한과 소유권 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |