바이너리 애플리케이션에서 사용하는 디렉토리를 다른 디렉토리로 스푸핑/에뮬레이트하려면 어떻게 해야 합니까?

바이너리 애플리케이션에서 사용하는 디렉토리를 다른 디렉토리로 스푸핑/에뮬레이트하려면 어떻게 해야 합니까?

항상 데이터를 쓰는 바이너리 애플리케이션이 있다고 가정해 보세요 /tmp.

/tmp이 바이너리를 다른 디렉터리(예: )로 사용하려면 어떻게 스푸핑/에뮬레이트할 수 있나요 home/tmp?

다른 디렉토리를 사용하도록 강제하기 위해 이 바이너리를 수정할 수 없다고 가정해 보겠습니다.

답변1

chroot/애플리케이션이 보는 것이 실제가 아닌 환경에서 애플리케이션을 실행할 수 있습니다 /. 완전히 새로운 파일 시스템 계층 구조를 만들고 --bind여기에 필요한 모든 것을 mount()합니다. 관련 요점은 실제 환경을 ~/tmp환경 /tmp에 설치할 수 있다는 것입니다 chroot.

chroot대신 Linux 컨테이너를 사용하여 거의 동일한 작업을 수행할 수 있습니다(수퍼유저 권한 필요) lxc. 익숙하지는 않지만 lxc호스트 시스템의 일반적인 사용자 프로세스이므로 컨테이너 내부에서 이러한 구성을 위해 슈퍼유저가 될 필요는 없습니다.

답변2

대부분의 POSIX 호환 소프트웨어는 다음을 따릅니다.TMPDIR와 같은 환경 변수

env TMPDIR=~/mytmp  /path/to/application

관련 정보