Everything is a file

So funktioniert die Linux-Ordnerstruktur

22.02.2015 von Thomas Hümmler
Egal ob /home, /sbin oder /mnt - wer den Aufbau von Linux-Ordnern versteht, kann leicher partitionieren und sich Programme und Medien besser zunutze machen.

Während Windows-Systeme noch an Eigenarten wie Laufwerksbuchstaben festhalten, haben sich die Betriebssysteme Mac-OS X und Linux längst angenähert: Sie verwenden eine gemeinsame Verzeichnisstruktur, ausgehend vom Wurzelverzeichnis „/“, auch Root genannt.

Egal ob /home, /sbin oder /mnt - wer den Aufbau von Linux-Ordnern versteht, kann leicher partitionieren und sich Programme und Medien besser zunutze machen.

Dass es diese Einheitlichkeit in puncto Verzeichnisinhalte und -bezeichnungen gibt, ist dem sogenannten Filesystem Hierarchy Standard, kurz FHS, zu verdanken. Dieser beschreibt den Aufbau eines Unix-Verzeichnissystems. Da es keine Laufwerksbuchstaben gibt, werden Partitionen, Festplatten und andere Speichermedien wie USB-Sticks und DVD-Laufwerke einfach als Ordner in die Verzeichnisstruktur integriert, also „eingehängt“ oder „gemountet“. Theoretisch kann ein Medium wie DVD oder USB-Platte an jeder beliebigen Stelle eingehängt werden. In der Praxis sind dafür aber bestimmte Orte vorgesehen, in erster Linie die Verzeichnisse „/mnt“ und „/media“.

Kennen Sie unseren Linux- und Open-Source-Rückblick?

Man kann sich diese Tatsache schon beim Aufsetzen eines Linux-Systems zunutze machen, indem man das System auf mehrere Festplatten oder Partitionen verteilt. Wer das geschickt anstellt, verhindert dadurch ein unkontrolliertes Überlaufen des physikalischen Speichers oder kann im Fall eines Falles schnell die Benutzerdaten auf einen anderen Server oder eine andere Festplatte verlagern.

Root (/): Das Wurzelverzeichnis

An oberster Stelle des gesamten Linux-Verzeichnissystems befindet sich das Wurzelverzeichnis, auch Root, dargestellt durch den Schrägstrich.

Was im Root-Dateisystem steht, muss ausreichen, um ein Linux-System zu booten oder zu reparieren. Dazu sind Diagnose-, Backup- und Restore-Utilitys ebenso erforderlich wie Konfigurationsdateien und Bootloader-Informationen. Wichtige Befehle wie mountmüssen deshalb direkt erreichbar sein. Da das Root-Verzeichnis normalerweise nur Ordner enthält, ist es zwingend, dass alle Unterverzeichnisse samt den Programmen auf der Root-Partition vorhanden sind.

Sehr groß muss diese Root-Partition aber trotzdem nicht sein. Im Gegenteil: Es bietet sich an, diese so klein wie möglich zu halten, um das System eventuell sogar von einem USB-Stick aus starten zu können. Außerdem ist eine kleine Root-Partition weniger anfällig für Beschädigungen, etwa infolge eines Systemabsturzes.

Systemkommandos: Im Verzeichnis „/bin“ finden Sie Tools zum Kopieren, Löschen und Verschieben von Dateien, zum Entpacken von Archiven oder zum Bearbeiten der Rechte.

/bin: Substanzielle System-Tools

Das Verzeichnis „/bin“ muss sich auf der Root-Partition befinden. Hier stehen wichtige System-Tools, die alle Benutzer ausführen können.

Diese Befehle müssen auch ausführbar sein, wenn kein weiteres Dateisystem gemountet ist. Im „/bin“-Verzeichnis finden Sie unter anderem Systemkommandos für Dateirechte (chgrp, chmod, chown), zum Kopieren, Anlegen, Verschieben und Löschen von Verzeichnissen und Dateien, zum Einloggen und Mounten von Dateisystemen, die Shell sh sowie das Programm su, mit dem man die Benutzerkennung wechseln kann.

In „/bin“ sind außerdem die Archiv-Tools tar und cpio sowie die Pack-Programme gzip und gunzip untergebracht. Mit diesen kann der Administrator ein System wiederherstellen, sofern das Root-Dateisystem intakt ist. Weitere fundamentale Kommandozeilen- Tools sind netstat, ping ftp und tftp.

Auf diesem System wurde dem Bootloader eine eigene kleine Partition spendiert. Das ist etwa nötig, wenn das System verschlüsselt ist oder das Dateisystem Btr fs verwendet.

/boot: Der Bootloader

Das Verzeichnis „/boot“ muss nicht unbedingt auf der Root-Partition liegen. Es enthält die statischen Dateien des Bootloaders – etwa Grub 2 – sowie alle zum Systemstart erforderlichen Dateien. Hier ist auch der System-Kernel zu finden, falls er nicht direkt im Wurzelverzeichnis abgelegt ist.

/dev: Die Gerätedateien

Das „/dev“-Verzeichnis beziehungsweise seine Inhalte werden auf der Root-Partition benötigt. In diesem Verzeichnis stehen zeichen- und blockorientierte Spezialdateien, über die der Zugriff auf Geräte wie Festplatten und DVD-Laufwerke oder Schnittstellen gesteuert wird.

/etc: Die Systemkonfiguration

Das „/etc“-Verzeichnis gehört erneut auf die Root-Partition. Denn dort und in den darunterliegenden Verzeichnissen stehen die Dateien für die Systemkonfiguration. Manche der Verzeichnisse unterhalb von „/etc“ müssen auf jedem Linux vorhanden sein, andere sind optional. Die Konfigurationsdateien für das X-Window-Subsystem, die Voraussetzung für die grafische Desktop-Oberfläche, finden sich im Verzeichnis „/etc/X11“. Eventuell gibt es auch das Verzeichnis „/etc/opt“. Dort finden Sie die Konfigurationsdateien von Paketen aus dem „/opt“-Verzeichnis.

Sweet „home“: Jeder Systembenutzer erhält ein Home-Verzeichnis, in dem er alle Rechte besitzt und seine eigenen Dateien und Konfigurationen unterbringen kann.

/home: Eigene Dateien

Das Verzeichnis „/home“, das die Home-Verzeichnisse aller Benutzer enthält, kann auch auf einer anderen Partition untergebracht sein. Für jeden Benutzer eines Linux-Systems finden Sie hier einen Ordner, der dessen Benutzernamen trägt. Der eigene Home-Ordner ist der einzige Ordner, wo ein Benutzer alle Zugriffsrechte hat. Hier kann er Verzeichnisse anlegen, Dateien löschen und Konfigurationsdaten speichern.

Es hat Vorteile, das Verzeichnis „/home“ auf einer anderen Partition, besser noch auf einer anderen Festplatte anzulegen: Sie können relativ einfach das System aktualisieren und anschließend die Benutzerverzeichnisse wieder einbinden. Diese bleiben von der Aktualisierung unberührt.

Ein weiterer Vorteil: Sind keine Benutzer-Quotas definiert, kann ein Benutzer beliebig viel Festplattenplatz für sein Home-Verzeichnis in Anspruch nehmen und damit theoretisch das gesamte System zum Überlaufen bringen.

/lib, /lib32 & /lib64: Bibliotheken

Das „/lib“-Verzeichnis muss auf der Root-Partition stehen. Das gilt auch für die entsprechenden 32- oder 64-Bit-Bibliotheken in den entsprechenden Unterverzeichnissen. Denn diese Ordner enthalten dynamische Bibliotheken und Kernel-Module, also Dateien mit Anweisungen und Definitionen, die von mehreren Programmen benötigt oder vom Kernel geladen werden. Die Bibliotheken sind nötig, um das System hochzufahren.

Zugriff auf externe Datenträger: Ins „/media“-Verzeichnis bindet Ubuntu zum Beispiel eingelegte DVDs, USB-Sticks oder externe Festplatten ein.

/media: Zugriff auf DVDs, USB-Sticks und externe Festplatten

Auch das Verzeichnis „/media“ gehört auf die Root-Partition. Das Verzeichnis ist eigentlich leer und dient nur als Einhängepunkt für Disketten („/media/floppy“), CD-/DVD-Laufwerke („/media/cdrom“, „/media/dvd“), Zip-Disks („/media/zip“) oder externe USB-Festplatten. Auf Systemen mit mehr als einem gleichen Gerät können weitere Verzeichnisse existieren, die alle mit einer Zahl enden (zum Beispiel „/media/cdrom0“ und „/media/cdrom1“ für zwei CD-Laufwerke).

Einige Linux-Distributionen erlauben auch direkt unterhalb Root Einhängepunkte wie „/cdrom“, doch dies entspricht nicht dem Standard FHS.

/mnt: Weitere Einhängepunkte

Für das Verzeichnis „/mnt“ gilt das Gleiche wie für „/media“: Es sollte auf der Root-Partition liegen. Das Verzeichnis ist ebenso leer wie „/media“ und dafürgedacht, zeitweilig ein Dateisystem einzuhängen. Das nutzen Administratorenetwa dazu, Backups zu machen oder Festplatten zu spiegeln. Die Unsitte, den Ordner „/mnt“ für das Mounten von Laufwerken zu nutzen, steht im Konflikt mit dieser Unix-Tradition.

/opt: Zusätzliche Software

Das Verzeichnis /opt wird für den Systemstart nicht benötigt und kann wie das /home-Verzeichnis auf eine andere Partition ausgelagert werden. Hier finden Sie zusätzlich installierte Software-Pakete, die nicht über die Paketverwaltung installiert wurden. Diese stehen dann im Verzeichnis /opt/[Paket]/bin oder /opt/[Provider].

Handbuchseiten (Manpages) zu den Programmen liegen für gewöhnlich unter /opt/[Paket]/share/man. Konfigurationsdateien für diese Pakete landen unter /etc/opt, veränderbare Daten in Programmen sind üblicherweise im Verzeichnis /var/opt installiert.

/proc: Prozess- und Systeminformationen

Das „/proc“-Verzeichnis wird im FHS nur im Anhang erwähnt. Es ist kein Standard-Unix-Verzeichnis, unter Linux aber der De-facto-Standard zum Verwalten von Prozess- und Systeminformationen. Andere Derivate machen das beispielsweise in „/dev/kmem“. Das „/proc“-Verzeichnis muss nicht auf der Root-Partition liegen.

/root: Ordner des Administrators

Der Administrator hat nicht nur alle Rechte, er hat auch sein Home-Verzeichnis nicht am gleichen Platz wie die gewöhnlichen Benutzer, sondern direkt unterhalb von „/“ im Verzeichnis „/root“. Das Verzeichnis muss nicht zwingend auf der Root-Partition liegen, doch Sie müssen sicherstellen, dass es auf das Wurzelverzeichnis verweist, falls es nicht geortet werden kann.

/sbin: Programme zur Systemadministration

„/sbin“ muss auf der Root-Partition vorhanden sein. Es enthält Programme für die Systemadministration, jedoch längst nicht alle: Weitere finden Sie unter „/usr/sbin“ und „/usr/local/sbin“.

Das „/sbin“-Verzeichnis enthält aber – im Gegensatz zu den beiden anderen – Befehle, die zusätzlich zu den Kommandos im „/bin“-Verzeichnis für das Booten, die Datenrettung und –wiederherstellung unbedingt erforderlich sind. Hier stehen Programme wie halt zum Herunterfahren, fdisk zum Partitionieren und die fsck-Programme zum Prüfen der Dateisysteme.

Unter „/usr/sbin“ und „/usr/local/sbin“ liegen hingegen Programme, die erst nach dem Mounten des „/usr“-Verzeichnisses benötigt werden.

/srv: System-Dienste

„/srv“ muss nicht auf der Root-Partition stehen. Es enthält Daten für Dienste, die das System bereitstellt, zum Beispiel CGI-Scripts oder Daten eines Web- oder FTP-Servers. Meist sind die Daten nach dem Protokoll sortiert, also www, ftp, rsync oder cvs.

/tmp: Zwischenlager für Dateien

Auch das „/tmp“-Verzeichnis muss nicht auf der Root-Partition liegen. Linux-Programme nutzen „/tmp“, um temporäre Dateien zwischenzulagern. Selbst Benutzer haben in diesem Verzeichnis Schreibrechte und können dort Dateien auslagern. Dateien unter „/tmp“ werden in der Regel spätestens bei jedem Hochfahren des Systems gelöscht. Manche Systeme löschen das „/tmp“-Verzeichnis sogar regelmäßig per cron-Job.

/usr: Für jeden lesbare Dateien

Der zweitgrößte Bereich im Verzeichnissystem ist die „/usr“-Hierarchie. Dieser Bereich muss nicht auf der Root-Partition liegen, denn wichtige System-Tools sind entweder unter „/bin“ oder „/sbin“ untergebracht.

In der „/usr“-Hierarchie gibt es mehrere Verzeichnisse, die erforderlich sind:

Gemeinsame Dateien: Im Verzeichnis „/usr“ liegen beispielsweise auch die Hintergrundbilder für den Desktop oder Programm-Icons. Aus beiden können Sie selbst auswählen.

/var: Variable Daten

„/var“ muss nicht auf die Root-Partition. „/var“ nimmt beispielsweise Spool-Verzeichnisse für Mailpostfächer der Benutzer oder Druckaufträge, Log-Dateien und andere temporäre Dateien auf. In die „/var“-Verzeichnisstruktur werden im Betrieb all jene Daten geschrieben, die früher unter „/usr“ ihren Platz fanden. Im Idealfall liegt „/var“ auf einer eigenen Partition, eben weil darin so viele veränderliche Daten enthalten sind: Wenn zum Beispiel der Mailtransport ständig Fehler produziert und die Log-Dateien die Partition vollschreiben, kann diese schnell volllaufen. Liegt „/var“ auf der Systempartition, ist das ganze System betroffen.

Partitionieren: Der klassische Partitionierer zum Aufteilen von Festplatten ist Gparted. Viele Distributionen haben ihn standardmäßig an Bord.

So partitionieren Sie richtig

Für die Installation eines Linux-Systems können Sie die Festplatte ganz unterschiedlich partitionieren. Wichtig ist: Die Root-Partition muss physisch die Verzeichnisse /bin, /dev, /etc, /lib (/lib32 und /lib64) und /sbin enthalten. Bei Debian GNU/Linux geht man von etwa 150 bis 250 MB Platzbedarf für diese Verzeichnisse aus.

Beim „/tmp“-Verzeichnis sollten Sie Folgendes bedenken: Hier dürfen auch Benutzer schreiben, daher lässt es sich unter anderem für Images nutzen, die beim Brennen auf CD, DVD oder Bluray anfallen. Manche Brennprogramme nutzen auch das „/tmp“-Verzeichnis, um vorübergehend darin eigene Daten zu speichern. Wer solche Anwendungen nutzt, sollte daher den Platz entsprechend einplanen und circa 1 bis 20 GByte für das „/tmp“-Verzeichnis reservieren. Wer nicht mit Brennprogrammen arbeitet, kommt mit wesentlich weniger Platz für das temporäre Verzeichnis aus. Die Debian-Installationsanleitung spricht in dem Fall von 40 bis 100 MByte Platzbedarf.

Die „/usr“-Verzeichnishierarchie ist der Teil des Dateisystems, der zunächst den meisten Platz benötigt. Laut Debian-Installationsanleitung Sollte man für eine großzügige Arbeitsplatz oder Server-Installation 4 bis 6 GByte reservieren. Die „/var“-Verzeichnishierarchie enthält veränderliche Daten. Hier werden Mails und Software-Pakete zwischengespeichert, Log-Dateien geschrieben und Datenbanken aufbewahrt. Bei Debian GNU/Linux wird das Unterverzeichnis „/var/www“ FHS-unkonform anstelle von „/srv/www“ noch für Webseiten genutzt. Die Größe von „/var“ hängt daher stark von der Nutzung des Systems ab. Der Platzbedarf kann von 30 MB bis zu mehreren GB variieren.

Nur nicht knausern: Unter „/home“ lagern die Verzeichnisse der Benutzer. Wie viel Platz Sie für dieses Verzeichnis vorsehen, hängt von der Anzahl der Systembenutzer ab. Angesichts der mittlerweile üblichen Datenmengen, die beim Speichern von Videos, Musik und Bildern anfallen, kann die Empfehlung nur lauten: Stellen Sie möglichst viel Platz zur Verfügung.

Zwar kommt man generell mit einer Festplatte und einer Partition aus. Geschickter ist aber der Einsatz von mindestens zwei Festplatten. Eine Platte kann das System enthalten, die andere die Home-Verzeichnisse. So kann man schnell die „/home“-Verzeichnishierarchie in ein anderes System übernehmen. Die Home-Verzeichnisse können Sie außerdem mit dem Logical Volume Manager verwalten; das hat den Vorteil, dass Sie bei Bedarf zur Verzeichnisstruktur einfach weitere Partitionen hinzufügen.

Auf der Systemplatte wiederum sollten Sie am ehesten für „/var“ und „/tmp“ eigene Partitionen definieren –für „/tmp“, weil alle in das Verzeichnis schreiben dürfen, für „/var“ aus dem bereits erwähnten Grund: Läuft die Partition voll, etwa weil der Rechner mit Spam geflutet wird, reagiert zumindest der Rest des Systems noch.

Dieser Artikel basiert auf einem Beitrag der PC-Welt. (mhr)