리눅스 파일 종류

Linux

0 views

1. 개요

  • 리눅스와 유닉스 계열의 운영체제의 핵심 철학은 “Everything is a file(모든 것은 파일이다)” 이다.
    • 운영체제는 하드웨어 장치, 프로세스 간 통신 채널, 디렉터리 등을 모두 파일과 동일한 인터페이스로 다룬다.
    • 리눅스 커널은 이것을 총 7가지 유형으로 구분하여 관리한다.

2. 동작 원리

  • 사용자가 보는 파일 이름이나 확장자는 껍데기에 불과하다
    • 리눅스 커널이 파일 종류를 식별하는 진짜 정보는 Inode 내부에 있다.

2.1 Inode 와 st_mode

  • 리눅스 파일 시스템의 메타데이터 저장소인 Inode에는 st_mode 라는 필드가 존재한다.
    • 이 필드의 비트 정보를 통해 커널은 해당 파일이 진짜 파일인지, 디렉터리인지 혹은 장치 파일인지 판단한다.
  • st_mode는 각 비트 영역마다 특정 정보를 의미하도록 설계되어 있다.

[Inode 구조]

  • 여기서 st_mode 는 File Mode에 속한다.
항목설명
File Mode파일의 종류(일반, 디렉터리, 소켓 등) 및 접근 권한(rwx)
Owner Info파일 소유자의 ID(UID) 및 그룹 ID(GID)
File Size파일의 전체 크기 (바이트 단위)
Timestamps접근(atime), 수정(mtime), 변경(ctime) 시간
Link Count해당 inode를 가리키는 하드 링크의 개수
Block Pointers실제 데이터가 저장된 디스크 블록의 주소 목록 (포인터)

[st_mode 비트 구조]

비트 범위설명주요 내용
12 ~ 15파일 종류 (File Type)일반 파일, 디렉토리, 심볼릭 링크, 장치 파일 등 구분
9 ~ 11특수 권한 (Special Bits)Set-UID, Set-GID, Sticky Bit 설정 여부
0 ~ 8접근 권한 (Permissions)소유자/그룹/기타 사용자의 읽기(r), 쓰기(w), 실행(x) 권한

2.2 식별자

  • ls -l 명령어를 입력했을 때 출력되는 권한 문자열 ( ex → drwxr-xr-x) 의 가장 첫 번째 글자가 바로 파일의 종류를 나타낸다.
    • 예: drwxr-xr-x → d (Directory)
    • 예: -rw-r--r-- → (Regular File)

3. 리눅스 파일 7가지 유형

  • 리눅스에서 정의하는 7가지 파일 종류는 다음과 같다.
기호파일 종류 (Type)설명 및 특징예시 경로
-Regular File
(일반 파일)텍스트, 이미지, 실행 파일, 라이브러리 등 가장 흔한 데이터 저장 파일./etc/passwd, /bin/ls
dDirectory
(디렉토리)다른 파일들의 목록(이름과 Inode 번호)을 담고 있는 논리적 컨테이너./home, /usr
lSymbolic Link
(심볼릭 링크)윈도우의 '바로 가기'와 유사. 원본 파일을 가리키는 포인터 역할을 한다./usr/bin/python
cCharacter Device
(문자 장치)데이터를 바이트 단위(Stream)로 순차 처리하는 장치.
버퍼를 사용하지 않는다./dev/console
(키보드, 마우스)
bBlock Device
(블록 장치)데이터를 블록 단위로 처리하며, 랜덤 액세스(Random Access)가
가능하다. 버퍼를 사용한다./dev/sda
(HDD, SSD, USB)
sSocket
(소켓)네트워크 통신이나 로컬 프로세스 간 통신(IPC)을 위한 접점 파일./var/run/docker.sock
pNamed Pipe / FIFO프로세스 간 통신(IPC)을 위해 생성된 파이프.
선입선출(First In First Out) 방식으로 데이터를 주고받는다.데이터베이스 파이프 등

4. 확인 방법 및 구문

4.1 ls -l 명령어로 확인하기

  • 출력 결과의 첫 글자를 확인한다.

    $ ls -ld /dev/sda /bin/bash /dev/tty
    b crw-rw---- 1 root disk 8, 0  Jan 1 12:00 /dev/sda  <-- 'b' (Block Device)
    - rwxr-xr-x 1 root root 1.2M Jan 1 12:00 /bin/bash <-- '-' (Regular File)
    c rw-rw-rw- 1 root tty  5, 0  Jan 1 12:00 /dev/tty  <-- 'c' (Character Device)
    

4.2 file 명령어로 확인하기

  • 파일 내부의 헤더를 분석해서 더 구체적인 정보를 알려준다.

    $ file /dev/sda
    /dev/sda: block special (8/0)
    

4.3 stat 명령어로 상세 정보 확인하기

  • Inode 정보와 파일 종류를 명확한 텍스트로 보여준다.

    $ stat /home
      File: /home
      Size: 4096      	Blocks: 8          IO Block: 4096   directory  <-- 종류 명시
    Device: 801h/2049d	Inode: 2           Links: 3
    

Loading comments...