Читать книгу Mit dem Raspberry Pi zum eigenen Homeserver - Bernhard Münkel - Страница 10
Оглавление5 - EIN BLICK AUF RASPBIAN LINUX
Überblick: Bevor wir das Betriebssystem das erste Mal starten, sehen wir uns das Linuxsystem an. Dabei werfen wir einen detaillierten Blick auf das Linux-Verzeichnissystem.
Der erste Schritt ist geschafft. Sie haben Raspbian mit NOOBS auf die SDHC-Karte kopiert. Jetzt könnte die Karte in den Raspberry Pi gesteckt werden. Wir wollen den Moment aber nutzen und einen Blick auf die Arbeitsweise von Linux werfen.
5.1 - Das Linux Rechtesystem
Da Linux (als Abkömmling von Unix) von Anfang an als Mehrbenutzersystem gedacht war, werden alle Dateien und Operationen jeweils einem Benutzer zugeordnet und mit seinen Rechten belegt. Benutzer sind sowohl Personen, die den Computer benutzen, aber auch virtuelle Benutzer wie Systemkomponenten und Dienste, wie etwa ein Webserver.
Auf einem Computer befinden sich Verzeichnisse und einzelne Dateien. Dementsprechend gibt es also Verzeichnis- und Dateirechte. Mit dem Befehl
$ ls -l
kann man sehen, welche Rechte an eine Datei vergeben wurden:
drwxr-xr-x 31 admin admin 4096 Feb 23 12:48 admin
drwxrwxr-x 3 media media 4096 Feb 23 09:58
Bilder
drwxrwxr-x 4 media media 4096 Feb 15 20:13
Dokumente
-rw-r--r-- 1 media media 8445 Mär 4 2013
examples.desktop
Der Besitzer der Datei entscheidet, wie er diese Rechte anwendet. Besitzer kann ein normaler Benutzer oder (was in den meisten Fällen zutrifft) das Betriebssystem oder eine Anwendung sein.
Das Rechtesystem regelt, ob und wer diese Dateien und Verzeichnisse lesen (r), schreiben (w) oder ausführen (x) darf (d bezeichnet ein Verzeichnis-“Recht“). Die verliehenen Rechte werden, vor allem bei Verzeichnissen, an die neu angelegten Dateien weitergegeben (vererbt), wenn nicht etwas anderes festgelegt wurde.
5.1. Abbildung: Linux verwaltet die Dateirechte getrennt nach Benutzer und Gruppen
Um Rechte zu ändern, bietet Linux verschiedene Befehle. Wir werden später vor allem von den Befehlen chmod, chown und chgrp regen Gebrauch machen. Näheres steht im Kapitel Linux Befehle.
5.2 - Linux - Die Verzeichnisstruktur
Raspbian verwendet ein Linux auf der Basis der Debian Distribution. Linux gliedert seine Dateien ein wenig anders als Windows. Weil das am Anfang etwas verwirrend ist für Einsteiger, will ich die grundlegenden Unterschiede etwas verdeutlichen.
Mehrere Unterschiede sind besonders auffallend, wenn man zum ersten Mal den Verzeichnisbaum einer Linux-Distribution ansieht:
• Es gibt nicht die Aufteilung in Datenträger (wie Festplatten und DVD-Laufwerke) mit eigener Verzeichnisstruktur.
• Auf der untersten Ebene des Verzeichnisbaums gibt es eine Vielzahl verschiedener Verzeichnisse, die alle Teil des Betriebssystems sind.
• Jeder Benutzer hat ein eigens Home-Verzeichnis, aus dem er sich für gewöhnlich nicht heraus bewegt.
5.2.1 - Keine Aufteilung in Datenträger
Die genannte Unterschiede haben einige Vorteile gegenüber der aus der Windows Welt bekannten Ordnung. Datenträger werden in den allgemeinen Verzeichnisbaum eingegliedert. Dadurch sind sie natürlich nicht verschwunden und ihre Speicherkapazität bleibt natürlich auch bestehen. Verzeichnisse und Dateien können jedoch transparent über bestimmte oder mehrere Datenträger verteilt werden, im Abhängigkeit von Überlegungen zur Speichersicherheit, Zugriffsgeschwindigkeit oder Zugriffsmöglichkeiten. Sie können Daten aufteilen zwischen schnellen, aber unsicheren Flashspeichern und sicheren Festplatten. Das geht soweit, dass Sie sogar über das Internet entfernte Datenträger einbinden können. Wir werden später mehrfach von verschiedenen Möglichkeit Gebrauch machen.
5.2.2 - Benutzereigene Home-Verzeichnisse
Jeder normale Benutzer bekommt unter Linux (bis auf einige Ausnahmen) ein eigenes Homeverzeichnis zugewiesen. In diesem Verzeichnis ist er König und darf machen, was er will. Außerhalb seines Verzeichniszweiges hat er jedoch nichts zu suchen und in der Regel auch keine Rechte dazu vom Betriebssystem. Das schützt das gesamte Betriebssystem vor absichtlichem oder unabsichtlichem Vandalismus (durch den Benutzer oder Malware).
Alle Services und Dienste (also auch ein Webserver) werden ebenfalls als Benutzer behandelt und mit bestimmten, eng umgrenzten Rechten ausgestattet, damit auch sie keinen Schaden am Betriebssystem anrichten können. Im weiteren Verlauf des Buches werden wir darauf besonders achten müssen, denn die meisten Probleme im Internet stammen genau aus dem Umstand, dass Webserver oder Programme nicht sauber mit Rechten ausgestattet werden.
5.3 - Der Linux-Verzeichnisbaum
Jetzt wollen wir noch einen Blick auf den Verzeichnisbaum werfen. Da wir einem Server aufsetzen wollen, werden wir verschiedentlich aus der festen Rolle der Benutzerverzeichnisse ausbrechen und mit Root-Rechten arbeiten. Es wird sich nicht vermeiden lassen, dass wir in mehreren Verzeichnissen Änderungen vornehmen, die mehr oder weniger nah zu dem allgemeinen Betriebssystem gehören und deshalb für normale Benutzer gesperrt sind.
Diese Änderungen, falsch angewandt, können also das gesamte Betriebssystem lahm legen. Damit das nicht so leicht passiert, arbeiten wir normalerweise als „normaler“ Benutzer pi und „leihen“ uns nur in Ausnahmefällen die Rechte des root-Benutzers (siehe oben).
Nun zum Verzeichnisbaum selbst. Weil Linux ein offenes Betriebssystem ist, kann theoretisch jeder Benutzer oder Entwickler seine eigenen Verzeichnisse für seine Programme und Daten anlegen.
5.2. Abbildung: Der Verzeichnisbaum von Linux ist komplex aufgebaut
Da das aber auch bei Linux nicht praktikabel ist, hat sich der Filesystem Hierarchy Standard herausgebildet. Er wird in der aktuellen Fassung von der Linux Foundation auf deren Webseite veröffentlicht.
Der Verzeichnisbaum gliedert sich demnach auf der obersten Ebene in folgende Verzeichnisse auf:
/ Das Wurzelverzeichnis ist die Basis für alle anderen Verzeichnisse.
/bin Wichtige Shell-Kommandos und Programme, die auch dann benötigt werden, wenn keine weiteren Dateisysteme eingebunden sind.
/boot Alles, was für den Systemladevorgang nötig ist und solche Daten, die der Betriebssystemkern braucht, bevor er Benutzerprogramme ausführt.
/dev Abkürzung für Devices, so genannte Gerätedateien. Über die Dateien werden Geräte angesprochen /etc Enthält Konfigurationsdateien, um Programme zu steuern.
/home Benutzerverzeichnisse werden darunter angeordnet.
/lib Wesentliche Programmbibliotheken und Kernmodule
/lost+found Wesentliche Programmbibliotheken in alternativem Format auf Systemen, die getrennte Bibliotheken brauchen.
/media Einhängepunkte für Wechselmedien
/mnt Einhängepunkt für ein temporär eingebundenes Dateisystem, etwa einen USB-Stick (Nicht verbindlich)
/opt reserviert für zusätzliche Softwarepakete
/proc Unterverzeichnisse für alle laufenden Programme werden hier angelegt, in denen Informationen zu laufenden Prozessen abgelegt werden können.
/root Benutzerverzeichnis von root
/run Informationen des Systems seit seinem Start.
/sbin Wesentliche Systemkommandos, notwendige Programme für den Systemstart, Reparatur und Wiederherstellung des Systems
/selinux Verzeichnis für das Security Enhanced Linux.
/srv Daten laufender Dienste und betreiberspezifische
Daten, die von Diensten dieses Systems zur Nutzung angeboten werden
/sys virtuelles Verzeichnis für Systeminformationen.
/tmp Temporäre Dateien werden hier abgelegt.
/usr gemeinsam nutzbare Programme, auf die nur lesend zugegriffen wird. Das Verzeichnis enthält zahlreiche Unterverzeichnisse, etwa /X11R6 für das X-Window-System, /bin für die meisten Benutzerkommandos, /include für Include-Dateien, /lib für Bibliotheken für Programmierung und Softwarepakete, /local für die Locale Hierarchie, /sbin für weniger wichtige Systemkommandos, /share für architekturunabhängige Daten, /src für Quelldateien
/var Abkürzung für Variabel, also Dateien, die sich ständig ändern (Druckerwarteschlange)
Wir werden mit den meisten dieser Verzeichnisse nicht in Berührung kommen. Außer mit unserem persönlichen Home-Verzeichnis werden wir noch im Verzeichnis /var/www/ Änderungen vornehmen. Aber dazu später mehr.
Linktipps:
• www.linuxfoundation.org
• www.pathname.com/fhs