공부 기록

[학습 후기] 리눅스 입문: 리눅스 시스템 관리와 프로세스 (5~7장)

aeve 2025. 11. 30. 22:31

지난번 1~4장 학습 후기에 이어, 이번에는 리눅스 시스템 관리의 핵심인 사용자 관리, 권한, 그리고 프로세스에 대해 학습한 내용을 정리합니다.

단순히 명령어를 치는 단계를 넘어, 리눅스가 어떻게 여러 사용자를 관리하고 내부적으로 프로그램을 실행하는지 깊이 있게 이해할 수 있는 시간이었습니다.

 

1~4장에서 파일 시스템과 기본 명령어를 익혔다면, 5~7장에서는 리눅스가 멀티 유저 시스템으로서 어떻게 작동하는지, 그리고 프로세스가 어떻게 관리되는지에 대한 이론과 실무를 다뤘습니다.

1. 사용자와 권한: 보안의 첫걸음 (5장, 6장)

리눅스는 태생적으로 여러 사람이 동시에 접속해 사용할 수 있는 멀티 유저 시스템입니다. 따라서 '누가(User)', '어떤 권한(Permission)'으로 파일을 다루느냐가 시스템 안정성의 핵심입니다.

1.1 사용자(User)와 그룹(Group)

리눅스의 사용자는 크게 세 종류로 나뉩니다.

  • Root 사용자: 가장 높은 권한을 가진 관리자.
  • 시스템 사용자: 백그라운드 서비스 등을 실행하기 위한 관리용 계정.
  • 일반 사용자: 우리가 평소에 로그인해서 사용하는 계정.

학습하며 가장 와닿았던 점은 "일반 사용자는 su나 sudo를 통해 필요할 때만 Root 권한을 빌려 쓴다"는 점입니다. /etc/passwd 파일을 열어보면 내 계정 정보가 gilbut:x:1000:1000... 처럼 저장되어 있다는 것도 확인했습니다.

1.2 소유권과 허가권 (Permission)

ls -l 명령어를 쳤을 때 나오는 복잡한 문자열(drwxr-xr-x)의 의미를 드디어 완벽하게 이해했습니다.

  • 구조: 소유자(User) / 소유 그룹(Group) / 기타 사용자(Other) 순서로 권한이 부여됩니다.
  • 권한: 읽기(r), 쓰기(w), 실행(x).
  • 숫자 표기법: r=4, w=2, x=1로 계산하여 chmod 644 (rw-r--r--)와 같이 설정합니다.

💡 파일의 이름을 변경하는 것은 파일 자체의 권한이 아니라, 그 파일이 위치한 디렉터리의 '쓰기 및 실행' 권한이 있어야 가능하다는 사실을 새롭게 알게 되었습니다.

2. 프로세스 관리: 컴퓨터의 두뇌 활동 (7장)

7장은 컴퓨터 공학 전공 수업을 듣는 듯한 깊이 있는 내용이었습니다.

2.1 프로세스의 계층 구조와 init

모든 프로세스는 부모가 있습니다. 리눅스가 부팅될 때 커널이 최초로 만드는 init 프로세스(PID 1)가 모든 프로세스의 조상이라는 점이 흥미로웠습니다.

  • 좀비 프로세스: 종료되었지만 부모가 뒤처리를 안 해줘서 남아있는 상태.
  • 고아 프로세스: 부모가 먼저 죽어서 init 프로세스에 입양된 상태.

2.2 스케줄링과 컨텍스트 스위칭

CPU는 한 번에 하나의 일만 할 수 있지만, 아주 빠르게 번갈아 가며 처리하기 때문에 우리가 보기에 '멀티태스킹'이 되는 것입니다. 이때 실행 주체를 바꾸는 과정을 컨텍스트 스위칭(Context Switching)이라고 하는데, 이 과정에서 PCB(프로세스 제어 블록)에 상태를 저장하고 불러오는 오버헤드가 발생한다는 점을 배웠습니다. 효율성과 응답성 사이의 줄타기가 운영체제의 역할이었습니다.

2.3 포어그라운드와 백그라운드

터미널에서 명령을 내릴 때, 명령어 뒤에 &를 붙이면 백그라운드에서 실행되어 터미널을 계속 사용할 수 있습니다. 오래 걸리는 작업을 시킬 때 유용하게 쓰일 것 같습니다.

2.4 프로세스 간 통신 (IPC)

프로세스끼리 데이터를 주고받는 방법도 다양했습니다.

  • 파이프(Pipe): 한쪽에서 주고 한쪽에서 받음 (단방향).
  • 소켓(Socket): 네트워크를 통해 다른 컴퓨터와도 통신 가능.
  • 공유 메모리: 메모리 공간 자체를 공유 (빠르지만 동기화 문제 주의).

마무리 및 다음 학습 계획

이번 학습을 통해 리눅스 시스템이 어떻게 보안을 유지(권한 관리)하고, 효율적으로 자원을 배분(프로세스 관리)하는지 알게 되었습니다. 특히 kill 명령어로 멈춘 프로세스를 종료시키거나, chmod로 스크립트 실행 권한을 주는 실습은 당장 실무에서도 유용하게 쓰일 것 같습니다.

다음 주에는 시그널과 리눅스 활용 파트를 진행합니다.