Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study_note

[Docker] 컨테이너 기반 기술_ chroot 본문

Docker

[Docker] 컨테이너 기반 기술_ chroot

Study_note 2021. 11. 17. 22:38

 

chroot란?

Change Root Directiory의 줄임말로 현재 프로세스와 자녀 프로세스의 루트 디렉터리를 변경하는 작업이다.

chroot를 이용해 변경된 루트 디렉토리에서는 그 상위에 디렉터리에 파일 및 명령에 접근할 수 없게 격리시킬 수 있다.

이렇게 변경된 환경을 chroot jail이라고 부른다.

 

 

 

 

우선 root에서 newroot 디렉토리와 그 안에 bin, lib, lin64 3개의 디렉터리를 생성해준다

명령어는 mkdir -p /root/newroot/{bin,lib,lib64}

 

bash, ls 명령어를 사용하면  다음과 같은 에러가 생성될 것이다

chroot /root/newroot/bin/bash (해당 디렉터리에서 /bin/bash 실행)

chroot: failed to run command '/bin/bash': No such file or directory

 

그 이유는 명령어들은 기존 루트가 아닌 생성한 루트 디렉터리를 기준으로 하기 때문이다

따라서 /bin/bash 또는 ls 명령어를 사용하려면 기존 루트에 있는 라이브러리 파일들을 복사해서 bin 파일로 담아줘야 한다

 

ldd 명령어를 사용하여 공유 라이브리의 경로를 찾고 아래같이 bash와 ls의 라이브러리를 생성했던 newroot로 복사해준다

ex) cp /lib/x86_64-linux-gnu/libtinfo.so.5  /root/newroot/lib/x86_64-linux-gnu/libtinfo.so.5            (체크한 부분)                                              (체크한부분)       

복사하고 tree. 명령어를 통하여 디렉터리를 보면 아래와 같다

확인하고 방금 사용했던 chroot 명령어를 다시 사용하면 chroot /root/newroot/bin/bash 아래처럼 bash, ls가 실행되고 newroot 디렉터리로 이동한 것을 확인할 수 있다

 

여기서 중요한 것은 /newroot의 상위 디렉터리로는 접근이 불가능하다는 것이다!

또한 chroot 프로세스도 일종의 컨테이너라고 이해하면 될듯하다

Comments