1 분 소요

이전 포스팅과 이어지는 내용일 수 있습니다.
리눅스 실습 중 다른 교육생의 흥미로운 실험을 함께 했습니다. 사용자 계정을 삭제했는데도 여전히 로그인 세션이 유지되고 명령어 실행까지 가능하다면, 이건 어떤 상황일까요?

본 포스팅에서 리눅스의 사용자 세션과 계정 삭제의 관계를 실험을 통해 확인하고, 왜 이런 일이 발생하는지 원리를 설명해보겠습니다.


🧪 실험 시나리오

  1. 사용자 user01을 생성
  2. su - user01로 로그인
  3. user01 자신이 sudo userdel -rf user01을 실행 → 성공
  4. 사용자 계정은 삭제되었지만 세션은 유지됨

🔎 삭제 후에도 로그인 세션이 유지되는 이유

✅ 사용자 프로세스는 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 기준으로 남아있어 계속 동작할 수 있습니다.
사용자 계정을 완전히 정리하려면 반드시 다음을 함께 수행해야 합니다:

  1. 사용자 세션이 살아있는지 확인: who, w, ps, loginctl
  2. 사용자 프로세스 종료: pkill -u [user]
  3. 계정 삭제: userdel -rf [user]

이 실험을 통해 리눅스에서 세션 관리와 계정 정보는 분리되어 작동한다는 중요한 원리를 배웠습니다.

카테고리:

업데이트:

댓글남기기