본문 바로가기

* DevSecOps/Linux

리눅스 디렉토리 구조


리눅스 디렉토리 구조


레드햇 9 리눅스는 몇 만개의 디렉토리와 수십 만개의 파일로 이뤄져있다.
이러한 파일들은 용도별로 명확하게 구분하여 해당되는 디렉토리에 저장해 놓고 있다.
이 디렉토리들은 보통 tree 구조라고 하는 체제로 이루어져 있으며
가장 상단의 Root(/)에서부터 거꾸로된 나무형태로 분기되어 나가는 식으로 되어있다.
이는 Window의 폴더구조와 크게 다르지 않다.

/(Root) 루트

/(Root) 루트 디렉토리는 모든 디렉토리의 가장 상위에 있는 디렉토리로써 모든 파일 및 디렉토리가 /(Root)에서 분기되어 나가게 된다. Root는 슬래시(/)로 표시하며 이는 최고 관리자 root 계정이 갖는 /root 디렉토리와는 다르다.
보통 / 에는 bin,boot,dev,etc,home,lib,misc,mnt,opt,proc,sbin,ftpboot,tmp,usr,var등의 디렉토리들이 설치된다.
/는 자기 자신이 갖는 파일들은 없지만 시스템 운영상 대단히 중요하기 때문에 별도의 파디션을 할당하는 것이 보통이다.
그리고 / 파디션에는 / 파일 시스템이라 하여 bin,sbin,etc,root,lib,dev,tmp,boot,mnt 등의 디렉토리가 기본적으로 설치된다.
이 디렉토리들은 / 파일 시스템에 속하며 이 디렉토리나 파일들이 손상을 입게되면 리눅스 시스템 운영에 큰 지장을 가져오게 된다.

/bin (binaries) 사용자 명령어 디렉토리

부팅할 때 필요한 각종 파일들과 기본 명령어들이 들어 있다. root 계정 또는 일반 계정 모두 사용할 수 있는 명령어들이다.
또한 single mode로 부팅될 때와 시스템 복구에 필요한 명령들도 여기에 들어있다.

/boot 부트 이미지 디렉토리

리눅스 부트스트랩 로더가 있는 곳이다. 각종 커널 이미지들이 이곳에 있다. 리눅스가 부팅될 때 사용되는 커널과 부팅 정보 파일이 있는 곳이기 때문에 보통 별도의 파디션을 할당하는 것이 안전하다. 이곳이 손상당하게 되면 부팅이 불가능해진다.

/dev(device) 장치 파일 디렉토리

하드웨어에 관련된 장치 파일들이 있는 곳이다. 장치 파일이라는 말은 다른 운영체제와는 전혀 다른 개념으로써 유닉스나 리눅스에서는 각종 장치들도 파일로 인식한다는 개념에서 나온 말이다. 여기에 있는 장치 파일들은 파일을 읽고 쓰듯이 시스템에 장착된 각종 하드웨어를 다룰 수 있게 해 준다.

/etc(et cetera) 시스템 환경 설정 디렉토리

이 곳에는 중요한 시스템 환경 설정 파일들이 들어있다. 대부분 환경 설정 파일들이 이 디렉토리에 위치한다.
/etc 디렉토리에 있는 각종 환경 설정 파일들이 손상을 입게 된다면 리눅스 서버의 운영이 사실상 불가능해진다.

/home 사용자 홈 디렉토리

일반 사용자들의 계정 디렉토리가 위치하게 된다. 계쩡이 부여되면 그 계쩡에 대한 모든 디렉토리가 여기에 위치하게 된다.

/initrd(initialize RAM Disk) 램 디스크 디렉토리

리눅스 부트로더가 커널을 시작하기 전 임시의 루트 파일시스템 구성을 하기 위한 장소를 제공하는 RAM DISK를 메모리에 구성하기 위한 디렉토리이다. 그러므로 이 디렉토리 안에는 아무 것도 존재하지 않지만 부팅 시에 반드시 필요한 디렉토리이다.

/lib(livraries)공유 라이브러리 및 커널 모듈 디렉토리

라이브러리 파일들이 들어 있는 곳이다. 부팅과 시스템 운영에 필요한 각종 공유 라이브러리와 커널 라이브러리가 들어 있다.
(*공유 라이브러리란? 여러 가지 응용 프로그램들이 실행되는 데 필요한 별도의 프로그램)
(*커널 라이브러리란? 커널 안에 자체적으로 포함되지 않고 독립적인 형태로 분리되어 있으면서 부팅 시에 커널에 동적으로 연결 되어서 전체적인 커널을 유기적으로 구성하게 되는 별도의 프로그램)
특히 /lib 디렉토리 밑에 존재하는 /lib/modules 디렉토리는 리눅스 시스템의 핵심이 되는 커널 모듈들이 있다.

/lost+found fsck의 링크 디렉토리

파일 시스템 복구를 위한 fsck(File System Check) 프로그램의 링크 디렉토리다. 경우에 따라 다른 하위 디렉토리에도 lost+found 라는 디렉토리가 존재할 수 있다. Windows에서는 파일 시스템에 문제가 생기면 scandisk를 실행하게 되는데 scandisk에 해당되는 명령이 fsck 프로그램이다. 시스템이 정상적인 과정을 거치지 않고 종료되거나 다른 이유로 파일들이 손상되었을 때 fsck는 lost+found 디렉토리로 연결한 뒤에 오류를 수정하게 된다.

/misc(miscellaneous) 아키텍쳐 독립 자료 디렉토리

레드햇 리눅스와는 상관이 없는 디렉토리로써 아키텍처와 무관한 프로그램과 자료들이 위치함

/mnt(mount) 마운트 포인터 디렉토리

마운트 명령(mount)에 의하여 마운트된 파일시스템들이 위치하는 곳(mount point)이다.
임시 저장 공간으로서 마운트를 시킬 때 굳이 이 디렉토리를 사용할 필요는 없다. 통상적으로 마운트를 하면 /mnt 디렉토리를 이용한다.

/opt(operation)애드온 소프트웨어 패키지 디렉토리

Add-on 소프트웨어 패키지가 설치되는 곳으로써 레드햇 리눅스와는 상관이 없는 디렉토리이다.

/proc(process)커널과 프로세스를 위한 가상 파일 시스템 디렉토리

실제로 존재하지 않는 가상의 파일 시스템 디렉토리이다. 파일 시스템은 커널이 메모리 상에 만들어 놓은 것으로 디스크에는 존재하지 않으며 실제로 용량을 체크해도 없는 것으로 나타나지만 이 디렉토리에 들어가 보면 굉장히 많은 량의 정보가 존재하고 있다. 시스템의 하드웨어적인 내용이 바뀌면 이곳의 내용도 자동으로 바뀐다.

/root 루트 계정 홈 디렉토리

root 계정이 사용하는 디렉토리이다. 즉, root의 홈 디렉토리로써 /home 디렉토리에 만들어지지 않는다는 점에서 차별화 된다.
서버 관리자가 별도 보관해야 할 중요한 파일들을 여기에 보관한다.

/sbin(system binaries)시스템 명령어 디렉토리

주로 시스템 관리를 위한 명령들이 들어 있다. 주로 root 계정만 이용할 수 있는 명령들이 있으며 일반 사용자 계정들은 아주 제한적인 명령어들만 사용할 수 있다. 시스템 운영상 대단히 중요한 명령들이 있으므로 해킹 당하지 않도록 각별이 주의해야 하며, 일반 계정들은 될 수 있으면 완전히 접근하지 못하도록 하는 것이 좋다.

/tftpboot(trivial file transfer protocol boot)

원격에서 리눅스 클라이언트가 부팅될 때 로드되는 파일들이 있는 곳이다. 네트워크 접속만을 토앟여 리눅스 클라이언트로 부팅할 수 있는 옵션을 지원하는데 거기에 관련된 설정 값이 여기에 들어간다.

/tmp(temporary) 임시 작업 디렉토리

임시 파일들을 위한 공간이다. 모든 사용자가 어떤 파일이든지 자유롭게 생성하고 지울 수가 있는 임시 저장 공간이다.
리눅스가 특정 프로그램을 수행할 때(보통 프로세스를 진행한다고 한다.) 생성되는 파일들을 임시로 저장해 두기도 한다.

/usr(user) 공유 파일 시스템 디렉토리

공유 파일 시스템이 있는 곳이다. 공유 가능한 대부분의 프로그램들이 설치되며 네트워크를 이용해서 여러 개의 시스템을 연결할 경우, 이 디렉토리를 공유해서 설치된 프로그램들을 활용할 수 있게 된다. 압축 파일, 네트워크 실행 파일, 자료 전송 파일 등이 있다.
/usr 디렉토리에는 별도의 bin,sbin 디렉토리가 존재하는 데 이것은 네트워크 접속자들이 주로 사용할 수 있는 명령어들이 들어있다. /usr/local 디렉토리는 리눅스 기본 설치 후에 추가로 설치하는 응용 프로그램들이 저장되는 공간이다.

/var(variable data) 가변 자료 디렉토리

수시로 변경될 수 있는 변수를 담고 있는 파일들이 있는 곳이다. 즉, 시스템 운영 중에 계속 갱신되는 데이터들과 각종 로그 파일들이 저장된다. 로그 파일들의 특성상 시간이 지나면서 점점 용량이 늘어나기 때문에 자주 점거을 해 주어야 한다.

참고문헌:레드햇 리눅스 9.x

'* DevSecOps > Linux' 카테고리의 다른 글

SetUID  (0) 2012.06.08
리눅스 파일 관리 2  (0) 2011.11.23
리눅스 파일 관리1  (0) 2011.11.20
Red Hat 9.x  (0) 2011.11.17