VMware ESXi and vSphere Cluster Management

Linux-Dateitypen erkennen: Symbole in ls -l verstehen

Lerne, Linux-Dateitypen mit ls -l, file und stat zu erkennen. Erklärt werden reguläre Dateien, Verzeichnisse, Links, Geräte, Sockets, Pipes und Berechtigungen.

Was bedeutet „Dateityp“ unter Linux?

Linux behandelt Dateien und dateiähnliche Objekte je nach ihrem Typ unterschiedlich. Der allgemeine Begriff Datei kann dabei mehr bedeuten als eine reguläre Datei mit dauerhaft gespeicherten Nutzdaten.

Im Dateisystem können unter anderem Verzeichnisse, symbolische Links, Gerätedateien, Unix-Domain-Sockets und benannte Pipes sichtbar sein. Sie erscheinen häufig gemeinsam in einer Verzeichnisauflistung, erfüllen aber unterschiedliche Aufgaben.

Eine reguläre Datei ist nur eine dieser Kategorien. Sie enthält typischerweise Daten wie Text, Konfigurationen, Bilder, Programme oder Skripte. Ein Verzeichnis organisiert dagegen Einträge, ein Link verweist auf einen Pfad und ein Socket dient der Kommunikation zwischen lokalen Prozessen.

Die Dateitypen in der Ausgabe von ls -l

Die wichtigste schnelle Sichtprüfung ist die Langformat-Ausgabe von ls:

ls -l

Das allererste Zeichen der ersten Spalte kennzeichnet den Dateityp. Die folgenden neun Zeichen beschreiben dagegen Zugriffsrechte.

-rw-r--r--  1 anna entwickler  1200 Aug 19 10:15 notizen.txt
drwxr-xr-x  2 anna entwickler  4096 Aug 19 10:16 projekt
lrwxrwxrwx  1 anna entwickler     9 Aug 19 10:17 aktuell -> projekt

Die drei Zeilen beginnen mit -, d und l. Das sind die Dateitypen reguläre Datei, Verzeichnis und symbolischer Link. Danach folgen jeweils die Berechtigungen.

Aufbau der ersten Spalte

Die Zeichenfolge -rwxr-x--- lässt sich so zerlegen:

- rwx r-x ---
| |   |   |
| |   |   +-- Rechte für andere Benutzer
| |   +------ Gruppenrechte
| +---------- Besitzerrechte
+------------ Dateityp

Die neun Berechtigungsbits sind in drei Dreiergruppen aufgeteilt: Besitzer, Gruppe und andere Benutzer. r steht für Lesen, w für Schreiben und x für Ausführen beziehungsweise – bei Verzeichnissen – Betreten und Durchsuchen.

Sonderrechte wie setuid, setgid und das Sticky Bit werden ebenfalls in dieser Berechtigungsspalte dargestellt. Sie sind Berechtigungsmerkmale und dürfen nicht mit dem führenden Dateitypzeichen verwechselt werden.

Linux-Dateitypen und ihre Symbole

SymbolDateitypKurzbeschreibungTypischer Fundort oder Anwendungsfall
-Reguläre DateiSpeichert gewöhnliche Nutzdaten.Text, Konfiguration, Bild, Programm oder Skript
dVerzeichnisOrganisiert Einträge für Dateien und weitere Verzeichnisse.Verzeichnisbaum des Dateisystems
lSymbolischer LinkVerweist auf einen Pfad oder ein anderes Ziel.Alternative Namen und flexible Pfade
cZeichenorientierte GerätedateiStellt einen zeichen- oder stromorientierten Gerätezugang bereit.Terminals, Konsolen und andere Geräte unter /dev
bBlockorientierte GerätedateiStellt Daten in Blöcken bereit.Datenträger und Partitionen unter /dev
sUnix-Domain-SocketEndpunkt für lokale Prozesskommunikation.Kommunikation zwischen Programmen auf demselben System
pBenannte Pipe (FIFO)Ermöglicht einen Datenstrom zwischen Prozessen.Einfacher Datenaustausch über einen benannten Dateisystemeintrag

Reguläre Dateien: das Symbol -

Das Minuszeichen - steht für eine reguläre Datei. Sie enthält typischerweise dauerhaft gespeicherte Nutzdaten, zum Beispiel:

  • Text- und Protokolldateien
  • Konfigurationsdateien
  • Bilder, Audio- und Videodateien
  • Programme und Skripte
  • Archive oder Datenbankdateien

Die Dateiendung bestimmt unter Linux nicht den eigentlichen Dateisystemtyp. Eine Datei namens bild.txt kann beispielsweise Bilddaten enthalten, während eine Datei ohne Endung ein Shell-Skript sein kann. Die Endung ist meist eine Konvention für Menschen und Programme, aber keine verbindliche Typdefinition des Dateisystems.

Verzeichnisse: das Symbol d

Ein Verzeichnis wird mit d gekennzeichnet. Es enthält Einträge, die auf Dateien und weitere Verzeichnisse verweisen, und bildet damit einen Teil der Dateisystemhierarchie.

Ein Verzeichnis ist nicht bloß ein Ordnername, sondern ein eigener Dateityp. Deshalb gelten für seine Rechte besondere praktische Regeln: Leserechte erlauben das Auflisten von Einträgen, Schreibrechte erlauben das Anlegen oder Entfernen von Einträgen, und das x-Recht erlaubt das Betreten beziehungsweise Durchsuchen.

Mit ls -l wird normalerweise der Inhalt eines Verzeichnisses angezeigt. Um das Verzeichnis selbst zu untersuchen, verwendet man -d:

ls -ld /pfad/zum/verzeichnis

Symbolische Links: das Symbol l

Ein symbolischer Link, kurz Symlink, trägt das Symbol l. Er speichert im Wesentlichen einen Zielpfad. In der Langformat-Ausgabe zeigt ls -l das Ziel nach einem Pfeil an:

lrwxrwxrwx 1 anna entwickler 9 Aug 19 10:17 aktuell -> projekt

Hier ist aktuell der Link selbst und projekt das Linkziel. Diese beiden Dinge müssen getrennt betrachtet werden. Wird das Ziel verschoben oder gelöscht, bleibt der Link möglicherweise bestehen, funktioniert aber nicht mehr. Ein solcher Eintrag heißt defekter symbolischer Link.

Das Ziel kann mit der Ausgabe von ls -l geprüft werden. Für eine detailliertere Untersuchung eignet sich auch stat:

ls -l aktuell
stat aktuell

Gerätedateien: c und b

Zeichenorientierte Gerätedateien

Das Symbol c steht für eine zeichenorientierte Gerätedatei. Solche Einträge repräsentieren Geräte, die Daten als fortlaufenden Zeichen- oder Datenstrom verarbeiten. Typische Einsatzbereiche sind Terminals, Konsolen und andere Gerätezugänge.

Zeichenorientierte Gerätedateien findet man häufig unter /dev. Sie sind keine normalen Dateien, deren Inhalt man wie eine Textdatei lesen oder bearbeiten sollte.

Blockorientierte Gerätedateien

Das Symbol b steht für eine blockorientierte Gerätedatei. Diese stellt den Zugriff auf ein Gerät in Blöcken bereit. Typische Beispiele sind Datenträger und Partitionen.

ls -l /dev

Der Unterschied liegt vor allem auf der Zugriffsebene: Zeichenorientierte Geräte liefern einen fortlaufenden Datenstrom, während blockorientierte Geräte blockweise angesprochen werden und typischerweise als Speichergeräte für Dateisysteme dienen. Die konkrete Ausgabe hängt von Hardware, Kernel und Systemkonfiguration ab.

Unix-Domain-Sockets: das Symbol s

Ein Unix-Domain-Socket wird mit s angezeigt. Er ist ein lokaler Kommunikationsendpunkt, über den Prozesse auf demselben Rechner Daten austauschen können.

Der Socket-Eintrag im Dateisystem ist dabei kein gewöhnlicher Inhaltsspeicher wie eine reguläre Datei. Er dient als benannter Zugang zur Prozesskommunikation. Viele Dienste legen solche Einträge beispielsweise in temporären Verzeichnissen oder unter Laufzeitverzeichnissen an.

Benannte Pipes: das Symbol p

Das Symbol p bezeichnet eine benannte Pipe, auch FIFO genannt. Sie ermöglicht einen Datenstrom zwischen Prozessen über einen sichtbaren Dateisystemeintrag.

Im Unterschied zu einer regulären Datei liegt der über eine Pipe übertragene Datenstrom typischerweise nicht dauerhaft als normaler Dateiinhalt vor. Ein Prozess schreibt Daten hinein, während ein anderer sie liest. Das Erzeugen einer benannten Pipe erfolgt beispielsweise mit:

mkfifo beispiel-pipe
ls -l beispiel-pipe

Der Eintrag beginnt anschließend mit p. Beim praktischen Testen ist zu beachten, dass Lesen und Schreiben an einer FIFO je nach beteiligten Prozessen warten können, bis die jeweils andere Seite geöffnet wird.

Dateitypen praktisch erzeugen und prüfen

Mit den folgenden Befehlen entsteht ein kleines Arbeitsbeispiel:

mkdir dateitypen-demo
cd dateitypen-demo
touch beispiel.txt
mkdir beispielverzeichnis
ln -s beispiel.txt beispiel-link
mkfifo beispiel-pipe
ls -l

Eine mögliche relevante Typanzeige sieht sinngemäß so aus:

-rw-r--r-- 1 user user 0 ... beispiel.txt
drwxr-xr-x 2 user user ... beispielverzeichnis
lrwxrwxrwx 1 user user 12 ... beispiel-link -> beispiel.txt
prw-r--r-- 1 user user 0 ... beispiel-pipe

Die Größen, Zeitangaben und Berechtigungen können abweichen. Entscheidend sind die ersten Zeichen -, d, l und p.

Dateityp, Berechtigungen und Inhaltstyp unterscheiden

PrüffrageGeeignetes Werkzeug oder MerkmalBeispielergebnis
Welcher Dateisystemtyp liegt vor?Erstes Zeichen von ls -l oder die Typangabe von stat- für reguläre Datei, d für Verzeichnis
Welche Zugriffsrechte gelten?Neun Zeichen nach dem Typzeichen in ls -lrwxr-x---
Welches Format oder welcher Inhalt steckt in einer regulären Datei?file untersucht DatenmerkmaleTextdatei, PNG-Bild, Shell-Skript oder ELF-Programm

ls -l beantwortet vor allem die Frage nach dem Dateisystemobjekt und dessen Metadaten. Das Werkzeug file untersucht dagegen den Inhalt beziehungsweise das Format, insbesondere bei regulären Dateien:

ls -l beispiel.txt
file beispiel.txt
stat beispiel.txt

Eine Datei kann in ls -l mit - beginnen und von file als Textdatei, Bild oder ausführbares Programm erkannt werden. Das sind zwei verschiedene Klassifikationen: Dateisystemtyp und Inhaltstyp.

stat liefert zusätzliche Metadaten wie Dateityp, Rechte, Eigentümer, Größe, Zeitstempel und Inode-Informationen. Es eignet sich daher für eine detaillierte Prüfung, wenn die kurze Sichtprüfung von ls -l nicht ausreicht.

Berechtigungsbits und chmod

chmod verändert Zugriffsrechte, aber nicht den grundlegenden Dateityp. Bei einer regulären Datei kann beispielsweise das Ausführungsrecht ergänzt werden:

ls -l beispiel.txt
chmod u+x beispiel.txt
ls -l beispiel.txt

Das führende Zeichen bleibt -; nur die Berechtigungszeichen des Besitzers ändern sich, etwa von -rw-r--r-- zu -rwxr--r--.

Die praktische Bedeutung von Rechten hängt vom Dateityp ab. Bei einer regulären Datei erlaubt x typischerweise das Ausführen. Bei einem Verzeichnis bedeutet x, dass der Benutzer es betreten und Einträge darin anhand ihrer Namen erreichen darf. chmod ändert also Rechte, nicht eine reguläre Datei in ein Verzeichnis oder einen Link.

Typische Fehler und ihre Lösungen

Die Dateiendung wird als Linux-Dateityp missverstanden

Eine Endung wie .txt oder .jpg ist keine verbindliche Dateisystemklassifikation. Verwende ls -l für den Dateisystemtyp und file für das erkannte Format.

Die Rechte werden als Dateityp gelesen

Bei rwxr-xr-x beschreibt kein Zeichen den Dateityp. Das Typzeichen steht immer davor. Zerlege die Spalte in ein einzelnes Zeichen und drei Gruppen aus jeweils drei Berechtigungsbits.

Ein symbolischer Link funktioniert nicht

Prüfe die Zielangabe hinter ->. Das Ziel kann gelöscht, verschoben oder aufgrund eines relativen Pfads an einer anderen Stelle erwartet werden. Untersuche Link und Ziel getrennt mit ls oder stat.

Ein Eintrag unter /dev wird wie eine normale Datei behandelt

Ein führendes c oder b weist auf eine Gerätedatei hin. Sie stellt einen Gerätezugang bereit und sollte nicht mit den Erwartungen an eine reguläre Datei behandelt werden.

Nach chmod scheint sich der Dateityp verändert zu haben

Vergleiche die Ausgabe vor und nach chmod. Geändert werden Berechtigungsbits; das erste Zeichen bleibt für dasselbe Dateisystemobjekt unverändert.

Prüfschema für die Praxis

  1. Führe ls -l für eine schnelle Sichtprüfung aus.
  2. Lies das erste Zeichen der ersten Spalte als Dateityp.
  3. Trenne die folgenden neun Zeichen als Besitzer-, Gruppen- und Sonstigenrechte ab.
  4. Prüfe bei regulären Dateien mit file zusätzlich das Format oder den Inhaltstyp.
  5. Verwende stat, wenn detaillierte Metadaten oder eine genauere Typprüfung erforderlich sind.
  6. Bei symbolischen Links: Link selbst und Linkziel getrennt untersuchen.

Weitere Einordnung bietet die Seite Linux-Dateitypen.