-
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명령이 잘 실행되는지 확인
'Cloud > Docker' 카테고리의 다른 글
Docker) Docker Engine (0) 2022.09.28 Docker) Union file system의 OverlayFS 실습해보기 (0) 2022.09.28 Docker) namesapce 실습해보기 (0) 2022.09.28 Docker) cgroup (Control Group) 실습해보기 (0) 2022.09.27 Docker) Docker를 알아보기 (0) 2022.09.27