Ich möchte in der Lage sein, wenn ein Programm wie ein Installationsprogramm ausgeführt wird, die Liste der an meinem Dateisystem vorgenommenen Änderungen zu verfolgen, damit ich sie anschließend zurücksetzen kann.
BEARBEITEN: Dies betrifft ein nicht gepacktes Programm. Ich benutze apt-get so weit ich kann.
Idealerweise möchte ich in der Lage sein, etwas zu tun wie:
(sudo) catch-modifs some-installer.bin > fsmodifs.patch
Und dann:
(sudo) revert-modifs fsmodifs.patch
Gibt es eine bequeme Möglichkeit, dies zu tun?
unionfs
- im Grunde akzeptiert das RW-Dateisystem alle Schreibvorgänge, aber das RO-Dateisystem ist immer noch darunter sichtbar. Wenn eine Datei geändert wird, wird sie in die RW fs "migriert". Wenn es gelöscht wird, gibt es tatsächlich eine "magische Punktdatei" auf dem RW fs, um es zu "maskieren". Das Einrichtenunionfs
kann etwas heikel sein, deshalb habe ich LiveUSB vorgeschlagen (es erledigt diesen Teil für Sie und Sie haben ein "sauberes" System-Image, von dem aus Sie beginnen können)Vielleicht einen Blick auf Tripwire werfen? Tripwire ist passiver als Ihr aktives Beispiel, kann aber dennoch für Sie funktionieren.
http://www.linuxjournal.com/article/8758
quelle
Schauen Sie sich Installwatch an:
http://en.wikipedia.org/wiki/Installwatch#Functionality
http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
quelle
Verwenden Sie
LD_PRELOAD
diese Option , um eine Bibliothek zu laden, die dieopen
Bibliotheksfunktion abfängt und den Pfadnamen ändert / die Ausgabe protokolliert / eine Sicherungskopie erstellt, bevor Sie die Datei öffnen.Schauen Sie sich den Quellcode für an
strace
.quelle
Wenn das Installationsprogramm eine Verpackungsfunktion verwendet (dh für
.deb
Pakete für Debian / Ubuntu / ...,.rpm
Pakete für RedHat / CentOS / ... usw.), sollte das Paketinstallationsprogramm wissen, was bei der Installation und beim Entfernen zu tun ist. Und ich glaube, Sie sollten vorhandene Verpackungssysteme verwenden und keine eigenen erfinden. (Linux hat normalerweise keine Installationsprogramme wie Windows).Wenn Sie den durch einen Prozess vorgenommenen Dateiänderungen wirklich folgen möchten, können Sie Systemaufrufe verwenden
strace
oderltrace
abfangen. Sie können auch inotifizierte und verwandte Einrichtungen.Aber ich weiß nicht von einem
catch-modifs
&revert-modifs
wie du willst.Ich empfehle, kein Installationsprogramm für Ihre Anwendung zu erstellen, sondern den Paketmanager zu verwenden, um
.deb
(und / oder.rpm
) Pakete für Ihre Anwendung bereitzustellen . Sie werden die Abhängigkeitsprobleme besser behandeln als Ihr eigenes Installationsprogramm.quelle
Der einfache Weg, um das zu erreichen, was Sie wollen: Installieren Sie die "nicht vertrauenswürdige" Anwendung in einer brandneuen Instanz einer virtuellen Maschine (VMWare-Workstation, Oracle VirtualBox usw.).
Wenn Sie entscheiden, dass Sie die Anwendung nicht mehr möchten, löschen Sie die virtuelle Maschine.
Ihre anderen Alternativen - das Abrufen von Dateizugriffs-Systemaufrufen - sind wahrscheinlich fehleranfällig und unvollständig. Seien Sie besonders vorsichtig bei Lösungen, die eine dynamische Verknüpfung erfordern, um zu funktionieren (wie es Installwatch zu tun scheint). Ein Installationsprogramm kann zu Recht direkte Systemaufrufe ausführen oder statisch verknüpft sein.
quelle