KOROMOON

착한 사마리아인이 되고 싶습니다.

2/18/2018

리눅스 디렉토리 구조


( 1 ) FHS

FHS 는 Filesystem Hierachy Standard 의 약자로 파일 시스템 계층구조 표준을 말함.
즉, 리눅스 운영 체제의 주 디렉토리를 정의하는 표준임.
HP, 레드햇, IBM, Dell 과 같은 주요 소프트웨어 및 하드웨어 공급 업체로 이루어진 비영리 조직인 리눅스 재단(http://www.linuxfoundation.org/)에 의해 유지되고 있음.
대부분의 리눅스 배포판은 FHS 를 따르며 FHS 를 준수할 것을 명시함.
자세한 정보는 아래 링크를 참고바람.
http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html


( 2 ) FHS 릴리즈 역사


버전
배포일
비고
1.0
1994-02-14
FSSTND
1.1
1994-10-09
FSSTND
1.2
1995-03-28
FSSTND
2.0
1997-10-26
FHS 2.0 FSSTND 1.2 를 직접 계승하였으며 FSSTND 명칭에서 FHS 명칭으로 변경함.
2.1
2000-04-12
FHS
2.2
2001-05-23
FHS
2.3
2004-01-29
FHS
3.0
2015-05-18
FHS
빨간색 - 구버전, 더 이상 지원 안함
노란색 - 구버전, 지원함
녹색 최신 버전


( 3 ) 최상위 디렉토리 구조인 / 디렉토리 구조 확인



( 4 ) 디렉토리 구조


구분
설명
/
기본 계층 모든 파일 시스템 계층의 기본인 루트 디렉토리

최상위 디렉토리로 모든 디렉토리들의 시작점

모든 디렉토리들을 절대경로로 표기할 때에 이 디렉토리부터 시작해야 함.

파티션 설정 시 반드시 존재하여야 함.

주의! / /root 는 완전히 다른 것임.
/bin
모든 사용자를 위해 단일 사용자 모드에서 사용 가능해야 하는 명령어 바이너리
ex. cat, ls, cp

기본적인 명령어가 저장된 디렉토리

root 사용자 뿐만 아니라 일반 사용자들도 사용할 수 있음.
(/sbin – 대부분 root 사용자용, /bin - 공동)
/boot
부트 로더 파일
ex. kernels, initrd
/dev
필수적인 장치 파일
(하드디스크 장치 파일 - /dev/sda, CD-ROM 장치 파일 - /dev/cdrom)

/dev 위치에 백도어 파일을 숨기는 주요 디렉토리이므로 주기적인 검사가 필요함.
/etc
특정 호스트 시스템의 전반적인 설정 파일

윈도우의 제어판이나 레지스트리에 해당됨.

이름 그 자체의 의미 이상에 대한 논쟁이 있었음.
벨 연구소에서 나온 유닉스 구현에 대한 초기 버전 문서에서는 /etc  et cetera 를 의미한다고 하였는데 이 디렉토리가 역사적으로 어디에도 속하지 않은 것을 모든 것을 붙들었음.
(그러나 FHS /etc 를 기존 설정 파일로 제한하였고 바이너리를 포함하지 않을 수 있음. 초기 문서의 출판 이후 디렉토리 이름은 다양한 방법으로 재지정되어 왔음. 최근에는 "Editable Text Configuration" 이나 "Extended Tool Chest" 와 같은 약어로 해석됨.)
/etc/opt
/opt/ 에 저장된 애드온 패키지의 설정 파일
/etc/X11
X Window System 의 설정 파일 (버전 11)
/etc/sgml
SGML 설정 파일
/etc/xml
XML 설정 파일
/home
저장된 파일, 개인 설정, 기타 등을 포함한 사용자의 홈 디렉토리

윈도우의 C:\Users 에 해당됨.

useradd 라는 명령어로 새로운 사용자를 생성하면 대부분 사용자의 ID 와 동일한 이름의 디렉토리가 자동으로 생성됨.
/lib
/bin/  /sbin/ 에 있는 바이너리용 라이브러리

주의! 함부로 삭제 시세 시스템이 멈출 수가 있음.
/lib<qual>
패체 형식 필수 라이브러리
/lost+found
최상위 디렉토리인/ 디렉토리에만 존재하는 것이 아니라 파일 시스템마다 존재할 수 있는 디렉토리

fsck 또는 e2fsck 등과 같은 파일 시스템 체크 및 복구 유틸리티 실행 후에 주로 생성이 되는 것으로서 복구되지 않은 채로 블록(block)만 존재하는 파일
(연결이 끊어진 inode 들이 숫자 파일 형태로 존재하는 곳)

숫자 형태로 존재하는 파일들은 mv 명령어로 파일 이름만 바꾸면 바로 복구될 수 있음.
(이 위치에 존재하는 텍스트 파일의 경우에는 file 이라는 명령어와 cat 또는 vi 등의 명령어로 파일의 내용 등을 확인한 후에 복구 가능하므로 경우에 따라서는 매우 중요한 역할을 하는 디렉토리임)

삭제를 해도 시스템에는 아무런 영향이 없음.
(꼭 필요한 파일이 이 디렉토리에 복구되지 않은 채로 남아 있을 수 있기 때문에 반드시 확인 후에 삭제하도록 함)
/media
CD-ROM 과 같은 이동식 미디어의 마운트 지점
(2004FHS-2.3 에서 적용됨)
/mnt
임시로 마운트되는 파일 시스템
/opt
선택 가능한 응용 소프트웨어 패키지
/proc
프로세스 및 커널 정보를 파일로 제공하는 가상 파일 시스템

리눅스에서는 procfs 마운트에 해당되며 윈도우의 장치관리자에 해당됨.
일반적으로 자동으로 시스템에 의해 생성되고 채워짐.

실제 운용 상태를 정확하게 파악할 수 있는 중요한 정보를 제공함.
(여기에 존재하는 파일들 가운데 현재 실행 중인 커널의 옵션값을 즉시 변경할 수 있는 파라미터 파일들이 있기 때문에 시스템 운용에 있어 매우 중요한 의미를 가짐)

대부분 읽기 전용이나 일부 파일 중에는 쓰기가 가능한 파일이 존재하는데 이러한 파일들에 특정 값을 지정하면 커널 기능이 변하게 됨.
/root
시스템 최고관리자인 root 사용자의 홈 디렉토리
/run
런타임 변수 데이터

마지막 부팅 이후 실행 중인 시스템 정보
ex. 현재 로그인 한 사용자 및 실행 중인 데몬

이 디렉토리의 파일은 부팅 시 제거되어야 함.
그러나 이 디렉토리는 임시 파일 시스템(tmpfs)으로 제공하는 시스템에서는 필요하지 않음.
/sbin
필수 시스템 바이너리
ex. init, ip, route

주로 시스템 관리자들이 사용하는 시스템 관리자용 명령어를 저장하고 있는 디렉토리

(/sbin – 대부분 root 사용자용, /bin - 공동)
/srv
웹 서버 스크립트 및 데이터, FTP 서버가 제공하는 데이터, 버전 제어 시스템용 저장소와 같은 시스템에서 제공하는 사이트별 데이터
(2004FHS-2.3 에서 적용됨)
/sys
장치, 드라이버 및 일부 커널 기능에 대한 참조된 정보
/tmp
임시 파일 (/var/tmp 참고)

윈도우의 Temp 폴더와 같은 개념임.

종종 시스템 재부팅 사이에 보존되지 않으며 크기가 심각하게 제한될 수 있음.

공용 디렉토리시스템을 사용하는 모든 사용자들이 공동으로 사용하는 디렉토리
(ex. MySQL 에서 사용하는 소켓 파일(mysql.sock)이나 Apache 에서 사용하는 세션 파일(session file) 등이 생성되기도 함)

시스템의 일반적인 사용자 또는 각종 프로세스에서 사용되는 파일들이 생성되는 위치

웹해킹에 사용되는 파일이 업로드 되는 위치이므로 주의가 요구되는 디렉토리
/usr
읽기 전용 사용자 데이터가 있는 보조 계층 구조

주요(다중) 사용자의 유틸리티와 애플리케이션을 포함하고 있음.

윈도우의 C:\Program Files 에 해당되지만 리눅스에서는 더 큰 의미를 가짐.
/usr/bin
모든 사용자의 중요하지 않은(단일 사용자 모드에서 필요하지 않은) 명령어 바이너리
/usr/include
표준 include 파일
/usr/lib
/usr/bin/  /usr/sbin/ 에 있는 바이너리용 라이브러리.
/usr/lib<qual>
대체 형식 라이브러리
ex. 64bit 시스템의 32bit 라이브러리일 경우 /usr/lib32 (선택 사항)
/usr/local
해당 호스트와 관련된 로컬 데이터의 3차 계층 구조

일반적으로 bin, lib, share 와 같은 추가 하위 디렉토리가 있음.
/usr/sbin
중요하지 않은 시스템 바이너리

ex. 다양한 네트워크 서비스 데몬
/usr/share
아키텍처에 독립적인(공유) 데이터
/usr/src
소스 코드

ex. 커널 소스 코드와 그 헤더 파일
/usr/X11R6
X Window System (버전 11 릴리즈 6, 선택 사항)
/usr/share/man
명령어들의 도움말을 주는 매뉴얼 페이지 디렉토리
(시스템에서 사용하는 모든 man 페이지 파일이 존재함)
/var
가변적인 파일

일반적인 시스템의 정상적인 작동 중에 내용이 계속 변경될 것으로 예상되는 파일
(로그 파일, 스풀 파일, 임시 이메일 파일)

시스템 운용 중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리
/var/cache
응용 프로그램 캐시 데이터

이러한 데이터는 시간이 걸리는 입출력이나 계산의 결과로 로컬에서 발생함.
이 응용 프로그램은 데이터를 재생성하거나 복원할 수 있어야 함.
이 캐시 된 파일은 데이터 손실 없이 삭제됨.
/var/lib
상태 정보

프로그램이 실행될 때 데이터베이스, 패키징 시스템 메타데이터 등과 같이 영구적인 데이터가 수정됨.
/var/lock
잠금 파일

현재 사용중인 자원을 추적하는 파일
/var/log
로그 파일

다양한 로그가 있음.
/var/mail
사서함 파일

일부 배포판에서 이러한 파일은 더 이상 사용되지 않는 /var/spool/mail 에 있을 수 있음.
/var/opt
/opt/ 에 저장된 애드온 패키지의 변수 데이터
/var/run
런타임 변수 데이터

이 디렉토리에는 부팅 후 시스템을 구동시키는 시스템 정보 데이터가 들어 잇음.

FHS 3.0 에서는 /var/run /run 으로 대체됨.
시스템은 /var/run 디렉토리를 계속 제공하거나 이전 버전과의 호환성을 위해 /var/run 에서 /run 으로 심볼릭 링크를 제공해야 함.
/var/spool
처리를 기다리는 작업 스풀

ex. 인쇄 큐나 발신 메일 큐
/var/spool/mail
더 이상 사용되지 않는 사용자 사서함 파일
/var/tmp
재부팅 사이에 보존되는 임시 파일

공용 디렉토리


참고 사이트 : 

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC%EC%8B%9C%EC%8A%A4%ED%85%9C_%EA%B3%84%EC%B8%B5%EA%B5%AC%EC%A1%B0_%ED%91%9C%EC%A4%80
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf
http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html


============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기