리눅스에서 사용자 삭제 후에도 세션이 유지되는 이유는?
이전 포스팅과 이어지는 내용일 수 있습니다.
리눅스 실습 중 다른 교육생의 흥미로운 실험을 함께 했습니다.
사용자 계정을 삭제했는데도 여전히 로그인 세션이 유지되고 명령어 실행까지 가능하다면, 이건 어떤 상황일까요?
본 포스팅에서 리눅스의 사용자 세션과 계정 삭제의 관계를 실험을 통해 확인하고, 왜 이런 일이 발생하는지 원리를 설명해보겠습니다.
🧪 실험 시나리오
- 사용자
user01
을 생성 su - user01
로 로그인user01
자신이sudo userdel -rf user01
을 실행 → 성공- 사용자 계정은 삭제되었지만 세션은 유지됨
🔎 삭제 후에도 로그인 세션이 유지되는 이유
✅ 사용자 프로세스는 UID 기반으로 작동
리눅스는 사용자 계정이 삭제되더라도, 해당 사용자가 이미 로그인되어 실행 중인 프로세스가 있다면 그 프로세스는 계속 작동합니다.
그 이유는 프로세스가 UID(숫자)를 기준으로 실행되기 때문입니다.
즉, /etc/passwd
에서 사용자 이름은 사라졌어도, 프로세스에는 UID(예: 1002)가 남아 있고, 그 UID는 여전히 유효하므로 시스템은 계속 인식합니다.
✅ 로그인 세션은 프로세스일 뿐
로그인 세션 = bash
혹은 sh
같은 셸 프로세스입니다. 이 프로세스가 종료되지 않는 이상, 사용자는 계속 명령어를 실행할 수 있습니다.
단, 다음과 같은 현상이 발생합니다:
id
명령어 → UID만 출력됨sudo
→"you do not exist in the passwd database"
에러 발생pwd
,ls
등 기본 명령어는 정상 작동
✅ 시스템은 UID만 보고 판단한다
아래처럼 ps
로 확인하면 여전히 UID 기반으로 프로세스가 살아있음을 확인할 수 있습니다:
ps -ef | grep user01
🧼 세션을 완전히 종료하려면?
사용자 계정 삭제 후에도 세션이 살아 있다면, 다음과 같이 수동으로 정리할 수 있습니다:
# 루트 권한으로 해당 UID 프로세스 종료
pkill -u user01
✅ 결론: 계정 삭제 ≠ 로그인 세션 종료
리눅스에서는 사용자 계정을 삭제해도, 이미 실행 중인 세션은 UID 기준으로 남아있어 계속 동작할 수 있습니다.
사용자 계정을 완전히 정리하려면 반드시 다음을 함께 수행해야 합니다:
- 사용자 세션이 살아있는지 확인:
who
,w
,ps
,loginctl
- 사용자 프로세스 종료:
pkill -u [user]
- 계정 삭제:
userdel -rf [user]
이 실험을 통해 리눅스에서 세션 관리와 계정 정보는 분리되어 작동한다는 중요한 원리를 배웠습니다.
댓글남기기