ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파일 디스크립터 (FD)
    Linux 2020. 1. 4. 14:43

     

    리눅스/유닉스 시스템에서 파일을 참조할 때 사용하는 개념으로 각 프로세스에서 파일에 접근할 때 사용하는 추상적인 값이다. 일부 숫자만을 시스템에서 기본적으로 각 목적을 위해서 선점하고 있고 나머지는 각 상황에 따라서 변동되면서 사용한다.

    • 시스템에서 기본적으로 사용하는 함수 Open() / Read() / Write() 등에서 처리하기 위한 값
    • 3개 숫자(0,1,2)만 선점해서 시스템에서 사용하며, 그 외 예약 값은 없음.
    • 0 = stdin = 표준 입력 : 시스템 프로세스 동작을 위한 입력 값
    • 1 = stdout = 표준 출력 : 프로세스 정상 결괏값에 대한 표현
    • 2 = stderr = 표준 오류 : 프로세스 오류 결괏값에 대한 표현

    [File Descripter 개념 추가 예시]

     카페에는 많은 종류의 빵과 차가 있다. 예를 들어 '아몬드를 듬뿍 넣은 호두파이' / '레몬과 라임이 많이 들어가서 많이 상큼한 에이드' / '콩가루 집안처럼 재밌는 인절미 떡' 등이 있는데 어느 날 손님이 3개를 주문했다고 하자. 손님은 '아몬드를 듬뿍~' 2개와 '콩가루 집안처~' 1개를 주문했고 매번 이렇게 긴 이름이 사용되면 서로 짜증 나는 상황이 많이 생길 것이다. 이때 각 항목에 대한 임의의 번호를 부여해서 주문한다고 보면 어떨까?

                                     - '아몬드를 듬뿍 넣은 호두파이'                                  =1

                                     - '레몬과 라임이 많이 들어가서 마니 상큼한 에이드'        =2

                                     - '콩가루 집안처럼 재밌는 인절미 떡'                           =3 

    바뀐 주문지는 1번 2개, 3번 1개처럼 간단하게 끝날 것이다. 이게 바로 파일 디스크립터에 예시이다.

    "각 파일이나 항목들에 대하여 임의의 번호를 부여하고 접근/관리하고 기존에 이름을 사용하는 것보다 훨씬 빠르고 편하다."

     

    위에서 기본적인 개념에 대해 이해했다면 다음은 이미 선점되어있는 3개 항목이 어떻게 사용되는지 살펴보자.

    [File Descripter 0 = stdin = 표준 입력]

     기본적으로 키보드를 통해서 입력할 수 있는 상태를 의미한다. 즉, 사용자가 입력할 수 있는 모든 상태를 의미하며 CTF 문제에서는 고의적으로 입력 상태를 만들어 특정 문자열을 입력하면 권한을 취득하는 방향으로 많이 출제된다.

    [File Descripter 1 = stdout = 표준 출력]

    [File Descripter 2 = stderr = 표준 오류]

     위 2개는 각 의미대로 이해하면 되고, CTF 문제에서 출제되는 것보다는 일반적인 서버 관리 상황에서 발생하는 출력 값에 대한 리다이렉션 처리로 많이 사용된다. 주로 Cron을 통한 스케줄 처리에서 사용되는 경우가 많은데 아래 같은 형식이다.

    '# ls -l /usr/bin >> result.txt 2>&1'

    /usr/bin에 대한 출력을 result.txt에 저장하며, 표준 오류에 관한 것은 표준 입력으로 리다이렉션 하여 처리한다.

    기본적인 출력이 표준 출력 1로 설정되어 있기 때문에, 구문 안에 별도로 기재해줄 필요는 없다.

     

     

    이처럼 File Descripter에 대한 내용을 숙지하면, 명령어에 대한 출력 결과를 유동적으로 처리할 수 있고 CTF에서도 간헐적으로 개념이 포함되므로 이해하고 넘어가도록 하자.

    'Linux' 카테고리의 다른 글

    [Linux] rsyslog 원격 로깅 구성하기  (0) 2020.05.11
    Bulit-In Command  (0) 2020.01.22
    [CentOS][7.5] Virbr 인터페이스 제거  (0) 2019.11.28
    [CentOS][7.5] Interface 형식 변경하기  (0) 2019.11.18
    [CentOS][7.5] 설치하기  (0) 2019.09.24

    댓글

Designed by Tistory.