Light Linux _Introduce

mseokq23·2025년 1월 7일

Light Linux

목록 보기
1/4

1. 리눅스 소개

1.1. 리눅스란 무엇인가?

유닉스(UNIX) 계열 운영체제 개념
리눅스 커널의 역사와 리누스 토르발스
오픈 소스(Open Source) 철학과 GPL 라이선스

1.2. 배포판(Distro)의 개념

데비안(Debian), 우분투(Ubuntu), 페도라(Fedora), CentOS/AlmaLinux/RockyLinux, 오픈수세(OpenSUSE) 등
서버용/데스크톱용 배포판의 차이

1.3. 리눅스를 배우는 이유

서버/개발 환경에서의 활용성
자유도와 높은 커스터마이징 가능성
보안 및 네트워킹 학습에 유용

2. 리눅스 설치(인스톨)

2.1. 설치 준비

시스템 요구사항: CPU, 메모리, 디스크 용량 등
부팅 디스크(USB/DVD) 제작 방법 (Rufus, Etcher 등 툴 사용)

2.2. 설치 과정 개요

설치 마법사(Installer)에서 파티션 설정(표준 파티션 / LVM / EFI 파티션)
루트 파티션, 홈 파티션, 스왑 파티션 구성 원리
사용자 계정 생성 및 호스트 이름 설정

2.3. 설치 후 필수 작업

패키지 업데이트(apt, dnf, yum 등)
기본 유틸리티 설치(curl, wget, git 등)
드라이버/그래픽 설정 (NVIDIA, AMD 그래픽 카드 등)

3. 리눅스 기본 개념 및 구조

3.1. 커널(Kernel)과 셸(Shell)

커널의 역할: 하드웨어 자원 관리
셸의 종류: Bash, Zsh, Dash 등
셸의 기본 동작 원리

3.2. 파일시스템 구조

루트 디렉터리(/)와 주요 디렉터리(/bin, /etc, /home, /var 등)의 역할
절대 경로와 상대 경로 개념

3.3. 명령줄 인터페이스(CLI)의 특징

CLI와 GUI의 차이
터미널 에뮬레이터(gnome-terminal, konsole, xterm 등)

4. 기본 명령어 사용법

4.1. 파일 및 디렉터리 관리

ls, cd, pwd, mkdir, rmdir, touch, cp, mv, rm
ls -l, ls -a 등 옵션 활용

4.2. 파일 내용 확인

cat, less, more, head, tail, grep, wc

4.3. 권한 및 소유권 변경

chmod, chown, chgrp
퍼미션의 구성(읽기 r, 쓰기 w, 실행 x)과 옥텟 표기법(755, 644 등)

4.4. 검색 및 탐색

find, locate, which, whereis

4.5. 작업 및 프로세스 관리

ps, top, htop, kill, jobs, bg, fg
& 기호를 활용한 백그라운드 실행

4.6. 이외 유용한 명령어

clear, history, alias, man, sudo, su 등

5. 에디터 활용

5.1. nano 에디터

설치 여부 확인 및 설치 방법
기본 단축키(Ctrl+O 저장, Ctrl+X 종료 등)

5.2. vim 에디터

일반 모드(Normal) / 입력 모드(Insert) / 명령 모드(Command) 개념
기본 명령(i, :wq, :q!)
조금 더 나아간 명령(yank, delete, visual mode 등)

5.3. 기타 에디터 소개

Emacs, VSCode(리눅스 버전), Neovim 등

6. 사용자 및 그룹 관리

6.1. 사용자 계정 개념

/etc/passwd, /etc/shadow 파일 구조
useradd, userdel, passwd 명령어

6.2. 그룹 관리

/etc/group 파일 구조
groupadd, groupdel, usermod -G

6.3. sudo 권한 관리

sudoers 파일과 visudo 명령어
wheel 그룹(또는 sudo 그룹) 활용 방법

7. 패키지 관리

7.1. 패키지 관리 시스템의 개념

리포지토리(Repository) 구조와 의존성(Dependency)

7.2. APT (Debian 계열)

apt-get, apt-cache, apt 명령어 사용법
패키지 설치, 제거, 업데이트, 업그레이드

7.3. DNF/YUM (Red Hat 계열)

dnf, yum 명령어 사용법
패키지 설치, 제거, 업데이트, 업그레이드

7.4. 기타 패키지 관리 도구

snap, flatpak 등

7.5. 소스 컴파일 설치

tar, gzip, bzip2 등 압축 해제 명령어
configure, make, make install 기본 흐름

8. 파일 시스템 관리

8.1. 디스크 파티션 개념

fdisk, parted, gparted 등 도구 활용
MBR vs GPT

8.2. 파일 시스템 종류

ext4, xfs, btrfs, zfs 등
파일 시스템 생성(mkfs), 마운트(mount), 언마운트(umount)

8.3. LVM(Logical Volume Manager)

물리 볼륨(PV), 볼륨 그룹(VG), 논리 볼륨(LV) 개념
lvextend, lvreduce, lvresize 사용법

8.4. 파일시스템 점검

fsck, xfs_repair 등

9. 프로세스와 서비스 관리

9.1. 프로세스 개념

PID, PPID, 포크(fork)와 exec 개념
프로세스 상태(R, S, D, Z 등)

9.2. 서비스(데몬) 관리

System V init 방식과 systemd 차이
systemctl 명령어(시작, 중지, 재시작, 상태 확인)

9.3. 부팅 프로세스

BIOS/UEFI -> 부트로더(GRUB) -> 커널 -> systemd -> 로그인
runlevel / target 개념

10. 네트워킹 기초

10.1. IP 주소와 서브넷 마스크

IPv4, IPv6 개요
네트워크/호스트 부분 이해

10.2. 네트워크 설정

ifconfig, ip, nmcli 명령어
static / DHCP 설정 방법
/etc/network/interfaces 또는 /etc/sysconfig/network-scripts/ifcfg-*

10.3. 호스트/도메인 관리

/etc/hosts 파일
DNS 동작 원리
dig, nslookup 명령어

10.4. 기본 네트워크 진단 명령어

ping, traceroute, netstat, ss, nmap 등

11. 보안 기초

11.1. 방화벽(Firewall)

iptables, nftables, firewalld
인바운드/아웃바운드 규칙, 포트 열기/닫기

11.2. SSH 보안

SSH 기본 설정(/etc/ssh/sshd_config)
공개키/개인키(Public/Private key) 인증
포트 변경, 루트 로그인 제한 등의 보안 강화

11.3. 계정 보안

비밀번호 정책
계정 잠금/해제 관리

11.4. SELinux/AppArmor 개요

Security-Enhanced Linux(SELinux)의 모드 (enforcing, permissive, disabled)
파일 컨텍스트, 정책 관리

12. 로그와 모니터링

12.1. 로그 관리

/var/log 디렉터리 구조
syslog, rsyslog, journald
journalctl 명령어 사용법

12.2. 시스템 모니터링

top/htop, iostat, vmstat, mpstat 등
sar, dstat, glances 등 외부 툴

12.3. 자원 사용량 추적

CPU, 메모리, 디스크 사용량 체크
df, du 명령어로 디스크 사용량 측정

13. 셸 스크립트 기초

13.1. 스크립트 작성 및 실행

#!/bin/bash 해석
스크립트 실행권한 부여(chmod +x)
변수, 조건문(if, case), 반복문(for, while)

13.2. 파이프와 리다이렉션

표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr)
, >>, 2>, |(파이프) 활용

13.3. 스크립트 예제

로그 자동 압축 스크립트
디스크 모니터링 및 알림 스크립트

14. 크론(Cron)과 자동화

14.1. cron 개념

시스템 크론과 사용자 크론
/etc/crontab, /etc/cron.* 디렉터리 구조

14.2. crontab 작성법

분/시/일/월/요일 형식
간단한 예제 작성과 실행 확인

14.3. 자동화 사례

백업 스크립트 주기 실행
로그 정리 자동화

15. 가상화 및 컨테이너(선택)

15.1. 가상화 개요

하이퍼바이저의 개념 (KVM, VMware, VirtualBox 등)
libvirt, virt-manager를 이용한 KVM 설정

15.2. 도커(Docker) 기초

이미지(Image)와 컨테이너(Container) 개념
Dockerfile을 이용한 이미지 빌드
docker-compose를 이용한 멀티 컨테이너 구성

15.3. 컨테이너 오케스트레이션 개념

쿠버네티스(Kubernetes) 간단 소개

16. 서버 실무 예시(선택)

16.1. 웹 서버 구축

아파치(Apache) 또는 엔진엑스(Nginx) 설치 및 설정
가상 호스팅, SSL 인증서(HTTPS) 설정

16.2. 데이터베이스 서버

MySQL/MariaDB, PostgreSQL 기본 설정
사용자/DB 생성, 백업/복원

16.3. FTP/SFTP 서버

vsftpd, ProFTPD 설치 및 설정
SFTP 설정 및 보안 강화

16.4. Samba/NFS를 이용한 파일 공유

Windows와 리눅스 간 파일 공유
내부 네트워크 파일시스템 구성을 위한 NFS 설정

17. 시스템 백업 전략

17.1. 백업 종류

전체 백업, 증분 백업, 차등 백업
rsync, tar, dump 등 툴 활용

17.2. 백업 자동화

crontab과 결합한 백업 스크립트 작성
백업 파일의 관리(압축, 버전 관리 등)

17.3. 복원(Recovery) 절차

복원 시 주의사항
GRUB 부트 로더 복구 등

18. 문제 해결 및 커뮤니티

18.1. 문제 발생 시 접근 방법

로그 확인( journalctl, /var/log )
에러 메시지 분석, 구글/커뮤니티 검색 요령

18.2. 커뮤니티와 문서

리눅스 공식 문서( man 페이지, distro 위키 )
Stack Overflow, Reddit, 우분투 포럼 등

18.3. 유지보수 및 지속적인 학습

보안 패치 적용, 최신 버전 추적
신기술(컨테이너, 클라우드, DevOps 등) 학습 경로

19. 부록

19.1. 유용한 단축키

Ctrl + C, Ctrl + D, Ctrl + Z
Bash에서의 명령어 편집 단축키(Ctrl + A, Ctrl + E 등)

19.2. 환경 변수 설정

/etc/profile, ~/.bashrc, ~/.bash_profile
PATH, LANG, PS1 등

19.3. 파일/디렉터리 압축 및 해제

gzip, bzip2, zip, tar 명령어 활용
다양한 압축 포맷(.tar.gz, .tar.bz2, .zip 등)

19.4. 유용한 명령어 정리표

0개의 댓글