Strace - Anwendungen beobachten

strace

Mit der Software strace kontrollieren Sie unter Linux was welche Software auf dem System anstellt.

Informationen

Für Entwickler ist es mit den neuen Paket-Formaten Appimage, Flatpak und Snappy viel einfacher geworden ihre Software zu verbreiten, schließlich müssen diese nicht mehr alle möglichen Paket-Formate beherrschen und diese auch erstellen.

Ein Problem jedoch - selten werden diese bereit gestellten universellen Pakete auch wirklich von jemanden auf mögliche Schadsoftware kontrolliert - so wurden in einigen wenigen von Snappy bereit gestellten Anwendungen vor ein oder zwei Jahren Malware entdeckt die den Rechner als Bitcoin-Maschine für den Ersteller des Snap-Paketes missbrauchte, die Pakete wurden natürlich sofort aus dem Repository gelöscht, entdeckt wurde dies jedoch nicht von den Plattformen auf denen diese Pakete bereit gestellt werden sondern von Nutzern die diese Software installiert haben.

strace ist nun eine Software die jede Aktion die eine Software auf dem System durchführt anzeigt, egal auf welche Verzeichnisse, Dateien die überwachte Software zugreift, welche Dateien diese erstellt, mit welchen Servern diese im Internet kommuniziert oder was auch immer - diese Software zeigt es, ob die überwachte Software nun über die Paket-Verwaltung, über Flatpak oder Snappy installiert wurde oder wie Appimage gar nicht installiert werden muss ist der Software egal - jeder Prozess der gestartet wird kann überwacht werden.

strace installieren

Unter auf Debian basierenden Linux-Distributionen wie Ubuntu, Kubuntu, Linux Mint und so weiter installieren Sie diese Software ganz einfach über die Paket-Verwaltung durch das Paket "strace".

strace nutzen

Ich selbst hatte heute das Problem eines Nutzers in einem Linux-Forum zu lösen, er nutzt eine Software namens Almanah - eine Art Tagebuch für Linux, dieses erstellt eine Datenbank in der dann die vom Nutzer geschriebenen Daten gespeichert werden, diese Datenbank kann auch mit einem PGP-Schlüssel verschlüsselt werden was dieser Nutzer auch getan hat. Schlussendlich - er hatte diesen Schlüssel nicht mehr - aus welchem Grund weis ich nicht, ist auch völlig egal - die Datenbank öffnet sich nicht mehr und die Software nutzt nur diese einzige Datei, lässt sich diese nicht öffnen startet auch die Software nicht.

Es gilt also ganz einfach diese verschlüsselte Datenbank zu löschen und die Software startet wieder, doch wo liegt diese Datenbank, irgendwo im Hinterstübchen meines Gehirns hatte ich da noch die Software strace liegen die alles protokolliert was ein Prozess so auf dem System macht - und dazu gehört natürlich auch der Zugriff auf diese Datenbank.

Nun - strace wird auf dem Terminal genutzt, dies ist jedoch sehr einfach, in meinem Beispiel für Almanah - die Software will ich nun überwachen, sie wird mit dem Befehl:

almanah

gestartet, um die Software nun mit strace zu überwachen wäre die einfachste Form:

strace almanah

Die Ausgabe findet auf dem Terminal statt - da bekommt man so gut wie nichts mit da jeder Prozess - vor allem grafische Anwendungen auf viele Dateien des Systems, auf so manche im Home-Verzeichnis und so weiter zugreifen, man beendet also mit Strg + c und leitet die Ausgabe in eine Textdatei um.

In meinem Beispiel will ich die Datei einfach "log.txt" nennen, sie landet automatisch im aktuellen Verzeichnis, die nötige Option dazu lautet "-o Dateiname" - also:

strace -o log.txt almanah

Die Ausgabe auf dem Terminal findet zwar noch immer statt aber alles wird auch in die genannte Datei geschrieben, beendet man die gestartete Software normal oder auf dem Terminal mit Strg +c wird auch die Ausgabe beendet, man braucht nur noch die erstellte Datei zu öffnen:

strace - Programme / Prozesse unter Linux überwachen

strace - Programme / Prozesse unter Linux überwachen

Die Ausgabe ist natürlich nicht nur auf dem Terminal sondern auch in der Log-Datei recht lange, aber wenn man wissen will was eine Software macht muss man damit rechnen, in meinem Fall wusste ich zumindest das die gesuchte Datei irgendwo in meinem Home-Verzeichnis liegen muss.

Auf jeden Fall schreibt die Software wirklich alles in das Protokoll was die überwachte Software macht, es gibt keine Ausnahmen und die Ausgaben sind mit ein wenig Nachdenken recht einfach verständlich. Weitere mögliche Optionen wären "-f" - damit werden auch Prozesse überwacht die die überwachte Software startet, mit "-e trace=open,close,read,write" werden nur Operationen überwacht die das Dateisystem betreffen und mit "-p PID" - Angabe der Prozess-ID können auch bereits laufenden Prozesse überwacht werden.

Möchte man ein Appimage überwachen wechselt man einfach in das Verzeichnis in dem die Datei liegt und startet die Überwachung mit dem Befehl:

strace -o log.txt ./Dateiname.appimage

Die selbe Geschichte mit Flatpaks und Snapps - Sie geben einfach den Befehl "strace -o log.txt" an und anschließend den Befehl mit dem die Software am Terminal gestartet wird.