" 어떤 OS가 어떤 파티션에 있는지 알아 내는가? " 라는 질문 은 실제로 해당 배포판으로 부팅하지 않고도 마운트 된 배포판에서 실행 파일을 실행할 수 있는지 생각하게했습니다.
" chmod -R 000 / bin에서 복구하는 방법 "이라는 질문에 대한 대답 은 마운트 된 배포판의 파티션에서 로더를 호출 할 수 있다고 생각하게했습니다.
이것이 가능한가?
시도했을 때 작동하지 않았지만 다른 부분이 누락되었을 수 있다고 생각합니다.
내가 이것을 시도한 명령은 lsb_release
. 중요한 경우 현재 64 비트 Fedora 14를 설치하고 있습니다.
$ sudo /lib/ld-2.13.so /usr/bin/lsb_release
/usr/bin/lsb_release: error while loading shared libraries: /usr/bin/lsb_release: invalid ELF header
예, 실행중인 커널이 마운트 된 배포판에서 바이너리를 실행할 수 있다면 가능합니다.
이를 위해서는 마운트 된 배포가 실행중인 프로세서 아키텍처 용이거나 호환되는 배포판이어야합니다. 예를 들어 x86 프로세서에서는 ARM 바이너리를 실행할 수 없습니다. 호환성은 CPU에 따라 다릅니다. 예를 들어 x86 / amd64에서 64 비트 바이너리는 64 비트 CPU에서만 실행되는 반면 32 비트 바이너리는 32 비트 및 64 비트 CPU 모두에서 실행됩니다. 호환성은 운영 체제에 따라 다릅니다. 예를 들어 x86_64 CPU에서 Solaris는 32 비트 및 64 비트 커널에서 64 비트 및 32 비트 프로그램을 서로 다르게 실행할 수 있습니다. Linux 64 비트 커널은 32 비트 프로그램을 실행할 수 있지만 그 반대의 경우는 불가능합니다. OpenBSD 64 비트 커널은 32 비트 프로그램을 실행할 수 없습니다.
고정 된 위치에서 파일을 찾지 않는 한 정적으로 연결된 실행 파일은 노력없이 제자리에서 실행됩니다. 마운트 된 배포에 최신 버전의 C 라이브러리가 있거나 다른 C 라이브러리 (예 : uClibc 대 Glibc)를 사용하거나 호스트가 사용자 영역을 지원하지 않는 다른 아키텍처를 사용하는 경우 동적으로 연결된 실행 파일이 작동하지 않을 수 있습니다. (예 : i386 vs amd64, armhf vs armel).
때로는 동적으로 연결된 실행 파일이 작동하도록하려면 동적 링커를 명시 적으로 호출하고 마운트 된 시스템의 라이브러리 디렉토리를 라이브러리 검색 경로에 먼저 배치해야합니다.
LD_LIBRARY_PATH=/mnt/lib:/mnt/usr/lib /mnt/lib/ld-linux.so.2 /mnt/bin/foo
마운트 된 시스템의 프로그램이 올바른 위치 (로더, 라이브러리, 구성 파일, 데이터 파일 등)에서 필요한 모든 것을 찾을 수 있도록하는 쉬운 방법은 chroot 에서 실행하는 것입니다 . chroot는 파일 시스템의보기를 단일 디렉토리와 하위 디렉토리로 제한합니다. 루트 만 chroot
명령을 호출 할 수 있습니다 .
chroot /mnt /bin/foo
프로그램이 /mnt
루트 디렉토리로 실행되기 때문에 해당 계층 구조 외부에는 아무것도 표시되지 않습니다. no /home
(또는에서 온 것 /mnt
), no /proc
,에 대한 정적 기본값 만 /dev
등입니다. 다음과 같은 특수 파일 시스템을 /proc
마운트 할 수 있습니다. 외부 ( mount -t proc proc /mnt/proc
) 또는 내부 ( mount -t proc proc /proc
) 에서 chroot . Linux에서는를 사용하여 디렉토리를 두 번째 위치에 다시 마운트 할 수 있습니다 (이미있는 곳에 남아있는 동안) mount --bind
. 또는을 사용 mount --rbind
하여 지정된 디렉토리 아래에 마운트 된 파일 시스템을 복제 할 수도 있습니다.
mount --rbind /dev /mnt/dev
mount --bind /home /mnt/home
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt /bin/foo
데비안과 일부 다른 배포판은 이러한 마운트를 자동화하고 다른 기능을 수행하기 위해 schroot 라는 도구를 제공합니다 . 일회성 일에는 과잉이지만 여러 배포 를 유지 하려는 경우 편리합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다