Infra/Linux

Linux | 리눅스 디렉토리

Greta Lee 2021. 9. 5. 23:16
SMALL

리눅스 디렉토리

리눅스 OS를 설치하면 기본적으로 디렉토리가 생성되는데, 각 디렉토리는 특정 역할을 담당한다.

 

목차

1. 리눅스 디렉토리 구조

2. 리눅스 디렉토리 역할

  2.1 최상위 디렉토리

  2.2 시스템 운영 관련 디렉토리

  2.3 메모리 관련 디렉토리

  2.4 사용자 디렉토리

  2.5 하드웨어 디바이스 디렉토리

 


1. 리눅스 디렉토리 구조

리눅스 운영체제가 설치되면 기본적으로 디렉토리가 생성된다. 기본적으로 리눅스는 리눅스 파일시스템 계층구조 표준(FHS: Filesystem Hierarchy Standard)에 맞춰 계층적 디렉토리 구조를 갖는다. 디렉토리 안에 또다른 서브 디렉토리가 존재하고, 서브 디렉토리 안에 또다시 서브 디렉토리가 존재하는 계층적인 구조이다.

이처럼 리눅스는 디렉토리를 파일시스템 구조로 가지며, 계층 구조를 갖는다고 하여 트리 구조라고 부르기도 한다.

출처 : http://beyondthegeek.com/2016/08/24/linux-hierarchy-structure/

 


2. 리눅스 디렉토리 역할

2.1 최상위 디렉토리

  • / : 디렉토리가 시작되는 최상위 디렉토리를 root file system이라고 부른다.

2.2 시스템 운영 관련 디렉토리

다음은 리눅스 시스템이 운영될 때 사용되는 디렉토리들이다.

  • /bin : 리눅스 기본 명령어
  • bin은 binary(이진)라는 뜻으로 '실행 명령어'라는 의미를 가지고 있다. ls, pwd, rm, vi, ps, date 등과 같은 리눅스의 기본적인 명령어가 저장되어 있는 공간이다.
  • /sbin : 리눅스 시스템 관리용 명령어
  • sbin은 system binary라는 뜻으로 시스템을 운영하는 데 필요로하는 명령어가 들어 있다. useradd, usermod, userdel과 같은 시스템의 계정 관리 명령어나 lvremove, lvreduce, lvrename과 같은 디스크 관리 명령어와 같이 시스템을 관리해주는 명령어가 속한다. 그렇기 때문에 대부분 일반 유저는 사용할 수 없고 root 사용자 전용 명령어들이라고 보면 된다.
  • /usr : 애플리케이션이나 유틸리티 설치 디렉토리
  • 설치된 애플리케이션이나 리눅스 운영체제를 관리해주는 유틸리티 프로그램들이 존재한다. 사실 /bin, /sbin, /lib 디렉토리는 존재하지 않고 실제 원본 위치는 /usr/bin, /usr/sbin, /usr/lib와 같이 /usr 디렉토리 아래에 존재한다. 이는 예전 리눅스 버전과 현재 리눅스 버전의 호환성 때문이다. 예전 리눅스 버전에서는 /bin에 시스템의 최소 명령어가 들어 있었고, 그 외 명령어는 /usr/bin에 존재했다. 그런데 현재 리눅스 버전에서는 /usr/bin에 최소 기본 명령어와 추가 명령어를 한 데 모아놓고 /bin에 링크만 만들어준 구조이다. 과거에 두 곳으로 나누어 관리하던 것을 /usr의 하위 디렉토리로 합쳐, /usr/bin에는 기본 명령어, /usr/sbin에는 시스템 관리용 명령어, 이러한 수많은 명령어들이 운영되기 위해 필요한 라이브러리(확장자 .so 파일)는 /usr/lib, /usr/lib32, /usr/lib64, /usr/libx32에 관리한다.
  • /etc : 시스템 설정 파일
  • 로그인 가능한 유저들의 정보가 있는 /etc/passwd, hostname 정의해주는 /etc/hostname, 웹 서버의 설정 파일인 /etc/httpd/conf.d/httpd.conf 등의 설정 파일이 ASCII text 파일로 존재한다. text 파일은 사람이 알아볼 수 있기 때문에 시스템 관리자가 설정 파일을 수정할 수 있다.
  • /var : 빠르게 변하는 파일들이나 애플리케이션 데이터
  • var는 variable을 의미하며 시스템 입장에서는 굉장히 중요한 디렉토리이다. /var/log 파일에 누가, 언제 시스템에 접속해서 무엇을 했는지 전부 다 로그 기록으로 남겨지기 때문이다. 따라서 해킹을 당했을 때 가장 먼저 확인해보아야 하는 것이 /var/log 파일이다. /var 디레고리가 꽉 차버리면 시스템에 부팅이 안 될 수도 있다. 시스템 부팅시 로그를 남겨야 하는데 /var 디렉토리가 꽉 차게 되면 로그를 남길 수 없기 때문이다. /var/mail은 메일 사서함이다. 사용자 계정으로 메일이 도착하면 이 파일에 쌓인다. 이밖에도 /var에는 수많은 애플리케이션의 데이터 파일이 위치한다.
  • /tmp : 임시 디렉토리. 잠깐 파일이 만들어졌다가 사라지는 임시 성격을 가진 공간이다. 로그인할 때 만들어진 파일이나 애플리케이션에 의해 만들어진 파일들이 존재한다. 참고로 최근의 리눅스에서는 /tmp 외에도 /run 디렉토리를 사용하여 임시 파일을 저장한다. 대부분의 임시 파일들은 소켓 파일이다.

2.3 메모리 관련 디렉토리

하드디스크에 존재하는 프로그램은 메모리로 올라가서 동작한다. 이때 /proc과 /sys는 현재 리눅스 시스템이 사용하고 있는 메모리 공간을 (하드)디스크처럼 보여준다. 이러한 공간을 RAM 디스크라고 표현하기도 하는데, 사용자가 디렉토리를 확인하는 시점마다 실시간으로 메모리 정보를 dump를 떠서 디스크처럼 보여준다. /proc은 메모리에 있는 프로세스 정보를, /sys는 메모리에 있는 하드웨어 정보를 담고 있다. 따라서 시스템 운영자에게 중요한 디렉토리이다.

  • /proc : 메모리에서 동작 중인 프로세스 정보 확인
  • 현재 동작 중인 프로세스에게 할당한 시스템 정보를 담고 있다.
  • /sys : 메모리에 있는 시스템 하드웨어 정보나 가상 파일 시스템들
  • device, bus, block 등의 하드웨어 정보가 들어 있다.

2.4 사용자 디렉토리

  • /root : 시스템 최고 관리자인 root 사용자의 홈디렉토리
  • root로 로그인하면 /root 위치로 로그인된다.
  • /home : 일반 사용자들의 홈디렉토리
  • /home에는 username에 해당하는 디렉토리가 존재한다. greta라는 계정이 생성되면 /home/greta 디렉토리가 생성되고, greta로 로그인시 항상 /home/greta 위치로 로그인된다.

2.5 하드웨어 디바이스 디렉토리

리눅스나 유닉스는 모든 것을 파일로 관리한다. 키보드, 마우스, 메모리, cpu, 모니터 터미널, 디스크 등과 같은 하드웨어 장치는 포인터 파일로 관리한다.

  • /dev : 하드웨어 장치 파일
  • 현재 리눅스 시스템이 인식한 하드웨어 장치의 포인터 파일 목록이 존재한다.

 

 

SMALL