1. 도커란?

  리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트 

  (출처 : 위키백과)

 

2. 설치 

  해당 명령을 우분투 터미널(Terminal)에 입력 한다. 

 

    #저장소 정보 최신화

  2.1 sudo apt-get update

 

    # 도커 작동에 필요한 패키지 설치 

  2.2 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

   

    # Docker GPG 키 추가

  2.3 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

    #도커 저장소 정보 추가(arch=값은 설치 환경에 따라 다름) 

  2.4 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

    

    #도커 저장소 정보를 추가 했기 때문에 실행 해야 도커 관련 정보 수집 가능 

  2.5 sudo apt-get update

    

    #도커 최신 버전 설치 

  2.6 sudo apt-get install docker-ce docker-ce-cli containerd.io

 

 3. 명령어 

    링크 참조 =>  docs.docker.com/engine/reference/commandline/docker/

 

docker

docker: The base command for the Docker CLI.

docs.docker.com

 

설치 방법 참조

  => docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

   

 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[tip] ptrace operation not permitted 해결 방법  (0) 2018.07.14
[tip] echo $?  (0) 2018.06.30
[Theory] ELF 파일 형식  (0) 2018.01.10
[Theory] LD_PRELOAD 환경 변수  (0) 2018.01.08
[Theory] /proc  (0) 2018.01.08

$ sudo bash
# echo 0 > /proc/sys/kernel/yama/ptrace_scope 


명령을 입력 하면 에러를 해결 할 수 있다. 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Docker] Ubuntu에서 도커(Docker) 설치하기  (0) 2021.01.08
[tip] echo $?  (0) 2018.06.30
[Theory] ELF 파일 형식  (0) 2018.01.10
[Theory] LD_PRELOAD 환경 변수  (0) 2018.01.08
[Theory] /proc  (0) 2018.01.08

$? 쉘 변수는 쉘 세션에서 실행한 마지막 프로세스의 종료 코드를 리턴한다. 


1. ET_NONE : 파일은 앚기 정의되지 않았거나 알수 없다는 의미 

2. ET_REL : 재배열이 가능한 파일 형식으로 아직 실행 파일에 링킹되지 않은 상태

3. ET_EXEC : 실행 파일 형식으로 엔트리 포인트 포함

4. ET_DYN : 고유 오브젝트 파일 형식으로 동적 링킹이 가능한 오브젝트 파일

5. ET_CORE : 코어 파일 형식으로 프로세스 이미지의 전체 덤프 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[tip] ptrace operation not permitted 해결 방법  (0) 2018.07.14
[tip] echo $?  (0) 2018.06.30
[Theory] LD_PRELOAD 환경 변수  (0) 2018.01.08
[Theory] /proc  (0) 2018.01.08
[Tip] fork vs vfork  (0) 2018.01.06

1. LD_PRELOAD 환경 변수

 

  다른 라이브러리보다 먼저 동적으로 링크하도록 라이브러리 경로를 지정하는데 사용한다. 공유 라이브러리 함수를 리디렉션해 런타임 패치를 수행하며, 안티 디버깅 코드 우회와 사용자 레벨 루트킷에 사용된다.

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[tip] echo $?  (0) 2018.06.30
[Theory] ELF 파일 형식  (0) 2018.01.10
[Theory] /proc  (0) 2018.01.08
[Tip] fork vs vfork  (0) 2018.01.06
[Tip] vi 설정  (0) 2018.01.06

 

1. /proc/[pid]/maps

 -> 각 메모리 매핑을 표시해 프로세스 이미지에 대한 레이아웃을 가지며, 실행 파일, 공유 라이브러리, 스택, 힙, VDSO 등이 포함된다.

 

2. /proc/kcore

 -> GDB에서 커널 디버깅등 분석을 목적으로 사용할 수 있는 ELF 코어 파일 형태인 로무 메모리 덤프이다.

 

3. /boot/System.map

 -> 전체 커널의 모든 심볼을 가지고 있다.

 

4. /proc/iomem

 -> /proc/[pid]/maps 와 유사하지만 시스템 메모리 전체 정보가 포함되어 있다.

 

 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Theory] ELF 파일 형식  (0) 2018.01.10
[Theory] LD_PRELOAD 환경 변수  (0) 2018.01.08
[Tip] fork vs vfork  (0) 2018.01.06
[Tip] vi 설정  (0) 2018.01.06
[Theory] Kernel  (0) 2018.01.06

  fork와 vfork의 차이점은 무엇일까?

  두 함수 모두 프로세스를 생성한다. fork 함수의 경우 부모 프로세스의 주소 공간을 복사하여 자식 프로세스의 주소 공간을 생성한다. 만약 fork 함수 이후 exec 계열의 함수를 호출 하는 경우 이전에 복사한 주소 공간은 의미가 없게 된다. 이런 문제를 해결하기 위해 제공되는 것이 vfork 함수이다. 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Theory] LD_PRELOAD 환경 변수  (0) 2018.01.08
[Theory] /proc  (0) 2018.01.08
[Tip] vi 설정  (0) 2018.01.06
[Theory] Kernel  (0) 2018.01.06
[Command] dig  (0) 2017.12.29

  리눅스 환경에서 개발할때 vi를 사용하지만 기본 옵션으로 사용 한다면 불편한 부분이 많다. vi를 이용하여 개발 할때 조금이라도 편리하게 하기 위해 다음과 같은 옵션을 설정한다. vimrc 파일에 아래 그림과 같은 옵션을 입력합니다. 



  설정 완료 후 아래 그림과 같은 변화를 확인 할 수 있습니다. 




'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Theory] /proc  (0) 2018.01.08
[Tip] fork vs vfork  (0) 2018.01.06
[Theory] Kernel  (0) 2018.01.06
[Command] dig  (0) 2017.12.29
[Tip] vi editor  (0) 2017.12.29

 리눅스는 내부 커널 정보를 확인 할 수 있으며 커널 소스 코드 관련 디렉터리 구조는 다음과 같다.


1) kernel

  태스크 관리자가구현된 디렉터리이며 태스크의 생성과 소멸, 프로그램의 실행, 스케줄링, 시그널 처리 등의 기능이 포함되어 있다. 


 2) arch

  하드웨어 종속적인 부분들이 포함되어 있다. arch 폴더 내 boot 폴더는 시스템의 부팅 시 사용되는 내용등을 포함하며 kernel 폴더는 태스트 관리 자 중 문맥 교환이나 쓰레드 관리 기능을 포함한다. mm 폴더의 경우 메모리 관리 자 중 페이지 부재 결함 처리 기능이 포함되어 있으며 lib 폴더는 커널이 사용하는 라이브러리 함수가 구현되어 있다. 


 3) fs 

  리눅스에서 지원하는 파일 시스템과 open(), read(), write() 등의 시스템 호출이 구현되어 있다. 


 4) driver 

  리눅스에서 지원하는 디바이스 드라이버가 구현되어 있다. 블록 디바이스 드라이버, 문자 디바이스 드라이버, 네트워크 디바이스 드라이버 등이 포함 된다. 


 5) net 

  리눅스가 지원하는 통신 프로토콜이 구현되어 있다. 


 6) init 

  커널의 메인 시작 함수가 포함되어 있다. 


 7) include 

  리눅스 커널이 사용하는 헤더 파일들이 구현되어 있다. 


리눅스 커널은 다음 3단계로 구성된다. 


1. 커널 구성

  현재 시스템에 존재하는 하드웨어 특성, 커널 구성 요소, 네트워크 특성 등의 정보를 커널에게 알려주는 과정


 2. 커널 컴파일

  소스 코드를 이용하여 실행 가능한 커널을 만드는 과정


 3. 커널 인스톨

  새로 생성된 커널로 시스템이 부팅 될 수 있도록 만드는 과정 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] fork vs vfork  (0) 2018.01.06
[Tip] vi 설정  (0) 2018.01.06
[Command] dig  (0) 2017.12.29
[Tip] vi editor  (0) 2017.12.29
[Command] GDB Find  (0) 2017.12.29

DIG( Domain Information Groper ) 는 DNS 네임 서버에 쿼리를 보내기 위해 사용하는 툴이다.
DIG 툴의 사용 방법은 다음과 같다.


 

dig @[server] [name] [type]

[server] 네임 서버의 아이피 또는 도메인을 명시
[name] 도메인 정보
[type] a : 네트워크 주소
           any : 지정한 도메인의 모든정보 출력
           mx : 지정한 도메인의 메일 정보
           ns : 네임 서버
           soa : soa 정보
           hinfo : HINFO 레코드 정보

 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] vi 설정  (0) 2018.01.06
[Theory] Kernel  (0) 2018.01.06
[Tip] vi editor  (0) 2017.12.29
[Command] GDB Find  (0) 2017.12.29
[Tip] EggShell  (0) 2017.12.29

+ Recent posts