2 분 소요

리눅스 디렉터리 구조는 시스템 보안·유지보수의 핵심이며, GNU 철학·오픈 소스 라이선스와 맞물려 자유롭고 확장성 높은 환경을 제공합니다. 이번 글에서는 최상위(루트)부터 /usr, /var까지 리눅스 디렉터리 구조를 체계적으로 설명하고, 뒤이어 GNU·FSF가 강조하는 자유 소프트웨어 라이선스를 비교 정리했습니다.


/ (루트) — 모든 것의 출발점

루트 디렉터리는 리눅스 파일 시스템의 가장 윗단입니다. 새로운 파티션이나 네트워크 스토리지도 이곳(/) 아래에 마운트되어 하나의 트리로 통합됩니다.

  • 시스템 복구 시 루트 파티션이 손상될 경우 전체 OS가 영향을 받으므로, /boot, /home 등을 별도 파티션으로 나누면 안정성이 높아집니다.
  • chroot 도구를 이용하면 다른 디렉터리를 임시 루트로 지정해 격리 테스트 환경을 구축할 수 있습니다.

시스템 핵심 디렉터리

/bin 과 /sbin

  • /bin: ls, cp, cat처럼 모든 사용자가 실행할 기본 명령어를 보관합니다.
  • /sbin: fsck, iptables, reboot시스템 관리자(root) 전용 명령어를 둡니다.

Tip: 단일-유저 모드(maintenance)로 부팅되면 /usr이 마운트되지 않아도 /bin·/sbin만으로 최소 복구가 가능합니다.

/boot

커널 이미지(vmlinuz-6.x)와 GRUB 설정(grub.cfg)이 위치합니다.

  • 별도 파티션(200–500 MB) 으로 분리하면 커널 업데이트 시 ⁠LVM/암호화 부트 이슈를 피할 수 있습니다.

/dev

모든 장치 파일(Device Node) 이 담긴 가상 디렉터리입니다.

  • /dev/sda, /dev/ttyUSB0 등이 있으며, udev가 핫플러그 이벤트마다 동적으로 생성·삭제합니다.

/etc

시스템 설정의 본진입니다.

주요 항목 설명
/etc/passwd 사용자 계정 기본 정보
/etc/shadow 해시된 비밀번호·만료일
/etc/ssh/sshd_config OpenSSH 서버 설정
/etc/rc.d/init.d/ SysV-init 스크립트(부팅 레벨)

/lib 와 /lib/modules

공유 라이브러리(libc.so, libpthread.so)와 커널 모듈을 저장합니다. ld-linux.so 로더가 바이너리 실행 시 이곳을 우선 탐색합니다.

/proc 와 /sys

  • /proc: 프로세스·커널 파라미터를 노출하는 가상 파일 시스템. 예) /proc/cpuinfo, /proc/1234/
  • /sys: 장치·버스·드라이버 관계를 표현하는 sysfs. 예) /sys/class/net/eth0/operstate

사용자·데이터 디렉터리

/home & /root

  • /home/사용자명: 일반 사용자의 개인 설정·데이터 저장소.
  • /root: 수퍼유저의 홈; 일반적으로 별도 파티션을 두어 / 손상 시에도 복구 작업을 가능하게 합니다.

/tmp 와 /var/tmp

  • /tmp: 재부팅 시 자동 비우는 임시 공간.
  • /var/tmp: 재부팅 후에도 잔존해야 하는 일시 파일. logrotate 같은 작업이 활용합니다.

/usr (Unix System Resources)

리눅스 앱·라이브러리·문서가 집결된 “사용자 영역”.

/usr/bin     # 일반 실행 파일
/usr/lib     # 애플리케이션용 라이브러리
/usr/local   # 직접 컴파일·설치한 패키지
/usr/share/man  # 매뉴얼 페이지

/var (Variable)

시시각각 변하는 로그·큐·캐시를 저장합니다.

  • /var/log/: syslog, dmesg 등 시스템 로그
  • /var/spool/cron/: 사용자별 크론 스케줄
  • /var/named/: BIND DNS 존 파일

/mnt vs /media

  • /mnt: 관리자가 수동 마운트할 임시 지점.
  • /media: 데스크톱 환경에서 USB·CD 같은 플러그앤플레이 매체를 자동 마운트.

시스템 복구 디렉터리

/lost+found

fsck가 디스크 오류를 복구하며 잃어버린 inode를 저장합니다. ext4 등 저널링 파일 시스템에서만 보입니다.


리눅스 철학 & 라이선스 한눈에 비교

GNU & FSF: “네 가지 자유”

  1. 실행 자유
  2. 연구·수정 자유
  3. 재배포 자유
  4. 개선본 공유 자유

대표 오픈 소스 라이선스

라이선스 소스 공개 의무 상업적 사용 특징
GPL 가능 2차 저작물도 GPL 강제(카피레프트)
LGPL 라이브러리 수정 시 가능 앱 코드는 독점 유지 가능
BSD 없음 가능 가장 자유로운 조건, 재라이선스 허용
Apache 없음(단, 공시) 가능 특허 보호 조항 포함
MIT 없음 가능 코드 최소 보증·책임 부인 조항
MPL 수정 파일만 공개 가능 소스와 바이너리 라이선스 분리

Why GPL? 커널·GNU 툴체인은 GPL로 배포돼, 누구든 소스 감사·기여를 할 수 있습니다. 반면 상업 SW와의 링크가 필요하면 LGPL·MIT가 유연한 선택입니다.


실전 예시: 새 파티션을 /mnt/data에 마운트하기

sudo mkfs.ext4 /dev/sdb1        # 새 파일 시스템 생성
sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data  # 일시 마운트
echo "/dev/sdb1 /mnt/data ext4 defaults 0 2" | \\
  sudo tee -a /etc/fstab        # 재부팅 후 자동 마운트

질문 정리

리눅스 디렉터리 구조를 한눈에 볼 수 있는 명령어는?

tree -L 2 / 명령을 사용하면 최상위 2단계 폴더를 구조적으로 확인할 수 있습니다.

/usr/local과 /opt는 무엇이 다른가요?

/usr/local소스 컴파일로 설치한 앱의 표준 경로이고, /opt상용·대규모 패키지가 자체 디렉터리(예: /opt/google/chrome)를 가질 때 주로 사용합니다.

/var/log가 가득 차면 어떻게 되나요?

로그가 넘치면 디스크 부족으로 서비스 중단 위험이 있습니다. logrotate 주기를 조정하거나 /var/log를 별도 파티션으로 분리하세요.

GPL 라이선스 소프트웨어를 유료로 팔 수 있나요?

가능합니다. 다만 소스코드 전체를 동일한 GPL로 제공해야 합니다.

/proc에서 프로세스별 메모리 사용량을 확인하려면?

cat /proc/<PID>/status | grep VmRSS실사용 메모리(RSS)를 조회할 수 있습니다.

카테고리:

업데이트:

댓글남기기