Die Verzeichnisstruktur von Debian

Einleitung

Für Einsteiger ist es am Anfang schwierig, die Verzeichnisstruktur zu verstehen, da er eine andere Struktur gewohnt ist. Die Verzeichnisstruktur hat anfangs nichts mit Geräten (devices) zu tun. In ihr können an beliebiger Stelle Geräte eingehängt werden. Es exisiert also auch eine Verzeichnisstruktur, wenn im Rechner keine Festplatte und kein anderes Speichermedium vorhanden ist. Solche Systeme zum Beispiel können über das Netzwerk gebootet werden.

Die oberste Instanz der Verzeichnisstruktur ist das Wurzelverzeichnis, auch root genannt (nicht zu verwechseln mit dem Benutzer root, Administrator).

Das Wurzelverzeichnis

Das Wurzelverzeichnis wird mit einem freistehenden Schrägstrich angesprochen.

Den Inhalt des Wurzelverzeichnisses kann man mit folgendem Befehl anzeigen:

ls /

In das Wurzelverzeichnisses wechseln kann man mit:

cd /

Das Wurzelverzeichnis ist für normale Nutzer schreibgeschützt und sollte auch so bleiben.

Verzeichnisse im Wurzelverzeichnis

Verzeichnis

Beschreibung

/bin

Binaries, unverzichtbare (Unix-)Programme für den Systemstart

Alle Benutzer dürfen dieses Verzeichnis lesen, keiner (außer root, der darf alles) darf etwas schreiben.

/bin darf keine Unterordner enthalten.

/boot

Enthält zum Booten benötigte Dateien wie Kernel, Memorytest etc.

Alle Benutzer dürfen dieses Verzeichnis lesen, keiner darf etwas schreiben.

/boot enthält den Unterverzeichnis /boot/grub für den Bootloader.

/dev

Devices, Gerätedateien, was nicht wirklich Dateien sind sondern Schnittstellen zu den Geräten wie Festplatten, Soundkarte, Videoausgabe, USB-Geräte

Alle Benutzer dürfen dieses Verzeichnis lesen, keiner darf etwas schreiben.

Wird ein neuse Gerät angeschlossen, entsteht hier eine Schnittstelle zu diesem.

/etc

Enthält Konfigurationsdateien zur globalen Konfiguration des Systems.

Alle Benutzer dürfen dieses Verzeichnis lesen, keiner darf etwas schreiben.

/home

Enthält die Heimatverzeichnisse der angelegten Benutzer.

Alle Benutzer dürfen dieses Verzeichnis lesen, keiner darf in diesen Ordner schreiben, in den Unterordnern dagegen schon.

/etc

Enthält Konfigurationsdateien zur globalen Konfiguration des Systems.

Alle Benutzer dürfen dieses Verzeichnis lesen, keiner darf etwas schreiben.

/lost+found

Enthält Dateien oder Dateifragmente, die beim Versuch einer Dattenrettung erstellt werden.

Keiner darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/media

Einbindungspunkt für Wechseldatenträger und CD-Laufwerke. Grafische Oberflächen binden hier die Wechseldatenträger ein.

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/mnt

Einbindungspunkt für (manuelles) Einhängen von Datenträger durch einen Systemadministrator.

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/opt

Verzeichnis für Programme, die manuell systemweit installiert wurden und nicht zum Debian-System gehören.

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/proc

Schnittstellen zu laufenden Prozesse (Programme), also auch keine wirklichen Dateien.

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/root

Das Heimatverzeichnis des Users root. Dieses Verzeichnis bleibt auch erhalten, wenn die Festplatte plötzlich ausfällt.

Keiner darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/run

Dateien, die den Zustand des Gesamtsystems speichern. Manche Programme, die z.Bsp. ein Mobiltelefon per USB verbinden, legen hier Daten an.

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/srv

Man plant hier, die Dienste (services) abzulegen. Das hat sich bisher noch nicht durchgesetzt.

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/sys

Schnittstellen zum Kernel, also auch keine wirklichen Dateien.

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

/tmp

Ablageort für temporäre Dateien. In der Regel wird der Inhalt beim Systemstart geleert. Debian löscht standardmäßig ein mal am Tag diese Daten.

Jeder darf dieses Verzeichnis lesen, jeder darf etwas schreiben.

/usr

Im Gegensatz zu ubuntuusers.de bin ich der Meinung, dass dieser Ordner nichts mit user sondern mit Unix-Source-Ressource zu tun hat. Hier werden alle Programme, die aus den Packetquellen installiert werden, abgelegt.

Im Unterverzeichnis /usr/sbin/ befinden sich die Programme, die nur root ausführen darf.

Jeder darf das Verzeichnis /usr lesen, keiner darf etwas schreiben.

/var

Variable Daten wie z.Bsp. Log-Dateien

Jeder darf dieses Verzeichnis lesen, keiner darf etwas schreiben.

Des weiteren gibt es noch Verlinkungen im Wurzelverzeichnis wie zum Beispiel /lib, was zu /usr/lib/ verlinkt. Hier sind die Bibliotheken abgelegt, das sind Dateien, die von verschiedenen Programmen gemeinsam genutzt werden.

Wenn ich hier sage: "Jeder darf dieses Verzeichnis lesen.", heißt das noch lange nicht, das jeder alle Dateien und Unterverzeichnisse in diesem Verzeichnis lesen darf. Die Zugriffsrechte werden für jede einzelne Datei und jedes einzelnes Verzeichnis gesetzt.

Nirgendwo darf der normale Benutzer etwas schreiben. Das ist ja ein richtiges "Du-darfst-nichts-System". Keinesfalls. Bitte habt Geduld und lest weiter.

Ich habe niemals gesagt, dass sich all diese Verzeichnisse auf einer Festplatte befinden und schon gar nicht auf der gleichen Festplatte. Die Verzeichnisse /dev, /proc und /sys befinden sich im RAM. Erfahrene Anwender legen das System auf eine schnelle kleine SSD-Festplatte und das Verzeichnis /home auf eine HDD-Festplatte. Also nochmal: Die Verzeichnisstruktur hat nichts direkt mit Speichermedien zu tun.

Das Heimatverzeichnis

Wie wir aus der vorheriger Tabelle entnehmen können, liegen Heimatverzeichnisse im Ordner /home.

Als Beispiel haben wir ein Debian-System, wo 2 Benutzer angelegt wurden: Kay und Steffi

Kay sein Heimatverzeichnis ist /home/kay/, Steffi ihr Heimatverzeichnis ist /home/steffi/.

Jeder darf in seinem Heimatverzeichnis lesen, schreiben ausführen, aber nur in seinem eigenen Heimatverzeichnis.

Kay kann die Daten von Steffi nicht sehen. Steffi kann die Daten von Kay nicht sehen.

Auf fast allen anderen Verzeichnissen im System haben beide nur lesenden Zugriff. Sollte jemand eine böse Mail bekommen und der Nutzer klickt dort auf den bösen Link, können nur die eigenen Daten verändert werden, das System bleibt unverändert. So ist das Grundsystem relativ sicher.

Sein eigenes Heimatverzeichnis kann jeder im Terminal mit ~, der sogenannten Tilde, ansprechen.

Kay kann also auf 2 Wege in sein Heimatverzeichnis wechseln:

cd /home/kay/

cd ~

Gibt Steffi den letzten Befehl ein, landet sie im Ordner /home/steffi/.

Kay hat die Bilder vom letzten Urlaub in den Ordner ~/Blider/2019/Ägypten/ kopiert. Steffi kann sich die Bilder nicht anschauen. Kay möchte gern, dass sich Steffi die Bilder anschauen kann. Er könnte sie auf einen Stick kopieren und diesen Steffi geben. Steffi könnte sich die Bilder dann in ihren Heimatordner kopieren. Das wäre aber Unsinn, da dann die (Un-)Menge an Daten 2 mal auf dem Rechner gespeichert wären. Deshalb geht es weiter mit Nutzer und Gruppen auf der nächsten Seite.

Ausgeblendete Dateien und Verzeichnisse

Führt mal folgende 2 Befehle aus:

ls ~

ls -a ~

Die zweite Anweisung erzeugt etwas mehr Ausgabe als die erste. Hinzugekommen sind Dateien und Verzeichnisse, deren Namen mit einem Punkt beginnen. Hier handelt es sich um ausgeblendete Dateien und Verzeichnisse.

Jedes Programm muss Eure Konfigurationen und Einstellungen irgendwo abspeichern. Hat man eine Menge von Programmen auf dem Rechner, entsteht ein ganz schöner Datensalat. Dieser Datensalat würde aber bei jedem Auflisten stören, deshalb blendet man solche Dateien und Verzeichnisse aus.

Ausgeblendete Dateien sind nur ausgeblendet. Das Wort "versteckt" halte ich nicht für richtig. Auf solche Dateien habt Ihr genau so Zugriff wie auf anderen auch.

Zwei besondere Einträge stehen gleich am Anfang nach Ausführen des zweiten Befehls: 1 Punkt und 2 Punkte. Das scheinen Verzeichnisse zu sein? 1 Punkt spricht den aktuellen Ordner an. Das scheint erst mal Blödsinn zu sein, wird aber tatsächlich gebraucht. 2 Punkte sprechen den übergeordneten Ordner an.