Das Wurzelverzeichnis / ist der oberste Knoten des Linux-Dateisystems — alles, was ein Programm sehen kann, hängt direkt oder über Unterordner darunter. Anders als unter Windows gibt es keine Laufwerksbuchstaben: externe Festplatten, USB-Sticks, Netzwerk-Shares und Pseudo-Filesysteme werden alle in einen einzigen Baum eingehängt. Welche Verzeichnisse direkt unter / liegen, schreibt der Filesystem Hierarchy Standard (FHS) vor — eigene Dateien haben dort nichts verloren.
Single-Tree-Filesystem: ein Baum für alles
Linux folgt dem Unix-Modell „everything is a file, in one tree". Das bedeutet:
- Es gibt genau eine Wurzel —
/. Alles andere ist Unterordner davon. - Externe Speicher (USB-Sticks, Netzwerklaufwerke, virtuelle Geräte) werden in diesen Baum eingehängt (Mount), nicht nebeneinander gestellt.
- Auch Pseudo-Filesysteme wie
/proc(Kernel-Status) und/sys(Hardware) sind Teile dieses Baums — sie sehen wie normale Verzeichnisse aus, sind aber in Wahrheit vom Kernel synthetisiert.
Vergleich zu Windows:
| Konzept | Windows | Linux |
|---|---|---|
| Mehrere Disks | C:\, D:\, E:\ als separate Roots | Alle Disks gemountet unter /, z. B. /, /mnt/data, /home |
| USB-Stick eingesteckt | Neuer Drive-Letter (E:\) | Mountpoint anlegen oder Auto-Mount unter /run/media/<user>/<label> |
| Netzwerk-Laufwerk | \\server\share oder Z:\ | Mounten unter /mnt/share oder /srv/share |
| Pfad-Trenner | Backslash \ | Forward-Slash / |
Der Vorteil des Single-Tree-Modells: Programme müssen sich nicht um Laufwerksbuchstaben kümmern. Pfade sind unabhängig davon, ob die Daten lokal oder über NFS, oder von einem USB-Stick kommen — sie wirken einfach als Teil des Baums.
Was steckt direkt unter / ?
Der Filesystem Hierarchy Standard (FHS) schreibt fest, welche Verzeichnisse direkt unter der Wurzel liegen sollen. Eigene Verzeichnisse oder Dateien haben dort grundsätzlich nichts zu suchen — alles, was du selbst anlegst, gehört in /home, /opt, /srv oder /usr/local.
| Pfad | Zweck | Pflicht laut FHS? |
|---|---|---|
/bin | Essenzielle Benutzer-Binaries (heute Symlink auf /usr/bin) | Ja |
/boot | Bootloader, Kernel, initramfs | Empfohlen |
/dev | Device-Nodes (Hardware als Datei) | Ja |
/etc | Systemweite Konfiguration | Ja |
/home | Heimat-Verzeichnisse der Benutzer | Empfohlen |
/lib | Essenzielle Bibliotheken (heute Symlink auf /usr/lib) | Ja |
/media | Wechseldatenträger (Auto-Mount-Punkte) | Empfohlen |
/mnt | Manuell gemountete temporäre Filesysteme | Empfohlen |
/opt | Add-on-Software (Drittanbieter, Hersteller-Pakete) | Empfohlen |
/proc | Kernel- und Prozess-Information (Pseudo-FS) | Empfohlen |
/root | Heimat-Verzeichnis des Superusers | Empfohlen |
/run | Laufzeit-Daten (PID-Files, Sockets) | Empfohlen |
/sbin | System-Binaries für Administratoren (heute Symlink auf /usr/sbin) | Ja |
/srv | Vom Server bereitgestellte Daten (Web, FTP) | Empfohlen |
/sys | Kernel-Objekte und Hardware (Pseudo-FS) | Empfohlen |
/tmp | Temporäre Dateien | Ja |
/usr | Hauptmasse aller Programme und Bibliotheken | Ja |
/var | Variable Daten (Logs, Caches, Datenbanken) | Ja |
ls -la /
# drwxr-xr-x 19 root root 4096 ... .
# drwxr-xr-x 19 root root 4096 ... ..
# lrwxrwxrwx 1 root root 7 ... bin -> usr/bin
# drwxr-xr-x 4 root root 4096 ... boot
# drwxr-xr-x 19 root root 3760 ... dev
# drwxr-xr-x 162 root root 12288 ... etc
# drwxr-xr-x 4 root root 4096 ... home
# lrwxrwxrwx 1 root root 7 ... lib -> usr/lib
# ...
# Die Symlinks (bin, lib, sbin → usr/...) sind das Ergebnis
# des Usr-Merge — siehe Artikel zu /bin oder /usr.Mount-Punkte: andere Filesysteme einhängen
Der Schlüssel zum Single-Tree-Konzept sind Mount-Punkte: jedes Verzeichnis im Baum kann als Anker für ein anderes Filesystem dienen. Beim Mount „verschwinden" die ursprünglichen Inhalte des Verzeichnisses (sie sind verdeckt) und werden durch das gemountete FS ersetzt — bis zum Unmount.
mount | head -10
# /dev/nvme0n1p2 on / type ext4 (rw,relatime)
# tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=4G)
# proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
# sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
# /dev/nvme0n1p3 on /home type ext4 (rw,relatime)
# ...
# Übersichtlicher mit findmnt
findmnt
# TARGET SOURCE FSTYPE OPTIONS
# / /dev/nvme0n1p2 ext4 rw,relatime
# ├─/proc proc proc rw,nosuid,nodev,noexec
# ├─/sys sysfs sysfs rw,nosuid,nodev,noexec
# ├─/dev devtmpfs devtmpfs rw,nosuid
# ├─/run tmpfs tmpfs rw,nosuid,nodev
# ├─/tmp tmpfs tmpfs rw,nosuid,nodev,size=4G
# ├─/home /dev/nvme0n1p3 ext4 rw,relatime
# └─/boot/efi /dev/nvme0n1p1 vfat rwfindmnt zeigt die Hierarchie sauber als Baum. Auf einem typischen Desktop-System sind 15–25 Filesysteme gemountet — die meisten davon Pseudo-FS (proc, sysfs, tmpfs, cgroup, debugfs).
Mount-Punkte werden auf zwei Wegen dauerhaft konfiguriert:
/etc/fstab: klassische Datei mit einer Zeile pro Mount, beim Boot ausgewertet.- systemd .mount-Units: moderner Weg, vor allem für Auto-Mount und Abhängigkeiten.
Wer darf was im Wurzelverzeichnis?
/ selbst gehört root und hat Mode 0755 (drwxr-xr-x):
- Nur root darf direkt unter
/Verzeichnisse oder Dateien anlegen. - Alle anderen User dürfen lesen und durchsuchen — sie können also
cd /homeausführen, aber nichtmkdir /meinfoo.
Diese Beschränkung ist gewollt: sie verhindert, dass User aus Versehen oder mit Absicht das System mit eigenen Top-Level-Verzeichnissen durcheinanderbringen.
ls -ld /
# drwxr-xr-x 19 root root 4096 ... /
# Versuch ohne sudo — schlägt fehl
mkdir /test
# mkdir: cannot create directory '/test': Permission denied
# Mit sudo geht es
sudo mkdir /test
sudo rmdir /testWenn dir Programme oder Skripte vorschlagen, etwas direkt unter / anzulegen (/myapp, /data), ist das fast immer ein FHS-Verstoß. Korrekte Pfade wären:
- Eigene Software/Vendor-Pakete:
/opt/myapp/ - Daten für Server:
/srv/myapp/oder/var/lib/myapp/ - Self-Compiled-Tools:
/usr/local/bin/myapp - Container-Volume-Mounts:
/mnt/data/oder/srv/data/
Disk-Belegung im Blick
Das Wurzelfilesystem ist auf vielen Setups die Partition, die am ehesten volläuft — vor allem auf Systemen ohne separate /var- oder /home-Partition.
# Gesamtbelegung der Wurzelpartition
df -h /
# Filesystem Size Used Avail Use% Mounted on
# /dev/nvme0n1p2 120G 72G 42G 64% /
# Welche Top-Level-Verzeichnisse sind groß?
sudo du -sh /* 2>/dev/null | sort -hr | head -10
# 14G /var
# 8.2G /usr
# 4.5G /opt
# 3.1G /home
# ...
# Pseudo-FS ausschließen für realistische Sicht
sudo du -shx /* 2>/dev/null | sort -hr | head -10du -x (--one-file-system) sorgt dafür, dass du nicht in andere gemountete Filesysteme absteigt — sonst werden /proc, /sys, externe Disks unter /mnt mitgezählt, was die Sicht verfälscht.
# Interaktiver Disk-Usage-Browser
sudo ncdu /
# Pfeil-Tasten zum Navigieren, 'd' zum Löschenchroot: ein anderes Wurzelverzeichnis vortäuschen
Eine besondere Eigenschaft von Linux: für jeden Prozess lässt sich das Wurzelverzeichnis künstlich verschieben. Das passiert per chroot()-Systemcall — der Prozess (und alle seine Kinder) sieht ab dem Zeitpunkt nur noch den gewählten Unterbaum als seine Wurzel.
Klassische Anwendungen:
- System-Reparatur vom Live-System: das defekte Root-Filesystem unter
/mntmounten, dannsudo chroot /mnt /bin/bashund in der gechrooteten Shell Pakete reinstallieren. - Bauen von Distributionen oder minimalen Container-Filesystemen.
- Sandboxing unsicherer Services (heute weitgehend von Containern und systemd-Sandboxing abgelöst).
# Defekte Disk unter /mnt mounten
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot
# Pseudo-Filesysteme einhängen (wichtig für apt, dpkg)
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
# In das gechrootete System wechseln
sudo chroot /mnt /bin/bash
# Innerhalb: das System sieht /mnt jetzt als /
ls /
# bin boot dev etc home lib opt proc root sys tmp usr var
# Reparieren, dann beenden mit exit oder Ctrl-Dchroot allein ist kein Sicherheits-Container — Prozesse mit root-Rechten können auch aus einem chroot ausbrechen. Für echte Isolation gibt es Container (Docker, Podman, LXC) oder systemd-Namespaces.
Interessantes
Das Wurzelverzeichnis ist nie wirklich Datei #0
Auch wenn / der oberste sichtbare Knoten ist — physikalisch ist es einfach das Root-Inode des gemounteten Filesystems. Bei df / siehst du, welche Partition aktuell als / dient. Auf einem Live-System (USB-Boot) ist das oft tmpfs oder ein Loop-Device.
Mount-Punkte verbergen den ursprünglichen Inhalt
Wenn du etwas in /mnt/wichtig ablegst und dann mount /dev/sdc1 /mnt/wichtig aufrufst, ist der vorher abgelegte Inhalt weg — er ist nur verdeckt, nicht gelöscht. Beim Unmount kommt er zurück. Klassische Falle: /var mit eigener Partition mounten, ohne vorher die Inhalte zu migrieren.
Es gibt einen Unterschied zwischen / und /root
/ ist die Wurzel des Dateisystems. /root ist das Heimat-Verzeichnis des Superusers. Verwirrend ähnlich, völlig unterschiedlich. Beim Tippen vorsichtig sein: cd / führt zur Wurzel, cd /root (mit sudo) ins Root-Home.
Subvolumes auf Btrfs / ZFS sind kein Mount im klassischen Sinn
Btrfs und ZFS erlauben Subvolumes — logische Unterteilungen innerhalb eines Pools, die nicht separat gemountet werden müssen. Trotzdem können sie quasi wie Mount-Punkte wirken. findmnt zeigt sie deshalb mit Filesystem=btrfs (gleicher Pool) bei verschiedenen Subvolume-Namen.
Container haben ihren eigenen / per Namespace
Ein Docker- oder Podman-Container sieht ein anderes /, das aus dem Container-Image stammt. Hostpfade sind nicht sichtbar — außer per Volume-Mount. Technisch passiert das via mount-Namespace und pivot_root (verwandt mit chroot, aber sauberer und sicherer).
`rm -rf /` ist auf modernen Systemen blockiert
GNU coreutils ab 8.10 weigern sich, / rekursiv zu löschen, ohne --no-preserve-root zu setzen. Aber Vorsicht: rm -rf /* (mit Glob) trifft die Variante nicht, ebensowenig cd / && rm -rf . und einige andere Tricks. Im Zweifel zweimal prüfen, was gelöscht wird, und nie blindes sudo rm -rf mit Variablen-Pfaden.
Weiterführende Ressourcen
Externe Quellen
- Filesystem Hierarchy Standard 3.0 — Wurzelfilesystem
- Linux man-pages: hier(7) — komplette Verzeichnisstruktur
- Linux man-pages: mount(8)
- Linux man-pages: chroot(2)
- findmnt(8) — Mount-Tabelle als Baum