回答:
おそらくこれを行う最も簡単な(?)方法は、「永続的なデータパーティション」を持つLiveUSBから起動することです。(または、効果を自分で再現するには、chroot刑務所で、roレイヤーの上にrwレイヤーをマウントします。)rwファイルシステムのスナップショットを取得します-これは、新規ブート後に非常にスリムになるはずです。その後、インストーラーを実行します。それが変更または作成するすべてのファイルは、rwの「永続データ」オーバーレイパーティションにあります。削除されたファイルも「マジックドットファイル」として表示されます。
unionfs
—基本的に、RWファイルシステムはすべての書き込みを受け入れますが、ROファイルシステムはまだその下に表示されています。ファイルが変更されると、RW fsに「移行」します。削除された場合、実際には、RW fsに「マスク」するための「マジックドットファイル」があります。セットアップunionfs
は少し面倒かもしれませんが、私がLiveUSBを提案したのはそのためです(この部分はあなたのために行われ、「クリーン」なシステムイメージが最初から始まります)
たぶんtripwireを見てみませんか?Tripwireはアクティブな例よりもパッシブですが、それでも機能する場合があります。
http://www.linuxjournal.com/article/8758
Tripwireは侵入検知システム(IDS)であり、クラッカーによって(または誤って)破壊または変更された場合に、重要なシステムファイルとレポートを常に自動的に管理します。これにより、システム管理者は何が危険にさらされたかを即座に把握して修正できます。
Installwatchを見てください。
http://en.wikipedia.org/wiki/Installwatch#Functionality
http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
インストーラーがパッケージ機能(.deb
Debian / Ubuntu / ...の.rpm
パッケージ、RedHat / CentOS / ...のパッケージなど)を使用している場合、パッケージインストーラーはインストール時と削除時の処理を知っている必要があります。また、独自のパッケージングシステムを発明するのではなく、既存のパッケージングシステムを使用する必要があると思います。(通常、LinuxにはWindowsのようなインストーラーはありません)。
何らかのプロセスで行われたファイルの変更を本当に追跡したい場合は、を使用strace
したりltrace
、システムコールをキャッチしたりできます。また、関連施設をinotifyすることもできます。
しかし、私はあなたが望むようなcatch-modifs
&を知りrevert-modifs
ません。
私はあなたのアプリケーションのためのインストーラをしないことをお勧めしますが、提供するため、パッケージマネージャを使用する.deb
(および/または.rpm
アプリケーションのパッケージ)。依存関係の問題は、独自のインストーラーよりも適切に処理されます。
希望するものを簡単に実現する方法:「信頼できない」アプリケーションを新しい仮想マシンインスタンス(VMWareワークステーション、Oracle VirtualBoxなど)にインストールします。
アプリケーションが不要になった場合は、仮想マシンを削除します。
他の代替手段-ファイルアクセスシステムコールのキャッチ-は、エラーが発生しやすく、不完全になる可能性があります。機能するために動的リンクを必要とするソリューションには特に注意してください(Installwatchのように見える)。インストーラは、直接システムコールを合法的に実行したり、静的にリンクしたりできます。