리눅스 디렉터리 구조 & 라이선스 정리
리눅스 디렉터리 구조는 시스템 보안·유지보수의 핵심이며, 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: “네 가지 자유”
- 실행 자유
- 연구·수정 자유
- 재배포 자유
- 개선본 공유 자유
대표 오픈 소스 라이선스
| 라이선스 | 소스 공개 의무 | 상업적 사용 | 특징 |
|---|---|---|---|
| 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)를 조회할 수 있습니다.
댓글남기기