Das Dateisystem von Linux

Aus EasyLinux 01/2012

Das Dateisystem von Linux

© Vladislav Lebedinskiy, Fotolia

Alles an seinem Platz?

Das Dateisystem von Linux wirkt auf den ersten Blick verwirrend, aber hinter den Ordnern mit den merkwürdigen Namen steckt ein fixes System, nach dem Linux seine Dateien aufbewahrt. Das befindet sich jedoch im Umbruch.

Hinter dem farblosen Kürzel FHS verbirgt sich ein Standard, der die meisten Linux-Anwender betrifft: Er definiert, welche Dateien unter Linux wohin gehören. FHS steht für Filesystem Hierarchy Standard, aktuell ist die Version 2.3, die Sie auch problemlos im Netz nachschlagen können [1]. Ausgedruckt ergibt der Text des Standards etwa 53 Seiten, auf denen die Macher beschreiben, wohin unter Linux welche Dateien gehören. Das ist zwar vor allem für die Programmierer wichtig, betrifft aber auch die Anwender.

Hängen Sie USB-Sticks oder andere externe USB-Geräte an den Rechner, müssen Sie nicht stets nach dem Einhängepunkt suchen, sondern finden ihn unter /media – und zwar unter den meisten Distributionen. Im Standard heißt es hierzu: “Dieses Verzeichnis enthält Unterverzeichnisse, die als Einhängepunkte für bewegliche Geräte dienen, zu denen etwa Floppy Discs, CD-ROMs und Zip-Laufwerke gehören.” Darunter folgt dann eine Erklärung zu den Hintergründen. Diese weist darauf hin, dass Linux solche Laufwerke historisch meist in die Verzeichnisse /mnt, /mnt/cdrom oder /cdrom einhängte, wodurch aber potenziell eine große Anzahl von neuen Verzeichnissen im Wurzelverzeichnis entstehen würde. Also kommen nun die Unterverzeichnisse im Ordner /media zum Einsatz.

Hier wird nicht nur recht schnell deutlich, dass es ohne Standards schnell zu einem Kuddelmuddel kommt, sondern es zeigt auch, dass Standards recht schnell Staub ansetzen: Floppy Discs und Zip-Laufwerke verwendet heute kaum noch jemand. Darum ist bereits eine Version 3.0 des FHS in Arbeit.

Das Home-Verzeichnis

Das für Sie als Benutzer wichtigste Verzeichnis ist /home. Darin erhält jeder Benutzer ein eigenes Verzeichnis, dessen Name meist identisch mit seinem Benutzernamen ist. Alle Dateien, die Sie aus dem Internet herunterladen, Ihre Musik- und Videosammlung und alle selbst erstellten Dokumente landen in diesem Ordner. Ubuntu richtet in Ihrem Home-Verzeichnis einige Standardordner ein, etwa Bilder, Videos und Musik. Diese können Sie löschen, allerdings suchen hier ein paar Multimediaanwendungen automatisch nach abspielbaren Inhalten. Insofern ist es sinnvoll, die Ordner zu nutzen.

Das Ablegen von Dateien im Home-Verzeichnis klappt unter Linux auch deshalb gut, weil Sie keine Dateien in Verzeichnissen wie /etc oder / speichern dürfen – möglich wäre das nur mit administrativen Rechten. Schieben Sie also zum Beispiel über den Dateimanager Dolphin eine Datei in das Verzeichnis /var, taucht diese nie am Bestimmungsort auf. Sie müssten Dolphin dafür mit Root-Rechten starten, also über kdesu dolphin (OpenSuse) oder kdesudo dolphin (Kubuntu).

Eine weitere wichtige Funktion des Home-Verzeichnis: Hier legen die Anwendungen, die Sie verwenden, meist ihre Konfigurationen ab. Unter Ubuntu gibt es dafür etwa die drei versteckten Verzeichnisse .config, .cache und .local, die allerdings nicht im FHS 2.3 beschrieben sind.

Starten Sie also als Nutzer alex eine Anwendung wie den Videoabspieler VLC, legt der seine ursprünglichen Einstellungen in Ihrem Home-Verzeichnis ab, zum Beispiel im Ordner /home/alex/.local/share/vlc. Passen Sie VLC an, landen auch diese Änderungen in den versteckten Verzeichnissen. Startet nun ein anderer Nutzer auf demselben System VLC, nutzt er das Programm zunächst mit den systemweiten Voreinstellungen (also ohne die Anpassungen von alex).

Viele Programme legen ihre Konfigurationsdateien allerdings einfach in einem versteckten Ordner im Home-Verzeichnis ab, so etwa Wine, Stellarium, Firefox, Thunderbird und viele weitere. Diese Verzeichnisse zeigt Dolphin an, wenn Sie [Alt]+[.] drücken, um die versteckten Dateien sichtbar zu machen (Abbildung 1). In der Konsole offenbart sie der Befehl ls -la. Sie sollten an diese Verzeichnisse denken, wenn Sie mit Anwendungen kämpfen, die nicht richtig funktionieren: Beim Entfernen von Programmen werden private Einstellungen nicht gelöscht. Startet ein bestimmtes Programm nicht mehr, hilft es oft nicht, dieses zu deinstallieren und neu einzuspielen. Sie müssen vielmehr zusätzlich die lokalen Konfigurationsdateien dieser Programme löschen, die Sie in den eben genannten Ordnern finden. Andernfalls betrifft Sie der Fehler, wenn er in der lokalen Konfiguration steckt, nach einer Neuinstallation weiterhin.

Abbildung 1: Der Dateimanager Dolphin zeigt versteckte Dateien an, wenn Sie auf das Werkzeugsymbol rechts oben klicken und die Option "Versteckte Dateien anzeigen" wählen.

Abbildung 1: Der Dateimanager Dolphin zeigt versteckte Dateien an, wenn Sie auf das Werkzeugsymbol rechts oben klicken und die Option “Versteckte Dateien anzeigen” wählen.

Das Ganze ergibt Sinn: Eine Linux-Installation ist für mehrere Benutzer ausgelegt, jeder Benutzer soll daher die Gelegenheit erhalten, die genutzten Anwendungen an die persönlichen Bedürfnisse anzupassen. Interessanterweise spricht der FHS 2.3 den zentralen Benutzerverzeichnissen keine große Relevanz zu: Demnach sollten sich Programme nicht auf die Existenz des Home-Verzeichnisses verlassen, da einige Anwender ihre Daten auf entfernten Servern speichern.

Die wichtigsten Orte des Systems

Als normaler Benutzer sollten Sie in der Regel recht selten mit den anderen Ordnern im Dateisystem zu tun haben. Doch wenn etwas schief geht, rücken diese Ordner oft in den Fokus. Wir stellen die wichtigsten vor.

Den Ordner /media haben wir bereits erwähnt: Darin finden Sie meist die Dateien von mobilen Geräten, zu denen neben modernen Smartphones auch MP3-Player, mobile Festplatten, USB-Sticks und Speicherkarten gehören.

Hinter /root versteckt sich das Home-Verzeichnis des Benutzers root, der aber unter Debian und Ubuntu nicht mehr so viel Bedeutung hat. Hier erhält standardmäßig der erste eingerichtete Benutzer administrative Rechte und darf daher alle wesentlichen Aufgaben erledigen. Unter anderem darf er in Verzeichnisse schreiben, die dem Benutzer root gehören.

Konfigurationsdateien in /etc

Interessant ist der Ordner /etc. Hier stoßen Sie auf die systemweiten Konfigurationsdateien zahlreicher Programme. Der Unterschied zu den lokalen Dateien liegt darin, dass Änderungen, die Sie hier vornehmen, sämtliche Anwender des Systems berühren, die das spezifische Programm verwenden. Sind Sie selbst der einzige Benutzer des System, kann Ihnen das egal sein. In /etc dürfen sich keine Binaries (ausführbare Programme) befinden; zahlreiche Unterordner versuchen, eine sinnvolle Logik in die Anordnung der Konfigurationsdateien zu bringen. Im Wesentlichen finden Sie hier die Konfigurationsdateien von Systemprogrammen wie APT (Ubuntu-Paketverwaltung), Samba, Pulseaudio, Grub (Bootmanager), NetworkManager oder MySQL (Abbildung 2). Es geht also um Software, mit der Sie als Durchschnittsanwender nicht in Berührung kommen.

Abbildung 2: Über die Dateien im Verzeichnis "/etc" legen Sie systemweite Konfigurationen für wichtige Programme fest.

Abbildung 2: Über die Dateien im Verzeichnis “/etc” legen Sie systemweite Konfigurationen für wichtige Programme fest.

Versagt aber unter Kubuntu der grafische Client der Paketverwaltung einmal, hilft es zu wissen, dass Sie die externen Paketquellen auch in den Dateien unterhalb von /etc/apt/sources.list.d finden. Wollen Sie Windows-Laufwerken feste Mountpunkte zuordnen, tun Sie das über die Datei /etc/fstab. Aber Vorsicht: Wenn Sie die Dateien in /etc verändern, sollten Sie stets Sicherheitskopien machen. So drehen Sie die Zeit zurück, wenn lebenswichtige Anwendungen nicht mehr starten.

Fast noch wichtiger sind die Dateien unter /etc/init.d: Hier starten und stoppen Sie wichtige Systemdienste, die im Hintergrund laufen. So startet

sudo /etc/init.d/network restart

unter OpenSuse 11.4/12.1 das Netzwerk neu (Abbildung 3). Unter (K)Ubuntu verwenden Sie hingegen den Befehl

sudo service network-manager stop

Das Kommando service verwendet ebenfalls die Dateien in /etc/init.d. Generell ersetzen Sie network-manager auch durch beliebige andere Dienste, die Sie in /etc/init.d vorfinden und die Sie so neu starten oder – über den Parameter stop – anhalten.

Abbildung 3: Das Netzwerk starten Sie unter OpenSuse neu, indem Sie ein Skript aufrufen, das den Netzwerkdienst neu initialisiert.

Abbildung 3: Das Netzwerk starten Sie unter OpenSuse neu, indem Sie ein Skript aufrufen, das den Netzwerkdienst neu initialisiert.

Ab und zu finden sich auch Hinweise auf die Datei /etc/rc.local: Darin tragen Sie Kommandos ein, die beim Start des Systems ausgeführt werden sollen. Es gibt noch eine Reihe weiterer interessanter Konfigurationsdateien in /etc, die wir hier nicht alle vorstellen können.

Die Ordner /opt, /dev und /proc

Der Ordner /opt kommt mittlerweile aus der Mode: Hier lagern aber noch immer Programme von Drittanbietern, die Sie nicht direkt über den Paketmanager installieren, sondern die einen integrierten Installer mitbringen. Wenn Sie nicht wissen, wie Sie solche Programme wieder von Ihrem System werfen, löschen Sie einfach die dazu gehörenden Dateien in /opt. Die Konfigurationsdateien zu diesen Anwendungen finden Sie übrigens unter /etc/opt oder auch direkt in /opt.

Das Verzeichnis /dev ist interessant, weil es zeigt, dass Linux alles als eine Datei betrachtet – auch Geräte. Hängen Sie etwa einen USB-Stick an Ihren Rechner, erstellt Linux eine Datei, die z. B. /dev/sdb1 heißt (Abbildung 4). Diese Gerätedatei hängt es dann unter dem eigentlichen Mountpunkt ein, etwa /media/usbstick. Wichtig sind hier noch /dev/null und /dev/zero: Die erste Datei ignoriert einfach alle Daten, die Sie in diese Datei schreiben. Die zweite Datei lässt sich als Quelle verwenden, um eine Datei mit Null-Bytes zu überschreiben oder zu füllen. Beide Dateien sind für Anwender eher uninteressant.

Abbildung 4: Hängen Sie einen USB-Stick an den Rechner, weist ihm Linux eine Gerätedatei aus im Verzeichnis "/dev" zu, zum Beispiel "/dev/sdb1".

Abbildung 4: Hängen Sie einen USB-Stick an den Rechner, weist ihm Linux eine Gerätedatei aus im Verzeichnis “/dev” zu, zum Beispiel “/dev/sdb1”.

Im Ordner /proc legt Linux, laut FHS 2.3, Prozess- und Systeminformationen ab. Suchen Sie Informationen zur CPU oder zum Kernel, aber auch zu USB-Geräten und laufenden Prozessen, werden Sie hier fündig. So zeigt cat /proc/cmdline an, welche Bootoptionen der Kernel beim Start verwendet, und cat /proc/cpuinfo verrät einige Details zu den Prozessoren, die in Ihrem Rechner werkeln (Abbildung 5). Die Hauptfunktion von /proc ist aber, Informationen zu allen laufenden Prozessen bereitzustellen: Dazu finden Sie für jeden Prozess über dessen eindeutige Prozessnummer (die Prozess-ID) einen Unterordner, der allerlei Details verrät – eine vollständige Beschreibung erhalten Sie, wenn Sie man 5 proc eingeben.

Abbildung 5: Über den Befehl "cat" lesen Sie die Daten des "proc"-Verzeichnisses aus und erfahren unter anderem mehr über Ihre eingesetzte CPU.

Abbildung 5: Über den Befehl “cat” lesen Sie die Daten des “proc”-Verzeichnisses aus und erfahren unter anderem mehr über Ihre eingesetzte CPU.

Ausführbare Dateien in /usr/bin & Co.

Der FHS ist nicht fest, es gibt immer wieder Veränderungen, die dann vor allem die Distributionen einbringen. So taucht neuerdings ein Ordner /run im Wurzelverzeichnis auf, der mit Systemd eingeführt wurde, einem neuen Tool, das die Systemstarts von Linux beschleunigen soll [2]. Der Ankündigung des Entwicklers folgt dabei – leider auf Englisch – ein sehr unterhaltsamer und zum Teil wüster Schlagabtausch zwischen Verteidigern des FHS und Pragmatikern, die den mittlerweile sieben Jahre alten Standard als veränderbar betrachten.

Ein aktueller Vorschlag lautet, die Programme von /bin, /sbin und /usr/sbin alle nach /usr/bin zu verschieben (bzw. diese zunächst dorthin zu verlinken). In allen drei Ordner befinden sich ausführbare Dateien, die allerdings historisch nach ihrem Zweck sortiert wurden. In /sbin stoßen Sie auf “System Binaries”, also ausführbare Programme, die der Systemadministration dienen und für deren Ausführung Sie Root-Rechte benötigen. Diese Programme müssen laut Standard auch dann funktionieren, wenn das Verzeichnis /usr, das sich auf einer anderen Festplatte/Partition befindet, noch nicht gemountet wurde. Alle Systemwerkzeuge, die Sie erst nach dem Mounten von /usr benötigen, finden Sie im Verzeichnis /usr/sbin – wohlgemerkt: Systemwerkzeuge! Gewöhnliche Anwendungen wie LibreOffice oder Firefox finden Sie unter /usr/bin, das daher häufig die meisten Dateien beherbergt. Einige Kommandozeilenprogramme fehlen hier allerdings: cp, cat, grep und Co. warten im Verzeichnis /bin auf ihren Einsatz. Wie Sie sehen, ist das durchaus verwirrend und wird eventuell in der nächsten Version des FHS korrigiert. Einmal mehr wollen die Distributionen hier aber Fakten schaffen.

Um die ausführbaren Dateien auch systemweit starten zu können, müssen diese im sogenannten Pfad stehen. Die Variable $PATH speichert dabei, in welchen Verzeichnissen Linux ausführbare Programme erwartet. Dazu gehören unter Kubuntu die oben genannten Verzeichnisse, während OpenSuse /sbin und /usr/sbin nicht im Pfad hat. Bei Bedarf müssen Sie beim Programmstart einen absoluten Pfad mit angeben, etwa /opt/bin/meinprogramm. Um die vorhandenen Pfade anzusehen, geben Sie in ein Terminal

echo $PATH

ein. Wollen Sie das neue Verzeichnis /opt/bin in den Pfad integrieren (Abbildung 6), lautet der dafür nötige Befehl:

PATH="$PATH:/opt/bin"
Abbildung 6: Ein Ordner lässt sich über die Kommandozeile etwas umständlich in den Pfad aufnehmen. Die darin enthaltenen Programme rufen Sie dann systemweite durch die Namenseingabe auf.

Abbildung 6: Ein Ordner lässt sich über die Kommandozeile etwas umständlich in den Pfad aufnehmen. Die darin enthaltenen Programme rufen Sie dann systemweite durch die Namenseingabe auf.

Der Rest: /lib, /tmp und /var

Die restlichen drei Verzeichnisse lassen sich recht schnell abhandeln. Im Verzeichnis /tmp lagern Linux und seine Anwendungen temporäre Dateien, die mit dem Ausschalten des Rechners wieder verschwinden. Sensible Daten sollten Sie hier nicht aufbewahren, da diese erstens nach einem Neustart weg und zweitens für alle Nutzer les- und veränderbar sind.

Bei /lib und /usr/lib verhält es sich wieder ähnlich wie bei /usr/bin, /bin und /sbin. Während /lib die Bibliotheken von Systemwerkzeugen enthält, die Linux im Zweifelsfall noch vor dem Mounten externer Verzeichnisse benötigt, landen alle anderen Bibliotheken im Verzeichnis /usr/lib. Es gibt daneben noch ein paar kleinere Verzeichnisse für spezielle Bibliotheken, aber generell haben Sie als Anwender mit diesen wenig zu tun.

Last but not least finden Sie die wichtigsten Log-Dateien des Systems im Ordner /var/log. Sie finden Protokolle zum Bootvorgang (boot), zum Kernel (kern.log) oder zum System generell (syslog). Sind Sie auf Fehlersuche, statten Sie unbedingt diesem Ordner einen Besuch ab. Da es sich meist um Textdateien handelt, können Sie die normal in einem Editor öffnen.

Wir haben hier nicht alle verfügbaren und auch interessanten Orte im Linux-Dateisystem aufgeführt (es gibt noch Unterordner wie /usr/src oder /etc/local), aber einige Dinge sollten nun klarer sein. Das Linux-Dateisystem ist historisch gewachsen und die darin aufgeführten Verzeichnisse erfüllen (und erfüllten) einen bestimmten Zweck. Der ist nicht immer sofort ersichtlich und manchmal nicht einmal sinnvoll. Kennen Sie die Funktionen der einzelnen Ordner besser, wissen Sie jedoch schnell, wo Sie suchen müssen, wenn einmal ein komplexeres Problem auftaucht.

EasyLinux 01/2012 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