バイナリアプリケーションが使用するディレクトリを別のディレクトリとして偽装/モックする方法は?


9

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

/tmpこのバイナリを他のディレクトリ(たとえばhome/tmp)として偽装/偽装するにはどうすればよいですか?

このバイナリを変更して別のディレクトリを使用するよう強制する手段がないと仮定します。

回答:


11

あなたはchroot環境でアプリケーションを実行することができます。つまり/、アプリケーションが見るアプリケーションは本物ではありません/。完全な新しいファイルシステム階層を作成し、それに--bind必要なすべてのものをマウント()します。関連するポイントは次のとおりです。あなたは本当をマウントすることができます~/tmp/tmpしてchroot環境。

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


偉大な答えは、私はどちらかと聞いたことがなかったchrootか、lxcこれを行うことが可能であること。スーパーユーザーにならないでそれを達成する方法があることを知っておくのも本当にいいです。
ノビリス2014年

3
@Nobilis 98は、これが素晴らしい答えとして認識されるために欠けている賛成票を提示しています...
Hauke Laging

2
それは、しかし、注意してくださいchroot追加の設定が必要です(あなたが全体を交換する/だけでなく、/tmpので、へのアクセス/etc/var「投獄」プログラム(など、また「刑務所」の内側になります)と、独自のセキュリティ上の問題を作成してファイルシステムの一部を操作できるようにします。これは、偽の設定時に権限に注意しないと通常は立ち入り禁止になります/)。
IMSoP 2014年

@IMSoP「通常は立ち入り禁止となるファイルシステムの一部を操作できる可能性がある」について詳しく説明していただけませんか。
Hauke Laging 2014年

@HaukeLaging新規の書き込み/がのみに制限されていない場合、root「投獄された」ユーザーは、システムの主要な場所にあると思われるファイルを作成または置換できます/etc/passwd。これは、の外部では不可能である特権の昇格に使用できchrootます。多くのLinux FTPサーバーは、伝統的にchrootファイルシステムの残りの部分を隠すために使用されていましたが、ディレクトリが非rootユーザーによって書き込み可能である場合、隠蔽を拒否します。
IMSoP 2014年

8

ほとんどのPOSIX準拠ソフトウェアは、TMPDIR環境変数を尊重します。

env TMPDIR=~/mytmp  /path/to/application
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.