Dateitypen bestimmen

LinuxBeginner
Jetzt üben

Einführung

Unter Windows oder macOS sind Sie es gewohnt, dass Dateierweiterungen angeben, um welchen Dateityp es sich handelt. Endet ein Dateiname auf .jpg, handelt es sich um ein Bild. Endet er auf .exe, ist es ein Programm.

Unter Linux sind Dateinamen jedoch nur Bezeichnungen. Und wie im echten Leben können Bezeichnungen falsch sein. Sie können ein Glas Salz nehmen und es mit „Zucker“ beschriften – der Inhalt schmeckt trotzdem salzig.

Linux vertraut der Bezeichnung, also dem Dateinamen, nicht. Stattdessen untersucht das System den Inhalt und ermittelt, worum es sich tatsächlich handelt.

Das entspricht einer umfassenderen Unix-Idee: Die Bedeutung ergibt sich oft daraus, wie Daten strukturiert und verwendet werden, nicht nur aus ihrem Namen. Dateierweiterungen können für Menschen praktische Hinweise sein, sind aber nicht die letztgültige Informationsquelle.

In diesem Lab verwenden Sie den Befehl file, um den tatsächlichen Typ von Dateien zu bestimmen – unabhängig davon, wie sie benannt sind.

Diese Fähigkeit ist im praktischen Betrieb wichtig. Sie können auf heruntergeladene Dateien, Protokolle, Speicherabbilder, Skripte oder verdächtige Anhänge mit irreführenden Namen stoßen. Bevor Sie solche Dateien öffnen, ausführen oder bearbeiten, sollten Sie feststellen, worum es sich tatsächlich handelt.

Eine Textdatei überprüfen

Beginnen Sie mit einer Datei, die tatsächlich dem entspricht, was ihr Name verspricht.

Wechseln Sie zunächst in Ihr Projektverzeichnis:

cd ~/project
ls -l

Sie sehen die Datei welcome.txt. Die Erweiterung .txt deutet darauf hin, dass es sich um eine Textdatei handelt. Denken Sie jedoch daran: Wir vertrauen der Bezeichnung nicht.

Lassen Sie den Befehl file die Datei untersuchen:

file welcome.txt

Sie sehen eine Ausgabe ähnlich dieser:

welcome.txt: ASCII text

file hat den Inhalt geprüft und bestätigt: „Ja, dies ist ASCII-Text.“

Befehle wie cat und less sowie Texteditoren funktionieren am besten, wenn Sie bereits wissen, ob eine Datei eine Textdatei ist. Der Befehl file hilft Ihnen dabei, diese Entscheidung sicher zu treffen.

Da es sich um Text handelt, können Sie die Datei gefahrlos lesen. Verwenden Sie beispielsweise den Befehl cat:

cat welcome.txt

Eine Binärdatei überprüfen

Systemprogramme wie ls, mkdir oder cat sind keine Textdateien. Es handelt sich um Binärdateien, die in einer Sprache geschrieben sind, die nur der Prozessor des Computers versteht.

Sehen wir uns den Befehl ls selbst an. Er befindet sich im Verzeichnis /bin.

Lassen Sie file den Dateityp bestimmen:

file /bin/ls

Die Ausgabe kann zunächst beunruhigend wirken, enthält aber wichtige Informationen:

/bin/ls: ELF 64-bit LSB pie executable, x86-64, ...

Keine Sorge. Hier ist die Bedeutung:

  • ELF: Standardformat für Linux-Programme, vergleichbar mit .exe unter Windows.
  • executable: Eine ausführbare Datei, die Sie starten können.

ELF steht für Executable and Linkable Format. Das ist das standardmäßige Binärformat, das viele Linux-Systeme verwenden. Sie müssen sich den vollständigen Namen nicht merken. Es ist jedoch hilfreich, ELF als Hinweis zu erkennen: „Dies ist eine ausführbare Linux-Datei.“

Die wichtigste Erkenntnis ist: file hat Ihnen mitgeteilt, dass es sich um eine ausführbare Datei handelt. Wenn Sie versuchen würden, /bin/ls mit cat auszugeben, würde Ihr Bildschirm mit unlesbaren Zeichen gefüllt. Wenn Sie wissen, dass eine Datei binär ist, lautet die wichtige Warnung: „Nicht lesen, sondern ausführen.“

Unbekannte Dateien identifizieren

Jetzt folgt die Detektivarbeit. In Ihrem Projektverzeichnis befinden sich zwei verdächtige Dateien: mystery_file und fake_image.jpg.

Fall 1: Die Datei ohne Namenserweiterung

mystery_file hat keine Erweiterung. Ist es eine Textdatei oder ein Programm?

Testen Sie die Datei:

file mystery_file

Ergebnis:

mystery_file: PNG image data, ...

Aha! Es handelt sich um ein PNG-Bild. Obwohl die Datei keine Namenskennung besitzt, hat Linux die interne Signatur eines PNG-Bildes erkannt.

Fall 2: Die Lügnerin

Sehen Sie sich nun fake_image.jpg an. Die Bezeichnung behauptet, es sei ein „JPEG Image“. Stimmt das?

file fake_image.jpg

Ergebnis:

fake_image.jpg: ASCII text

Das ist eine Lüge! Die Datei ist lediglich eine Textdatei.

Da wir jetzt wissen, dass es sich um Text handelt, können wir die Datei gefahrlos lesen:

cat fake_image.jpg

Diese Fähigkeit – Dateien anhand ihres Inhalts und nicht anhand ihres Namens zu identifizieren – unterscheidet erfahrene Linux-Benutzerinnen und -Benutzer von Anfängerinnen und Anfängern.

Das ist auch ein Grund dafür, dass Linux weniger von Dateierweiterungen abhängig wirkt als manche Desktop-Betriebssysteme. Erweiterungen sind hilfreiche Konventionen, aber das System kann oft mehr erfahren, indem es die Datei selbst untersucht.

Zusammenfassung

Sie haben gelernt, die Bezeichnung einer Datei zu hinterfragen und ihren tatsächlichen Typ zu erkennen.

  • file filename: Mit diesem Befehl bestimmen Sie den tatsächlichen Dateityp.
  • Erweiterungen können täuschen: .jpg bedeutet nicht immer, dass es sich um ein Bild handelt.
  • Keine Erweiterung? Kein Problem: Linux benötigt keine Dateierweiterung, um den Dateityp zu erkennen.

Damit können Sie nun jede unbekannte Datei untersuchen, auf die Sie in der Praxis stoßen!