Finden Sie heraus, in welche Dateien gelesen oder geschrieben wird

14

Ich möchte sehen, in welche Dateien gelesen oder welche geschrieben werden.

Gibt es ein Programm oder einen Befehl dafür? Ich kann mich erinnern, dass ich diese Methode verwendet habe, um versteckte Standorte von Viren und Malware zu finden, als ich vor ein paar Jahren Windows verwendet habe.

las
quelle

Antworten:

15

Dieses Programm ist ("Liste geöffneter Dateien") .lsof

  • Wenn Sie nur ein Terminal öffnen und eingeben lsof, erhalten Sie eine umfangreiche Liste aller geöffneten Dateien. Begrenzen Sie diese stattdessen auf einen Befehl, indem Sie Folgendes ausführen:

    lsof -c gnome-terminal
    
  • Sie können Ihre Suche auch auf ein bestimmtes Verzeichnis beschränken, indem Sie Folgendes eingeben

    lsof -c gnome-terminal -a +D /tmp
    
  • Oder listen Sie alle geöffneten Dateien in einem bestimmten Verzeichnis auf, einschließlich der Anwendung, mit der sie geöffnet wurden:

    lsof /dev/urandom
    

Denken Sie daran, dass einige Prozesse vom Superuser- Stamm gestartet werden. Möglicherweise müssen Sie sudoIhren Befehl voranstellen, um weitere Informationen zu den geöffneten Dateien dieser Prozesse zu erhalten.

Um Ihre Suche einzugrenzen, können Sie grepbestimmte Zeilen eingeben, z.

lsof /dev/urandom | grep chrome

  • In der FDSpalte (Dateideskriptor) der Ausgabe finden Sie Informationen zum Zweck des Programms, mit dem die Datei geöffnet wird (nicht unbedingt, was gerade damit passiert):

    • r bedeutet, dass die Datei zum Lesen geöffnet ist

    • w bedeutet, dass die Datei zum Schreiben geöffnet ist

    • u bedeutet, dass die Datei sowohl zum Lesen als auch zum Schreiben geöffnet ist


Weitere Informationen finden Sie auf der Handbuchseite ( man lsof). Wenn Sie Dateien und Verzeichnisse nachschlagen müssen, ist der Linux Filesystem Hierarchy Standard sehr hilfreich.

Stefano Palazzo
quelle
4

Als vollständige Over-Kill-Option, die jedoch in Echtzeit funktioniert, können Sie inotify verwenden:

sudo inotifywait -m -r /

Beachten Sie, dass dies viel Speicherplatz beansprucht und das Einrichten viel Zeit in Anspruch nimmt. Wie die Manpage sagt:

   -r, --recursive
          Watch all subdirectories of any directories passed as arguments.
          Watches  will be set up recursively to an unlimited depth.  Sym‐
          bolic links are not  traversed.   Newly  created  subdirectories
          will also be watched.

          Warning:  If  you use this option while watching the root direc‐
          tory of a large tree, it may take quite a while until  all  ino‐
          tify watches are established, and events will not be received in
          this time.  Also, since one inotify watch  will  be  established
          per subdirectory, it is possible that the maximum amount of ino‐
          tify watches per user will be reached.  The default  maximum  is
          8192;  it  can  be  increased  by  writing  to /proc/sys/fs/ino‐
          tify/max_user_watches.

Dies sagt Ihnen auch nicht, welcher Prozess mit Dateien zu tun hat, aber es kann Ihnen helfen, Änderungen zu identifizieren, wenn sie eintreten. Die Verwendung von "-e open" kann dazu beitragen, das Rauschen auf einem stark ausgelasteten System zu reduzieren.

Kees Cook
quelle
Ich bin mir ziemlich sicher, dass dies nicht funktionieren wird, mit oder ohne zuvor ein höheres Limit für inotify / max_user_watches festgelegt zu haben. Sie versuchen, jeder einzelnen Datei auf dem System eine Überwachung hinzuzufügen ...
Volker Siegel