bash/zsh 세션을 위한 격리된 환경이나 가상 환경(예: pyvenv)이 있습니까?

bash/zsh 세션을 위한 격리된 환경이나 가상 환경(예: pyvenv)이 있습니까?

격리된 환경에만 설치하고 나머지 시스템에는 영향을 주지 않는 특정 CLI 애플리케이션을 테스트하고 싶습니다.

답변1

몇 가지 옵션이 있습니다(완전하지 않은 목록).

  1. VM(Qemu/KVM, Xen, VirtualBox, VMware...) - 가장 고립되어 있습니다(별도의 하드웨어 시스템 제외). 이에 대해 추가 노력을 기울이고 싶지 않다면 별도의 운영 체제 설치를 실행하게 됩니다. 현재 시스템은 기본(호스트) 시스템 이미지가 지원하는 디스크 이미지를 사용하도록 가상 머신에 지시하는 등 비파괴적인 방식으로 재사용할 수 있습니다. 즉, 게스트 시스템이 결정한 모든 변경 사항은 " 상위" 이미지가 저장되지만 기본 호스트 이미지(일반적으로 하드 드라이브의 파티션)는 변경되지 않은 상태로 유지됩니다.

  2. 시스템 수준 가상화일종의 컨테이너를 사용하십시오. 설계상 보안이 덜하고 시스템(읽기: 하드웨어) 리소스를 덜 집약적으로 사용합니다. 일반적으로 동일한 실행 커널을 컨테이너화된 시스템과 공유하므로 컨테이너화된 시스템의 보안이 약화됩니다. 커널의 취약점을 악용하는 악성 애플리케이션은 기본 시스템에서 격리되지 않습니다. 일반적으로 몇 가지 옵션이 있습니다. Linux의 경우 전형적인 예는 다음과 같습니다.

    1. chroot/- 새 프로세스의 루트( ) 디렉터리 가 될 별도의 디렉터리입니다 . 이는 가능한 모든 라이브러리와 필요한 바이너리(및 구성/데이터/...)를 포함해야 함을 의미합니다. 보안 관점에서는 그렇습니다.부서진, 그러나 거의 모든 시스템에 존재합니다.

    2. firejail- "chroot on steroids"(저는 "chroot as it should"라고 생각하는 것을 선호합니다). 비슷한 방식으로 작동하지만 추가 제한 사항과 지원 기능이 있습니다. 즉, 기존 파일 시스템 구조의 특정 부분을 원래 환경 구조와 유사하면서도 다른 액세스 권한을 가진 대상 환경에 쉽게 마운트할 수 있습니다. 가장 중요한 것은 firejail컨테이너에서 허용되는 시스템 호출을 선택할 수 있다는 것입니다.

  3. "사용자 수준" 가상화 - 다른 사용자 계정을 만들고 해당 사용자로 응용 프로그램을 실행합니다. 보안 측면은 시스템 액세스 제어에만 의존합니다. 설정이 가장 쉽습니다.

관련 정보