리눅스(Linux)

리눅스(Linux) 심층 안내: 개념, 아키텍처, 배포판, 보안, 실전 활용

리눅스란 무엇인가

  • 정의: 리눅스는 유닉스(Unix) 철학을 기반으로 한 오픈 소스 운영체제 커널과 그 위에서 동작하는 사용자 공간 구성요소 전체를 아우르는 생태계를 의미합니다. 일반적으로 “리눅스”라고 부를 때는 커널 + GNU 도구 + 데스크톱/서버 환경까지 포함한 시스템을 말합니다.
  • 라이선스: 커널은 GPLv2 라이선스로 배포되어 소스 공개, 수정, 재배포가 가능하며, 이로 인해 광범위한 커뮤니티 기여와 빠른 개선이 이루어집니다.
  • 활용 영역: 서버, 클라우드, 네트워킹 장비, 임베디드/IoT, 슈퍼컴퓨터, 데스크톱까지 다양한 형태로 쓰이며 고신뢰성과 유연성이 강점입니다.

리눅스 아키텍처와 구성요소

커널(Kernel)

  • 역할: 프로세스 스케줄링, 메모리 관리, 파일시스템, 네트워킹, 디바이스 드라이버, 보안(ACL/LSM) 등 핵심 자원 제어를 담당합니다.
  • 모듈성: 필요 기능을 모듈로 빌드·적재(Loadable Kernel Module)하여 경량화·유연성을 확보합니다.
  • 시스템 콜: 사용자 공간 프로세스가 커널 기능을 요청하는 인터페이스로, POSIX 호환을 중심에 둡니다.

사용자 공간(User Space)

  • C 라이브러리: Glibc 혹은 musl 등 표준 라이브러리가 시스템 콜을 감싸고 API를 제공합니다.
  • 쉘과 도구: bash, zsh 등의 쉘과 coreutils(ls, cp 등), grep, sed, awk 등 텍스트·파이프라인 유틸리티가 기본 생산성을 형성합니다.
  • Init/서비스 관리: Systemd(대세), OpenRC, runit 등이 부팅 시 서비스의 의존성·상태를 관리합니다.

파일시스템과 저장소

  • 주요 FS: ext4(범용), XFS(대용량), Btrfs(스냅샷/서브볼륨), ZFS(무결성/RAID), FAT/NTFS(호환) 등 목적에 따라 선택합니다.
  • VFS 계층: 커널의 가상 파일시스템(VFS)이 다양한 파일시스템을 단일 인터페이스로 추상화합니다.

프로세스·스레드·IPC

  • PID·스케줄링: CFS 스케줄러를 통해 공정한 CPU 시간 분배를 수행합니다.
  • IPC: 파이프, 소켓, 공유메모리, 시그널 등으로 프로세스 간 통신을 지원합니다.
  • 네임스페이스·Cgroups: 격리와 자원 제한으로 컨테이너 기반 워크로드를 실현합니다.

배포판(Distro)과 패키지 관리

배포판의 개념

  • 정의: 커널과 툴체인, 패키지 관리, 기본 도구, 데스크톱 환경, 정책을 묶어 일관된 사용자 경험을 제공하는 “조합”입니다.
  • 선택 기준: 목적(서버/데스크톱), 안정성 vs 최신성, 커뮤니티 규모, 상용 지원 여부, 보안 정책, 관리 도구 등.

대표 배포판

  • Debian/Ubuntu 계열: 광범위한 패키지, 친숙함, 클라우드 친화; apt 패키지 관리.
  • RHEL/CentOS/AlmaLinux/Rocky: 기업용 안정성·장기지원, SELinux 기본; yum/dnf 패키지 관리.
  • Arch/Manjaro: 롤링 릴리즈, 최신 소프트웨어; pacman.
  • openSUSE/SLE: YaST 관리도구, Btrfs 스냅샷; zypper.
  • 임베디드/경량: Alpine(musl+busybox), Yocto(커스텀 빌드).

패키지 관리

  • Apt/Dpkg: .deb 기반, 의존성 자동 해결, PPA로 확장.
  • Yum/DNF/RPM: .rpm 기반, 기업환경 표준, 모듈 스트림 지원.
  • Pacman: 단일 바이너리 인덱스, AUR로 커뮤니티 빌드 확장.
  • Flatpak/Snap/AppImage: 앱 샌드박스 및 크로스 배포, 데스크톱 앱 배포에 강점.

파일 계층(FHS)과 권한/보안

FHS(File Hierarchy Standard) 요점

  • / 루트: 최상위 디렉토리.
  • /bin, /sbin: 필수 실행 파일(사용자/시스템).
  • /etc: 시스템 전역 설정.
  • /var: 로그, 큐, 스풀 등 변동 데이터.
  • /usr: 사용자 툴·라이브러리.
  • /home: 사용자 홈 디렉토리.
  • /tmp: 일시 파일(종종 tmpfs).

권한과 소유

  • DAC 모델: 사용자/그룹/기타의 r(읽기) w(쓰기) x(실행) 권한으로 접근 통제.
  • 고급 비트: setuid/setgid(권한 상승), sticky bit(공용 디렉토리 삭제 제한).
  • ACL: 보다 세밀한 권한 지정으로 복잡한 요구사항 대응.

보안 계층

  • SELinux/AppArmor: LSM 기반의 강제 접근 제어(MAC)로 프로세스·리소스 상호작용을 정책화.
  • 커널 하드닝: ASLR, seccomp, eBPF 베리파이어 등 런타임 공격면 축소.
  • 암호화: LUKS/dm-crypt로 디스크 암호화, OpenSSL/GnuTLS로 통신 암호화.

네트워킹, 서비스, 부팅

  • 네트워킹: Netfilter(iptables/nftables), iproute2, systemd-networkd/NetworkManager로 인터페이스·라우팅·방화벽 관리.
  • 서비스 관리: systemd unit로 서비스 의존성/로그/재시작 정책 제어, journalctl로 중앙 로그 열람.
  • 부팅 시퀀스: 펌웨어(UEFI/BIOS) → 부트로더(GRUB/systemd-boot) → 커널 → init(systemd) → 타겟/서비스 활성화.

가상화와 컨테이너

  • 하드웨어 가상화: KVM(QEMU)로 VM 실행, virtio로 I/O 최적화, libvirt/virt-manager로 관리.
  • 컨테이너: cgroups/네임스페이스로 프로세스 격리, Docker/Podman, Kubernetes로 오케스트레이션.
  • 이미지/레지스트리: OCI 이미지 포맷, 컨테이너 레지스트리(예: Harbor, Docker Hub).

실전 명령어와 관리 포인트

필수 명령 모음

  • 파일/디렉토리: ls, cd, pwd, cp, mv, rm, find, tree
  • 권한/소유: chmod, chown, chgrp, umask, getfacl, setfacl
  • 프로세스: ps, top/htop, pstree, kill, nice/renice
  • 네트워크: ip, ss, ping, traceroute, dig, nmcli
  • 패키지: apt/dnf/pacman, systemctl, journalctl
  • 디스크/FS: lsblk, fdisk/parted, mount/umount, df, du, mkfs, tune2fs, btrfs/zfs 유틸
  • 아카이브: tar, gzip/bzip2/xz, zip/unzip

베스트 프랙티스

  • 보안 기본: 불필요 서비스 비활성화, 방화벽 정책 최소 권한, 정기 패치/업데이트.
  • 가용성: 로그 모니터링(journalctl/syslog), 리소스 경보(prometheus/node exporter).
  • 백업/복구: 스냅샷(Btrfs/ZFS), rsync/Restic/Borg로 증분 백업.
  • 자동화: Ansible/SSH 자동화로 재현성 높은 구성 관리.

배포판 선택과 설치 팁

  • 데스크톱 초보: Ubuntu LTS, Linux Mint(편의성, 드라이버 호환), Fedora(최신 GNOME).
  • 서버/기업: RHEL 계열(AlmaLinux/Rocky) 또는 Debian Stable(장기지원, 안정성).
  • 경량/컨테이너: Alpine(musl+busybox), Fedora/Ubuntu minimal 이미지.
  • 설치 팁: UEFI/암호화 파티션(LUKS), 별도 /home 혹은 Btrfs 서브볼륨, 안전한 스왑 설정(zram/zswap), 기본 방화벽 활성화(nftables).

마무리

  • 핵심 요약: 리눅스는 모듈식 커널과 표준화된 사용자 공간, 강력한 보안 모델, 다양한 배포판과 패키지 생태계를 통해 광범위한 활용을 가능케 합니다. 목적에 맞는 배포판과 파일시스템, 서비스 관리 체계를 선택하고, 보안·백업·자동화 베스트 프랙티스를 적용하면 안정적이고 확장 가능한 시스템을 구축할 수 있습니다.

Previous Article
Next Article

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*

Recent Comments

보여줄 댓글이 없습니다.

Archives

Categories