본문 바로가기
시스템(Linux)

/run/user/1000 알람에 대해 알아보겠습니다.

by forward error correction Circle 2026. 3. 11.
반응형

Ⅰ. /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 흐름이 중간에 끊기는 유일한 케이스라 알람이 발생한 것입니다

반응형