[unix] chroot를 사용해야하는 이유

이 질문 chroot-jail-what-is-it-and-how-do-i-use-it 는 무엇이며 어떻게 사용하는지 나타냅니다 chroot.

내가 이해하지 못하는 것은 왜 사용해야하는지 chroot입니다. 나는 그것이 무엇을 이해하지만, 내가 그것을 사용해야 할 때 나는 “밖으로 대답 점은 사용하지 말아야로는 보안 메커니즘 또는 샌드 박스가 아니라는 사실 주어진 경우 생각할 수 없다 chroot보안으로 프로그램이 시뮬레이션 된 파일 시스템 외부의 파일을 수정하지 못하도록 측정하십시오. “

특히, 특정 프로세스가 서브 디렉토리를 루트 파일 시스템으로 맵핑해야하는 이유는 무엇입니까?



답변

chroot 환경을 사용하는 데는 여러 가지 이유가 있습니다. 하나의 프로그램의 다른 버전을 유지하기 위해 사용할 수 있습니다. 특정 기능을 테스트하기 위해 특정 환경을 시뮬레이션하는 데 사용할 수 있습니다. 하나 등

위키 백과 는 chroot jail과 그 사용법에 대해 더 자세히 알려줄 수 있습니다.

거기에서:

테스트 및 개발 : 프로덕션 환경에 배포하기에는 너무 위험한 소프트웨어의 chroot에 테스트 환경을 설정할 수 있습니다.

의존성 제어 : 소프트웨어는 예상되는 의존성으로 만 채워진 chroot에서 개발, 빌드 및 테스트 할 수 있습니다. 이렇게하면 개발자가 다른 프로그램 라이브러리 세트가 설치된 프로젝트를 빌드 할 때 발생할 수있는 일종의 연계 왜곡을 방지 할 수 있습니다.

호환성 : 지원되는 라이브러리 또는 데이터 파일의 이름이 충돌하거나 호스트 시스템의 파일과 연결될 수 있으므로 다른 ABI를 사용하는 레거시 소프트웨어 또는 소프트웨어를 chroot에서 실행해야하는 경우가 있습니다.

복구 : 시스템을 부팅 할 수없는 상태로 만들 경우 대체 루트 파일 시스템 (예 : 설치 미디어 또는 Live CD)에서 부트 스트랩 한 후 chroot를 사용하여 손상된 환경으로 다시 이동할 수 있습니다.

권한 분리 : 프로그램은 열린 파일 디스크립터 (파일, 파이프 라인 및 네트워크 연결 용)를 chroot로 전달할 수 있으므로 chroot 디렉토리 안에 작업 파일을 남겨 둘 필요가 없어서 감옥 디자인을 단순화 할 수 있습니다. 또한 보안 위반을 사전에 방지하기 위해 권한이있는 프로그램의 취약한 부분을 샌드 박스에서 실행하는 일반적인 배열을 단순화합니다. chroot는 루트 권한이있는 프로세스를 포함하기에 충분하지는 않습니다.


답변