unshare를 사용하여 chroot 시뮬레이션

unshare를 사용하여 chroot 시뮬레이션

저는 최소한의 소스 코드 Linux 배포용 부트로더를 작성하려고 합니다.

나는 chroot와 같은 환경에서 구축하고 싶습니다. 이렇게 하면 포장이 단순화됩니다. 지금은 보안에 관심이 없습니다. 부트로더에는 비표준 타사 명령이 필요하지 않습니다. 루트가 필요하지 않으면 좋을 것입니다.

이것이 바로 fakechroot(1) fakeroot(1) chroot(1)이 내가 찾고 있는 것이 아닌 이유입니다.

/를 위조하기 위해 unshare(1) 및 /bin/sh를 사용할 수 있습니까?

답변1

예. 만약 당신의커널은 user_namespaces를 지원합니다(그리고 활성화되어 있습니다)., 먼저 "루트 사용자로 가장"한 다음 chroot(실제 루트 사용자로서) 호출 권한을 얻을 수 있습니다. (이전에는 루트 사용자로만 제한해야 했습니다.일반 사용자는 권한 업그레이드를 수행할 수 있습니다.(예를 들어 chroot 디렉터리의 set-UID-root 바이너리 및 사용자 정의 라이브러리를 통해) )

셸에서 다음을 시도해 볼 수 있습니다.

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1

답변2

나는 최근 다양한 Linux 배포판에서 이 작업을 수행하는 방법을 조사했습니다. 가장 쉬운 방법은 다음과 같습니다.

unshare -r chroot <target_folder> <command_w_path>

작동 하려면 chroot올바른 라이브러리와 해당 경로가 대상 폴더에 있어야 합니다. 이는 ldd <command_w_path>해당 항목과 해당 경로를 사용하고 대상 폴더에 복사하여 확인할 수 있습니다. 배포판 간에는 약간의 차이가 있습니다. 예를 들어 Arch Linux에는 작동하려면 usr/lib심볼릭 링크가 필요합니다.lib

답변3

fakeroot/fakechroot는 이미 훌륭하므로 번들로 묶거나 설치하세요. 영감을 얻으려면 cdebootstrap을 확인하세요.

관련 정보