Die Linux Verzeichnisstruktur   Leave a comment

Verzeichnisse unter Linux

Manche kennen es sehr genau. Für sehr viele Benutzer ist es ein kryptischer, unübersichtlicher Haufen: Das Dateisystem von Linux. Gerade Windows-Umsteiger tun sich häufig schwer. Denn Laufwerksbuchstaben für Festplatten, Disketten und DVD-Laufwerke wie “C:\”, “D:\”, “A:\” etc. gibt es hier nicht.

Was steckt eigentlich hinter den Bezeichnungen “/”, “/dev”, “/bin” oder “/etc”? Diese Übersicht soll Ihnen einen Überblick über die Linux Verzeichnisstruktur geben und Ihnen ein wenig helfen sich zurecht zu finden:

 

Warum braucht Linux ein spezielles Dateisystem?

Linux nutzte bis ca. 1992 das Dateisystem Minix, was aber aus unterschiedlichen Gründen ( max. Partitionsgröße 64 MB, Dateinamen durften nur 14 Zeichen lang sein) nicht mehr den Ansprüchen genügte. Als Alternative bot sich das ext-Dateisystem an, welches (fast) allen Anforderungen gerecht wurde.

Moderne Linux-Dateisysteme müssen unter anderem folgende Eigenschaften besitzen:

  • Rechteverwaltung: Linux wurde von vornherein als Mehrbenutzer- Serverbetriebssystem konzipiert. Damit nicht ein Nutzer auf die Daten eines anderen Benutzers zugreifen kann, ist eine Rechteverwaltung nötig, die solche Zugriffe unterbindet. Ebenso verhindert die Rechteverwaltung, dass ein Nutzer direkten Zugriff auf das Betriebssystem hat. Somit kann ein Nutzer nicht ungewollt die Betriebssystemeinstellungen „verbiegen“.
  • symbolische Verknüpfungen: Dateisysteme, die diese Fähigkeiten nicht bieten, scheiden von vornherein aus.
  • Linux ist ein offenes, freies Betriebssystem. Die verwendeten Komponenten sollen auch diesen Maßstäben entsprechen.

 

Verzeichnisse unter Linux

Schon eine minimale Linux-Installation kommt mit einigen tausend Dateien daher, eine Vollinstallation der »großen« Distributionen dürfte einen Umfang von ca. 500.000 Dateien haben!

Wohin mit all den Daten?

In diesem Kapitel betrachten wir die typische Verzeichnisstruktur eines Unix-Systems. Anhand des Filesystem Hierarchie Standard FHS verfolgen wir die Eingliederung der verschiedenen Dateiarten in die Verzeichnisstruktur. Sie werden kennen lernen, wo Sie nach Konfigurationsdateien suchen müssen, welche Verzeichnisse Programme enthalten können, wo die Dokumentationen zu finden sind usw.

Und Sie erfahren, wie Sie auf eine Diskette oder CDROM zugreifen können.

Die Linux Verzeichnisstruktur

 

Bei der Unmenge von Dateien in Unix-Systemen (es können über 100.000 sein) ist eine hierarchische Struktur unabdingbar. Lange Zeit brachte jedes Unix-Derivat seine eigenen Vorstellungen vom Aufbau seiner Dateiverwaltung mit, aber unterdessen ist sich ein Gremium, bestehend aus den wichtigsten Unix-Distributoren, System- und Paketentwicklern, mehr oder weniger einig geworden und erarbeitete den Filesystem Hierarchie Standard, der wichtige Strukturen definiert. Die meisten Distributionen folgen diesen Richtlinien, wobei Abweichungen oft durch unterschiedliche Auslegung des Standards begründet werden.

Neben der Beschreibung der vorgesehenen Verwendung jedes Verzeichnisses werden auch konkrete Kommandos genannt, die mindestens in diesen Verzeichnissen vorhanden sein müssen. Des Weiteren finden systemspezifische Vorgaben und optionale Komponenten Erwähnung.

Ausgangspunkt ist die Wurzel (auch als Root bezeichnet)

Sobald der Kernel aktiv ist, lädt er als erstes das Root-Dateisystem, in dem alle für die Aufgaben des Kernels notwendigen Programme und Konfigurationsdateien angesiedelt sein müssen. Das Zeichen hierfür ist / am Anfang einer Pfadangabe (s. Abb.1).

Zu den Programmen gehören:

  • Dienstprogramme zum Prüfen und Reparieren des Dateisystems
  • Programme zum Sichern der Systemdaten und zur Installation neuer Systemteile
  • Eventuell wichtige Netzwerkprogramme

Übersicht über das Dateisystem

Schauen wir uns zunächst einmal das Wurzelsystem (Root Verzeichnis) an. Verzeichnisse und Dateien, die als optionale Komponenten im Standard enthalten sind, werden farblich hervorgehoben. Haben wir uns aus dem Wurzelverzeichnis (erstes / ) herausbegeben trennt das nächste Zeichen / zwei Verzeichnisse, z. B. /usr/local.

/bin

steht für binaries (dt. Binärdateien/Programme)
Die wichtigsten Kommandos (Programme) wie cp, echo, mkdir oder rm befinden sich in diesem Verzeichnis. Sie haben alle gemeinsam, dass sie Binärdateien sind und von allen Benutzern ausgeführt werden dürfen.

/boot

Dateien, die zum Starten des Betriebssystems notwendig sind, finden sich in diesem Verzeichnis. Dazu zählt der Linux-Kernel, der Bootloader und die Initial Ramdisk.

/dev

steht für devices (dt. Geräte)
Hier befinden sich Gerätedateien zur Ansteuerung von Hardware wie Festplatten, RAM, Bildschirm oder auch der Maus. Die Dateien stellen die Existenz der Treiber eines Gerätes dar und können auch leere Dateihülsen sein. Andere bieten konkrete Funktionalität an. Für jedes Hardwareteil gibt es vorsorglich einen solchen Eintrittspunkt, auch wenn dieser nicht zwingend benötigt wird.

/etc

steht für et cetera (dt. “alles übrige”)
Dieser Ordner beinhaltet die meisten systemweit gültigen Konfigurationsdateien und stellt damit den zentralen Anlaufpunkt zum Verändern von Einstellungen dar.

/etc/init.d

steht für initiate (dt. initiieren), .d typisch für Konfigurationen
Dieses Unterverzeichnis beinhaltet Start-/Stop-Skripte für Anwendungen. Die Scripte können manuell oder über Runlevel Einträge bei dem Systemstart ausgeführt werden.

/home

In diesem Verzeichnis befinden sich standardmäßig die Heimatverzeichnisse der Nutzer. In diesen Ordnern können Benutzer ihre persönlichen Dateien und je nach Anwendung auch benutzerspezifische Konfigurationen ablegen.

/lib

steht für libraries (dt. Bibliotheken)
Hier sind Funktionsbibliotheken des Systems wieder zu finden. Dies sind Bibliotheken, die bei dem Systemstart benötigt werden und, wenn der Kernel modular aufgebaut ist, die entsprechenden Kernel-Module.

/lib64

Dieser Ordner kann, muss jedoch nicht existieren. Er beinhaltet häufig Verknüpfungen für 64-Bit Anwendungen zu /lib.

/lost+found

In ext2, ext3 und ext4 Dateisystemen gibt es zusätzlich diesen Ordner. Er beinhaltet Dateien auf der Festplatte, die in der Verzeichnisstruktur nicht mehr zugeordnet werden können. Ursache für solche Fehler können System-/Programmabstürze oder Hardware-Fehler sein. Dieser Ordner sollte im Idealfall immer leer sei.

/media

In diesem Verzeichnis finden sich Eingangspunkte (Mountpoints) für Wechseldatenträger (CD/DVD, USB-Speicher usw.) wieder.

/mnt

seht für mount (eingehängt)
Dieser Ordner wird verwendet um Mountpoints (Eingangspunkte) für Dateisysteme zu definieren (CD/DVD, andere Systempartitionen, Samba Shares usw.). Praktisch gibt es keinen wirklichen Unterschied zu /media, da Distributionen wie Debian die ursprünglichen Zwecke vermischen.

/opt

steht für optional
Hier werden alle Programme abgelegt, die nicht im Paketformat vorliegen (folglich händisch installiert und nicht durch Paketmanager verwaltet), wie auch viele kommerzielle Softwarepakete.

/proc

steht für processes (laufende Programme);
Dieses Verzeichnis stellt die Schnittstelle zum Kernel dar und ist ein eigenes virtuelles Dateisystem. Es enthält System- und Kernelinformationen wie auch Informationen über laufende Prozesse.

/root

Das Home-Verzeichnis des Root-Benutzers ist in einem extra Ordner verortet. Dies hat den Zweck, dass bei dezentralen Benutzerverwaltungen im Falle eines Serverausfalls der Root-Benutzer weiterhin vernünftig arbeiten kann.

/run

Dieser Ordner beherbergt Dateien von laufenden Prozessen. In diesem Ordner finden sich die meisten PID-Files (Process identifier).

/sbin

steht für system binaries (dt. Systemprogramme)
In diesem Ordner findet man Programm Binärdateien wieder, die Root-Rechte zum Ausführen benötigen.

/selinux

steht für Security-Enhanced Linux (dt. sicherheitsverbessertes Linux)

Bitte beachten: Dieses Verzeichnis ist nicht existent in Pisi Linux
Dieses Verzeichnis existiert nicht zwangsläufig, sondern nur wenn der Kernel des Betriebssystems SELinux unterstützt. Es ist ein virtuelles Dateisystem und beinhaltet für gewöhnlich Kommandos, die nur über den Kernel aufgerufen werden.

/srv

steht für services (dt. Dienste)
Hier finden sich, je nach Betriebssystemversion verfügbar, variable Dateien (z.B. Logfiles oder Mails) wieder, wie in dem Verzeichnis /var. Die Rolle dieses Verzeichnisses ist nicht einwandfrei geklärt und wird daher in vielen Distributionen nicht verwendet.

/sys

steht für system
Dieser Ordner besteht seit Kernel 2.6 und ist in der Funktion vergleichbar mit dem Ordner /proc.

/tmp

steht für temporary (temporär)
In diesem Verzeichnis können temporäre Daten abgelegt werden. Zu beachten ist, dass dieses Verzeichnis nach einem Neustart in der Regel bereinigt wird.

/usr

steht für unix system resources (dt. UNIX Systemressourcen)
Programme für die Benutzer sind in diesem Ordner zu finden. Dabei enthält dieser Ordner weitere Unterordner, die sich thematisch gliedern.

/usr/local

Als wichtiges Unterverzeichnis von /usr ist dieses Verzeichnis zu nennen. In diesem können Benutzer ihre eigenen Programme installieren. Das Verzeichnis ist wie /usr thematisch in Unterordner unterteilt.

/var

steht für variable (dt. variabel)
In diesem Ordner sind variable Daten wie Logfiles, Mails oder auch Druckerspooler verortet. Es wird primär verwendet, auch nach der Einführung von /srv.

 

Das Verzeichnis /usr

Unter Pisi Linux beinhaltet viele Unterordner standardmäßig sind die Uterordner auch in anderen Linux Distribuitonen genauso enthalten, etwaige Abweichungen sind möglich.

usr/lib32  Dieses Verzeichnis existiert meist in 64-Bit Systemen und hat den gleichen Zweck wie /usr/lib mit dem Unterschied, dass sich hier 32-Bit Bibliotheken finden lassen.

usr/include  Hier verstecken sich die Header-Dateien für, in C geschriebene, Programme. Diese definieren einige programmiertechnische Dinge, die der Compiler (rechnet Quellcode in Binärdateien um) für den C Code zu beachten hat und ist damit nur für Entwickler von Programmen relevant.

usr/bin  In diesem Verzeichnis verstecken sich die Binärdateien der, über einen Paketmanager installierten, Anwenderprogramme. Sprich: im Normalfall die Dateien, die ausgeführt werden, wenn das Programm aufgerufen wird.

usr/games  Dieser Ordner hat mehr historische als praktische Funktion. Früher waren Spiele ein optionaler Teil des Systems und wurden anders als Programme (“zum produktiven Arbeiten”) angesehen. Heutzutage wird dieses Verzeichnis, wenn überhaupt noch, dazu verwendet, Savegames/Highscores/Spielstände in diesem abzulegen.

usr/lib  Manche Programme müssen, damit sie lauffähig sind, auf Bibliotheken (einfach ausgedrückt andere Programme) zurückgreifen. Deren Binärdateien finden sich bei, über den Paketmanager installierten Programmen, in diesem Ordner wieder.

usr/local In diesem Ordner befindet sich eine Vielzahl von Unterordnern, die dieselbe Struktur wie /usr selbst bilden. Auch die Bedeutung der Unterordner ist dieselbe. Jedoch befinden sich hiernicht durch den Paketmanager installierte Programme, sondern von dem Benutzer händisch installierte Software (z.B. selbst kompilierte Versionen eines Programms, dass es nicht in der Paketverwaltung gibt). In diesem Verzeichnis darf man daher guten Gewissens seine Programme ablegen.

usr/sbin Wie bei /sbin befinden sich hier Binärdateien von Programmen, die von Administratoren ausgeführt werden können. Im Gegensatz zu den Programmen aus /sbin sind diese jedoch nicht während des Bootvorgangs verwendbar und werden durch den Paketmanager verwaltet.

usr/src In diesem Verzeichnis finden sich die Quelldateien der, über den Paketmanager installierten Programme wieder, sofern der unkompilierte Code mit heruntergeladen wurde. Aus diesen können Binärdateien abhängig von der Architektur des Prozessors kompiliert werden.

 

Anmerkend sei noch hinzugefügt das man /usr und seine Unterordner ausgenommen /usr/local nicht per Hand verändern sollte, da dieser Ordner durch den Paket-Manager verwaltet wird.

Quellen der Texte:

Linux-Praxisbuch: Verzeichnisse unter Linux

Grafik:Die Linux-Verzeichnisstruktur

Veröffentlicht 21. März 2015 von groni

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: