반응형

리눅스 기본 명령어 완벽 가이드 – 초보자도 바로 따라하는 실습 예제

리눅스 터미널 앞에서 명령어가 헷갈리시나요? 오늘은 **자동완성, 파일 관리, 사용자 관리, 권한 설정**까지 리눅스의 핵심 명령어를 실습 예제와 함께 완전히 정리해드립니다.

반응형

안녕하세요! 리눅스를 처음 접하면 가장 먼저 마주하는 게 ‘명령어’죠. 처음엔 lscd 정도만 알아도 뭔가 프로그래머가 된 기분이 들지만, 막상 깊게 들어가면 디렉터리 구조, 권한, 사용자 관리까지 배워야 할 게 많습니다. 이번 글에서는 리눅스 기본 명령어를 **PDF 자료의 예제 코드 그대로** 가져와 실습과 함께 설명드릴 거예요. 명령어 설명과 예제, 그리고 제가 직접 써본 팁까지 곁들여서 초보자도 쉽게 이해할 수 있도록 구성했습니다. 글을 끝까지 보시면, 리눅스 환경에서 기본 작업을 혼자서 척척 해낼 수 있을 겁니다.

1. 자동 완성과 명령어 이력 활용

리눅스 터미널의 **자동 완성** 기능은 초보자뿐 아니라 숙련자에게도 필수입니다. 긴 디렉터리 경로나 파일명을 모두 타이핑하지 않고 Tab 키 한 번으로 완성할 수 있으니까요.

자동 완성 기본 사용법

cd /li   [Tab]   syst   [Tab]   sys   [Tab]
  • 파일명이나 디렉터리명을 일부 입력한 후 Tab을 누르면 나머지가 자동 완성됩니다.
  • 비슷한 이름이 여러 개라면, Tab을 두 번 눌러 후보 목록을 확인합니다.

예를 들어 cd /etc로 이동 후 cd sys + Tab을 누르면 후보가 여러 개 나오고, syst까지 입력하면 systemd로 바로 완성됩니다.

명령어 이력 관리 – history

자동 완성과 함께 많이 쓰는 기능이 명령어 이력입니다. 터미널에서 위/아래 화살표를 누르면 이전에 실행했던 명령어가 나옵니다.

$ history       # 모든 명령어 이력 확인
$ history -c    # 명령어 이력 전체 삭제

💡 : 특정 명령어를 다시 실행하고 싶을 땐 !번호 형식을 사용하면 됩니다. 예를 들어 !25는 이력 25번 명령을 바로 실행합니다.

실습 시나리오 예제

  1. 홈 디렉터리에서 /etc로 이동
  2. sys 입력 후 Tab 두 번 눌러 후보 목록 확인
  3. syst 입력 후 Tab 눌러 systemd로 완성
  4. 이전 명령어 기록을 history로 확인

이렇게 자동 완성과 이력 기능만 잘 활용해도, 리눅스 작업 속도가 2배는 빨라집니다.

2. 디렉터리 구조와 이동 명령어

리눅스 시스템은 계층형 디렉터리 구조를 가지고 있습니다. 최상위는 루트 디렉터리(/)이며, 그 아래에 다양한 역할을 하는 디렉터리들이 배치됩니다. 이를 이해하면 파일 위치를 빠르게 파악하고 이동할 수 있습니다.

기본 디렉터리 이동 명령어

$ pwd          # 현재 디렉터리 경로 확인
$ ls           # 현재 디렉터리 목록 출력
$ ls -l        # 상세 정보까지 출력
$ cd ..        # 상위 디렉터리로 이동
$ cd users     # 하위 디렉터리로 이동
$ cd ~         # 홈 디렉터리로 이동

💡 : clear 명령을 사용하면 터미널 화면 내용을 한 번에 지워서 작업 결과를 깔끔하게 볼 수 있습니다.

주요 시스템 디렉터리 설명

디렉터리 설명
/bin → /usr/bin 기본 명령어 저장소 (ls, cp, mv 등), 실제 위치는 /usr/bin
/boot 시스템 부팅에 필요한 커널, 부트로더 설정 파일
/dev 디바이스 파일, 하드웨어 장치 접근 (/dev/sda 등)
/etc 시스템 설정 파일 저장소
/home 일반 사용자 홈 디렉터리
/lib → /usr/lib 시스템 라이브러리 저장소, 실제 위치는 /usr/lib
/sbin → /usr/sbin 시스템 관리용 명령어 저장소
/var 변경되는 데이터 저장 (로그, 캐시 등)

심볼릭 링크(lrwxrwxrwx)는 다른 경로를 참조하는 기능입니다. 예를 들어 /bin 디렉터리가 /usr/bin으로 연결되어 있어도, 사용자는 그냥 /bin 안의 명령어를 실행하면 됩니다.

디렉터리 구조 실습

  1. sudo su -로 root 권한 획득
  2. cd /로 루트 디렉터리 이동
  3. ls -l로 하위 디렉터리 및 링크 구조 확인

이 과정을 거치면, 디렉터리 구조의 큰 그림을 머릿속에 그릴 수 있어 이후 파일 관리가 훨씬 수월해집니다.

3. 파일 생성·편집·삭제·복사·이동 🔧

리눅스에서 가장 자주 하는 일이 바로 파일 생성편집, 그리고 삭제/복사/이동입니다. 아래 예제들은 첨부된 PDF의 실습 명령을 그대로 사용해 정리했습니다. (명령은 터미널에서 순서대로 실행하세요.)

3-1) 작업 디렉터리 만들기와 이동 🚶

1. Documents 디렉터리로 이동 후 testdir 디렉터리를 생성하고 testdir 디렉터리로 이동
$ mkdir testdir
$ cd testdir
  • mkdir는 디렉터리를 생성하고, cd는 이동합니다.
  • 경로를 길게 입력할 때는 Tab 자동완성을 적극 활용하세요.

3-2) Vim으로 텍스트 파일 생성/편집 ✍️

터미널에서 텍스트 편집은 Vim을 많이 사용합니다. PDF의 예제를 그대로 따라가며 첫 파일을 만들어 봅니다.

2. testdir 디렉터리에 test.txt 파일을 생성하기 위해 vim 명령을 사용
$ vim test.txt

Vim은 입력 모드ex(명령) 모드가 있습니다. PDF의 안내처럼 다음 흐름으로 저장/종료를 연습합니다.

3. 새로 만든 파일에 아무 내용이나 입력해 보면 제대로 입력되지 않음
Vim에는 문서를 작성하는 ‘입력 모드’와 문서를 저장하는 ‘ex 모드’가 있음
Vim 명령으로 문서를 생성하거나 편집할 때 ‘ex모드’가 기본 모드
영문자 I 또는 a를 누름
Esc 키를 누르고 명령어 입력
4. 텍스트 입력을 위해 ex 모드 상태에서 i 또는 a를 눌러서 입력 모드 상태로 변경 → “안녕하세요. “ 입력
파일을 저장하기 위해 입력 모드에서 Esc 키를 누르고 ex 모드로 변경
 ‘:wq’를 입력하고 저장하고 Vim 편집기 종료하고 터미널 환경으로 돌아옴

만약 비정상 종료로 .swp 파일이 남았다면 PDF에 나온 대로 처리합니다.

⚫ 비정상 종료 : .test.txt.swp 스왑 파일 생성
▪ 스왑 파일 삭제하기
ls -a 명령을 입력하여 파일 확인, rm -rf .new.txt.swp 명령 입력
▪ 해당 스왑 파일을 삭제하면 new.txt 파일을 정상적으로 편집할 수 있음

3-3) 텍스트 내용/파일 유형 빠르게 확인 👀

▪ 터미널 환경에서 텍스트 문서의 내용을 간단히 확인할 때는 리눅스의 cat {파일이름} 명령을 사용
▪ test.txt 파일의 내용 확인
$ cat text.txt

⚫ 텍스트로 작성된 파일의 앞 10행 또는 마지막 10행만 출력 : head, tail
$ head cloud-init.log
$ tail cloud-init.log

⚫ 텍스트로 작성된 파일을 화면에 페이지 단위로 출력
$ more cloud-init.log

⚫ File이 어떤 종류의 파일인지를 표시
$file test.txt
$file cloud-init.log

💡 참고 : cat text.txt는 PDF의 표기 그대로 인용했습니다. 실습 중 실제 파일명이 test.txt라면 cat test.txt로 확인하세요.

3-4) 파일/디렉터리 조작(생성·삭제·복사·이동) 🧩

명령 용도 PDF 예제 (그대로)
touch 크기 0의 새 파일 생성, 기존 파일이면 수정시간 갱신 $touch abc.txt
cp 파일/디렉터리 복사 $cp abc.txt cba.txt
mv 이름 변경 또는 위치 이동 $mv abc.txt test.txt
rm 파일/디렉터리 삭제 $ rm -r testdir
rmdir 비어있는 디렉터리 삭제 $rmdir test

삭제 옵션 자세히 보기 (rm)

옵션 설명 PDF 표기
-r 디렉터리와 내부 전체를 재귀적으로 삭제 -r 옵션을 붙이면 디렉터리 안에 있는 하위 디렉터리와 파일을 모두 삭제
-f / --force 확인 없이 강제 삭제 강제 삭제삭제 확인 메시지 없이 파일을 강제로 삭제
-i 삭제 전 확인 요청 삭제 확인파일을 삭제하기 전에 확인 메시지를 표시
-v / --verbose 삭제 과정을 상세 출력 삭제 과정을 자세히 출력
-rf 디렉터리 강제 삭제(주의) 디렉터리와 그 안의 모든 파일을 강제로 삭제

⚠️ 주의 : rm -rf는 복구가 거의 불가능하니, 경로를 두 번 확인하고 실행하세요.

3-5) 세션 마무리와 정리 🧹

⚫ 터미널 종료
$ exit
  • 실습 후에는 history로 실행 이력을 점검하고, 중요 명령은 메모해 두면 다음 작업이 빨라집니다.
  • clear로 화면을 정리하면 결과 확인이 한결 수월해요.

3-6) 체크리스트 ✅

4. 사용자와 그룹 관리 👥

리눅스는 다중 사용자 시스템입니다. 즉, 여러 사용자가 동시에 한 시스템을 쓰더라도 계정그룹, 그리고 권한으로 작업 범위를 깔끔하게 나누죠. 이 파트에서는 첨부된 자료의 예제 코드 그대로 보여드리면서, 계정 정보가 어디에 저장되는지, 어떤 명령으로 사용자를 추가·변경·삭제하는지 한 번에 정리합니다. 중간중간 초보자가 헷갈리기 쉬운 포인트도 체크해 둘게요. 🙂

4-1) 사용자/비밀번호/그룹 정보 파일 📁

가장 기본은 /etc/passwd, /etc/shadow, /etc/group 세 파일입니다. 자료의 예제를 그대로 확인해 볼게요.

# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
…
tcpdump:x:72:72::/:/sbin/nologin
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash

각 행은 사용자 이름:암호:사용자 ID:그룹 ID:전체 이름:홈 디렉터리:기본 셸 의미를 가집니다. 예시도 그대로 살펴보죠.

# cat passwd
root:x:0:0:root:/root:/bin/bash
  • root : 시스템 관리자 계정 (UID=0, GID=0), 홈 /root, 셸 /bin/bash
  • 비밀번호는 실제로 /etc/shadow에 저장되므로 x로 표시됩니다.
root:$6$saltsalt$EtlHlRc.4Ivkj93v9I.vI4u/:18648:0:99999:7:::

위와 같은 /etc/shadow 항목은 암호화된 비밀번호, 마지막 변경일, 최소/최대 사용기간, 만료 경고, 잠금 기간, 계정 만료일 등의 필드를 포함합니다.

root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:ec2-user
…
users:x:100:
nobody:x:65534:
…
screen:x:84:
ec2-user:x:1000:

/etc/group 형식은 그룹명:비밀번호:그룹ID:그룹에 속한 사용자명입니다. 예를 들어 adm 그룹은 시스템 로그 확인 권한 등 특정 역할을 갖습니다.

파일 역할 핵심 필드
/etc/passwd 사용자 기본 정보 name:x:UID:GID:comment:home:shell
/etc/shadow 암호/만료 정책 hash:lastchg:min:max:warn:inactive:expire
/etc/group 그룹 정보 group:x:GID:members

4-2) 사용자(User) 관리 명령어 🧑‍💻

자료의 명령을 그대로 따라 적었습니다. 옵션 설명도 함께 보세요.

▪ 새로운 사용자를 추가
useradd [옵션] 사용자이름
# useradd newuser

• 사용자 생성시 옵션
 -u : ID 지정
 -g : 그룹 지정                 useradd -G wheel john
 -d : 홈 디렉터리 지정     useradd -d /home/john john
 -s : 셸 지정                     useradd -s /bin/bash john
▪ 사용자의 비밀번호를 지정하거나 변경
# passwd newuser
▪ 사용자의 속성을 변경
usermod [옵션] 사용자이름
# usermod -g root test1

• 옵션
-l: 사용자 이름 변경
-d: 홈 디렉터리 변경
-m: 홈 디렉터리 이동
-s: 기본 셸 변경
-g: 추가 그룹 지정
-L: 계정 잠금,  -U: 계정 잠금 해제 
▪ 사용자를 삭제
# userdel tester
▪ 사용자의 암호를 주기적으로 변경하도록 설정
# chage -m 2 newuser
  • 주의 : userdel 전에는 중요한 홈 디렉터리 자료를 백업하세요.
  • 계정 정책은 chage로 최소/최대 사용 기간 등을 관리할 수 있습니다.

4-3) 그룹(Group) 관리 명령어 🧩

▪ 현재 사용자가 속한 그룹을 보여줌
# groups
▪ 새로운 그룹을 생성
# groupadd tester
▪ 그룹의 속성을 변경
# groupmod -n newtester tester
• 옵션
-n: 그룹 이름 변경
-g: 그룹 ID(GID) 변경
▪ 그룹을 삭제
# groupdel newtester
▪ 그룹의 암호를 설정하거나, 그룹의 관리를 수행
# gpasswd newgroup
범주 명령 용도/예시
사용자 useradd, passwd, usermod, userdel, chage 생성/비번/속성변경/삭제/암호정책
그룹 groupadd, groupmod, groupdel, gpasswd, groups 생성/변경/삭제/관리/소속확인

4-4) 자주 하는 실수와 안전수칙 🚨

  • /etc/passwd/etc/group을 직접 편집하는 대신 해당 user*/group* 명령을 사용하세요.
  • 계정 잠금(usermod -L)과 해제(-U)는 실수로 서비스 계정을 막지 않게 신중히.
  • 새 사용자 생성 시 -s /bin/bash 등 원하는 셸을 명시하고, 홈 디렉터리(-d)도 함께 확인하세요.

4-5) 따라 해보는 간단 루틴 ✅

  1. useradd newuserpasswd newuser로 비밀번호 설정
  2. groupadd tester → 필요 시 groupmod -n newtester tester
  3. usermod -g root test1로 기본 그룹 바꾸기(예시)
  4. groups로 소속 그룹 확인
  5. chage -m 2 newuser로 암호 정책 적용

5. 🔑 파일 소유권과 권한 관리

리눅스는 모든 파일과 디렉터리에 대해 소유권접근 권한을 설정합니다. 이를 통해 시스템의 보안과 안정성을 유지하죠. 이번 절에서는 chmod, chown, chgrp 명령을 이용해 권한을 설정하고 소유권을 변경하는 방법을 살펴봅니다.

5-1. 파일 권한 구조 이해

리눅스 파일 권한은 소유자(owner), 그룹(group), 기타 사용자(others)로 나뉘며, 각 주체별로 읽기(r), 쓰기(w), 실행(x) 권한을 부여하거나 제거할 수 있습니다.

# 파일 상세 정보 확인
ls -l
-rwxr-xr--  1 user group  4096 Aug 11 10:00 script.sh
  • r : 읽기 권한 (4)
  • w : 쓰기 권한 (2)
  • x : 실행 권한 (1)

5-2. chmod : 권한 변경

chmod 명령어는 기호 모드와 8진수 모드 두 가지 방법으로 권한을 변경할 수 있습니다.

# 실행 권한 추가 (기호 모드)
chmod u+x script.sh

# 읽기/쓰기/실행 권한 설정 (8진수 모드)
chmod 755 script.sh
8진수 값 권한
7 rwx (읽기, 쓰기, 실행)
6 rw- (읽기, 쓰기)
5 r-x (읽기, 실행)

5-3. chown : 파일 소유권 변경

chown 명령은 파일이나 디렉터리의 소유자를 변경합니다. 주로 관리자 권한이 필요합니다.

# 소유자 변경
sudo chown user1 file.txt

# 소유자와 그룹 변경
sudo chown user1:group1 file.txt

5-4. chgrp : 그룹 소유권 변경

그룹 소유권만 변경하려면 chgrp 명령을 사용합니다.

# 그룹 소유권 변경
sudo chgrp developers project/

💡 TIP : 권한과 소유권 변경은 보안에 직결되므로 변경 전 반드시 필요성을 확인하세요.

6. 💡 실습 팁과 자주 쓰는 명령어 모음

리눅스를 다루다 보면 기본 명령어를 빠르게 활용하는 것이 큰 도움이 됩니다. 이번 절에서는 실습 중 유용하게 쓸 수 있는 명령어 모음과 함께, 초보자가 헷갈리기 쉬운 사용 팁을 정리했습니다.

6-1. 디렉터리 탐색과 이동

# 현재 작업 디렉터리 확인
pwd

# 홈 디렉터리로 이동
cd ~

# 상위 디렉터리로 이동
cd ..

# 특정 경로로 이동
cd /etc
  • pwd : 현재 경로를 출력
  • cd : 디렉터리 이동
  • .. : 상위 디렉터리

6-2. 파일 및 디렉터리 관리

# 파일 목록 보기
ls -l

# 숨김 파일 포함 목록 보기
ls -la

# 디렉터리 생성
mkdir new_folder

# 파일 복사
cp source.txt backup.txt

# 파일 이동/이름 변경
mv file1.txt file2.txt

# 파일 삭제
rm file.txt
명령어 설명
ls -l 자세한 파일 정보 출력
mkdir 새 디렉터리 생성
cp 파일 복사

6-3. 파일 내용 확인 및 검색

# 파일 내용 출력
cat file.txt

# 페이지 단위로 보기
less file.txt

# 특정 단어 검색
grep "keyword" file.txt

💡 TIP : grep-n 옵션을 주면 검색 결과의 줄 번호까지 함께 표시됩니다.

6-4. 시스템 상태 확인

# 현재 로그인 사용자
who

# 현재 실행 중인 프로세스
ps aux

# 디스크 사용량
df -h

# 메모리 사용량
free -h
  • df -h : 디스크 공간을 사람이 읽기 쉬운 단위로 표시
  • free -h : 메모리 사용량을 보기 좋게 출력

🔚 마무리

이번 글에서는 리눅스 기본 명령어와 파일 관리, 권한 설정, 실습 팁까지 초보자도 쉽게 따라 할 수 있는 예제로 정리했습니다. 명령어 하나하나가 단순해 보여도, 실제 서버 운영이나 개발 환경에서 적용해 보면 그 가치가 훨씬 크게 느껴질 것입니다.

앞으로 리눅스를 더 깊게 배우고자 한다면, 오늘 배운 명령어를 반복 연습하며 자신의 워크플로우에 자연스럽게 녹여내는 것이 중요합니다.

또한, 파일 권한과 소유권 개념은 보안과 직결되므로 반드시 숙지해야 하며, 실무에서 발생할 수 있는 오류를 미리 예방하는 습관을 들이는 것이 좋습니다.

 

다음에는 프로세스 관리, 네트워크 관련 명령어, 셸 스크립트 등 한 단계 더 심화된 주제로 찾아오겠습니다. 꾸준히 연습하고 체득한다면, 리눅스는 더 이상 어렵지 않고 여러분의 든든한 도구가 될 것입니다. 🚀

반응형
반응형

 

 

[리눅스] 02. AWS EC2 환경설정 가이드 — 프리 티어로 시작하는 서버 만들기 🚀

첫 EC2 만들 때 어디서 뭘 눌러야 할지 막막했나요? 😵‍💫 이번 글에서는 프리 티어로 인스턴스를 만들고(AMI·타입·키페어·스토리지) 보안 그룹까지 안전하게 열어 둔 다음, SSH로 원격 접속해 바로 리눅스 명령어를 실행하는 순간까지 한 번에 연결해 드릴게요.

반응형

 

안녕하세요! 개발 입문자분들이 제일 많이 막히는 부분, 바로 “클라우드에서 서버 한 대를 처음부터 끝까지 제대로 올려보기”더라구요. 그래서 이번에는 AWS에서 가장 많이 쓰는 EC2를 기준으로, 계정 준비 → 인스턴스 생성(AMI/인스턴스 타입/키 페어/네트워크/스토리지) → 보안 그룹 규칙 설정(SSH/HTTP/HTTPS) → macOS/Linux/Windows에서 원격 접속 → 리눅스 기본 명령어 순서로, 정말 필요한 화면과 명령만 콕 집어 정리했습니다. 특히 초보자 관점에서 헷갈리는 선택지는 왜 그런지 이유까지 붙여 드릴 거예요. 글 흐름만 따라오면 프리 티어 안에서 안전하게 시작할 수 있고, 마지막에는 꼭 필요한 명령어들로 서버 생활 기본기까지 챙길 수 있습니다. 중간중간 체크리스트·표·코드를 곁들여 바로 따라 하기 좋게 구성했어요. 자, 이제 진짜 “내 서버”의 첫 부팅을 함께 해볼까요? 😎

1. AWS·EC2 핵심 개념 한 장 요약 📘

먼저 큰 그림부터 잡고 가요. EC2는 AWS에서 제공하는 가상 서버이고, 우리가 선택하는 건 운영체제(AMI), 성능 사양(인스턴스 타입), 문 열어주기(보안 그룹), 열쇠(키 페어), 디스크(EBS)입니다. 프리 티어에서는 EBS를 기본 8GB로 시작하되 최대 30GB까지 무료로 쓸 수 있어 입문 연습에 딱 맞습니다. 

구성요소 설명 초보자 추천값/주의
리전(Region) 서버가 물리적으로 위치하는 지역 테스트는 보통 서울 리전으로 진행하면 지연이 적어요.
AMI 서버 OS 이미지 (예: Amazon Linux) 프리 티어 무료 운영체제를 선택하세요. 
인스턴스 타입 vCPU/메모리 등 사양(성능/비용 결정) t2.micro가 프리 티어 대상입니다. 
키 페어(.pem) SSH 접속용 비밀키 생성 즉시 다운로드·보관 필수 (재발급 불가). 
보안 그룹 인바운드/아웃바운드 네트워크 방화벽 리눅스는 SSH 22/TCP 필수 허용. 무분별한 0.0.0.0/0 허용은 보안 주의! 
스토리지(EBS) 인스턴스가 사용하는 디스크 기본 8GB로 시작, 프리 티어에서 최대 30GB 무료

빠른 체크리스트 ✅

  • 리전을 서울로 변경했다. 
  • 프리 티어 AMI를 선택했다. 
  • t2.micro를 골랐다(프리 티어).
  • 키 페어(.pem)를 다운로드·안전 보관했다. 
  • 보안 그룹에 SSH(22)를 열고 소스 IP 범위를 신중히 설정했다.
  • EBS는 기본 8GB로 두고 필요 시 30GB 이하로 조절. 

첫 접속(SSH) 필수 예제 🗝️

macOS/Linux는 터미널에서 아래 2단계를 꼭 지키면 됩니다. ① 키 파일 권한을 400으로 맞추고 ② ec2-user@퍼블릭IP로 접속하는 순서예요.

# 1) 키 파일 확인
ls
# 2) 권한 설정 (중요)
chmod 400 "내키이름.pem"
# 3) SSH 접속 (Amazon Linux의 기본 계정: ec2-user)
ssh -i "내키이름.pem" ec2-user@퍼블릭_IP

위 형식(권한 400 → ssh -i → ec2-user)은 PDF의 예제 흐름과 동일합니다. 샘플에서는 seoul-server1-key.pem 이름으로 실행했죠. 

보안 그룹 설정 핵심 요령 🔐

  • 리눅스 접속을 위해 SSH 22/TCP는 필수 허용.
  • 0.0.0.0/0은 어디서나 열리므로 주의하세요(가능하면 내 IP만). 
  • 웹 서버 실습 시 HTTP(80), HTTPS(443)도 함께 엽니다.

시작과 상태 확인 🟢

EC2 대시보드에서 인스턴스 시작을 누르고(설정 검토 후) Running 상태를 확인하면 준비 완료입니다. 

Windows 사용자를 위한 메모 💡

PuTTY/Xshell을 사용할 경우 .pem → .ppk 변환이 필요할 수 있어요. 공식 다운로드 링크도 PDF에 정리되어 있습니다. 

요약 🔎

  • 서울 리전 + 프리 티어 AMI + t2.micro 선택으로 비용 최소화
  • 키 페어는 생성 즉시 다운로드하고 권한 400으로 설정 뒤 SSH 접속.
  • 보안 그룹에서 22/80/443 포트 정책을 상황에 맞게 최소 권한으로.
  • EBS는 8GB 시작, 프리 티어 30GB 내에서 조정. 
  •  

2. 프리 티어 계정 준비 & 비용 관리 체크리스트 💳

“처음엔 공짜로 시작하고, 예상치 못한 과금은 없게.” 이 목표로 계정부터 차근차근 정리해볼게요. 가입 단계에서 기본 지원(무료)을 선택하고(Support = Basic), 콘솔 로그인 후 리전을 서울로 바꿔두면 지연과 혼선을 줄일 수 있어요. 

단계 무엇을 고를까? 왜 그렇게? 근거
지원 플랜 기본 지원(무료) 연습 단계에 과금 없이 시작 플랜 선택 화면에서 기본 지원 - 무료 제공. 
리전 서울(ap-northeast-2) 지연↓, 과금/한도 혼선 방지 가이드에 리전 변경 → 서울 명시. 
AMI 프리 티어 무료 OS 무료 범위 내 사용 보장 “프리 티어 무료 운영 체제 선택” 안내.
인스턴스 타입 t2.micro 프리 티어 대상 사양 t2.micro 선택 지침.
네트워크 초기엔 기본 옵션 불필요한 리소스 생성 회피 “네트워크 설정: 기본 옵션 그대로” 권장. 
스토리지(EBS) 8GB 시작, 30GB 이하 유지 프리 티어 범위 준수 “기본 8GB, 프리 티어는 최대 30GB 무료”. 
키 페어 .pem 즉시 다운로드·보관 SSH 접속에 필수, 분실 시 재발급 불가 키 페어 다운로드·안전 보관 강조.

생성·실행 체크리스트 ✅

  • AWS 콘솔 로그인 → EC2 검색 → 인스턴스 시작 클릭.
  • AMI는 프리 티어 무료 OS 선택, 타입은 t2.micro
  • 키 페어 생성 시 .pem 즉시 저장(필수). 
  • EBS는 8GB~30GB 내에서 시작. 
  • 최종 검토 후 인스턴스 시작 → 상태가 Running인지 확인. 

비용이 새는 포인트 & 예방법 💧

  • 스토리지를 과도하게 늘리면 프리 티어 초과 → 8GB로 시작하고 30GB 이하 유지.
  • 보안 그룹을 무분별하게 열면 보안 사고 리스크 → 0.0.0.0/0 전체 허용은 지양, 특히 SSH 22는 최소 IP로. 
  • 네트워크는 초기엔 기본 옵션으로 간단히 시작(불필요 리소스 방지). 

(참고) 키 보관 & 첫 접속 전 점검 🗝️

SSH 접속은 뒤 섹션에서 자세히 다루지만, 지금 할 일은 하나예요. 키(.pem)를 안전한 폴더에 보관하고 파일 권한을 체크할 준비를 해두기. 키 보관은 가이드에서도 수차례 강조돼요.

# (다음 섹션에서 이어질 SSH 예행연습 예시: PDF 예제 그대로)
ls
chmod 400 "seoul-server1-key.pem"
ssh -i "seoul-server1-key.pem" ec2-user@인스턴스_퍼블릭IP

위 명령은 PDF 예시와 동일한 흐름(권한 400 → ssh -i → ec2-user)입니다. 

요약 🔎

  • 기본 지원(무료) + 서울 리전으로 시작. 
  • 프리 티어 안전 조합: 프리 티어 AMI + t2.micro + EBS 8~30GB
  • 키(.pem)는 즉시 저장·보관 → 다음 단계의 SSH 접속 준비 끝.
  •  

3. EC2 인스턴스 생성: AMI·인스턴스 타입·키 페어·네트워크·스토리지 🖥️

이제 진짜로 인스턴스를 만들어 봅시다. 아래 단계는 PDF의 화면 흐름 그대로 따라 쓰되, 초보자분들이 헷갈리는 선택 포인트(예: AMI, 인스턴스 타입, 키 페어, 네트워크, 스토리지)를 쉽게 고를 수 있도록 체크리스트를 곁들였습니다. 콘솔 접속 → 인스턴스 시작 → 항목별 설정 → 검토/생성 → 상태 확인 순으로 진행해요. 

  1. EC2 대시보드 열기 → AWS 콘솔 상단 검색에 EC2 입력 후 이동합니다. 인스턴스 시작 버튼을 클릭하세요. 
  2. AMI 선택 → 운영체제 이미지를 고르는 단계입니다. 프리 티어 무료 운영 체제를 선택하면 과금 걱정을 줄일 수 있어요. 
  3. 인스턴스 유형 → 프리 티어에 해당하는 t2.micro를 고릅니다(학습 용도로 충분). 
  4. 키 페어 → 새로 생성 시 .pem 파일을 즉시 다운로드해 안전하게 보관하세요. 이 키가 있어야 SSH로 접속합니다. 분실 시 재발급 불가라 정말 중요!
  5. 네트워크 설정 → 처음에는 기본 옵션 그대로 사용하는 것을 권장합니다(불필요 리소스 생성 방지). 
  6. 스토리지(EBS) → 기본 8GB로 시작하고, 프리 티어에서 최대 30GB까지 무료입니다. 학습 단계면 8~16GB면 충분합니다. 
  7. 검토 후 생성 → 설정을 확인하고 인스턴스 시작을 눌러 생성합니다. 이후 대시보드에서 Running 상태인지 확인하세요. 

초보자 추천 설정 요약표 ✅

항목 추천값 이유 PDF 근거
AMI 프리 티어 무료 OS 과금 최소화·학습 적합 프리 티어 선택 가능 명시.
인스턴스 타입 t2.micro 프리 티어 대상 · 비용 제로 t2.micro 선택 지침. 
키 페어 새로 생성 후 .pem 즉시 저장 SSH 접속 필수, 분실 시 복구 불가 다운로드·보관 강조. 
네트워크 기본 옵션 처음엔 단순 구성이 안전 기본 옵션 권장.
스토리지(EBS) 8GB(필요 시 ≤30GB) 프리 티어 한도 내 무료 8GB 기본, 30GB 무료.

보안 그룹은 어떻게 열까? (미리보기) 🔐

  • 인스턴스 접근 제어 방화벽 역할(인바운드/아웃바운드).
  • SSH(22)는 리눅스 접속 필수, 0.0.0.0/0 전체 허용은 보안상 주의(가능하면 내 IP만). 다음 단계에서 자세히 다뤄요. 

(중요) 키 파일 권한과 SSH 접속 예행연습 🗝️

키 페어를 저장했다면, 다음 명령 두 개만 기억하세요: chmod 400으로 권한 설정 → ssh -i로 접속. (아직 보안 그룹이 막혀 있으면 접속이 안 될 수 있으니 다음 섹션에서 포트를 열 겁니다!)

ls
chmod 400 "seoul-server1-key.pem"
ssh -i "seoul-server1-key.pem" ec2-user@인스턴스_퍼블릭IP

위 명령은 PDF 예시와 동일한 흐름입니다(권한 400 → ssh -i → ec2-user). 

자주 막히는 지점 & 빠른 해결 💡

  • 상태가 Running이 아닌가요? → 생성 직후 수 분 기다렸다가 새로고침. 대시보드에서 상태 확인. 
  • SSH가 거부되나요? → 곧 다룰 보안 그룹에서 22/TCP가 열려 있는지 확인.
  • Windows라면 .pem → .ppk 변환 후 PuTTY/Xshell 사용 가능합니다(공식 링크는 PDF 참고). 

요약 🔎

  • AMI는 프리 티어 무료 OS, 타입은 t2.micro로 시작.
  • 키 페어는 생성 즉시 .pem 저장·보관(SSH 필수). :
  • 네트워크는 기본 옵션, EBS는 8GB(≤30GB 무료).
  • 생성 후 상태가 Running인지 꼭 확인. 
  •  

04. 보안 그룹 설정: SSH(22)·HTTP(80)·HTTPS(443) 안전 개방 🔐

이제 인스턴스에 “어떤 문을, 누구에게 열어줄지” 정하는 단계예요. 보안 그룹(Security Group)은 EC2 인스턴스의 네트워크 접근을 제어하는 필수 방화벽이며, 여기서 SSH·HTTP·HTTPS처럼 허용할 포트를 지정합니다. 리눅스 기반 인스턴스는 원격 접속을 위해 SSH(22)를 반드시 허용해야 하고, 0.0.0.0/0처럼 전 세계 누구나 접근 가능한 설정은 보안상 각별히 주의해야 합니다. 

무엇을 열어야 하나? ✅

  • SSH (22/TCP): 리눅스 원격 접속 필수. 반드시 허용
  • HTTP (80/TCP): 웹 서버를 연다면 필요. 
  • HTTPS (443/TCP): TLS(SSL) 적용 웹 서비스용.
  • 0.0.0.0/0 전체 허용은 보안적으로 주의(특히 SSH). 필요 시에만 사용하고 가급적 “내 IP”만 허용하세요. 

콘솔에서 인바운드 규칙 여는 법 (간단 순서) 🧭

  1. EC2 대시보드 → 인스턴스 → 대상 인스턴스 선택 → 하단 탭에서 보안보안 그룹 클릭.
  2. 인바운드 규칙 편집 → 규칙 추가에서 SSH(22) 선택 후 소스 범위 지정(가능하면 내 IP). 저장
  3. 웹 서버를 띄울 계획이라면 HTTP(80), HTTPS(443)도 같은 방식으로 추가합니다. 

추천 인바운드 규칙 예시 표 🧱

유형(Type) 프로토콜 포트 소스(CIDR) 비고
SSH TCP 22 내 IP (권장) 또는 0.0.0.0/0 리눅스 접속 필수 포트. 전체 허용은 보안 주의.
HTTP TCP 80 0.0.0.0/0 (웹 공개 시) 웹 서버 트래픽 수신. 필요할 때만 개방. 
HTTPS TCP 443 0.0.0.0/0 (웹 공개 시) 암호화된 웹 트래픽 수신. 필요할 때만 개방.

설정 전·후 체크리스트 ☑️

  • 보안 그룹이 대상 인스턴스에 연결되어 있는지
  • SSH(22)가 열려 있는지 (리눅스 접속 필수) 
  • 웹 서버 공개 시 HTTP/HTTPS도 필요한 범위로만 개방했는지
  • 0.0.0.0/0 사용 시 보안 위험을 이해하고 있는지(가능하면 “내 IP” 권장) 

(필수) SSH 접속 테스트 🗝️

규칙을 저장했으면 SSH 접속이 되는지 바로 확인해요. PDF의 예제 형식을 그대로 따라 하면 됩니다.

ls
chmod 400 "seoul-server1-key.pem"
ssh -i "seoul-server1-key.pem" ec2-user@인스턴스_퍼블릭IP

위 명령은 PDF의 샘플과 동일한 흐름(권한 400ssh -iec2-user)입니다. 

Windows 사용자는? 💡

.pem → .ppk 변환 후 PuTTY 또는 Xshell로 접속할 수 있습니다(공식 링크는 자료에 포함).

연결이 안 될 때 빠른 점검 🔍

  • 인바운드 규칙에 SSH(22)가 있는지 확인(특히 소스 범위). 
  • 웹 접속 문제라면 HTTP/HTTPS 규칙도 추가되어 있는지 확인.

요약 🔎

  • 보안 그룹은 인스턴스 접근을 제어하는 문지기. 필요한 포트만 최소한으로 개방. 
  • 리눅스 접속은 SSH(22) 필수, 0.0.0.0/0 전체 허용은 위험 인지. 
  • 웹 서버라면 HTTP/HTTPS도 상황에 맞게 추가. 
  •  

5. 원격 접속 가이드: macOS/Linux의 SSH & Windows의 PuTTY·Xshell 🗝️

이제 내 노트북 ↔ EC2 인스턴스를 연결해볼 차례예요. PDF에는 OS별 접속법이 깔끔하게 정리되어 있어요. macOS/Linux에선 터미널에서 ssh -i 한 줄이면 끝! Windows.pem → .ppk로 변환해 PuTTYXshell로 접속합니다. 

(A) macOS·Linux — 키 권한(400) → SSH 접속 순서 ✅

PDF의 예제 흐름을 그대로 따라 하세요. ① 키 파일이 있는 폴더에서 ② 권한을 400으로 조정하고 ③ ec2-user@퍼블릭IP로 접속합니다.

# 1) 키 파일이 있는지 확인
ls
# 2) 권한을 400으로 (중요)
chmod 400 "seoul-server1-key.pem"
# 3) SSH 접속 (Amazon Linux의 기본 계정: ec2-user)
ssh -i "seoul-server1-key.pem" ec2-user@인스턴스_퍼블릭_IP

위 형식은 PDF의 샘플과 동일합니다. 기본 템플릿은 아래와 같아요.

ssh -i "다운로드한_키_파일.pem" ec2-user@인스턴스의_퍼블릭_IP

접속 후 화면 읽는 법: 프롬프트 · 홈 디렉터리

  • 프롬프트는 명령 입력을 기다리는 표시이며, 일반 사용자는 $, 관리자(root)는 #로 보일 수 있어요.
  • ec2-user@IP:~에서 ec2-user는 계정명, IP는 호스트, ~는 홈 디렉터리를 뜻합니다(Amazon Linux의 기본 계정: ec2-user).

(B) Windows — .pem → .ppk 변환 후 PuTTY·Xshell 사용 💡

Windows에서는 .pem 키를 .ppk로 변환해 SSH 클라이언트에 로드해야 합니다. 공식 다운로드 링크도 자료에 포함되어 있으니 그대로 사용하세요. 

항목 요약 근거
키 변환 .pem → .ppk 변환 후 SSH 도구에 등록 PDF에 변환 지시 명시. 
PuTTY 공식 사이트에서 다운로드 후 사용 공식 링크 제공. 
Xshell 홈/교육용 무료 버전 사용 가능 공식 링크 제공. 

연결이 안 될 때 3가지 점검 🔍

  • 키 권한이 400인지(chmod 400) — 권한이 널널하면 SSH가 거부될 수 있어요. 
  • 보안 그룹에서 SSH(22)가 열려 있는지 — 전체 공개(0.0.0.0/0)는 위험하니 가급적 내 IP만. 
  • 계정/호스트가 정확한지 — ec2-user@인스턴스_퍼블릭_IP 형태를 다시 확인.

접속 종료 방법(quit)도 익혀두기 👋

  • 명령어로 종료: exit
  • 단축키로 종료: Ctrl + D
  • 또는 터미널 창 닫기(우측 상단 ×). 

실전 체크리스트 ✅

  • 키가 있는 폴더에서 명령 실행(ls로 파일 확인). 
  • chmod 400 "키.pem"ssh -i로 접속. 
  • Windows라면 .ppk 준비 후 PuTTY/Xshell 사용. 

요약 🔎

  • macOS/Linux: chmod 400ssh -i "키.pem" ec2-user@IP.
  • Windows: .pem → .ppk 후 PuTTY/Xshell. 
  • 안 되면 보안 그룹의 SSH(22) 규칙과 IP 범위를 점검. 
  •  

6. 리눅스 기본 명령어 스피드런: ls · pwd · cd · date · clear · man ⌨️

SSH로 접속했다면 이제 “기본기”를 빠르게 다져볼 차례예요. 명령의 구조는 딱 하나만 기억하세요: 명령 [옵션] [인자]. 옵션은 세부 기능(-a처럼 하이픈으로 시작)이고, 인자는 보통 파일/디렉터리 같은 대상이에요. PDF에도 이 형식과 예제가 그대로 나옵니다.

핵심 6종 한눈에 보기 🧭

명령 무엇을 하나요? 대표 예제 출처/근거
ls 디렉터리 목록 보기 $ ls, $ls -a, $ls /tmp, $ls –a /tmp PDF 예제 동일. 
pwd 현재 작업 디렉터리 경로 출력 pwd, pwd -P, pwd -L 리눅스 man 페이지.
cd 작업 디렉터리 이동 cd /tmp, cd(홈), cd -(이전) POSIX cd 명세. 
date 현재 날짜·시간 출력 $ date PDF 기초 명령.
clear 터미널 화면 지우기 $clear PDF 설명.
man 명령 사용법(매뉴얼) 보기 $man clear PDF 예제 동일. 

프롬프트·홈 디렉터리 감 잡기 🏠

  • 프롬프트는 명령 대기 표시로, 배시 셸은 보통 $, 관리자(root)는 #로 보여요.
  • ec2-user@IP:~에서 ~홈 디렉터리를 의미해요. (Amazon Linux 기본 계정은 ec2-user)

1) ls — 목록 보기의 기본 중 기본 📁

PDF의 예제 코드를 그대로 사용합니다(표준 표기도 함께 병기).

# PDF 예제 (그대로)
$ ls
$ls -a
$ls /tmp
$ls –a /tmp

# 권장 표기(가독성·일반 표준)
$ ls
$ ls -a
$ ls /tmp
$ ls -a /tmp

-a는 숨김 파일(.으로 시작)까지 모두 출력하는 옵션이에요. (명령·옵션·인자 형식은 위 표와 동일)

2) pwd — “내가 지금 어디지?” 현재 경로 출력 📍

pwd현재 작업 디렉터리의 전체 경로를 출력합니다. -P(실경로) / -L(심볼릭 링크 반영) 옵션을 지원해요. 

pwd        # 현재 경로
pwd -P     # 모든 심볼릭 링크 해석(물리 경로)
pwd -L     # 환경변수 PWD 사용(링크 경로 유지)

3) cd — 디렉터리 이동의 정석 🚶

cd현재 셸의 작업 디렉터리를 바꾸는 셸 내장 유틸리티입니다. 인자를 생략하면 홈 디렉터리로 이동하고, cd -는 직전 디렉터리로 돌아갑니다. 

cd /tmp   # /tmp로 이동
cd        # 홈(~)으로 이동
cd -      # 이전 디렉터리로 이동(토글)

4) date — 현재 날짜·시간 확인 ⏰

$ date

PDF에서 소개된 기본 예제 그대로입니다. (스크립트 타임스탬프 찍을 때 자주 사용) 

5) clear — 터미널 화면을 말끔하게 🧼

$clear

화면을 지우고 커서를 좌상단으로 보냅니다(옵션/인자 없음). 터미널 종류에 따라 스크롤백까지 지울 수도 있어요. 

6) man — 최고(=공식) 도움말 📚

리눅스가 제공하는 각종 명령의 사용법·옵션을 정확히 보여줍니다. PDF 예제로 clear 매뉴얼을 바로 열어봐요.

$man clear

space/↑↓/q로 페이지를 넘기고 종료합니다. 

3분 스피드런 실습 ⏱️

  1. 어디 있는지 확인pwd. (현재 디렉터리 경로) 
  2. /tmp로 이동cd /tmp. (임시 폴더) 
  3. 목록 보기$ ls, $ls -a, $ls –a /tmp. (PDF 예제) 
  4. 시간 체크$ date
  5. 화면 정리$clear
  6. 도움말 확인$man clearq로 종료.

(중요) 명령행 편집 & 접속 종료 단축키 ✂️

  • 문자 지우기: Backspace/Delete. 단어 지우기: Ctrl + W. 행 지우기: Ctrl + U
  • 터미널 종료: exit 또는 Ctrl + D, 혹은 창의 ×

(보너스) 내가 누구인지, 권한은? 👤

  • 현재 계정 확인: $whoami 
  • 관리자 셸(주의!): sudo su - 

요약 🔎

  • 명령 [옵션] [인자] 패턴을 몸에 익히자(예: ls -a /tmp). 
  • PDF의 $ ls / $ls -a / $man clear 등 예제를 그대로 따라 하며 감각을 익히자.
  • pwd로 위치를 확인하고 cd로 이동, 막혔을 땐 man으로 해결! 
  •  

7. 마무리 — 이제 ‘내 서버’가 생겼어요 🎉

여기까지 따라 오셨다면, 진짜로 클라우드 첫걸음을 떼셨어요. 프리 티어 조합(AMI·t2.micro·EBS 8~30GB)으로 인스턴스를 만들고, 보안 그룹에서 꼭 필요한 포트만 열었으며(SSH 22는 필수, 0.0.0.0/0 전체 허용 주의), SSH로 원격 접속해 리눅스 기본 명령어까지 손에 익혔습니다. 이 흐름만 숙달해도 이후 웹 서버, 데이터베이스, 배포 자동화까지 확장하는 데 탄탄한 기반이 돼요. 

오늘 우리가 완성한 것 ✅

  • EC2 인스턴스 생성 — 프리 티어 OS와 t2.micro 선택, EBS 8GB(≤30GB 무료) 구성. 
  • 키 페어 준비.pem을 다운로드·보관(SSH 접속 필수).
  • 보안 그룹 규칙 — SSH(22) 허용, 전체 공개 범위는 신중히. 
  • SSH 접속chmod 400ssh -i "키.pem" ec2-user@IP 순서. 
  • 리눅스 기본기$ ls / $ls -a / $ls –a /tmp / $ date / $clear / $man clear

다음으로 해볼 것 🔭

  1. 패키지 업데이트 & NGINX 설치 — HTTP(80) 열고 첫 웹 페이지 띄우기.
  2. 사용자/권한 기초whoami, sudo, 사용자 추가로 협업 준비.
  3. 스냅샷·AMI 백업 — ‘지금 상태’를 저장해 두면 실험이 더 과감해져요.
  4. 보안 강화 — SSH 소스 IP 제한, 키 보관 정책, 필요 시 포트 폐쇄 점검.

세션 정리하고 퇴근하기 🧹

  • 접속 종료: exit 또는 Ctrl + D, 혹은 터미널 창 × 클릭. 
  • 인스턴스 상태는 대시보드에서 Running인지 확인.
반응형
반응형

리눅스 개요와 배포판 이해하기 🌐

반응형

 

여러분, 우리가 매일 사용하는 스마트폰부터 인터넷 서버까지,
그 중심에는 어떤 운영체제가 있을까요?
바로 '리눅스(Linux)'입니다!

 

안녕하세요 😊 오늘은 개발자라면 한 번쯤은 꼭 접하게 되는 리눅스 운영체제에 대해 쉽고 친절하게 소개해 드릴게요. 이 글은 리눅스를 처음 접하는 분이나, 서버와 클라우드 환경에 관심이 있는 분들께 큰 도움이 될 거예요. 특히 리눅스의 개념부터 커널 구조, 주요 배포판의 차이까지, 한 눈에 정리된 내용이니 끝까지 함께 해주세요!

1. 운영체제란 무엇인가요? 🤔

운영체제(Operating System, OS)는 컴퓨터 하드웨어와 사용자 또는 소프트웨어 간의 중간 관리자 역할을 하는 필수 프로그램입니다. 우리가 사용하는 스마트폰, 노트북, 태블릿 등 모든 디지털 기기에는 운영체제가 내장되어 있죠.

쉽게 말해 운영체제는 하드웨어를 제어하고, 다양한 프로그램이 실행될 수 있는 환경을 제공해주는 시스템이에요. 우리가 사용하는 웹 브라우저나 게임, 문서 작성 앱도 결국 운영체제 위에서 작동하게 되는 거죠.

운영체제는 왜 필요한가요? 🤷‍♀️

  • 하드웨어 자원(CPU, 메모리, 저장장치 등)을 효율적으로 관리하기 위해
  • 사용자와 컴퓨터가 쉽게 소통할 수 있도록 인터페이스를 제공하기 위해
  • 여러 프로그램을 동시에 실행할 수 있는 환경을 만들어 주기 위해

예를 들어, 우리가 유튜브로 음악을 들으면서 워드 문서를 작성하고 있다면, 이 모든 동작은 운영체제가 CPU를 나눠서 효율적으로 관리해주고 있기 때문이에요.

운영체제의 예시와 종류

운영체제 특징 사용 분야
Windows 가장 대중적인 GUI 기반 운영체제 일반 사용자용 PC, 사무용
macOS 애플의 하드웨어에 최적화 디자인, 영상 편집 등
Linux 오픈소스, 다양한 배포판 존재 서버, 개발, 클라우드 등
Android 모바일 기기용, 리눅스 커널 기반 스마트폰, 태블릿
iOS 애플 모바일 기기 전용 아이폰, 아이패드

지금까지 운영체제가 무엇인지, 왜 중요한지를 알아봤어요. 다음은 운영체제가 우리 컴퓨터에서 어떤 역할을 하는지를 하나하나 살펴볼게요. 특히 초보자 분들께 가장 많이 질문받는 부분이기도 하니까요!

2. 운영체제의 핵심 역할 🧠

운영체제(OS)는 단순히 프로그램을 실행하는 것 이상의 다양한 역할을 수행합니다. 사용자는 잘 인지하지 못하지만, 내부에서는 수많은 작업이 동시에 돌아가고 있죠. 이번에는 운영체제가 컴퓨터에서 구체적으로 어떤 일을 하는지 살펴볼게요.

1️⃣ 하드웨어 자원 관리

운영체제는 컴퓨터의 CPU, 메모리, 저장 장치 등 물리적인 자원을 효율적으로 배분합니다. 여러 프로그램이 동시에 실행될 때, 어떤 작업에 우선순위를 줄 것인지 판단하고 자원을 나눠주는 역할을 하죠.

2️⃣ 프로그램 실행 및 프로세스 관리

우리가 실행하는 모든 앱은 운영체제가 관리하는 프로세스로 동작합니다. 운영체제는 이 프로세스들이 서로 충돌하지 않도록 보호하고, 적절한 시점에 실행되도록 스케줄링합니다.

3️⃣ 메모리 관리

컴퓨터 메모리는 제한되어 있기 때문에, 운영체제는 각 프로그램에 적절한 메모리를 할당하고 사용하지 않는 메모리는 해제해 다른 프로세스가 사용할 수 있도록 합니다. 때로는 하드디스크 일부를 메모리처럼 쓰는 가상 메모리도 활용하죠.

4️⃣ 파일 시스템 관리

운영체제는 하드디스크나 SSD와 같은 저장장치에 있는 파일을 읽고, 쓰고, 삭제하는 작업을 관리합니다. 우리가 문서를 저장하면 운영체제가 파일의 경로를 기억하고 필요한 데이터를 찾아주는 것이죠.

5️⃣ 사용자 인터페이스 제공 (GUI & CLI)

운영체제는 사용자가 컴퓨터를 쉽게 사용할 수 있도록 그래픽 기반(GUI) 또는 명령어 기반(CLI)의 인터페이스를 제공합니다. 윈도우나 아이콘을 클릭하는 것도 운영체제가 제공하는 기능 중 하나예요.

6️⃣ 보안 및 사용자 권한 관리

운영체제는 시스템의 안전을 위해 사용자 계정별로 접근 권한을 제한하고, 악성코드로부터 보호하는 방어선 역할도 수행합니다. 예를 들어, 중요한 시스템 파일은 일반 사용자가 마음대로 변경할 수 없도록 막아두는 것이죠.

💡 정리 리스트

  1. CPU, 메모리, 디스크 등 자원 관리
  2. 프로세스 실행 및 충돌 방지
  3. 파일 저장 및 검색 기능 제공
  4. 사용자 인터페이스 (GUI, CLI) 제공
  5. 보안 및 접근 권한 관리

운영체제는 단순한 도구가 아닌, 우리가 디지털 세상과 소통하는 모든 기반이라고 볼 수 있어요. 그 중심에서 리눅스는 어떤 차별화된 역할을 하고 있을까요? 다음 장에서는 그 리눅스에 대해 본격적으로 알아보겠습니다. 🐧

3. 리눅스의 정의와 역사 📜

여러분, 혹시 ‘리눅스’라고 하면 뭐가 먼저 떠오르시나요? 검은 터미널 화면? 복잡한 명령어? 맞아요, 저도 처음에는 그렇게 느꼈어요. 하지만 알고 보면 리눅스는 우리 일상 곳곳에 이미 깊숙이 들어와 있는 운영체제랍니다.

리눅스란 무엇인가요?

리눅스(Linux)는 오픈 소스 기반의 운영체제입니다. 즉, 누구나 자유롭게 사용·수정·배포할 수 있어요. 다양한 장치에서 활용되고 있으며, 대표적으로는 서버, 스마트폰(Android), IoT 기기, 슈퍼컴퓨터, 클라우드 인프라 등에서 사용되고 있습니다.

리눅스의 탄생 비하인드 🎓

1991년, 핀란드 헬싱키의 한 대학생이자 컴퓨터 마니아였던 리누스 토르발스(Linus Torvalds)는 UNIX 시스템을 공부하다가 한 가지 결심을 하게 됩니다.

“UNIX는 좋지만, 너무 비싸고 닫혀있잖아. 내가 직접 만들면 어떨까?” 그리하여 작은 취미 프로젝트로 시작된 것이 Linux Kernel 0.01입니다. 그리고 이 커널을 전 세계에 무료로 배포하자, 전 세계 개발자들이 함께 발전시켜 나가기 시작했어요.

유닉스(UNIX)와 리눅스의 관계

리눅스는 유닉스와 깊은 관계가 있습니다. 리눅스는 유닉스 철학(작은 도구, 텍스트 기반, 조합 가능성)을 그대로 계승하면서도, 오픈소스라는 새로운 길을 열었어요.

유닉스는 상업적으로 라이선스 비용이 많이 들었던 반면, 리눅스는 누구나 참여하고 무료로 사용할 수 있어 오픈소스 커뮤니티의 상징적인 존재가 되었죠.

리눅스가 주목받는 이유는?

  • 무료 & 오픈소스 - 누구나 자유롭게 사용, 수정, 배포 가능
  • 높은 안정성과 보안성 - 서버, 클라우드 환경에서 특히 강력함
  • 다양한 배포판 - 목적에 따라 선택 가능 (서버용, 데스크탑용, 임베디드용 등)

💡 Linux는 단일 제품이 아닌 '커널'입니다!

여기서 주의할 점은 Linux 자체는 OS 전체가 아닌 ‘커널’이라는 사실입니다. 우리가 흔히 우분투(Ubuntu), 페도라(Fedora)라고 부르는 것들은 이 커널 위에 다양한 패키지를 얹어 만든 ‘배포판(Distro)’이죠.

이제 리눅스의 근본적인 정의와 역사, 그리고 유닉스와의 관계까지 확실히 이해하셨죠? 다음 단계에서는 리눅스 커널이 실제로 어떤 기능을 담당하는지 더 깊이 들여다보겠습니다.

4. 리눅스 커널의 핵심 기능 🔧

리눅스에서 가장 중요한 핵심 구성 요소는 바로 커널(Kernel)입니다. 커널은 운영체제의 심장이라 불릴 정도로, 하드웨어와 소프트웨어 사이를 연결해 주는 중재자 역할을 해요. 사용자는 직접 커널을 보거나 다루지 않지만, 우리가 실행하는 모든 동작은 커널을 통해 이뤄집니다.

1️⃣ 프로세스 관리

리눅스 커널은 여러 개의 프로그램(프로세스)이 동시에 실행될 수 있도록 관리합니다. CPU 자원을 어떻게 나눌지 스케줄링하고, 프로세스 간 충돌을 방지하며, 자원을 공평하게 배분하죠. 예를 들어 음악을 들으면서 코딩을 하고 있다면, 두 작업이 번갈아가며 CPU를 사용하는 겁니다.

2️⃣ 메모리 관리

커널은 메모리 공간을 각 프로그램에 적절히 나눠주고, 사용이 끝나면 다시 회수합니다. 가끔 메모리가 부족할 때는 하드디스크를 메모리처럼 사용하는 가상 메모리(Virtual Memory)를 활용해 성능 저하를 방지하기도 해요.

3️⃣ 파일 시스템 관리

모든 파일 입출력은 커널을 통해 처리됩니다. 우리가 ‘문서 저장’을 누르면, 커널이 실제로 하드디스크에 데이터를 기록하는 역할을 하죠. 리눅스는 ext4, XFS, Btrfs 등 다양한 파일 시스템을 지원합니다.

4️⃣ 디바이스 드라이버와 하드웨어 관리

커널은 프린터, 키보드, 마우스, 하드디스크, 네트워크 카드 등과 같은 하드웨어와 직접 소통합니다. 디바이스 드라이버를 통해 하드웨어의 기능을 프로그램이 사용할 수 있도록 중개하는 거죠. 덕분에 사용자는 마우스를 연결하기만 해도 바로 사용할 수 있는 겁니다.

5️⃣ 네트워크 관리

커널은 TCP/IP 프로토콜 스택을 포함한 네트워크 통신 기능도 제공합니다. 우리가 웹사이트를 열거나 SSH 접속을 할 때, 커널이 네트워크 카드와 데이터를 송수신하고 그 흐름을 관리하죠.

6️⃣ 보안 및 권한 제어

리눅스 커널은 보안도 담당합니다. 사용자 계정마다 접근 권한을 설정하고, 루트 권한이나 일반 사용자 권한을 나누는 것도 커널이 하는 일이죠. SELinux, AppArmor 같은 보안 모듈도 커널 기반에서 작동합니다.

💡 한 줄 요약

“커널은 리눅스의 모든 핵심 기능을 책임지는 관리자이며, 운영체제의 두뇌”라고 볼 수 있습니다.

다음 단계에서는 이 커널이 실제로 어떤 분야에서 활용되고 있는지를 알아보며, 리눅스의 실제 사용 사례를 살펴볼게요!

5. 리눅스는 어디에 쓰일까? 💻

리눅스는 단순히 서버용 OS로만 알려져 있지만, 사실 우리가 생각하는 것보다 훨씬 다양한 환경에서 널리 사용되고 있어요. 스마트폰부터 슈퍼컴퓨터, 클라우드 플랫폼, 임베디드 기기까지. 한 번 리눅스가 어디에서 활약하고 있는지 구체적으로 살펴볼까요?

1️⃣ 서버 분야: 인터넷의 심장부

전 세계 웹서버의 약 70% 이상이 리눅스를 기반으로 운영되고 있습니다. 왜냐하면 리눅스는 안정성, 보안성, 유연성이 탁월하기 때문이죠. 대표적인 웹 서버 소프트웨어인 Apache, Nginx도 리눅스와 찰떡궁합이에요.

  • 아마존, 구글, 페이스북 등의 대기업도 리눅스 서버 사용
  • 365일 24시간 서비스가 가능한 고가용성 시스템 구축 가능

2️⃣ 임베디드 시스템과 IoT

리눅스는 가볍고 커스터마이징이 쉬워서 임베디드 시스템에서도 사랑받습니다. 예를 들면 스마트폰, 냉장고, 자동차, 스마트워치 등 우리가 매일 접하는 디바이스에 들어가 있는 리눅스 기반 운영체제가 굉장히 많아요.

특히 Android OS는 리눅스 커널을 기반으로 만들어졌다는 사실, 알고 계셨나요?📱

3️⃣ 클라우드 및 가상화

요즘 트렌드는 모두 클라우드로 이동하고 있죠. AWS, Google Cloud, Microsoft Azure와 같은 대표적인 클라우드 서비스들도 리눅스를 기반으로 서비스하고 있어요. 특히 가상 머신(VM)이나 컨테이너 환경(Docker, Kubernetes 등)은 리눅스를 기본 운영체제로 사용합니다.

4️⃣ 슈퍼컴퓨터와 과학 연구

TOP500 슈퍼컴퓨터 리스트를 보면 상위 500대 슈퍼컴퓨터 중 100%가 리눅스를 사용하고 있다는 사실! 이건 정말 놀라운 일이죠. 이유는 간단합니다. 성능, 확장성, 유연성에서 리눅스를 이길 상대가 없기 때문이에요.

💡 요약 리스트

  1. 웹 서버 운영 (Apache, Nginx 등)
  2. 임베디드 시스템 (스마트기기, 자동차 등)
  3. 클라우드 컴퓨팅 (AWS, GCP, Azure 등)
  4. 가상화 및 컨테이너 환경 (VM, Docker 등)
  5. 슈퍼컴퓨터와 과학 시뮬레이션

이처럼 리눅스는 우리가 상상하는 것보다 훨씬 더 넓은 곳에서 사용되고 있어요. 다음 단계에서는 리눅스를 쉽게 활용할 수 있게 도와주는 ‘배포판’에 대해 소개해드릴게요. 🐧✨

6. 다양한 리눅스 배포판 소개 🐧

리눅스는 하나의 제품처럼 보일 수 있지만, 실제로는 수많은 배포판(Distro)이 존재합니다. 이 배포판들은 모두 리눅스 커널을 기반으로 하고 있지만, 패키지 구성, 철학, 설치 방식, 사용자 경험 등이 서로 다르죠. 그래서 사용 목적에 따라 적합한 배포판을 선택하는 것이 중요해요!

🔴 레드햇 계열 (Red Hat 기반)

  • RHEL (Red Hat Enterprise Linux) - 기업용 서버 운영체제의 대표주자. 안정성과 기술지원이 뛰어남. 유료.
  • CentOS - RHEL의 무료 클론으로 인기 있었지만 현재는 CentOS Stream으로 전환됨.
  • Rocky Linux / AlmaLinux - CentOS 종료 이후 RHEL을 대체할 커뮤니티 주도의 안정적인 서버 배포판.
  • Fedora - Red Hat의 테스트 배포판으로 최신 기술이 가장 먼저 반영됨. 데스크탑 사용자에게도 인기.

🟢 데비안 계열 (Debian 기반)

  • Debian - 안정성과 철학 중심. 순수한 자유 소프트웨어 지향. 서버와 데스크탑 양쪽에서 모두 사용됨.
  • Ubuntu - 데비안 기반의 가장 인기 있는 배포판. 사용하기 쉬운 UI, 패키지 풍부, LTS 제공. 클라우드에서도 많이 사용됨.
  • Linux Mint - Ubuntu 기반의 데스크탑 지향 배포판. 윈도우에서 리눅스로 넘어오는 입문자에게 추천.

🟡 그 외 특수 목적 배포판

  • Amazon Linux - AWS에서 제공하는 경량 배포판. EC2에 최적화되어 있으며, YUM 패키지 사용.
  • Arch Linux - 고급 사용자 대상. 커스터마이징의 끝판왕. 롤링 릴리즈 모델 채택.
  • Kali Linux - 보안 테스트와 해킹 실습용 배포판. 해커나 정보보안 전문가가 자주 사용.

💡 배포판 선택 팁

처음 리눅스를 써보신다면 Ubuntu나 Linux Mint부터 시작해보세요. 반대로 서버 운영이 목표라면 Rocky Linux 또는 Debian이 좋은 선택입니다.

이처럼 리눅스는 단일한 운영체제가 아니라, 다양한 선택지를 가진 생태계입니다. 용도에 맞는 배포판을 선택한다면, 여러분도 리눅스를 효과적으로 활용할 수 있어요!

맺음말: 리눅스를 알아간다는 건, 세상을 이해하는 법을 배우는 것 🧠

지금까지 운영체제의 기본 개념부터 리눅스의 역사, 커널의 역할, 그리고 다양한 리눅스 배포판까지 함께 살펴봤습니다. 어떻게 보면 조금 어렵고 멀게 느껴질 수 있는 주제지만, 알고 보면 리눅스는 우리 주변 모든 디지털 기술의 중심에 있답니다.

 

처음에는 명령어가 낯설고 CLI가 두려울 수도 있어요. 하지만 작은 도전부터 시작해보세요. 우분투 설치부터 시작해도 좋고, AWS에서 Amazon Linux를 한 번 실행해보는 것도 좋은 시작입니다.

리눅스를 배우는 것은 단순한 OS 하나를 익히는 것이 아니라, 개발자와 시스템 관리자, 클라우드 엔지니어로 가는 첫 걸음이 될 수 있어요. 여러분의 기술적 기반이 한층 더 단단해질 수 있기를 진심으로 응원합니다! 💪🐧

 

📌 이 글이 도움이 되셨다면 주변 개발자 지망생이나 친구들에게 공유해주세요. 더 많은 사람들이 리눅스와 친해질 수 있도록요!

반응형

+ Recent posts