반응형
Ⅰ. /run/user/1000이 무엇일까?
/run/user/1000 이라는 것은 한마디로 "로그인 중인 동안만 존재하는 사용자 전용 임시 작업공간" 입니다. 리눅스에 UID=1000 사용자가 로그인하면 systemd-logind가 자동으로 만들어줍니다. tmpfs(메모리 기반 파일시스템) 위에 마운트됩니다. 마지막 세션이 끊기는 순간 자동으로 unmount/삭제됩니다. 소켓 파일, 파이프, 임시 자격증명 등 세션 범위의 런타임 데이터가 저장됩니다
Ⅱ. unmount 시점
| 상황 | 정상 여부 | |
| 1 | 로그인 시작 → pam_systemd가 PAM 세션을 열고 systemd-logind에 세션 등록 요청 | 정상 동작 |
| 2 | /run/user/1000 마운트 → user-runtime-dir@1000.service가 tmpfs 마운트 | 정상 동작 |
| 3 | user@1000.service 시작 → 유저 전용 systemd 인스턴스(systemd --user) 기동 | 정상 동작 |
| 4 | 세션 사용 중 → D-Bus, 소켓 등 유저 서비스 활성화 | 정상 동작 |
| 5 | 로그아웃 → systemd-logind가 세션 제거 → user@1000.service 정지 → /run/user/1000 unmount | 정상 동작 |
Ⅲ. 원인 리스트
| 원인 | 설명 |
| 만료된 계정 + 비밀번호 변경 실패 | PAM 세션이 비정상 종료되어 마운트 잔존 |
| 시스템 종료/재부팅 시 | 살아있는 유저 프로세스가 /run/user/1000 파일 핸들을 붙들고 있는 경우 |
| 백그라운드 프로세스 잔존 | 로그아웃 후에도 소켓/파이프를 점유 중인 데몬이나 서비스 |
| systemd 버전 버그 | 특정 systemd 버전(예: 223)에서 알려진 race condition |
| 잘못된 XDG_RUNTIME_DIR 설정 | 환경변수가 /run/user/1000이 아닌 다른 경로를 가리킬 때 |
| 시스템 업데이트 중 재시작 | os-update 같은 자동 업데이트 도중 세션 강제 종료 |
| fstab | 잘못된 마운트 항목 /etc/fstab에 관련 항목이 잘못 남아있는 경우 |
Ⅲ. 원인 분석 방법
| # 1. 알람 발생 시점 전후 로그 확인 journalctl -b -1 --since="시각" -u systemd-logind | grep -E "1000|session|fail|PAM" # 2. busy 원인 프로세스 확인 fuser -mv /run/user/1000 lsof +D /run/user/1000 # 3. 계정 만료 여부 확인 chage -l 해당유저명 |
Ⅳ. 분석 및 조치
ⅰ. unmount가 발생하는 정상/비정상 케이스
| 상황 | unmount 여부 | 알람 |
| 사용자가 정상 로그아웃 | 정상 unmount | 없음 |
| 시스템 종료/재부팅 | 정상 unmount | 없음 (간혹 busy 시 알람 발생) |
| 계정 만료 + 비밀번호 변경 실패 | 세션 정리 과정에서 unmount | 있음 |
| 계정 만료로 로그인 자체 차단 (세션 미생성) | unmount 안됨 | 없음 |
| loginctl terminate-user 1000 명령 | 강제 unmount | 경우에 따라 발생 |
| SSH 세션 종료( lingering 비활성 시) | 정상 unmount | 없음 |
| SSH 세션 강제 끊김 (네트워크 단절 등) | unmount (타임아웃 후) | 없음 (logind 가 정상 처리) |
ⅱ. 패스워드 만료 계정 → 변경 실패 시 흐름
일반 로그아웃과 달리 PAM 인증 에러 경로를 타기 때문에 로그가 여러 곳에 동시에 기록되어 거의 반드시 남습니다.
| 1. SSH 접속 시도 ↓ 2. PAM이 "패스워드 만료됨" 감지 ↓ 3. 새 패스워드 입력 프롬프트 제공 ↓ 4. 변경 실패 (불일치, 정책 위반 등) ↓ 5. PAM session 열기 실패 ↓ 6. systemd-logind: 세션 정리 ↓ 7. /run/user/1000 삭제 (잠깐 생겼다가 바로 제거 또는 생성 자체 실패) |
ⅲ. /run/user/1000 알람 발생 원인
/run/user/1000이 마운트된 상태에서, PAM 세션 close 없이 비정상 중단되어 logind가 강제 정리를 시도할 때
- 정상 로그아웃/타임아웃/SSH 종료는 모두 pam_close_session()이 정상 호출되므로 알람 없음
- 계정 만료 + 비번 변경 실패만 마운트는 됐는데 PAM 흐름이 중간에 끊기는 유일한 케이스라 알람이 발생한 것입니다
반응형
'시스템(Linux)' 카테고리의 다른 글
| Linux kill vs pkill 정리 (0) | 2026.03.10 |
|---|---|
| Fail2ban 완전 정복(브루트 포스 공격, Brute Force Attack) 자동 차단 도구 (0) | 2026.03.09 |
| ripgrep(rg) 에 대해 알아보겠습니다. (0) | 2026.03.01 |
| 리눅스 루트킷(Linux Rootkit) 에 대해 알아보겠습니다. (0) | 2025.12.19 |
| blkid 명령어에 대해 알아보겠습니다. (0) | 2025.12.18 |