단일 프로그램의 파일을 가상화하는 방법은 무엇입니까?

단일 프로그램의 파일을 가상화하는 방법은 무엇입니까?

/etc/hostname 파일에 액세스하는 애플리케이션이 있습니다. 이 애플리케이션은 머신당 1개의 인스턴스를 실행하도록 되어 있습니다. 그러나 디버깅을 위해 동일한 시스템에서 여러 인스턴스를 실행하고 있습니다.

따라서 다른 경로에서 해당 파일을 찾기 위해 코드를 수동으로 변경할 필요 없이 각각에 대해 다른 /etc/hostname(및 아마도 다른 파일)을 갖고 싶습니다.

애플리케이션이 무선 인터페이스를 통해 원시 소켓을 활용하기 때문에 컨테이너에서 각 인스턴스를 실행하는 것은 실현 가능한 옵션이 아닙니다. (인터페이스에 대한 직접 액세스를 컨테이너에 제공하는 것이 가능합니까?)

나는 동일한 실제 파일에 액세스할 때 서로 다른 파일에 액세스하기 위해 응용 프로그램의 각 인스턴스를 "속이는" 척만 했습니다.

어떻게 해야 하나요?

답변1

당신은 이것을 할 수 있습니다firejail.

Firejail은 Linux 네임스페이스와 seccomp-bpf를 사용하여 신뢰할 수 없는 애플리케이션의 실행 환경을 제한하여 보안 침해 위험을 줄이는 SUID 프로그램입니다. 이를 통해 프로세스와 그 모든 하위 항목은 네트워크 스택, 프로세스 테이블, 마운트 테이블과 같이 전역적으로 공유되는 커널 리소스에 대한 자체적인 개인 보기를 가질 수 있습니다.

예:

# cat /etc/hostname
myhost
# firejail --noprofile --quiet --writable-etc --bind=/etc/timezone,/etc/hostname cat /etc/hostname
Europe/Warsaw

응용 프로그램의 여러 인스턴스를 쉽게 실행하기 위해 몇 가지 프로필을 정의하고 싶을 수도 있습니다. 공부 man 1 firejail하고 man 5 firejail-profile.

관련 정보