이 "chroot" /tmp 디렉토리의 생성을 설명할 수 있습니까?

이 "chroot" /tmp 디렉토리의 생성을 설명할 수 있습니까?

아래 링크된 기사에서는 "chroot" /tmp 디렉토리를 생성하는 방법을 설명합니다. 나는 그들이 무엇을 하고 있는지 조금 혼란스러워요. 다음 명령의 기능을 설명할 수 있는 사람이 있습니까?

Noexec 및 /tmp 문제 해결

1. # mkdir -p /root/chroot /root/tmp 
2. # mount --bind / /root/chroot 
3. # mount --bind /root/tmp /root/chroot/tmp
4. # chroot /root/chroot

첫 번째 단계, 왜 만들었을까?/루트/tmp설마/루트/chroot/tmp?

첫 번째 설치 명령이 두 번째 설치 명령에 영향을 줍니까? 두 번째 단계에서는 새 디렉터리를 바인딩합니다./루트/chroot루트 디렉토리로. 이것은 세 번째 단계에서/루트/tmp실제로 다음을 가리킨다/루트/chroot/루트/tmp? 어디/루트/chroot/tmp에서? 이것이 나를 혼란스럽게 하는 부분이다.

이것의 논리는 무엇입니까?

답변1

mkdir -p /root/chroot /root/tmp

chroot 환경을 위한 디렉터리를 만듭니다. /root/chrootchroot 환경의 루트 디렉터리가 됩니다. chroot 환경 /root/tmp역할을 할 디렉터리입니다./tmp

mount --bind / /root/chroot

/그러면 디렉터리가 를 통해 표시 됩니다 /root/chroot. 디렉터리를 /미러 디렉터리 처럼 취급합니다 /root/chroot(실제로는 미러가 아니지만 해당 디렉터리에 대한 포인터입니다 /).

mount --bind /root/tmp /root/chroot/tmp

이렇게 하면 chroot 환경의 디렉토리를 통해 사용자 정의 /root/tmp디렉토리 에 액세스할 수 있습니다. /tmp이렇게 하면 chroot 환경의 디렉터리 가 시스템 /tmp/tmp./tmp/tmp

chroot /root/chroot

여기에서 chroot 환경을 입력합니다.

이제 귀하의 질문:

  1. 첫 번째 설치 명령이 두 번째 설치 명령에 영향을 줍니까?

    예. 디렉토리 /root/chroot를 바인드하기 전에 chroot 환경의 루트 디렉토리( )를 바인드 마운트해야 합니다 /tmp. 에 바인딩될 때까지는 존재하지 않습니다 /root/chroot/tmp.//root/chroot

  2. 두 번째 단계에서는 새 디렉터리를 /root/chroot루트 디렉터리에 바인딩합니다. 이것은 3단계가 /root/tmp실제로 그것을 가리킨다는 것을 의미합니까 /root/chroot/root/tmp?

    예. 의 모든 콘텐츠는 /를 통해 액세스할 수 있습니다 /root/chroot.

  3. 그거 어디서 났어 /root/chroot/tmp?

    /root/chroot/tmp2단계에서 바인딩한 /후에는 존재하게 됩니다 ./root/chroot

답변2

2단계 에서는 /./root/chroot

2.5단계를 생성하면 시스템 디렉터리를 포함하여 ls /root/chroot나열된 모든 디렉터리를 찾을 수 있습니다 .//tmp

출력에서도 touch /root/chroot/test이 내용을 볼 수 있습니다 . 아시다시피 그것은 또한 에서 나온 것입니다 . 과 은 정확히 같은 장소입니다.testls /rm /test/root/chroot///root/chroot/

더 자세히 보려면 ​​실행 stat /하면 stat /root/chroot둘 다 동일한 것을 반환하는 것을 볼 수 있습니다 Inode. An은 Inode디스크의 특정 파일/디렉토리를 참조하는 데이터 구조입니다. 둘 다 동일한 콘텐츠를 반환하므로 Inode두 경로 모두 정확히 동일한 디렉터리를 가리킵니다.

따라서 3단계에서는 바인드 마운트된 시스템 디렉토리에 디렉토리를 마운트합니다 /root/tmp./tmp/root/chroot

chroot4단계를 수행 하면 /시스템 전체 디렉터리 대신 in 디렉터리를 사용하여 /tmpchroot 상태로 들어갑니다. 이런 방식으로 chroot는 시스템의 다른 모든 사용자와 공유되지 않습니다./root/tmp/tmp

관련 정보