Spaziergang durchs Dateisystem

> Betriebssystem Linux

> > # Spaziergang durchs Dateisystem

> > Unix hat im Gegensatz zu DOS/Windows einen sehr genau vorgeschriebenen Dateibaum. Die wichtigsten Verzeichnisse haben immer die gleichen Namen, so dass es beinahe egal ist, mit welchem Unix Sie arbeiten - Sie werden es immer sofort an der Struktur der Verzeichnisnamen erkennen.

> > Das klingt natürlich ideal, leider ist die Welt (auch bei Unix) nicht immer so einfach geregelt - es gibt auch hier immer Ausnahmen. Die wesentlichen Verzeichnisse halten sich aber an diese Regeln, bei eklatanten Unterschieden werden diese im Einzelnen noch erwähnt.

> > ### Das Wurzelverzeichnis /

> > Im Gegensatz zu DOS/Windows hat Unix immer nur einen Dateibaum. Eine Partition (bzw. ein Laufwerk) ist also die sog. root-partition (Wurzelpartition). Alle anderen Partitionen und Laufwerke (auch Diskette und CDROM) werden an beliebigen Stellen in den Wurzeldateibaum montiert (mounted).

> > Die Angabe des Wurzelverzeichnisses (/) ist also eine absolute Pfadangabe, sie bezieht sich auf die Wurzel der root-partition. In diesem Wurzelverzeichnis sollten außer den Verzeichnissen nur eine einzige Datei liegen, der Kernel selbst. Selbst das ist nicht zwingend erforderlich, auch diese Datei kann in einem anderen Verzeichnis liegen. Nach der neuen Version des Linux Filesystem Hierarchy Standard (FHS) sollten Kerneldateien im Verzeichnis /boot liegen.

> > ### Das Verzeichnis /home

> > Jeder User, den das System kennt hat ein eigenes Verzeichnis, das in der Regel den gleichen Namen trägt, wie der User selbst. Diese "Heimatverzeichnisse" liegen alle (außer das vom Systemverwalter) im Verzeichnis /home. Ein System, das die User Hans, Peter und Otto kennt hat also die drei Verzeichnisse Hans, Peter und Otto im Verzeichnis /home.

> > Nach dem Einloggen (Anmelden beim System mit Username und Passwort) befinden sich alle User immer in ihrem Heimatverzeichnis. Wenn sich also Hans einloggt befindet er sich automatisch im Verzeichnis /home/Hans, wenn Peter eine Sitzung startet, fängt er immer in /home/Peter an.

> > Innerhalb seines eigenen Verzeichnisses darf jeder User in der Regel alles machen, Dateien anlegen, löschen, verändern, Verzeichnisse anlegen usw. Außerhalb seines Verzeichnisses hat ein normaler User meist nur Leserechte, verändern, anlegen oder löschen darf er dort nicht.

> > Das klassische Unix kannte das Verzeichnis /home nicht. Dort waren die einzelnen Userverzeichnisse innerhalb des /usr Verzeichnisses angelegt, so dass Hans in /usr/Hans sein Heimatverzeichnis vorfände. In moderneren Unixen wurde das aus leicht einsichtigen Gründen verändert. Ein Backup aller Userdaten ist z.B. wesentlich leichter zu bewerkstelligen, wenn sie alle - und nur sie - in einem Verzeichnis stecken...

> > ### Das Verzeichnis /root

> > Dieses Verzeichnis sorgt immer wieder für Namensverwirrungen, weil es im Englischen eben auch root-directory heißt, wie das Wurzelverzeichnis selbst. Es handelt sich aber einfach um das Heimatverzeichnis des Systemverwalters, der heißt aber unter Unix immer root.

> > Warum ist dieses Verzeichnis aber nicht im /home-Verzeichnis? Ganz einfach: Das /home-Verzeichnis ist meistens als eigene Partition implementiert. Diese Partition wird aber erst beim Systemstart eingehängt (mounted). Falls es zu einem Fehler kommen sollte, muß der Systemverwalter das System starten können ohne alle Partitionen einzuhängen. Es muß also auf dem Wurzelverzeichnis bereits ein arbeitsfähiges System bereitstehen. Zu einem arbeitsfähigen System für den Systemverwalter gehört aber unbedingt sein Heimatverzeichnis. Daher liegt dieses Verzeichnis direkt auf der Wurzel.

> > In früheren Unix-Systemen war das Heimatverzeichnis von root tatsächlich die Wurzel des Systems, das hat aber immer wieder zu Unordnung geführt, weil auch der beste Systemverwalter immer wieder mal was abspeichern muß, was er für seine Arbeit braucht. Das lag dann immer auf der Wurzel des Systems und förderte die Übersichtlichkeit damit nicht besonders.

> > ### Das Verzeichnis /boot

> > Dieses Verzeichnis enthält die Dateien, die das System zum Booten benötigt. Das Verzeichnis kann bedenkenlos auf eine andere Partition ausgelagert werden, genau dazu ist diese Architektur eigentlich ausgelegt. Bei älteren Versionen des Linux-Loaders LILO kam es oft zu Problemen, wenn eine Platte mehr als 1024 Zylinder hatte. Aus diesem Grund hat man eine kleine Partition unterhalb der 1024 Zylinder angelegt und auf diese Partition die Boot-Informationen ausgelagert. Diese Partition wird dann ins Verzeichnis /boot gemountet. Falls mit verschiedenen Kernelversionen gearbeitet wird, so werden meist auch die Kerneldateien selbst hier abgelegt. Nur der Systemverwalter hat in diesem Verzeichnis Zugriff, niemand anders hat damit etwas zu tun.

> > ### Das Verzeichnis /etc

> > Hier sind alle Dateien abgelegt, die Informationen über Konfigurationseinstellungen beinhalten. Dazu zählen unter anderem die Dateien `passwd` und `shaddow`, die die Usereinstellungen enthalten, die Konfigurationsdateien fürs Netz, für den Bootmanager uvm.

> > Auch dieses Verzeichnis ist (zumindestens was das Schreiben angeht,) dem Systemverwalter vorbehalten. Viele Prozesse müssen aber in diesen Dateien lesen können, um bestimmte Informationen zu bekommen. Daher muß das Verzeichnis für alle User lesbar sein.

> > ### Das Verzeichnis /sbin

> > Dieses Verzeichnis enthält die Programmdateien, die für die Verwaltung des Systems wichtig sind und daher nicht für alle User zugänglich sein müssen. Im Suchpfad des Systemverwalters ist dieses Verzeichnis immer enthalten, in den Pfaden der Normaluser nicht.

> > ### Das Verzeichnis /bin

> > Binaries, also binäre Programme liegen hier. Meist nur die, die für die wichtigsten Arbeiten am System benötigt werden. Alle User haben dieses Verzeichnis im Suchpfad.

> > ### Das Verzeichnis /lib

> > Hier liegen die Libaries, die Systembibliotheken von Unix. Dabei handelt es sich sowohl um statische Bibliotheken für das System, als auch um dynamische, die in etwa funktionieren wie die DLLs von Windows.

> > ### Das Verzeichnis /dev

> > Hier liegen die Gerätedateien. Gerätedateien sind Schnittstellen zum Kernel, die ein bestimmtes Gerät bezeichnen. Unter Unix ist fast jedes Stück Hardware mit einer solchen Gerätedatei ansprechbar. Näheres zu diesen Dateien werden wir bei den Dateiarten unter Unix besprechen. Wichtig ist, dass diese Dateien keinen physikalischen Platz auf der Platte brauchen.

> > ### Das Verzeichnis /proc

> > Auch dieses Verzeichnis benötigt keinen Platz auf der Platte, es enthält Informationen, die das laufende System ständig auffrischt. Es sind eigentlich keine Dateien und Verzeichnisse, die hier liegen, sondern Informationen des Kernels.

> > Das /proc-Verzeichnis enthält neben den Informationsdateien wie filesystems, ioports, interrupts,... auch noch Verzeichnisse, die Nummern als Namen haben. Diese Nummern beziehen sich auf ProzeßIDs, jeder laufende Prozeß hat eine solche Nummer und jederlaufende Prozeß hat hier eben auch ein Verzeichnis. In diesem Verzeichnis stehen diverse Informationen über diesen laufenden Prozeß, sowohl die Kommandozeile, mit der er gestartet wurde, als auch sein Umgebungsspeicher und verschiedene Statusanzeigen.

> > ### Das Verzeichnis /usr

> > Dieses Verzeichnis enthält alle wichtigen Programme, die das System anbietet. usr steht nicht, wie irrtümlich häufig angenommen für user, sondern für Unix System Resources. Hier sind neben speziellen Verzeichnissen für bestimmte Programme auch nochmal - wie auf der Wurzel selbst - die Verzeichnisse bin, sbin, etc, lib. Es handelt sich nicht um die selben Verzeichnsse, aber ihre Aufgaben sind ähnlich, wie ihre Namensvettern auf der Wurzel. Im Verzeichnis /usr/local befinden sie sich übrigens gleich nochmal.

> > ### Das Verzeichnis /var

> > Das Verzeichnis /var ist in modernen Unixen dazugekommen, um eine Möglichkeit zu schaffen, das /usr-Verzeichnis als read-only zu mounten. Da im /usr-Verzeichnis einige Daten liegen, die beschreibbar (variabel) sein müssen, wurde das Verzeichnis /var zusätzlich aufgenommen. Es enthält sozusagen die Daten, die eigentlich nach /usr gehören, aber variabel sein müssen.

> > ### Das Verzeichnis /opt

> > Dieses Verzeichnis ist eine Linux-Erfindung. Nachdem immer mehr große Programmpakete installiert werden, gab es die Überlegung, diese nicht mehr in das /usr-Verzeichnis zu packen, sondern ein eigenes Verzeichnis dafür zu schaffen.

> > [ Kurs Hauptseite ] [ Linux-Kurse ] [ Startseite Linux-Praxis ]

> > © 1999, 2000, 2001 by F. Kalhammer