Einblick in die Linux-Verzeichnishierarchie

Aus LinuxUser 11/2011

Einblick in die Linux-Verzeichnishierarchie

© Jarmalek, sxc.hu

Abtauchen

Ein Blick in die Tiefen der Verzeichnisbaums enthüllt, dass die komplexe Linux-Hierarchie in weiten Teilen einer durchdachten Ordnung folgt. Wer hier durchblickt, dem geht nichts verloren.

Die Verzeichnisse unter Linux folgen – im optimalen Fall – einer durchdachten Strategie: dem Filesystem Hierarchy Standard [1], kurz FHS (siehe Kasten “FHS: Ein Standard für alle?”). Aktuell diskutieren die Mitglieder der entsprechenden Mailing-Liste den ersten Entwurf der kommenden Version 3.0, mit der sich wieder einiges ändert. Wer plant, seine Software für viele Plattformen anzubieten, oder wer im Dateisystem regelmäßig Verzeichnisse und Dateien erstellt, der tut gut daran, diese Diskussion zu verfolgen.

FHS: Ein Standard für alle?

Es gibt zwar ein paar grundlegende Gemeinsamkeiten zwischen allen Unix-Verzeichnishierarchien, aber in der Vergangenheit gingen selbst in der Familie der Linux-Distributionen die Vorstellungen über die genaue Struktur zum Teil weit auseinander. Diese Unterschiede erschwerten es ganz erheblich, Software für mehr als eine Distribution zu programmieren, geschweige denn plattformübergreifend.

Um diesem Problem zu begegnen, begannen einige Entwickler seit Anfang 1993 mit der Arbeit an einem entsprechenden Standard, dem FHS. Dieser zielte zunächst nur auf Linux-Systeme ab. Seit 1995 steuern aber BSD-Entwickler ihren Teil zu der Arbeit bei, um so eine Richtlinie zu entwerfen, die möglichst viele unixoide Systeme umfasst.

Der Standard ist nicht bindend, und viele Hersteller kommerzieller Unix-Systeme folgen ihm nicht. Wer den FHS jedoch einhält, ermöglicht es, Software, Dateien und Verzeichnisse an vorhersehbaren Punkten wiederzufinden, und erleichtert Anwendern, sich ohne ständiges Einarbeiten auf einem System zu orientieren und dieses zu warten. Zudem erlaubt der FHS unabhängigen Drittanbietern, Programme zu optimieren, und gibt Herstellern von Distributionen einen roten Faden für den Aufbau des Systems an die Hand.

Im Laufe der Zeit hat der FHS einige Änderungen erfahren, und auch aktuell stehen wieder einige Modifikationen zur Diskussion. Es handelt sich bei dem Standard also nicht um ein statisches Gebilde, sondern um einen höchst lebendigen Prozess – wie in so vielen Fällen bei freier Software.

Die Pyramide der Verzeichnisse in einem Linux-System beginnt (oder endet, je nach Perspektive) stets im Root-Dateisystem, gekennzeichnet in vielen Ansichten durch einen einfachen Schrägstrich. Von hier zweigen die Hauptverzeichnisse ab (siehe Tabelle “Erste Ebene”), die Sie tunlichst nicht umbenennen oder löschen.

Erste Ebene

/bin essenzielle Programme
/boot statische Dateien, die das System zum Starten benötigt
/dev Gerätedateien
/etc rechnerspezifische Konfigurationsdateien
/lib essenzielle Bibliotheken und Kernel-Module
/media Einhängepunkt für Wechselmedien
/mnt Einhängepunkt für zeitweilig genutzte Dateisysteme
/opt zusätzliche Anwendungsprogramme
/run Dateien, die das System beim Starten von Diensten und Ressourcen benötigt
/sbin essenzielle Systemprogramme
/srv Dateien für Dienste, die das System bereitstellt
/tmp temporäre Dateien
/usr sekundäre Hierarchie
/var veränderliche Daten von Programmen zur Laufzeit

Es empfiehlt sich ebenfalls nicht, in der obersten Ebene neue Verzeichnisse für eigene Zwecke zu erzeugen. Je nach Einsatz gibt es für in der Regel für alle Fälle die passenden Orte zum Speichern der Daten.

Der Hintergrund für diese Regel liegt in der Tatsache, dass manche Administratoren die Partition, auf der diese Daten liegen, bewusst klein halten. Laut FHS sollten auf diesem Datenträger nur die Dateien liegen, die Sie benötigen, um andere Dateisysteme einzubinden oder zu reparieren, ein System zu untersuchen und zu reparieren oder Daten aus einem Backup wiederherzustellen [2].

Um die Dateien und Verzeichnisse zu strukturieren, verwendet der FHS zwei Kriterien: Dürfen mehrere Rechner sie gemeinsam nutzen oder nicht, und: sind sie statisch oder dynamisch? Daraus ergibt sich eine Matrix mit vier Feldern, in die die Verzeichnisse jeweils fallen (Abbildung 1).

Abbildung 1: Mit einem einfachen Schema kategorisiert der FHS die Dateien und Verzeichnisse in der Dateisystem-Hierarchie. Die Matrix zeigt einige Beispiele.

Abbildung 1: Mit einem einfachen Schema kategorisiert der FHS die Dateien und Verzeichnisse in der Dateisystem-Hierarchie. Die Matrix zeigt einige Beispiele.

Schneller Start

Aus der Matrix ergeben sich aber zum Teil gravierende Konsequenzen für den Betrieb eines Linux-Systems: Der Standard erlaubt es beispielsweise, dass das Verzeichnis /var auf einer anderen Partition oder sogar einem anderen Rechner liegt. Das verzögert jedoch den Startvorgang erheblich, wenn das bootende System die entsprechenden Dateisysteme erst sehr spät einhängt, und Programme erst dann ihre Daten dort ablegen dürfen.

Aus diesem Grund haben Fedora-Entwickler ein neues Verzeichnis /run eingeführt, das auf der gleichen Partition wie das Root-Dateisystem liegt. Gleichzeitig modifizierten sie viele Applikationen so, dass sie dort hinein schreiben oder aus diesem Verzeichnis lesen. Es steht auf der Liste der Punkte, die in den kommenden Standard FHS 3.0 einfließen sollen.

Um Datenträger oder Partition einzuhängen, hat sich seit einiger Zeit das Verzeichnis /media etabliert. Davor gab es je nach Distribution im Basisordner Verzeichnisse wie /cdrom oder /floppy. Da diese Strategie aber mit der wachsenden Anzahl an Medientypen zu einer Vielfalt an speziellen Ordner geführt hätte, fiel eine Entscheidung zugunsten eines einzigen Toplevel-Verzeichnisses mit entsprechenden Unterordnern.

Dem gegenüber steht das Verzeichnis /mnt, dessen Zweck darin liegt, einem Administrator das kurzfristige Einbinden eines Dateisystem zu erlauben.

Freundlicher Umgang

Eigene Skripte speichern Sie entweder in Ihrem Home-Verzeichnis oder im Ordner /usr/local/bin. Das Verzeichnis /usr/local ermöglicht es, innerhalb der zweiten Verzeichnishierarchie lokale Software zu installieren, ohne dass ein Update diese Dateien überschreibt. Oft liegen die Ordner unterhalb von /usr/local ebenfalls auf einer eigenen Partition.

Schreibt eines Ihrer Skripte temporäre Dateien, um Daten zwischenzulagern, dann findet sich unter /tmp der richtige Platz. Aber Vorsicht: Ein Reboot löscht alle Dateien in diesem Ordner. Vergessen Sie also nicht, bei Bedarf die Daten rechtzeitig an den endgültigen Ort zu sichern.

Haben Sie ein Programm zu einem kompletten Paket zusammengeschnürt, möchten dessen Dateien aber nicht in die Standardverzeichnisse ablegen (etwa, um Versionskonflikte zu vermeiden), dann sorgen Sie dafür, dass die Programmdateien im Verzeichnis /opt in einem separaten Unterverzeichnis landen. Eventuelle Konfigurationsdateien legen Sie in /etc/opt/ in einem passenden Unterverzeichnis ab.

Endlich daheim

Obwohl sich auf fast jedem Linux-System im Desktop-Einsatz Home-Verzeichnisse finden, gehören diese laut FHS zu den optionalen Bestandteilen der Verzeichnishierarchie. Daher empfiehlt der Standard, Applikationen so zu programmieren, dass sie nicht auf deren Existenz bauen.

Grundsätzlich dienen die Verzeichnisse der User dem Ablegen von benutzerspezifischen Konfigurationsdateien, die üblicherweise mit einem Punkt beginnen und damit versteckt sind. Bei mehr als einer Datei pro Programm empfehlen die Maintainer des FHS zusätzlich, einen versteckten Ordner zu erzeugen und die Dateien in diesem abzulegen.

Um eigene Skripte zu entwickeln, hat es sich beispielsweise bewährt, im Benutzerverzeichnis einen Ordner bin/ anzulegen, die Programme dort abzulegen und dieses Verzeichnis dann in die Pfadvariable $PATH aufzunehmen. So verhindern Sie auf der einen Seite, dass sich die nützlichen Helfer über das Dateisystem verstreuen, und zum anderen sparen Sie sich zum Beispiel in der Bash lästige Tipparbeit, weil diese über die ersten Buchstaben und den Tabulator den Programmnamen automatisch vervollständigt. 

Infos

[1] Filesystem Hierarchy Standard (alte Versionen): http://www.pathname.com/fhs/

[2] Essenzielle Tools in /bin: http://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

LinuxUser 11/2011 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben