So überprüfen Sie geöffnete Dateien in Linux

How Check Open Files Linux



Vielleicht haben Sie das Sprichwort „Alles ist eine Datei in Linux“ kennengelernt. Obwohl dies nicht ganz richtig ist, enthält es eine Reihe von Wahrheiten.

In Linux- und Unix-ähnlichen Systemen ist alles wie eine Datei. Das bedeutet, dass den Ressourcen im Unix-System ein Dateideskriptor zugewiesen wird, einschließlich Speichergeräte, Netzwerk-Sockets, Prozesse usw.







Ein Dateideskriptor ist eine eindeutige Nummer, die eine Datei und andere Eingabe-/Ausgabegeräte identifiziert. Es beschreibt Ressourcen und wie der Kernel darauf zugreift. Betrachten Sie es als Gateway zu den Hardware-Ressourcen der Kernel-Abstraktion.



Leider geht das Konzept von Dateideskriptoren über den Rahmen dieses Tutorials hinaus; Betrachten Sie den untenstehenden Link, um mehr zu erfahren:



https://en.wikipedia.org/wiki/File_descriptor





Das bedeutet, dass Unix und Unix-ähnliche Systeme wie Linux solche Dateien stark verwenden. Als Linux-Power-User ist es unglaublich nützlich, die geöffneten Dateien und den Prozess und die Benutzer zu sehen, die sie verwenden.

Dieses Tutorial konzentriert sich auf Möglichkeiten, die geöffneten Dateien anzuzeigen und welcher Prozess oder Benutzer dafür verantwortlich ist.



Voraussetzungen

Bevor wir beginnen, stellen Sie sicher, dass Sie Folgendes haben:

  • Ein Linux-System
  • Benutzer mit Root- oder Sudo-Berechtigungen

Wenn Sie diese haben, lassen Sie uns loslegen:

LSOF-Dienstprogramm

Erstellt von Victor A Abell, List open files, oder kurz lsof, ist ein Befehlszeilen-Dienstprogramm, mit dem wir die geöffneten Dateien und die Prozesse oder Benutzer anzeigen können, die sie geöffnet haben.

Das Dienstprogramm lsof ist in den wichtigsten Linux-Distributionen verfügbar; Sie finden es jedoch möglicherweise nicht installiert und müssen daher möglicherweise manuell installiert werden.

So installieren Sie lsof auf Debian/Ubuntu

Um es unter Debian zu installieren, verwenden Sie den Befehl:

sudo apt-get-Update

sudo apt-get installierenlsof-und

So installieren Sie auf REHL/CentOS

Um auf REHL und CentOS zu installieren, verwenden Sie den Befehl:

sudodnf-Update

sudodnfInstallierenlsof

So installieren Sie auf Arch

Rufen Sie in Arch den Paketmanager mit dem folgenden Befehl auf:

sudopacman-Seine

sudopacman-Slsof

So installieren Sie auf Fedora

Verwenden Sie auf Fedora den Befehl:

sudo lecker installierenlsof

Sobald Sie das Dienstprogramm lsof installiert und aktualisiert haben, können wir es verwenden.

Grundlegende lsof-Nutzung

Um das lsof-Tool zu verwenden, geben Sie den Befehl ein:

sudolsof

Sobald Sie den obigen Befehl ausführen, wird lsof viele Informationen wie unten gezeigt ausgeben:

Die obige Ausgabe zeigt alle von den Prozessen geöffneten Dateien. Die Ausgabe hat verschiedene Spalten, die jeweils spezifische Informationen über die Datei darstellen.

  • Die Spalte BEFEHL – zeigt den Namen des Prozesses an, der die Datei verwendet.
  • PID – zeigt die Prozesskennung des Prozesses an, der die Datei verwendet.
  • Die TID – Zeigt die Task-ID (Threads) des Prozesses an.
  • AUFGABECMD – Stellen Sie den Namen des Task-Befehls dar.
  • BENUTZER – Der Eigentümer des Prozesses.
  • FD – Zeigt die Dateideskriptornummer an. So verwenden Prozesse die Datei; Die in dieser Spaltenausgabe verfügbaren Optionen umfassen:
  • cwd – aktuelles Arbeitsverzeichnis.
  • meme – Speicherabgebildete Datei
  • pd - übergeordnetes Verzeichnis
  • jld – Gefängnisverzeichnis
  • ltx – gemeinsam genutzter Bibliothekstext
  • rtd - Wurzelverzeichnis.
  • TXT – Programmcode und Daten
  • NS – Kernel-Trace-Datei.
  • irren – Dateideskriptor-Informationsfehler
  • mmp – Speicherabgebildetes Gerät.
  • TYP – Zeigt den mit der Datei verknüpften Knotentyp an, z. B.:
  • Unix – für Unix-Domain-Socket.
  • DIR – repräsentiert das Verzeichnis
  • REG – repräsentiert die reguläre Datei
  • CHR – steht für die Sonderzeichendatei.
  • VERKNÜPFUNG – symbolische Linkdatei
  • BLK – Spezielle Datei blockieren
  • Internet – Internet-Domain-Socket
  • FIFO – eine Named Pipe (First In First Out Datei)
  • ROHR – für Rohre

Und viele mehr.

  • GERÄTE – Zeigt die durch Kommas getrennten Gerätenummern in der Reihenfolge Sonderzeichendatei, Blockspezial, Normal, Verzeichnis und NFS-Datei an.
  • GRÖSSE/AUS – zeigt die Größe der Datei pr Datei-Offset in Bytes an.
  • KNOTEN – zeigt die Knotennummer der lokalen Datei, den Typ für den Internetprotokolltyp usw.
  • NAME – zeigt den Namen des Mount-Punkts und fs an, auf dem sich die Datei befindet.

Notiz: Detaillierte Informationen zu den Spalten finden Sie im lsof-Handbuch.

So zeigen Sie Prozesse an, die eine Datei geöffnet haben

Lsof bietet uns Optionen, die uns helfen, die Ausgabe so zu filtern, dass nur die Prozesse angezeigt werden, die eine bestimmte Datei geöffnet haben.

Um beispielsweise die Datei anzuzeigen, die die Datei /bin/bash geöffnet hat, verwenden Sie den Befehl als:

sudolsof/bin/bash

Dadurch erhalten Sie eine Ausgabe wie unten gezeigt:

BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE/AUS KNOTENNAME

ksmtuned1025root txt REG253,0 1150704 428303 /usr/bin/bash

bash 2968centos txt REG253,0 1150704 428303 /usr/bin/bash

bash 3075centos txt REG253,0 1150704 428303 /usr/bin/bash

So zeigen Sie von einem bestimmten Benutzer geöffnete Dateien an

Wir können die Ausgabe auch filtern, um die von einem bestimmten Benutzer geöffneten Dateien anzuzeigen. Wir tun dies, indem wir das Flag -u gefolgt vom Benutzernamen verwenden als:

sudolsof-uHunderte

Dadurch erhalten Sie eine Ausgabe wie unten gezeigt:

So zeigen Sie Dateien an, die von einem bestimmten Prozess geöffnet wurden

Angenommen, wir möchten alle Dateien anzeigen, die von einem bestimmten Prozess geöffnet wurden? Dazu können wir die PID des Prozesses verwenden, um die Ausgabe zu filtern.

Der folgende Befehl zeigt beispielsweise die von bash geöffneten Dateien.

sudolsof-P 3075

Dadurch erhalten Sie nur die von systemd geöffneten Dateien wie gezeigt:

So zeigen Sie in einem Verzeichnis geöffnete Dateien an

Um die Dateien in einem bestimmten Verzeichnis zu öffnen, können wir die Option +D gefolgt vom Verzeichnispfad übergeben.

Listen Sie beispielsweise geöffnete Dateien im Verzeichnis /etc auf.

sudolsof +D/etc

Unten ist die Ausgabe dafür:

So zeigen Sie die Netzwerkverbindung an

Da alles in Linux eine Datei ist, können wir die Netzwerkdateien wie TCP-Dateien oder Verbindungen abrufen.

Wir können den Befehl verwenden:

sudolsof-ichTCP

Dadurch erhalten Sie die TCP-Verbindungen im System.

Sie können auch nach dem spezifischen Port filtern, indem Sie den folgenden Befehl verwenden:

sudolsof-ich:22

Dadurch erhalten Sie die Ausgabe wie unten gezeigt:

So zeigen Sie Dateien kontinuierlich an

Lsof bietet uns einen Modus, um die Ausgabe alle paar Sekunden zu wiederholen. Auf diese Weise können Sie die von einem Prozess oder Benutzer geöffneten Dateien kontinuierlich überwachen.

Diese Option erfordert jedoch, dass Sie den Vorgang manuell beenden.

Der folgende Befehl überwacht beispielsweise kontinuierlich die auf Port 22 geöffneten Dateien:

sudolsof -r-ich:22

Wie Sie sehen, fängt lsof in der dritten Schleife die hergestellte Verbindung zum Server über SSH ab.

Abschluss

Lsof ist ein unglaublich nützliches Dienstprogramm. Es ermöglicht Ihnen, auf kritische Dateien zu überwachen sowie Benutzer und Prozesse beim Öffnen von Dateien zu überwachen. Dies kann bei der Fehlerbehebung oder bei der Suche nach böswilligen Angriffen auf das System unglaublich nützlich sein.

Wie in diesem Tutorial gezeigt, können Sie anhand verschiedener Beispiele und Methoden die Funktionen des lsof-Tools für die benutzerdefinierte Überwachung kombinieren.

Danke fürs Lesen und Teilen! Ich hoffe du hast was neues gelernt!