バイナリアプリケーションで使用されているディレクトリを別のディレクトリになりすまし/エミュレートするにはどうすればよいですか?

バイナリアプリケーションで使用されているディレクトリを別のディレクトリになりすまし/エミュレートするにはどうすればよいですか?

常にデータを書き込むバイナリアプリケーションがあるとします/tmp

/tmpこのバイナリを別のディレクトリとして使用するには、どのようになりすまし/エミュレートできますかhome/tmp

別のディレクトリを使用するように強制するためにこのバイナリを変更できないとします。

答え1

chroot/アプリケーションが見ているのが実際ではない環境でアプリケーションを実行できます/。まったく新しいファイルシステム階層を作成し、--bindここで必要なすべてを mount() します。関連するポイントは、実際の環境を~/tmp環境/tmpにインストールできることですchroot

chroot代わりに、Linuxコンテナを使用してほぼ同じ操作を実行できます(スーパーユーザー権限が必要です)lxc。慣れていませんが、lxcホストシステムの一般的なユーザープロセスであるため、コンテナ内でこれらの構成のためにスーパーユーザーになる必要はありません。

答え2

ほとんどのPOSIX準拠ソフトウェアは次のとおりです。TMPDIRなどの環境変数

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

関連情報