hobokai 님의 블로그

Linux OS 완전 가이드: 초보자부터 고급 사용자까지 본문

DevOps

Linux OS 완전 가이드: 초보자부터 고급 사용자까지

hobokai 2025. 7. 23. 08:36

목차

  1. Linux란 무엇인가?
  2. 주요 Linux 배포판
  3. Linux 설치 가이드
  4. 필수 명령어 모음
  5. 파일 시스템 이해하기
  6. 패키지 관리
  7. 사용자 및 권한 관리
  8. 네트워크 설정
  9. 서버 운영 팁
  10. 결론

Linux란 무엇인가?

Linux는 1991년 리누스 토르발스(Linus Torvalds)가 개발한 오픈소스 운영체제입니다. Unix 계열 운영체제로, 안정성과 보안성이 뛰어나 서버, 임베디드 시스템, 개인용 컴퓨터까지 다양한 환경에서 사용됩니다.

Linux의 주요 특징

  • 무료 사용 - 라이선스 비용 없음
  • 오픈소스 - 소스 코드 공개 및 수정 가능
  • 높은 안정성 - 시스템 크래시가 적음
  • 강력한 보안 - 권한 기반 시스템
  • 멀티태스킹 - 여러 프로세스 동시 실행
  • 다양한 하드웨어 지원

주요 Linux 배포판

배포판 특징 권장 용도
Ubuntu 초보자 친화적, 풍부한 커뮤니티 데스크톱, 개발환경
CentOS/RHEL 기업용, 안정성 중심 서버, 엔터프라이즈
Debian 안정성, 패키지 관리 우수 서버, 개발자
Fedora 최신 기술, Red Hat 후원 개발자, 얼리어답터
Arch Linux 커스터마이징, 롤링 릴리즈 고급 사용자

Linux 설치 가이드

1. 시스템 요구사항 확인

# 최소 요구사항
- CPU: 1GHz 이상
- RAM: 2GB 이상 (권장 4GB)
- 저장공간: 25GB 이상
- 부팅 가능한 USB/DVD

2. 설치 미디어 생성

# Ubuntu ISO 다운로드
wget https://ubuntu.com/download/desktop

# USB 부팅 디스크 생성 (Linux)
sudo dd if=ubuntu-22.04-desktop-amd64.iso of=/dev/sdX bs=4M status=progress

3. 파티션 설정 권장사항

/ (루트)     : 20GB 이상
/home       : 사용자 데이터용
/var        : 로그 파일용 (서버의 경우)
swap        : RAM 크기와 동일

필수 명령어 모음

파일 및 디렉토리 관리

# 디렉토리 이동 및 확인
pwd                    # 현재 위치 확인
ls -la                 # 상세 파일 목록
cd /path/to/directory  # 디렉토리 이동

# 파일 조작
cp source dest         # 파일 복사
mv old_name new_name   # 파일 이동/이름변경
rm filename           # 파일 삭제
mkdir dirname         # 디렉토리 생성
rm -rf dirname        # 디렉토리 강제 삭제

파일 내용 확인

cat filename          # 파일 내용 출력
less filename         # 페이지 단위로 보기
head -n 10 filename   # 처음 10줄 보기
tail -f logfile       # 실시간 로그 모니터링
grep "pattern" file   # 패턴 검색

시스템 정보

# 시스템 상태 확인
top                   # 실행중인 프로세스
htop                  # 향상된 프로세스 뷰어
df -h                 # 디스크 사용량
free -h               # 메모리 사용량
uname -a              # 시스템 정보

프로세스 관리

ps aux                # 모든 프로세스 확인
kill PID              # 프로세스 종료
killall process_name  # 이름으로 프로세스 종료
jobs                  # 백그라운드 작업 확인
nohup command &       # 백그라운드 실행

파일 시스템 이해하기

/                 # 루트 디렉토리
├── bin/          # 기본 명령어
├── boot/         # 부트 로더 파일
├── dev/          # 디바이스 파일
├── etc/          # 시스템 설정 파일
├── home/         # 사용자 홈 디렉토리
├── lib/          # 라이브러리
├── var/          # 가변 데이터 (로그, 임시파일)
├── usr/          # 사용자 프로그램
└── tmp/          # 임시 파일

중요 설정 파일

/etc/passwd       # 사용자 정보
/etc/group        # 그룹 정보
/etc/hosts        # 호스트 네임 매핑
/etc/fstab        # 파일시스템 마운트 정보
/etc/crontab      # 스케줄 작업

패키지 관리

Ubuntu/Debian (APT)

# 패키지 목록 업데이트
sudo apt update

# 시스템 업그레이드
sudo apt upgrade

# 패키지 설치
sudo apt install package_name

# 패키지 검색
apt search keyword

# 패키지 삭제
sudo apt remove package_name
sudo apt purge package_name  # 설정파일까지 삭제

# 캐시 정리
sudo apt autoremove
sudo apt autoclean

CentOS/RHEL (YUM/DNF)

# 패키지 설치
sudo yum install package_name
sudo dnf install package_name  # CentOS 8+

# 패키지 업데이트
sudo yum update

# 패키지 검색
yum search keyword

# 패키지 정보 확인
yum info package_name

사용자 및 권한 관리

사용자 관리

# 사용자 생성
sudo useradd -m -s /bin/bash username
sudo passwd username

# 사용자 삭제
sudo userdel -r username

# 사용자를 그룹에 추가
sudo usermod -aG groupname username

# 현재 사용자 확인
whoami
id

권한 관리

# 파일 권한 변경
chmod 755 filename       # rwxr-xr-x
chmod u+x filename       # 소유자에게 실행권한 추가

# 소유권 변경
chown user:group filename

# 권한 확인
ls -la filename

권한 숫자 표기법

읽기(r) = 4
쓰기(w) = 2
실행(x) = 1

755 = rwxr-xr-x (소유자:모든권한, 그룹:읽기+실행, 기타:읽기+실행)
644 = rw-r--r-- (소유자:읽기+쓰기, 그룹:읽기, 기타:읽기)

네트워크 설정

네트워크 상태 확인

# IP 주소 확인
ip addr show
ifconfig

# 네트워크 연결 확인
ping google.com
ping -c 4 8.8.8.8

# 포트 확인
netstat -tulpn
ss -tulpn

# 방화벽 상태 (Ubuntu)
sudo ufw status
sudo ufw enable
sudo ufw allow 22  # SSH 포트 열기

SSH 설정

# SSH 서비스 시작
sudo systemctl start ssh
sudo systemctl enable ssh

# SSH 키 생성
ssh-keygen -t rsa -b 4096

# 원격 접속
ssh user@server_ip

서버 운영 팁

1. 시스템 모니터링

# 시스템 리소스 실시간 모니터링
top
htop
iotop      # 디스크 I/O 모니터링

# 시스템 로그 확인
sudo tail -f /var/log/syslog
sudo journalctl -f

# 디스크 사용량 분석
du -sh /*
ncdu /     # 대화형 디스크 사용량 분석기

2. 성능 최적화

# 불필요한 서비스 중지
sudo systemctl disable service_name

# 메모리 캐시 정리
sudo sync && sudo sysctl vm.drop_caches=3

# 스왑 사용량 확인
swapon --show

3. 보안 강화

# 자동 보안 업데이트 설정
sudo apt install unattended-upgrades

# fail2ban으로 무차별 대입 공격 방지
sudo apt install fail2ban

# 방화벽 설정
sudo ufw enable
sudo ufw default deny incoming
sudo ufw allow 22    # SSH
sudo ufw allow 80    # HTTP
sudo ufw allow 443   # HTTPS

4. 백업 자동화

# 간단한 백업 스크립트
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf /backup/backup_$DATE.tar.gz /home /etc

# 크론탭에 등록
0 2 * * * /path/to/backup_script.sh

실전 문제 해결

자주 발생하는 문제들

1. 디스크 공간 부족

# 큰 파일 찾기
find / -size +100M -type f 2>/dev/null

# 로그 파일 정리
sudo journalctl --vacuum-size=100M
sudo find /var/log -name "*.log" -type f -mtime +30 -delete

2. 메모리 부족

# 메모리 사용량 큰 프로세스 확인
ps aux --sort=-%mem | head

# 스왑 파일 생성
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

3. 네트워크 연결 문제

# DNS 설정 확인
cat /etc/resolv.conf

# 네트워크 서비스 재시작
sudo systemctl restart networking
sudo systemctl restart NetworkManager

결론

Linux는 처음에는 어려워 보일 수 있지만, 체계적으로 학습하면 강력하고 효율적인 도구가 됩니다.

Linux 학습 로드맵

  1. 기초: 명령어, 파일시스템 이해
  2. 중급: 스크립팅, 네트워크 설정
  3. 고급: 서버 관리, 자동화, 보안

추천 학습 리소스

  • 📚 : "리눅스 커맨드라인 완벽 입문서"
  • 🌐 온라인: Linux Academy, Coursera
  • 💻 실습: VirtualBox로 가상머신 설치
  • 👥 커뮤니티: Stack Overflow, Reddit r/linux

Linux 마스터가 되는 길은 꾸준한 실습입니다. 오늘부터 시작해보세요!