ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker) chroot (Change Root) 실습해보기
    Cloud/Docker 2022. 9. 27. 21:13
    실습 환경 : AWS Console (2022/09), Visual Studio Code
    실습 목적 : 리눅스 컨테이너 기술기반인 chroot 명령을 익혀보기

    chroot

    • Linux시스템의 root 디렉토리 위치를 변경한다.


    디렉토리 생성

    1. root user로 사용자 전환
    # root 사용자로 전환 방법 1
    su-
    # root 사용자로 전환 방법 2
    sudo su

    2. /(root) 디렉토리로 위치 이동
    3. chroot 명령으로 root디렉토리를 설정할 디렉토리 생성
    mkdir tomato​


    4. 생성한 디렉토리 위치로 이동


    디렉토리 환경 맞추기

    • chroot 명령을 실행할 설정사용  shell에대한 바이너리가 root로 설정할 디렉토리에 존재하지 않다면, root로 설정할 디렉토리에 해당 shell 바이너리와 공유 라이브러리를 복사해야 한다.
     1. /bin/bash를 root 디렉토리로 만들려 하는 디렉토리에 복사한다.
    cp /bin/bash /tomato/bin​

    2. ldd 명령으로 /bin/bash의 공유 라이브러리를 확인한다.

        -  linux-vdso.so.l : 가상 라이브러리, 복사할 필요가 없다.
        -  libtinfo.so.6 : bash가 동작할 때 필요한 라이브러리
        -  
    libc.so.6 : Linux 공통 라이브러리
        -  /lib64/ld-linux-x86-64.so.2 : 공유 라이브러리를 메모리에 로드하는 역할

    ldd /bin/bash​

    3. 공유 라이브러리를 복사할 디렉토리를 생성한다.

    mkdir -p /tomato/lib/x86_64-linux-gnu/
    mkdir -p /tomato/lib64/

    4. 공유 라이브러리를 복사한다.

    cp /lib/x86_64-linux-gnu/libtinfo.so.6 /tomato/lib/x86_64-linux-gnu/libtinfo.so.6
    cp /lib/x86_64-linux-gnu/libc.so.6 /tomato/lib/x86_64-linux-gnu/libc.so.6
    cp /lib64/ld-linux-x86-64.so.2 /tomato/lib64/ld-linux-x86-64.so.2

    5. chroot 명령을 사용하여 정상 실행되는지 확인

    chroot /tomato /bin/bash

    디렉토리 환경 맞추기 (+ ls 명령 추가)

    • 위 공유 라이브러리만으로는 chroot로 root 디렉토리를 변경한 환경에서 많은 명령을 실행할 수 없다.
      추가로 bin/ls 의 공유라이브러리를 추가해본다.
    1. ldd 명령으로 /bin/lib 의 공유 라이브러리를 확인한다.

        -  /bin/bash에서 복사한 라이브러리와 중복되는 라이브러리는 복사하지 않아도 된다.

    ldd /bin/ls​

    2. 공유 라이브러리를 복사할 디렉토리를 생성한다.

    cp /bin/ls /tomato/bin

    3. 공유 라이브러리를 복사한다.

    cp /lib/x86_64-linux-gnu/libselinux.so.1 /tomato/lib/x86_64-linux-gnu/libselinux.so.1
    cp /lib/x86_64-linux-gnu/libpcre2-8.so.0 /tomato/lib/x86_64-linux-gnu/libpcre2-8.so.0

    4. chroot 명령을 사용하여 ls명령이 잘 실행되는지 확인



    댓글

Designed by Tistory.