Dies ist eine Antwort, die ich auf eine vorherige Frage geschrieben habe:
Wenn Sie wissen möchten, was ein Prozess / Benutzer / eine Datei tut, ohne lsof rund um die Uhr ausführen zu müssen, verwenden Sie im Allgemeinen auditctl.
Angenommen, Sie haben ein aktuelles Kernel-Audit-Steuerelement, sollte eine einfache Operation sein. (Dies ist in Debian-fu, wenn Sie Red Hat Translate entsprechend ausführen)
# apt-get install auditd
Stellen Sie sicher, dass es ausgeführt wird (/etc/init.d/auditd Status).
auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>
Ersetzen Sie b64 durch b32, wenn Sie einen 32-Bit-Bogen ausführen. Open kann durch einen beliebigen Systemaufruf oder das Wort "all" ersetzt werden.
Weitere Informationen finden Sie in der Manpage auditctl.
Sie können diese Methode verwenden und sie bitten, auf den Systemaufruf "Verknüpfung aufheben" zu achten.
Der Parameter -w ist nützlich, um Dateien / Verzeichnisse zu überwachen. Wie in der Manpage erläutert, gibt es jedoch einige Einschränkungen.
-w Pfad Fügen Sie am Pfad eine Überwachung für das Dateisystemobjekt ein. Sie können keine Uhr in das Verzeichnis der obersten Ebene einfügen. Dies ist vom Kernel verboten. Platzhalter werden ebenfalls nicht unterstützt und generieren eine Warnung. Die Art und Weise, wie Uhren funktionieren, besteht darin, den Inode intern zu verfolgen. Dies bedeutet, dass Sie, wenn Sie ein Verzeichnis überwachen, sehen, was als Dateiereignisse erscheint, aber es ist wirklich nur die Aktualisierung von Metadaten. Auf diese Weise könnten Sie einige Ereignisse verpassen. Wenn Sie alle Dateien in einem Verzeichnis überwachen müssen, wird empfohlen, für jede Datei eine eigene Überwachung durchzuführen. Im Gegensatz zu Syscall-Überwachungsregeln wirken sich Uhren nicht auf die Leistung aus, die auf der Anzahl der an den Kernel gesendeten Regeln basiert.
Vielleicht könnte Incron verwendet werden?
quelle
Ein paar Ideen. Sie können verwenden, um
strace
zu sehen, was Ihre Anwendung tut, aber es kann ein Protokoll von Protokollen generieren und das System verlangsamen.Eine andere Idee ist
inotifywait
, dannlsof/fuser
in der Datei zu sehen, was sie verwendet. Sie können versuchen, dieses Skript mit hoher Priorität auszuführen (wenn Sie können), um Informationen so genau wie möglich zu erhalten. Derunlink
Anruf wird wahrscheinlich nicht abgefangen , da die Datei vor der Zustellung des Ereignisses gelöscht wird.quelle
-f
Flag verfolgen, um den untergeordneten Elementen zu folgen.Während die auditd-Empfehlung von fenix ideal erscheint, finden Sie möglicherweise ein Dateisystem-IDS wie AIDE hilfreich. Leider ist es unwahrscheinlich, dass es für das, was Sie zu isolieren versuchen, feinkörnig genug ist.
Ich schreibe oft Skripte als Lösung für Probleme wie das, was Sie beschreiben. Wenn Sie mit den empfohlenen Lösungen nicht das erreichen können, was Sie wollen, schreiben Sie selbst etwas. Es ist oft nicht sehr kompliziert.
quelle