https://www.geeksforgeeks.org/linux-virtualization-using-chroot-jail/
geeksforgeek 사이트의 chroot 실습을 따라한다.
어떤 파일에 chroot 명령어를 사용한다.
그러면 그 파일이 부모가 없는 root인 것처럼 보인다.
실제로 root이 된 게 아니다.
root이 된 것 같은 가상의 환경을 만드는 것이다.
jailed 파일을 만든다.
먼저 bash 실행에 필요한 파일이 무엇인지 확인한다.
# mac에서 의존성 확인을 위해 otool 명령어를 사용할 수 있다.
otool $(which bash)
결과:
위 두 파일만 복사하여(경로까지 같이 복사), jailed 파일에 붙여넣었다.
하지만 에러가 났다.
killed: 9 , dyld: Library not loaded 등등...의 에러가 났다.
위 두 파일이 의존하고 있는 수많은 파일들을 복사하지 않았기 때문에, 에러가 나타났다.
일일히 의존 파일들을 찾기 힘들어서, usr/lib 속에 있는 모든 파일을 jailed에 복사했다.
mkdir jailed/bin
cp -p $(which ls) jailed/bin
cp -p $(which bash) jailed/bin
sudo chroot jailed bin/bash
실행 결과:
cd .. 를 사용해서 jailed 파일의 상위 파일로 접근할 수 없다.
또한 jailed 파일 안에 있는 실행파일만(bash, ls) 사용할 수 있다.
사용자도 root로 바뀐다.
ls 실행파일이 jail 파일 안에 있기 때문에, ls 명령어를 실행할 수 있다.
exit 명령어를 치면, home directory로 돌아온다.
chroot가 만든 접근 제한들이 풀린다.
https://stackoverflow.com/questions/19262649/osx-and-chroot-unable-to-find-bin-bash