IT 그리고 정보보안/Knowledge base 227

윈도우 파일시스템 종류

먼저 윈도우 파일 시스템에 대해 알아보자. 파일 시스템이란 파일의 이름을 정하고 저장, 검색을 위해서 논리적으로 어디에 위치 시켜야 하는지에 대한 방법을 구성한 시스템이다. 파일 시스템은 소프트웨어가 윈도우 파일 시스템은 크게 두가지가 있다. FAT와 NTFS FAT -> NTFS 로 발전하는 것이지만 알아두자. 아직도 FAT을 파일 시스템으로 사용하는 PC가 꽤있다. 1. FAT (File Allocation Table) 가장 먼저 사용된 윈도우 파일 시스템이다. FAT12 --> FAT16 --> VFAT --> FAT32 --> EXFAT 위와 같은 과정으로 발전하였다. FAT12는 1980년대 초에 개발된 플로피디스크용 파일 시스템이다. 지금은 당연히 안쓴다. FAT16은 1980년대 말에 개발된..

xinetd 데몬

기본 개념 같은건 다 안다고 가정하고 하는 방법만 설명하도록 하겠음. 차례대로 한번 살펴봅시다. 1. 서비스 등록할 프로그램 작성 아래와 같이 간단한 프로그램을 하나 만들어라. 그냥 컴파일 하고, 여기서 프로그램의 절대 경로를 pwd 명령으로 알아두면 좋다. 2. Xinetd 설치 여부 확인 및 설치 /etc/init.d 디렉토리에 가서 xinetd가 설치되어 있는지 확인하고 없으면 설치해야 한다. apt-get install xinetd로 설치하면 됩니당. 3. 서비스 등록 설치가 다되었으면 /etc/xinetd.d 디렉토리에 가서 서비스 등록할 이름으로 파일을 하나 만들고 아래와 같이 작성한다. ( cat > 하던지.. vi 쓰던지..) service [서비스 이름] { disable = no fla..

리눅스 환경의 프로세스(Process)

프로세스에 대해 알아보자. 실행 중인 프로그램을 프로세스라는 것을 알고 있을터, 프로세스를 테스크(task)라고 부르는 시스템도 있다. 이 녀석이 어떤식으로 메모리에 올라가고, 어떻게 구성되어 있는지에 대해 알아볼 참이다. 먼저 프로그램이 실행되면, 메모리에 로드가 된다. 메모리에 올라온 모습을 보면, PCB(Process Control Block) 과 프로그램이 올라와 있다. (메모리 로드 과정은 이미 여러번 설명했으니.. 블로그를 뒤져보시길..^.^) PCB란 프로세스에 대한 정보를 담고 있는 테이블이다. task_struct 라는 구조체를 참조하여 커널에 들어있는 프로세스에 대한 정보를 갖고온다. PCB에 들어있는 프로세스 상태에 대한 그림을 함보자. 먼저 프로세스가 생성되고 (new), 프로세스가..

리눅스 파일 시간값

리눅스 파일들이 가지는 시간에 관련된 값들에 대해 알아보자. 3가지의 값들이 있다. st_atime은 보다시피 마지막으로 접근한 시간이다. ls -u 옵션을 주면 접근 시간으로 정렬시킬 수 있다. 안쓰는 파일을 정리할 때 사용하면 편리하다. st_mtime과 st_ctime이 좀 헷갈릴 수 있다. mtime은 마지막으로 파일의 내용이 수정된 시간이고, ctime은 마지막으로 파일의 i-node값이 수정된 시간이다. 즉, 속성

하드 링크 / 심볼릭 링크

하드 링크와 심볼릭 링크는 쉽게 생각하면, 바로가기를 생성하는 것이다. 하지만 두가지는 차이점이 있음.. 먼저 하드 링크는 i-node를 공유해서 사용한다. 그 말은, 그냥 바로가기로써의 기능뿐 아니라 하드링크 파일이 수정되면 원본파일도 변경된다. 항상 같은 상태를 유지하는 것. 하드 링크는 같은 파일시스템에서만 생성가능하다. 그리고 디렉토리에 대한 하드링크는 관리자만이 생성할 수 있음. 또한 원본파일이 삭제되어도 하드링크에는 문제가 없다. 원본 파일의 i-node를 공유하기 때문이다. 동일한 i-node를 가르키고 하드링크를 생성하면 i-node의 link count 필드의 값이 하나 증가한다. 파일을 삭제할 때 실제 데이터 블럭에서 파일을 삭제하고자 하면 link count가 0이 되어야만 한다. (..

리눅스 프로세스의 파일 공유

저번에 리눅스에서의 파일 시스템에 대해 알아보았다. 하드디스크에 존재하는 "​파일"이 실행되면 "프로세스"가 되는 것은 알고 있을 것임. 이번에는 이 프로세스에 관한 얘기를 좀 해볼까 한다. 위 그림을 보면 실행파일과 일반 파일이 실행되고 open/read 작업에 의해 메모리에 올라가있는 상태를 볼 수 있다. 응? FCB, PCB는 뭐지. FCB는 File Control Block, PCB는 Process Control Block 이다. 이 녀석들은 메타데이터(meta data)라고 하는데, 메타데이터란, 실제 파일들을 관리하기 위해 가공된 정보이다. 얘내들은 커널 공간에 존재한다. 파일을 관리하기 위해서 이것저것 많은 내용을 내포하고 있음. 아래는 FCB에 들어 있는 내용이다. 프로세스는 하드디스크에 ..

아이노드 ( i-node )

아이노드에 대해 한번 알아보자. 리눅스에서 파일 시스템을 관리하기 위해 사용되는 개체의 일종이라고 보면된다. 아이노드는 파일의 정보를 갖고있다. 파일은 기본적으로 실제 파일의 데이터와 파일의 속성으로 이루어져 있다. 여기서 파일 속성을 가르키는 값을 아이노드(i-node) 라고 한다. 모든 파일들은 각자 1개의 아이노드를 갖고있다. 디렉토리도 물론 아이노드를 갖고있다. 아이노드가 가르키는 파일 속성에는 파일 크기, 접근 모드, 아이노드 넘버, 소유자 그룹 등의 정보가 들어있다. 이런 정보들을 담고있다. 다음은 아이노드 구조를 함 보자. 그림을 보면 알 수 있듯이, 아이노드는 아이노드 넘버 즉, 인덱스와 파일 속성으로 이루어져 있다. 인덱싱하는 건 아래에서 다시 자세히 얘기하겠다. 아래 그림은 하드디스크에..

strace, ltrace

strace (SystemCall Trace) 시스템 콜을 추적하는 명령어이다. 리눅스 상에서 작동하는 모든 프로그램은 시스템콜을 이용한다.(당연한;;) [succubus@localhost succubus]$ strace ./nightmara execve("./nightmara", ["./nightmara"], [/* 20 vars */]) = 0 brk(0) = 0x8049938 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0 x40014000 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.s..

PLT (Procedure Linkage Table), GOT(Global Offset Table)

PLT (Procedure Linkage Table) 한글 뜻대로 풀이하자면, 프로시져 연결 테이블이다. 사용자가 직접 제작한 프로시져인 경우 PLT를 참조한 호출이 불필요하지만 외부 라이브러리에서 땡겨와서 사용하는 프로시져인 경우 이 PLT를 참조하여 프로시져를 호출하게 된다. GOT(Global Offset Table) 프로시져들의 주소를 담고있는 테이블이다. 외부 프로시져를 호출할 때 PLT가 GOT을 참조하여 프로시져를 호출한다. LOB 이미지에서 예제 파일의 .plt와 .got를 readelf 명령으로 확인 해봤다. [gate@localhost gate]$ readelf -S gremlin2 | grep plt [ 9] .rel.plt REL 080482b0 0002b0 000030 08 A 4..

공유 라이브러리 (Shared Library)

앞전에 정적 라이브러리에 대해 알아봤다. 프로그램이 실행파일이 되면서 오브젝트 코드들이 포함되어 만들어져서 굉장히 비효율 적이라고 말한바 있다. 그럼 공유 라이브러리는??어떨까 공유 라이브러리는 프로그램 실행 파일에 라이브러리의 오브젝트 코드가 포함되는 것이 아니라 프로그램 실행 시에 필요한 오브젝트 코드를 참조하는 방식이다. 쉽게 생각하면 정적 라이브러리는 오브젝트 파일들을 "아카이브 파일"이라는 곳에 때려 넣어 모아둔다는 개념이고 공유 라이브러리는 오브젝트 파일들을 모아서 하나의 거대한 "오브젝트 파일"로 만들어 공유가 가능하게 만든 것이다. 굳이 그림을 그려주자면.. 공유 라이브러리 파일은 *.so 확장자를 가진다. 그럼 이번에는 공유라이브러리를 만들어보자. 생각보다 별거 없다. 먼저 라이브러리로 ..

반응형