Linux Directory 구조
Linux Directory 구조에 대해 정리해보았습니다.
Linux Directory 구조
최상위 디렉터리
| 디렉터리 | 설명 |
|---|---|
/ | 파일 시스템 계층의 루트 디렉터리 |
/bin | 모든 사용자와 단일 사용자 모드에서 필수적인 명령어 실행 파일 (cat, ls, cp 등) |
/boot | 부트 로더 파일 (커널, initrd 등) |
/dev | 장치 파일 (/dev/null, /dev/sda1, /dev/tty 등) |
/etc | 시스템 전반의 설정 파일 |
/home | 사용자 홈 디렉터리 |
/lib | /bin, /sbin 실행 파일에 필요한 필수 라이브러리 |
/media | CD-ROM 같은 이동식 미디어의 마운트 지점 |
/mnt | 일시적으로 마운트된 파일 시스템 |
/opt | 추가적인 애플리케이션 소프트웨어 패키지 |
/proc | 실행 중인 프로세스 및 커널 정보를 제공하는 가상 파일 시스템 |
/root | 루트 사용자의 홈 디렉터리 |
/run | 부팅 이후 시스템의 런타임 정보를 저장하는 디렉터리 |
/sbin | 시스템 관리자가 사용하는 필수 시스템 실행 파일 (fsck, init, route 등) |
/srv | 웹 서버, FTP 서버 등의 서비스 데이터를 저장하는 공간 |
/sys | 장치, 드라이버, 커널 기능 정보를 제공하는 디렉터리 |
/tmp | 임시 파일 저장소 (재부팅 시 삭제될 수 있음) |
/var | 가변 데이터 파일 (로그 파일, 데이터베이스 등) |
/usr | 사용자 관련 프로그램과 라이브러리 |
/etc 하위 디렉터리
| 디렉터리 | 설명 |
|---|---|
/etc/opt | /opt에 저장된 추가 패키지의 설정 파일 |
/etc/sgml | SGML 관련 설정 파일 |
/etc/X11 | X 윈도우 시스템 (버전 11)의 설정 파일 |
/etc/xml | XML 관련 설정 파일 |
/etc/systemd | systemd 서비스 관리자의 설정 파일 |
/usr 하위 디렉터리
| 디렉터리 | 설명 |
|---|---|
/usr/bin | 비필수 실행 파일 (/bin과 달리 단일 사용자 모드에서 필수적이지 않음) |
/usr/include | 표준 C/C++ 헤더 파일 등 포함 파일 |
/usr/lib | /usr/bin 및 /usr/sbin 실행 파일을 위한 라이브러리 |
/usr/libexec | 다른 프로그램에 의해 실행되는 바이너리 파일 (직접 실행되지 않음) |
/usr/local | 호스트에 특화된 프로그램을 저장하는 공간 |
/usr/sbin | 네트워크 서비스용 데몬 등 비필수 시스템 바이너리 |
/usr/share | 아키텍처에 의존하지 않는 공유 데이터 |
/usr/src | 소스 코드 저장 디렉터리 (커널 소스 포함) |
/usr/X11R6 | X 윈도우 시스템 버전 11, 릴리즈 6 관련 파일 (선택 사항) |
/var 하위 디렉터리
| 디렉터리 | 설명 |
|---|---|
/var/cache | 응용 프로그램 캐시 데이터 |
/var/lib | 응용 프로그램이 실행되면서 변경하는 영구적인 데이터 (예: 데이터베이스, 패키지 메타데이터) |
/var/lock | 현재 사용 중인 리소스를 추적하는 파일 |
/var/log | 로그 파일 (시스템 로그, 애플리케이션 로그 등) |
/var/mail | 사용자 메일박스 파일 (일부 배포판에서는 /var/spool/mail 대신 사용됨) |
/var/opt | /opt에 저장된 패키지의 가변 데이터 |
/var/run | 부팅 이후 시스템 정보 (FHS 3.0에서는 /run으로 대체) |
/var/spool | 인쇄 대기열, 메일 대기열 등 대기 작업 저장소 |
/var/spool/mail | 사용자 메일박스의 이전 위치 (더 이상 권장되지 않음) |
/var/tmp | 재부팅 후에도 유지되는 임시 파일 |
참고:
/var/run은 FHS 3.0에서/run으로 대체되었으며,/var/run은/run으로의 심볼릭 링크로 제공될 수 있음. wiki pedia
좋아요, Linux에서 /etc와 /usr 디렉터리는 목적이 완전히 다릅니다. 하나씩 차이점을 자세히 설명할게요.
1️⃣ /etc – 시스템 설정 파일
- 용도: 시스템과 애플리케이션 설정 파일 저장
주요 특징:
- 시스템 전반 설정을 담음 (네트워크, 사용자 계정, 서비스 등)
- 일반적으로 텍스트 기반 설정 파일
- 실행 파일은 거의 없음, 설정만 존재
예시:
1 2 3 4
/etc/passwd # 사용자 계정 정보 /etc/fstab # 파일 시스템 마운트 정보 /etc/ssh/sshd_config # SSH 서버 설정 /etc/nginx/nginx.conf # Nginx 설정
- 권한: 루트(root) 권한 필요, 시스템 설정 파일이므로 함부로 수정하면 시스템 불안정 가능
2️⃣ /usr – 사용자 관련 프로그램과 라이브러리
- 용도: 실행 파일, 라이브러리, 공유 리소스 저장
주요 특징:
/usr/bin,/usr/sbin→ 실행 가능한 프로그램/usr/lib→ 라이브러리(.so 파일 등)/usr/share→ 프로그램과 무관한 공유 데이터(아이콘, 매뉴얼, 설정 샘플 등)/usr자체는 root 외부에서 사용 가능한 “read-only” 프로그램 위주
예시:
1 2 3
/usr/bin/python3 # Python 실행 파일 /usr/lib/libc.so.6 # C 라이브러리 /usr/share/man/man1/ls.1.gz # ls 명령어 매뉴얼
- 권한: 일반적으로 읽기 전용으로 사용, 프로그램 실행 위주
3️⃣ 차이점 요약
| 특징 | /etc | /usr |
|---|---|---|
| 주 목적 | 시스템/서비스 설정 | 실행 파일, 라이브러리, 공유 데이터 |
| 파일 종류 | 설정 파일(텍스트) | 실행 파일, 라이브러리, 매뉴얼, 데이터 |
| 실행 가능 파일 | 거의 없음 | 많음 (/usr/bin, /usr/sbin) |
| 수정 권한 | 루트 필요 | 일반 사용자 읽기 가능 (설치 시만 루트 필요) |
| 예시 | /etc/passwd, /etc/ssh/ | /usr/bin/python3, /usr/lib/ |
This post is licensed under CC BY 4.0 by the author.