ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 디렉토리 구조
    리눅스 2014. 7. 4. 14:16

    대부분의 리눅스는 FHS(Filesystem Hierarchy Standard) 표준 파이 시스템 게층을 사용하고 같은 목적의 파일들은 같은 장소에 일관되게 모아 관리하므로 시스템에 자원이나 프로그램들을 쉽게 찾을 수 있다.


    $ /bin

    Binaries의 약어로 이진 파일들이며 리눅스에서 가장 기본이 되는 명령어들이 모여 있는 디렉토리이다. 디렉토리의 파일들을 보면 대부분이 실행 파일임을 알 수 있다. 또한 이곳에는 부팅에 필요한 명령어들이 위치하여 부팅후에 시스템의 계정 사용자들이 사용할 수 있는 일반적인 명령어들로 위치 하고 잇다.


    $ /etc

    이 디렉토리는 리눅스 시스템에 관한 각종 환경 설정에 연관된 파일들과 디렉토리들을 가진 디렉토리이다. 대부분의 이 디렉토리의 파일들은 시스템 관리자에 의해 관리되는 파일들이다. 웹 서버 환경 설정, 시스템 계정 사용자 정보, 패스워드 관리, 시스템의 파일 시스템 관리 파일, 여러가지 시스템 보안에 관련된 팡리들, 시스템 초기화 설정 파일, TCP/IP 설정 파일 등 시스템 전반에 걸친 거의 모든 환경 설정 파일들이 모두

    이 디렉토리에 있다.


    $ /etc/rc.d

    시스템의 부팅과 시스템 실행 레벨 변경시에 실행되는 스크립트들이 저장되어 있는 디렉토리이다. 리눅스의 6가지 실행 레벨로 각각 의 해당 디렉토리가 있다.


    $ /ect/shadow

    파일에서 패스워드 부분만을 따로 저장하는 파일이다. 이 파일에 패스워드는 암호화 되어 셰도우 패스워드 형태로 저장디어 있으며 시스템 관리자만이 접근할 수 있기 때문에 크래킹 등에 대한 우려가 상대적으로 적다.


    $ /etc/group

    시스템의 그룹에 대한 정보를 저장하고 있는 파일이다.


    $ /etc/inittab

    init를 설정하는 파일이다.


    $ /etc/issue , /etc/issue.net

    getty에 의해서 로그인으 위한 프롬프트가 뜨기 전에 출력되는 메시지를 설정하는 파일이다. 리눅스 시스템으로

    접속할 경우 가장 처음으로 볼 수 있는 메시지이다. 보통 시스템에 대한 설명과 각종 환영 메시지를 전달하기 위해서 사용된다. issue 파일의 내용은 보통 시스템의 터미널에서 볼 수 있다. 그리고 

    /etc/issue.net 파일의 내용은 리모트상에서 시스템으로 접속할 경우 볼 수 있다.


    $ /etc/motd

    'Message of the day'의 약자로 시스템으로의 접속에 성공할 경우 쉘이 뜨기 전에 출력되는 메시지를 설정하는 파일이다.


    $ /etc/profile, /etc/csh.login, /etc/csh/cshrc

    시스템이 시작될 때 사용자가 로그인을 할 때 본쉘이나 C쉘에 의해서 실행되는 스크립트 파일이다 일반적으로 사용자들에 대한 기본 환경 설정에 사용된다.


    $ /etc/securetty

    시스템 관리자가 시스템에 로그인할 수 있는 안전한 터미널에 대한 정보가 저장되어 있다. 일반적으로 가상콘솔이 설정되어 있다. 이것은 네트워크를 통해 시스템으로 침입해 시스템 관리자의 권한을 획득하는 크랙킹을 막기 위해서이다.


    $ /etc/shell

    시스템에서 안정적으로 사용할 수 있는 쉘에 대한 정보를 저장하고 있는 파일디ㅏ. 만약 chsh명령을 사용해 사용중인 쉘을 바꾸려면 이 파일에 저장되어 있는 쉘중에 선택해야한다. 또한 ftp데몬의 경우 사용자의 쉘을 검사하여 /etc/shell에 저장되어 있지 않은 쉘을 사용한다면 로그인을 허용하지 않는다.


    $ /boot

    리눅스 커널이 저장되어 있는 디렉토리로서 가종 리눅스 boot에 필요한 booting지원 파일들이 저장되어 있는 디렉토리이다.


    $ /mnt

    외부 장치인 플로피 디스크, 시디롬, 삼바등을 마운트하기 위해서 제공되는 디렉토리이다. 임시로 사용되는 디렉토리이므로 프로그램들은 /mnt에 어떤 파일 시스템이 마운트 되엇는지 자동으로 인식하지 않는다.

    또한 /mnt는 보통 여러 개의 하위 디렉토리로 나누어 사용되고, 평소에는 각 디렉토리들은 비어 있다.


    $ /usr

    시스템에 사용되는 각종 프로그램들이 설치되는 디렉토리이다. 프로그램과 관련된 명령어 마치 라이브러리들이 이 디렉토리에 위치 하게 된다. 또한 X 시스템관련 파일들과 리눅스 커널 소스, 각종 C언어 관련 해더 파일 등도 이 디렉토리 안에 저장되어 있다.


    $ /usr/bin

    리눅스 시스템에서 사용되는 각종 프로그램들이 저장되어 있으며 /bin 디렉토리에 없는 다양한 실행 파일들이 저장되어 있는 디렉토리이다.


    $ /usr/X11R6

    X 윈도우 시스템에 사용되는 모든 파일들이 이 디렉토리 안에 저장된다. 이 디렉토리는 X 윈도우 시스템의 개발과 설치를 좀더 쉽게 하기 위해서 전체 시스템 디렉토리 구조에 통합되지 않고 독자적인 구조를 가진다.


    $ /usr/etc

    /etc 디렉토리에는 각종 환경 설정 파일들이 있듯이 이곳에도 여러 가지 스템 환경 설정 파일들이 저장되어 있다. /usr/etc 파일들은 /etc디렉토리 안의 파일들과 달리 꼭 필요한 파일들은 아니다.


    $ /usr/sbin

    시스템 관리자를 위한 명령어들이 저장되는 디렉토리이다. 보통 이 디렉토리의 명령어들은 루트 파일 시스템에는 필요가 없는 서버 프로그램들이 저장된다.


    $ /usr/include

    C언어 관련 해더 파일들이 저장되어 있는 디렉토리이다.


    $ /usr/lib

    각종 라이브러리들이 저장되어 잇는 디렉토리이다. 만약 사용자가 직접 작성한 프로그램을 컴파일한다면 해당 프로그램은 /usr/lib 디렉토리의 파일에 link된다. 또한 이 라이브러리 안에 실행 코드가 필요하다면 /lib 디렉토리를 참조한다.


    $ /usr/local

    시스템의 특정적인 프로그램들이 저장되는 디렉토리이다. 특정적인이란 시스템 관리자에 의해서 따로 설치되는 프로그램들을 말한다.


    $ /usr/man

    man페이지의 실제 내용들이 저장되어 있는 디렉토리이다. 디렉토리를 살펴보면 man1, man2. man3, 등과 같이 여러개의 디렉토리들로 나누어져 있는 모습을 볼수 있다.


    $ /usr/src

    시스템에서 사용하는 각종 프로그램들의 컴파일되지 않은 소스 파일들이 저장되어 있다. /usr/src/linux 디렉토리가 바로 리눅스의 커널소스를 저장하고 있는 디렉토리이기 때문이다.


    $ /usr/X386

    /usr/X11R6 디렉토리와 유사한 티렉토리로 X11 Release 5를 위한 디렉토리이다.


    $ /usr/info

    GNU info 문서들을 저장하고 있는 디렉토리이다.


    $ /usr/doc

    각종 문서들이 저장되어 있는 디렉토리이다.


    $ /lib

    프로그램들의 각종 라이브러리들이 존재한다. 대부분 공유 라이브러리로 더 편하게 사용할 수 있으며, 파일의 크기를 줄여서 실행할 때 불러 사용하게 된다. /lib/moudles 디랙토리에는 커널로 로딩 가능한 커널 모듈들이 저장되어 있다.


    $ /home

    시스템 계정 사용자들의 홈 디렉토리와 ftp,www,등과 같은 서비스 디렉토리들이 저장된다. 이 디렉토리는 물리적인 용량은 갖지 않는 가상 디렉토리이다. 대표적으로는 하드 드라이브, 플로피, 씨디롬 그리고 루프팩장치 등이 존재한다. 리눅스 시스템은 윈도우와 달리 각종 디바이스 장치들을 하나의 파일로 취급한다. 따라서 시스템은 각각의 장치들로부터의 정보를 /d 디렉토리에 존재하는 해당 장치 파일로 부터 가지고 온다.


    $ /dev/console

    시스템의 콘솔이다.


    $ /dev/ip

    시스템의 병렬 포트 장치들이다.


    $ /dev/null

    이 디렉토리는 블랙홀이라고도 부르는 특별한 장치이다. 이장치로 데이터 등을 보내면 모두 폐기되므로 주의해야 할 것이다.


    $ /dev/pty

    시스템으로의 원격 접속을 위한'pesudo-terminal'들이다. 만약 시스템 계정 사용자들이 원격지에서 시스템으로 텔넷등을 이용하여 시스템에 접속을 시도한다면 이들은 /dev/pty 디바이스들을 사용하게 되는 것이다.


    $ /dev/sda

    SCSI 장치들이다. 만약 시스템에 스카시 하드 디스크를 장착했다면 시스템은 /DEV/SDA 파일에서 정보를 얻어 장치에 접근할 것이다.


    $ /dev/ttyS, /dev/cuaS

    /dev/ttyS은 직렬포트 장치들이고, /dev/cauS는 Callout. 장치이다.


    $ /dev/tty

    시스템의 가상콘솔들이다. 이 가상 콘솔의 기능은 하나의 화면에 여러 개의 콘솔들을 만든다. 만약 사용자가 시스템 앞에 앉을 수 있다면, Alt + F1, Alt + F2등을 이요하여 리눅스에 제공한 여러개의 가상 콘솔을 직접 볼수 있을 것이다.


    $ /proc

    시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어적인 정보들이 저장된다. 이 티렉토리는 가상 파일 시스템으로 가상 파일  /dev와 마찬가지로 하드 시스크상에 물리적인 용량을 갖지 않는다. 즉 디렉토리에 존재하는 파일들은 실제 하드 디스크에 저장되지 않고 커널에 의해 메모리에 적재 된다. 디렉토리 안의 파일들은 현재의 시스템 설정을 보여 주는 것이다.


    $ /proc/cpuinfo

    프로세서의 정보를 저장하고 있는 파일이다. cpu의 타입, 모델, 제조회사, 각종 성능 등의 정보를 제공하여 준다.


    $ /proc/devices

    현재 시스템 커널에 설정되어 있는 장치들에 대한 정보를 저장하고 있다. 파일등의 정보로 모든 시스템의 장치 목록에 대한 정보를 얻을 수 있다.


    $ /proc/dma

    현재 시스템에서 사용하고 있는 DMA 채널에 대한 정보를 저장하고 있다.


    $ /proc/filesystem

    시스템에 설정되어 잇는 파일 시스템에 대한 정보를 저장하고 있는 파일이다.


    $ /proc/interrupts

    현재 사용중인 인터럽트와 인터럽트의 사용량에 대한 정보를 저장하고 있는 파일이다.


    $ /proc/ioports

    현재 사용중인 I/O 포트에 대한 정보를 저장하고 있는 파일이다.


    $ /proc/kcore

    현재 시스템에서 사용중인 메모리의 실제 이미지이다. 이 파일은 실제 메모리의 내용을 모두 가진 것처럼 보이지만 프로그램이 필요로 하는 부분의 이미지만을 필요할 때 만들어 제공한다.


    $ /proc/kmsg

    커널에 의해서 출력되는 메시지들을 저장하고 있는 파일이다. 이것은 또한 syslog 파일에도 저장된다.


    $ /proc/loadavg

    현재 시스템의 평균 부하량에 대한 정보를 저장하고 있는 파일이다. 이 파일을 통해서 시스템이 현재 수행해야 하는 일이 얼마나 많은지를 알려주는 3가지 지표에 대한 정보를 얻을 수 있다.


    $ /proc/meminfo

    현재 시스템이 사용중인 메모리의 사용량을 저장하고 있는 파일이다. /proc/meminfo에서 실제 메모리는 물론 가상 메모리에 대한 정보도 얻을 수 있다.


    $ /proc/self

    이 디렉토리를 보고 잇는 프로그램 자신의 프로세스 디렉토리로 링크되어 있다. 만약 서로 다른 2개의 프로세스가 /proc 디렉토리를 보고 있다면 두 프로세스는 서로 다른 링크를 보게 된다 이를 통해서 프로그램들이 자신의 프로세스 디렉토리를 쉽게 찾을 수 있다.


    $ /proc/stat

    시스템의 현재 상태에 대한 다양한 정보를 저장하고 있는 파일이다.


    $ /proc/stat

    시스템의 현재 상태에 대한 다양한 정보를 저장하고 있는 파일이다


    $ /proc/uptime

    시스템이 얼마나 오래 동작했는지에 대한 정보를 저장하고 있는 파일이다.


    $ /proc/version

    시스템이 현재 사용중인 커널 버전에 대한 정보를 저장하고 있는 파일이다.


    $ /var

    시스템에서 사용되는 동적인 팡리들이 저장된다. 각종 시스템 로그 파일, 사용자 로그인에 대한 보안기록, 메일서버를 운영한다면 사용자들에게 전송된 메일들을 임시로 저장한다.


    $ /var/cache

    포멧된 메뉴얼 페이지들이 잠시 대기(Cache)하기 위한 디렉토리이다.


    $ /var/lib

    시스템이 동작하면서 계속 수정하고 변경되는 파일들을 위한 디렉토리이다.


    $ /var/local

    /usr/local 디렉토리에 설치된 프로그램들의 각종 데이터들이 저장되는 디렉토리이다.


    $ /var/lock

    잠금 파일들이 저장되는 디렉토리이다. 프로그램들이 특정한 장치나 파일들을 프로그램 자신이 독점적으로 사용하려 할 때 /var/lock 디렉토리에 잠금 파일을 만들어 사용하게 된다. 그렇기 때문에 다른 프로그램들은 장치나 파일을 사용하기 전에 우선 이 디렉토리의 내용을 조사하여 해당 장치나 파일들이 사용중인지 확인하게 된다.


    $ /var/log

    프로그램들의 로그 파일들이 저장되는 디렉토리이다. 이 디렉토리에 wtmp파일은 login 파일과 message파일은 syslog 의 로그 파일이다. wtmp는 시스템의 모든 사용자 로그인과 로그 아웃에 대한 정보를 저장하고 있는 파일이고,messages는 커널과 시스템의 모든 출력 메시지를 저장하고 잇는 파일이다. /var/log 안의 파일들은 시스템의 사용량에 따라 그 크기가 무한대로 증가할 수 있으므로 정기적으로 파일들을 삭제하는 등 디렉토리 관리가 필요하다.


    $ /var/run

    시스템의 현재 정보들을 저장하고 잇는 디렉토리이다 /var/run/xinetd.pid 파일의 경우 현재 사용중인 xinetd 데몬의 프로세스 번호를 저장하고 있다.


    $ /var/spool

    메일이나 뉴스, 프린터 큐 등과 같은 시스템상에서 대기 상태에 있는 작업들을 위한 디렉토리이다. 각각의 대기 작업들은 모두 /var/spool 아래 고유의 디렉토리에 위치하게 된다. 예를 들어 시스템의 계정 사용자들의 메일은 /var/spool/mail에 저장된다.


    $ /var/tmp

    /tmp에 저장된 임시 파일들중에 오래 보관되어야 할 임시 파일들이 저장되는 디렉토리이다.


    $ /tmp

    이름에도 알 수 있듯이 임시 파일들을 위한 디렉토리이다.


    $ /root

    시스템 관리자의 홈 디렉토리이다.


Designed by Tistory.