it-swarm-ko.tech

chroot "jail"-그게 무엇이며 어떻게 사용합니까?

나는 리눅스에서 chroot jail에 대해 많이 읽거나 읽었지만 아직 그것을 사용하지는 않았다. (나는 매일 Fedora를 사용한다) chroot "jail"은 무엇인가? 언제 그리고 왜 그것을 사용하거나 사용하지 않을 수 있으며 알아야 할 다른 것이 있습니까? 하나를 만들려면 어떻게해야합니까?

107
user119

Chroot jail은 프로세스와 그 자식을 시스템의 나머지 부분과 격리시키는 방법입니다. 루트 사용자는 감옥에서 매우 쉽게 탈퇴 할 수 있으므로 루트로 실행되지 않는 프로세스에만 사용해야합니다.

프로세스 실행에 필요한 모든 시스템 파일을 복사하거나 링크하는 디렉토리 트리를 작성하는 것이 좋습니다. 그런 다음 chroot() 시스템 호출을 사용하여 루트 디렉토리를이 새 트리의 기초가되도록 변경하고 해당 chroot 환경에서 실행중인 프로세스를 시작하십시오. 실제로 수정 된 루트 외부의 경로를 참조 할 수 없으므로 해당 위치에서 악의적으로 작업 (읽기/쓰기 등)을 수행 할 수 없습니다.

Linux에서는 바인드 마운트를 사용하는 것이 chroot 트리를 채우는 좋은 방법입니다. 이를 사용하여 /lib/usr/lib 당기지 않는 동안 /usr를 예로들 수 있습니다. jail 디렉토리에서 생성 한 디렉토리에 원하는 디렉토리 트리를 바인딩하십시오.

97
Ben Combee

"chroot jail"은 실제로 죽어야하는 잘못된 이름이지만 사람들은 계속 사용합니다. chroot는 파일 시스템의 루트로 파일 시스템의 디렉토리를 시뮬레이션 할 수있는 도구입니다. 즉, 다음과 같은 폴더 구조를 가질 수 있습니다.

-- foo
    -- bar
    -- baz
-- bazz

만약 너라면 chroot foo하고 ls /, 당신은 볼 수:

-- bar
-- baz

ls (및 실행하는 다른 도구)에 관한 한, 파일 시스템의 유일한 디렉토리입니다. "jail"이 잘못된 이름 인 이유는 chrootforce 시뮬레이션 된 파일 시스템에 남아있는 프로그램입니다. chroot "jail"에 있다는 것을 알고있는 프로그램은 상당히 쉽게 벗어날 수 있으므로, chroot를 시뮬레이트 된 파일 시스템 외부에서 파일을 수정하지 못하도록 보안 수단으로 사용해서는 안됩니다.

53
Michael Mrozek

기본적으로 환경의 루트 디렉토리를 변경하고 있습니다. 그래서

/

된다

/some-jail/ (or whatever directory you want)

응용 프로그램이 /에 액세스하면/some-jail /이 표시됩니다. 또한 응용 프로그램은/some-jail /에서 벗어날 수 없으므로 컴퓨터의 다른 항목에는 액세스하지 않습니다. '이봐, 내가주는 것에 만 액세스 할 수 있고 시스템의 다른 어떤 것에도 액세스 할 수 없습니다.

12
jacksonh

"언제 언제 사용할 수 있습니까?"

절대 경로 참조를 작성하거나 인터셉트 및 로그를 원할 수있는 명령을 실행하는 스크립트 (부팅 시간 등)를 테스트하는 데 사용됩니다. 실제로 실행 환경에서 작동합니다.

예를 들어 Linux를 실행하는 임베디드 장치가 있는데 a) 실제 장치에서 실행하지 않고 일부 bash의 작동을 확인하고 싶습니다 (데스크톱에 더 나은 도구가 있고 장치를 브릭 킹하지 않기 때문에) b) 실행 중 내 바탕 화면에서 실제 (내 데스크탑 시스템이 엉망이되지 않기 때문에)

또한 "chroot jail"에없는 명령 또는 쉘 스크립트를 실행할 때마다 오류가 발생하여 실행이 종료되므로 사용 된 명령 또는 기타 스크립트 파일을 발견 할 수 있습니다.

(물론, 전체 호그로 이동하려면 QEMU 또는 Docker 또는 VM 내에서 실행할 수 있지만 VM 이미지 등-훨씬 더 많은 작업)이 필요합니다.

6
MikeW