2.2 Wichtige Linux-Konzepte

Um Linux effektiv zu nutzen, müssen wir einige grundlegende Konzepte verstehen.

Linux-Distributionen

Eine Linux-Distribution ist ein Betriebssystem, das auf dem Linux-Kernel basiert und eine Sammlung von Softwarepaketen, Anwendungen und Tools enthält, die zusammen ein funktionsfähiges System bilden. Distributionen sind auf verschiedene Anwendungsfälle zugeschnitten, von Desktop-Umgebungen bis hin zu Servern und eingebetteten Systemen.

Die Wahl der richtigen Linux-Distribution ist wichtig für die erfolgreiche Nutzung und Verwaltung von Linux-Systemen. Jede Distribution bietet ihre Vorteile und ist für bestimmte Anwendungsfälle ausgelegt. Indem wir die Unterschiede und Einsatzgebiete der bekanntesten Distributionen kennenlernen, können wir eine fundierte Entscheidung treffen, welche Distribution für unsere Bedürfnisse am besten geeignet ist.

Es gibt viele verschiedene Linux-Distributionen, die für unterschiedliche Anwendungsfälle optimiert sind. Einige der bekanntesten sind:

  • Ubuntu: Gut für Server und Desktop, aufgrund vieler Sicherheitsupdates und umfangreicher, aktueller Software.
  • Debian: Stabil und zuverlässig, häufig in Serverumgebungen eingesetzt.
  • CentOS: Kostenlose Variante von Red Hat Enterprise Linux, weit verbreitet in Unternehmensumgebungen.
  • Fedora: Von der Community entwickelt, bekannt für seine neuesten Features und Technologien.
  • Arch Linux: Für fortgeschrittene Benutzer:innen, die ein minimalistisches und anpassbares System wünschen.

Wir verwenden Linux als Serversystem und nutzen die Ubuntu-Distribution.

Was ist ein Kernel

Der Kernel ist der zentrale Bestandteil eines Betriebssystems und bildet die Schnittstelle zwischen der Hardware und den darauf laufenden Anwendungen. Der Kernel stellt nur die grundlegenden Funktionen bereit, wie Speicherverwaltung, Prozessverwaltung und Gerätesteuerung. Eine Distribution hingegen bietet eine komplette Benutzerumgebung, die den Kernel, einen Paketmanager, die Linux-Befehle und weitere Softwarepakete (z.B. Apache-Webserver) umfasst.

Paketverwaltung

Die Paketverwaltung ist das Herzstück eines jeden Linux-Systems. Sie ermöglicht die einfache Installation, Aktualisierung und Entfernung von Softwarepaketen. Durch das Verständnis der Paketverwaltung können wir unsere Systeme effizienter und sicherer verwalten, indem wir sicherstellen, dass alle Softwarekomponenten auf dem neuesten Stand sind und korrekt funktionieren.

Eine Paketverwaltung erleichtert die Installation von Softwarepaketen, indem sie Abhängigkeiten automatisch auflöst und sicherstellt, dass alle erforderlichen Bibliotheken und Komponenten installiert werden. Ohne eine Paketverwaltung müssten wir alle Abhängigkeiten manuell herunterladen und installieren, was zeitaufwändig und fehleranfällig sein kann.

Ein wesentlicher Bestandteil der meisten Linux-Distributionen ist das Paketverwaltungssystem. Bekannte Paketverwaltungssysteme sind:

  • APT (Advanced Package Tool): Wird von Debian und seinen Derivaten wie Ubuntu verwendet.
  • DNF (Dandified YUM): Wird von Fedora und CentOS verwendet.
  • Pacman: Wird von Arch Linux verwendet.

Beispiel: Softwarepaket installieren

Wir installieren das gewünschte Softwarepaket zusammen mit allen erforderlichen Abhängigkeiten. Dies erfolgt mit dem Befehl sudo apt-get install <paketname>.

Um das Textbearbeitungsprogramm nano zu installieren, führen wir folgende Schritte aus:

  1. Aktualisieren der Paketlisten: Wir aktualisieren die Liste der verfügbaren Pakete und deren Versionen, indem wir den Befehl sudo apt-get update ausführen.
  2. Installieren von nano: Wir installieren das Programm nano mit dem Befehl sudo apt-get install nano.

Nach der Eingabe dieser Befehle wird nano zusammen mit allen notwendigen Abhängigkeiten installiert und ist sofort einsatzbereit.

Shell und Terminal

In einer Serverumgebung arbeiten wir oft mit der Kommandozeile, auch bekannt als Shell, anstatt wie bei Windows oder Mac mit einer grafischen Benutzeroberfläche (GUI). Dies liegt daran, dass Shell-Befehle eine präzise und effiziente Möglichkeit zur Verwaltung des Systems bieten. Auf Servern, die häufig ohne grafische Oberfläche betrieben werden, ist die Shell unverzichtbar, da sie weniger Ressourcen verbraucht und den direkten Zugriff auf Systemfunktionen ermöglicht.

Die Kommandozeile ist ein mächtiges Werkzeug in Linux. Sie ermöglicht es uns, komplexe Aufgaben durch die Eingabe einfacher Befehle auszuführen. Während grafische Benutzeroberflächen (GUIs) für viele Aufgaben praktisch sind, bieten Shell-Befehle eine präzisere Kontrolle und sind oft schneller und flexibler. Die Kenntnis grundlegender Shell-Befehle ist daher essenziell für jeden, der Linux effektiv nutzen möchte, insbesondere in Serverumgebungen.

Die Shell ist eine Schnittstelle, die es Benutzern ermöglicht, Befehle einzugeben und mit dem Betriebssystem zu interagieren. Das Terminal ist das Programm, das die Shell ausführt und Benutzern den Zugriff darauf ermöglicht.

Dateisystem

Das Verständnis des Dateisystems ist fundamental für die Arbeit mit Linux. Es bestimmt, wie Daten organisiert, gespeichert und abgerufen werden. Indem wir die Struktur des Linux-Dateisystems verstehen, können wir effizienter navigieren, Daten verwalten und Probleme beheben.

Das Linux-Dateisystem ist hierarchisch aufgebaut und beginnt mit dem Wurzelverzeichnis /. Wichtige Verzeichnisse sind:

  • /home: Benutzerverzeichnisse
  • /etc: Systemkonfigurationsdateien
  • /var: Variable Dateien wie Logs
  • /bin und /sbin: Essenzielle Systemprogramme

Details zu weiteren Verzeichnissen und deren spezifischen Anwendungen werden in späteren Kapiteln behandelt.

Benutzer, Gruppen und Dateirechte

Linux ist ein Multiuser-System, was bedeutet, dass mehrere Benutzer gleichzeitig auf demselben System arbeiten können. Jeder Benutzer hat ein eigenes Home-Verzeichnis und kann Mitglied einer oder mehrerer Gruppen sein. Die Verwaltung von Benutzern und Gruppen ist wichtig, um den Zugriff auf Ressourcen zu steuern und die Systemsicherheit zu gewährleisten.

Dateirechte und -berechtigungen sind wichtig für die Sicherheit und Integrität eines Linux-Systems. Sie ermöglichen es uns, zu kontrollieren, wer auf welche Dateien zugreifen kann, und verhindern, dass unbefugte Benutzer kritische Daten ändern oder löschen. Linux verwendet ein detailliertes System von Berechtigungen, das Leserechte (r), Schreibrechte (w) und Ausführungsrechte (x) für den Besitzer, die Gruppe und andere Benutzer umfasst.

Weitere Informationen zur Benutzer- und Gruppenverwaltung sowie zu Dateirechten werden in späteren Kapiteln besprochen.

Befehle, Prozesse, Dienste und Umgebungsvariablen

Hier kommen vier grundlegenden Begriffe, die wir kennen müssen.

  • Befehle: Befehle sind die Grundlage für die Interaktion mit einem Linux-System über das Terminalfenster. Mit Linux-Befehlen (z.B. wie ls zur Auflistung von Verzeichnissen und cd zum Wechseln von Verzeichnissen) können wir verschiedene Aufgaben ausführen, von der Navigation im Dateisystem bis hin zur Verwaltung von Softwarepaketen.

  • Prozesse: Ein Prozess ist ein laufendes Programm auf einem Linux-System. Prozesse können vom Benutzer gestartet und gestoppt werden und sind für die Ausführung der Anwendungen und Dienste verantwortlich. Die Verwaltung von Prozessen trägt zur Leistung und Stabilität des Systems bei. Mit Befehlen wie ps, top und kill können wir Prozesse überwachen und steuern.

    Ausgeführte Befehle sind Prozesse

    Wenn wir einen Befehl im Terminal ausführen, startet das System einen neuen Prozess, der diesen Befehl ausführt. Jeder laufende Befehl wird somit zu einem Prozess, der vom Betriebssystem verwaltet wird.

  • Dienste: Dienste sind spezielle Prozesse, die im Hintergrund laufen und systemweite Aufgaben erfüllen. Diese werden oft durch das Init-System verwaltet, wie systemd oder Upstart. Es gibt Netzwerkdienste, Serverprogramme (Apache-Webserver, Datenbankservern) und andere kritische Systemfunktionen. Die Verwaltung von Diensten erfolgt in der Regel über Befehle wie systemctl (für systemd) oder service (für ältere Systeme).

  • Umgebungsvariablen: Umgebungsvariablen sind spezielle Variablen, die das Betriebssystem und die Shell verwenden, um Informationen an Prozesse weiterzugeben. Sie können zum Beispiel den Pfad zu ausführbaren Programmen ($PATH), den Namen des aktuellen Benutzers ($USER) oder das Home-Verzeichnis ($HOME) enthalten. Wir können Umgebungsvariablen anzeigen, setzen und ändern, um das Verhalten von Befehlen und Prozessen zu steuern.

    Beispiele

    • echo $PATH: Zeigt den aktuellen Suchpfad für ausführbare Programme an.
    • export EDITOR=nano: Setzt den Standardeditor auf nano.
    • env: Listet alle aktuellen Umgebungsvariablen auf.