항상 데이터를 쓰는 바이너리 애플리케이션이 있다고 가정해 보세요 /tmp
.
/tmp
이 바이너리를 다른 디렉터리(예: )로 사용하려면 어떻게 스푸핑/에뮬레이트할 수 있나요 home/tmp
?
다른 디렉토리를 사용하도록 강제하기 위해 이 바이너리를 수정할 수 없다고 가정해 보겠습니다.
답변1
chroot
/
애플리케이션이 보는 것이 실제가 아닌 환경에서 애플리케이션을 실행할 수 있습니다 /
. 완전히 새로운 파일 시스템 계층 구조를 만들고 --bind
여기에 필요한 모든 것을 mount()합니다. 관련 요점은 실제 환경을 ~/tmp
환경 /tmp
에 설치할 수 있다는 것입니다 chroot
.
chroot
대신 Linux 컨테이너를 사용하여 거의 동일한 작업을 수행할 수 있습니다(수퍼유저 권한 필요) lxc
. 익숙하지는 않지만 lxc
호스트 시스템의 일반적인 사용자 프로세스이므로 컨테이너 내부에서 이러한 구성을 위해 슈퍼유저가 될 필요는 없습니다.
답변2
대부분의 POSIX 호환 소프트웨어는 다음을 따릅니다.TMPDIR와 같은 환경 변수
env TMPDIR=~/mytmp /path/to/application