# Table of Contents

# 리눅스의 파일 시스템과 디렉토리 구조

거의 대부분의 리눅스 배포판은 리눅스 파일시스템 계층 표준Linux Filesystem Hierarchy Standard (opens new window)을 준수한다. 따라서 다음 디렉토리 구조를 가진다.

# tree -L 1 -N -d
├─ bin
├─ dev
├─ etc
├─ home
├─ lib
├─ media
├─ mnt
├─ opt
├─ proc
├─ root
├─ sbin
├─ tmp
├─ usr
└─ var

여기서 중요한 몇 가지 디렉토리를 살펴보자.

이름 설명
/ 최상위 디렉토리인 루트 디렉토리
/boot/ 부팅에 필요한 파일들이 존재한다.
/bin/ 운영체제가 제공하는 명령어 바이너리. 모든 사용자들이 사용할 수 있다. ls, cat, cp, rm, ps 같은 명령어가 이 곳에 존재한다.
/sbin/ 운영체제가 제공하는 명령어 바이너리. 시스템 관리자만 사용할 수 있다. useradd, userdel, usermod 같은 명령어가 이 곳에 존재한다.
/lib /bin//sbin의 명령어 바이너리가 필요로하는 라이브러리 파일
/root 루트 사용자의 홈 디렉토리
/home 일반 사용자의 홈 디렉토리
/etc 시스템 전반의 환경설정 파일이 존재한다. 계정 설정과 관련된 /etc/passwd, /etc/shadow, /etc/group이 이 곳에 존재한다.
/var 상대적으로 자주 변하는 파일들이 존재한다.
/tmp 다양한 프로그램에서 만들어지는 임시 파일들이 저장된다. 시스템이 재부팅될 때 마다 이 디렉토리가 비워진다.
/usr Universal Resource의 약자. 일반 사용자가 사용하는 모든 프로그램과 자원 파일들이 존재한다.
/opt Optional의 약자. 일반 사용자가 사용하는 프로그램이 설치된다.
/dev 리눅스는 장치를 파일로 관리한다. 연결된 장치가 이 곳에서 파일 형태로 존재한다.
/mnt 디스크처럼 저장 기능이 있는 장치는 파일시스템에 마운트할 수 있다. 이 곳에는 마운트 포인트가 존재한다.
/media USB 드라이버, CD-ROM 같은 휴대용 장치가 연결될 때의 마운트 포인트가 이 곳에 존재한다.

다음 디렉토리는 내부를 좀 더 살펴볼 필요가 있다.

# /var

/var에는 로그 데이터, 사용자 메일 같은 가변 데이터 파일이 저장된다. 대표적으로 var/log에는 시스템이 기록하는 로그 파일이 위치한다.

# /usr

/bin에는 운영체제가 제공하는 명령어 바이너리가 위치한다. 반면 /usr에는 사용자가 설치한 명령어 바이너리가 위치한다.

이름 설명
/usr/bin 사용자가 설치한 앱이 위치한다. 모든 사용자가 사용할 수 있다.
/usr/sbin 사용자가 설치한 앱이 위치한다. 관리자만 사용할 수 있다.
/usr/lib /usr/bin 또는 /usr/sbin에 설치한 앱이 의존하는 라이브러리가 존재한다.
/usr/local/bin /usr/bin과 유사하지만 Package Manager가 아닌 사용자가 직접 컴파일한 앱이 위치한다. 모든 사용자가 사용할 수 있다.
/usr/local/sbin /usr/bin과 유사하지만 Package Manager가 아닌 사용자가 직접 컴파일한 앱이 위치한다. 관리자만 사용할 수 있다.
/usr/local/lib /usr/local/bin 또는 /usr/local/sbin에 설치한 앱이 의존하는 라이브러리가 존재한다.

# /opt

/opt는 사용자가 설치한 명령어 바이너리가 위치한다는 점에서 /usr/bin과 유사하다.

보통 UNIX 계열에서는 사용자가 설치한 애플리케이션이 /opt에 위치한다. 반면 대부분의 Linux 배포판에서 설치한 애플리케이션은 /usr/bin에 위치힌다.