LINUX
- Linux Commands
- 1. Linux-Grundlagen
- 2. Dateisystem, Pfade und Verzeichnisse
- 3. Dateien suchen, anzeigen und bearbeiten
- 4. Benutzer, Gruppen und Rechte
- 5. Prozesse, Dienste und systemd
- 6. Paketverwaltung und Updates
- 7. Netzwerk, SSH und Firewall
- 8. Speicher, Mounts und Dateisysteme
- 9. Logs, Monitoring und Fehlersuche
- 10. Shell, Pipes und Umleitungen
- 11. Bash-Scripting Grundlagen
- 12. Sicherheit, Backup und Automatisierung
- 13. Linux im Serverbetrieb
- 14. Prüfungsvorbereitung und Wiederholung
- 15. Linux-Spickzettel
- 16. Linux-Trainer
- Linux Tests
- 1. Benutzer & Zugriffsrechte
- 1 b. Zusatzaufgaben zu Linux-Benutzern, sudo, Besitzrechten und Sonderrechten.
- 2. Gemischt – Benutzer, Zugriffsrechte und Sonderrechte.
- Linux Zusatz
Linux Commands
Linux Commands
Basics
|
Ctrl+Shift+T |
Terminal Öffnen |
Steuerung Terminal |
|
Ctrl+C |
Abrechen / neue Befehlszeile |
|
|
Ctrl+D |
Log out |
|
|
Ctrl+L |
Verlauf löschen |
|
|
|
|
|
|
cd .. |
Ordner zurück ⬅️ 📁 |
|
|
cd ~ |
in home wechseln ➡️ 🏠 |
|
|
touch |
Datei erstellen ➕ 📄 |
|
|
mkdir |
Ordner erstellen ➕ 📁 |
|
|
rm -r |
Löschen ❌ 📄 |
|
|
|
|
|
|
ls |
Liste anzeigen 📁+📄 |
👀 Anzeigen mit LS |
|
ls -l /home |
anzeigen aller /home Ordner /🏠 /🏠 |
|
|
ls -l |
Inhalt anzeigen. 🔐 👤 👥 📄 |
|
|
ls -la
(optional -h = KB, MB) |
Inhalt anzeigen. (Rechte,User,Group,Größe,Datum+versteckte) . 👻 🔐 👤 👥 📄 |
|
|
|
|
|
|
|
|
|
|
tree |
tree struktur anzeigen 🌳└── |
👀 Anzeigen Struktur |
|
tree -L 1 |
Zeigt erstes unter level an 🌳├── |
|
|
tree -pug |
tree mit 🌳 -pug(Zugriffsrecht, User, Gruppe) 🔐,👤,👥 |
|
|
|
|
|
|
getent passwd |
Alle user anzeigen 👤👤👤 |
👀 Anzeigen User & Group |
|
getent group |
Gruppe anzeigen 👥👥👥 |
|
|
# getent shadow |
Passwort-Hashes anzeigen Sudo oder aus Root #️⃣ 🔑 |
|
|
|
|
|
|
# useradd -m -s /bin/bash user |
Benutzer erstellen + Home + Bash. ➕ 👤🏠 & (erstellt Standart Hauptgruppe mit user Namen) |
Benutzer & Gruppen erstellen
-g Hauptgruppe -G Nebengruppe (alleinstehend ersetzt alle bisherigen nebengrupen) -aG Nebengruppe adden
|
|
# useradd -m -s /bin/bash -g HAUPT -G NEBENGRUPPE user |
Benutzer erstellen + Home + Bash ➕ 👤🏠 +HauptG +NebenG 👥 (👥) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# groupadd groupName |
neue Gruppe erstellen 👥 ✅ |
|
|
|
|
|
|
# usermod -aG NebenGruppe user |
User zur Nebengruppe hinzufügen. 👤→👥 |
|
|
# groupmod -n neuerName alterName |
Gruppe umbenennen. 👥 🔄Name |
|
|
# chgrp -R gruppe /... |
Gruppe ändern + ALLE Daten 👥 + 📄 |
-R = Rekursiv (Alle Dateien) |
|
# usermod -s /bin/bash user |
Bash nachträglich hinzufügen |
|
|
{ } |
Kaskadieren |
|
|
|
|
|
|
cp |
Kopie |
kopieren oder verschieben Bsp. mv OldName NewName |
|
mv |
Verschiebt o. benennt Dateien |
|
|
|
|
|
|
getent passwd |
Alle user anzeigen |
|
|
getent group |
Gruppe anzeigen |
|
|
|
|
|
|
# passwd user |
Passwort zuweisen |
|
|
su - user |
Nutzer wechseln |
|
|
|
|
|
|
|
|
|
|
# chown user:group /home/OldUser |
Besitzer übergeben 🫴 👤👥 🏠 |
|
|
# chgrp group datei |
Ändert nur gruppe 🔄.... 👥 ➝ 📄 |
|
|
# chown user:group dateiname |
Ändert besitzer & gruppe. 🔄.... 👤👥 ➝ 📄 |
|
|
# usermod -l oldUser newUser |
Ändern des namen 👤🔄Name |
|
|
|
|
|
|
fdisk -L |
Zeigt alle festplatten und formate an |
|
|
crontab -e |
Um zeitlich gesteuerte dinge zu starten |
|
# = sudo
CHMOD EINSTELLUNGEN:
-
Löschen hängt vom Ordner ab, nicht von der Datei
→ benötigt:w + xauf dem Ordner -
Ordnerrechte ≠ Dateirechte
→ Datei:r=lesen,w=ändern,x=ausführen
→ Ordner:r=sehen,w=erstellen/löschen,x=betreten -
xist Pflicht für Zugriff
→ ohnex: keincd, kein Öffnen, egal was sonst gesetzt ist -
rohnex
→ sehen eingeschränkt möglich, aber nicht nutzen -
xohner
→ betreten möglich, aber keinls(Blindzugriff) -
wohnex
→ praktisch nutzlos (kein Zugriff auf den Ordner) -
Verschieben (
mv)
→ benötigtw + xauf Quell- UND Zielordner -
Datei löschen ohne Dateirechte möglich
→ wenn Ordnerw + xhat -
root ignoriert Rechte weitgehend
→ kann fast alles unabhängig von Permissions -
chmod 777
→ funktioniert immer, aber unsicher (jeder darf alles) -
Sticky Bit (
t) z. B./tmp
→ alle dürfen schreiben, aber nur eigene Dateien löschen
--
Linux Prompt (Befehlszeile) – komplett kompakt
Grundaufbau
user@hostname:pfad$
oder als Admin:
root@hostname:pfad#
Bestandteile
-
user→ aktueller Benutzer-
user= normaler Benutzer -
root= Administrator
-
-
hostname→ Rechner- oder Systemname- z. B.
server,NASSI,raspberrypi,container
- z. B.
-
pfad→ aktueller Ordner-
~= Home-Verzeichnis vonuser=/home/user -
/= Root-Verzeichnis, also die oberste Ebene des Systems -
/etc,/var/log,/tmp= absolute Pfade -
..= eine Ebene zurück
-
-
$/#→ Rechte-Stufe-
$= normaler Benutzer -
#= root / Admin
-
Beispiele
user@server:~$
→ Benutzer user, Host server, im Home-Verzeichnis, normale Rechte
root@server:~#
→ Benutzer root, Host server, im Home-Verzeichnis von root (/root), volle Rechte
user@server:/home/user/projects$
→ Benutzer user, Host server, im Ordner /home/user/projects, normale Rechte
root@server:/etc#
→ Benutzer root, Host server, im Ordner /etc, volle Rechte
user@NASSI:/var/log$
→ Benutzer user, Host NASSI, im Log-Verzeichnis /var/log, normale Rechte
root@container:/app#
→ Benutzer root, Host container, im Ordner /app, volle Rechte
user@raspberrypi:~$
→ Benutzer user, Host raspberrypi, im Home-Verzeichnis, normale Rechte
~/projects $
→ verkürzter Prompt, nur Pfad sichtbar, aktueller Ordner ist projects im Home-Verzeichnis
$
→ minimaler Prompt, keine Infos zu Benutzer, Host oder Pfad sichtbar
user@server:/tmp$
→ Benutzer user, Host server, im temporären Ordner /tmp
user@server:/$
→ Benutzer user, Host server, im Root-Verzeichnis /
Wichtige Bedeutungen
-
~= Home-Verzeichnis des aktuellen Benutzers -
/= oberste Ebene des gesamten Systems -
..= ein Verzeichnis zurück -
user@host= zeigt, wer du bist und auf welchem System du bist -
pfad= zeigt, wo du dich gerade befindest -
$oder#= zeigt, mit welchen Rechten du arbeitest
Typische Prüfungsfallen
-
#bedeutet nicht Kommentar im Prompt, sondern root-Rechte -
~ist nicht dasselbe wie/-
~= Benutzerbereich -
/= gesamtes System
-
- Der Hostname ist wichtig, weil du damit erkennst, auf welchem Gerät du gerade arbeitest
- Ein Prompt mit
$ist deutlich ungefährlicher als ein Prompt mit#
Merksatz
user@host = WER und WO
pfad = an welcher Stelle im System
$ / # = wie viele Rechte du hast
1. Linux-Grundlagen
1.1 Linux-Grundlagen
Linux ist ein freies, unixähnliches Betriebssystem, das besonders häufig auf Servern, Netzwerkgeräten, Cloud-Systemen, Containern, Embedded-Systemen und Entwicklerarbeitsplätzen eingesetzt wird.
Für Fachinformatiker Systemintegration ist Linux wichtig, weil viele Serverdienste, Automatisierungen, Container, Firewalls, NAS-Systeme, Cloud-Umgebungen und Webdienste auf Linux basieren.
Merksatz:
Linux ist besonders stark im Serverbetrieb,
bei Automatisierung,
Netzwerkdiensten
und stabilen Systemumgebungen.
Lernziele
Nach dieser Seite solltest du erklären können:
- was Linux ist
- was der Linux-Kernel ist
- was eine Linux-Distribution ist
- was eine Shell ist
- was ein Terminal ist
- was der Unterschied zwischen Root und normalen Benutzern ist
- warum Linux im Serverbereich wichtig ist
- welche Grundbegriffe in der Prüfung häufig vorkommen
Was ist Linux?
Linux ist im engeren Sinn der Kernel eines Betriebssystems.
Der Kernel ist der zentrale Teil, der zwischen Hardware und Software vermittelt.
Im Alltag meint man mit „Linux“ meistens ein komplettes Betriebssystem, bestehend aus:
- Linux-Kernel
- Systemprogrammen
- Shell
- Paketverwaltung
- Diensten
- Bibliotheken
- Benutzerprogrammen
- optional grafischer Oberfläche
Beispiel:
Ubuntu,
Debian,
Fedora,
Arch Linux,
openSUSE,
Rocky Linux
oder Alpine Linux
sind keine unterschiedlichen Kernel, sondern unterschiedliche Linux-Distributionen.
Merksatz:
Linux ist streng genommen der Kernel.
Im Alltag meint man mit Linux meist die ganze Distribution.
Kernel
Der Kernel ist der Kern des Betriebssystems.
Er verwaltet unter anderem:
- Prozesse
- Arbeitsspeicher
- Dateisysteme
- Gerätetreiber
- Netzwerkzugriffe
- Rechte und Systemaufrufe
- Kommunikation zwischen Hardware und Programmen
Programme greifen nicht direkt unkontrolliert auf die Hardware zu. Sie nutzen Funktionen des Betriebssystems, die vom Kernel bereitgestellt werden.
Beispiel:
Ein Webserver schreibt eine Logdatei.
Das Programm schreibt nicht direkt auf die Festplatte,
sondern nutzt Betriebssystemfunktionen,
die vom Kernel verarbeitet werden.
Merksatz:
Der Kernel verbindet Hardware und Software.
Linux-Distribution
Eine Linux-Distribution ist ein vollständiges Betriebssystempaket auf Basis des Linux-Kernels.
Eine Distribution enthält typischerweise:
- Linux-Kernel
- Paketverwaltung
- Standardprogramme
- Systemdienste
- Konfigurationsstruktur
- Installationssystem
- Sicherheitsupdates
- Dokumentation
- optional grafische Oberfläche
Beispiele:
| Distribution | Typischer Einsatz |
|---|---|
| Debian | Server, stabile Systeme |
| Ubuntu | Desktop, Server, Cloud |
| Fedora | moderne Linux-Technologien |
| Rocky Linux | Enterprise-Server |
| openSUSE | Desktop und Server |
| Arch Linux | sehr individuell, fortgeschritten |
| Alpine Linux | kleine Container-Images |
| Kali Linux | Security- und Testumgebungen |
Wichtig:
Die Distribution bestimmt,
wie Pakete installiert werden,
wo bestimmte Konfigurationsdateien liegen
und wie Updates bereitgestellt werden.
Merksatz:
Distribution = Linux-Kernel plus Systemumgebung.
Warum gibt es verschiedene Distributionen?
Distributionen unterscheiden sich zum Beispiel bei:
- Paketverwaltung
- Update-Strategie
- Stabilität
- Aktualität der Software
- Zielgruppe
- Sicherheitskonzept
- Standardkonfiguration
- Supportdauer
- Einsatzgebiet
Beispiele:
Debian ist sehr stabil
und wird häufig für Server genutzt.
Ubuntu ist weit verbreitet
und wird auf Desktop,
Servern
und in der Cloud genutzt.
Alpine ist sehr klein
und wird oft für Container verwendet.
Rocky Linux orientiert sich am Enterprise-Server-Umfeld.
Merksatz:
Nicht jede Linux-Distribution verfolgt dasselbe Ziel.
CLI und GUI
Linux kann mit grafischer Oberfläche oder über die Kommandozeile bedient werden.
GUI bedeutet:
Graphical User Interface
Also:
grafische Benutzeroberfläche
CLI bedeutet:
Command Line Interface
Also:
Kommandozeile
Im Serverbereich wird Linux sehr häufig über die Kommandozeile verwaltet, weil sie:
- ressourcenschonend ist
- gut automatisierbar ist
- per SSH erreichbar ist
- exakt dokumentierbare Befehle erlaubt
- auf Servern ohne Monitor funktioniert
Merksatz:
GUI ist grafisch.
CLI ist textbasiert.
Server werden häufig über CLI administriert.
Terminal und Shell
Terminal und Shell werden oft verwechselt.
Terminal
Das Terminal ist das Programm oder die Umgebung, in der Befehle eingegeben werden.
Beispiele:
Terminal-App
SSH-Sitzung
Konsolenfenster
virtuelle Konsole
Shell
Die Shell interpretiert die eingegebenen Befehle und führt sie aus.
Bekannte Shells:
bash
zsh
sh
fish
Beispiel:
Du gibst im Terminal einen Befehl ein.
Die Shell verarbeitet diesen Befehl.
Merksatz:
Terminal = Eingabefenster.
Shell = Befehlsinterpreter.
Bash
Bash steht für:
Bourne Again Shell
Die Bash ist eine der bekanntesten Shells unter Linux.
Sie kann:
- Befehle ausführen
- Variablen verwenden
- Skripte ausführen
- Bedingungen prüfen
- Schleifen nutzen
- Ausgaben umleiten
- Befehle verketten
Beispielhafte Bash-Befehle:
pwd
ls
cd
cp
mv
rm
grep
find
chmod
systemctl
Merksatz:
Bash ist Shell und Skriptsprache zugleich.
Prompt
Der Prompt ist die Eingabeaufforderung der Shell.
Er zeigt häufig Informationen wie:
- Benutzername
- Hostname
- aktuelles Verzeichnis
- Benutzerrolle
Beispiel:
felix@server:~$
Bedeutung:
| Teil | Bedeutung |
|---|---|
| felix | Benutzer |
| server | Hostname |
| ~ | Home-Verzeichnis |
| $ | normaler Benutzer |
Ein Prompt mit Raute zeigt häufig Root-Rechte an:
root@server:~#
Wichtig:
# bedeutet oft:
Root-Shell oder administrative Rechte.
Merksatz:
$ steht meist für normalen Benutzer.
# steht häufig für Root.
Root
Root ist der administrative Hauptbenutzer unter Linux.
Root darf grundsätzlich alles:
- Dateien ändern
- Benutzer verwalten
- Dienste starten und stoppen
- Systemkonfiguration ändern
- Software installieren
- Rechte verändern
- Systemdateien löschen
Das ist mächtig, aber auch gefährlich.
Ein falscher Befehl als Root kann das System beschädigen.
Beispiel:
Ein Löschbefehl mit Root-Rechten kann auch wichtige Systemdateien entfernen.
Merksatz:
Root darf fast alles.
Deshalb Root-Rechte nur bewusst verwenden.
Normale Benutzer
Normale Benutzer haben eingeschränkte Rechte.
Sie dürfen typischerweise:
- eigene Dateien bearbeiten
- eigene Prozesse starten
- Programme ausführen
- im eigenen Home-Verzeichnis arbeiten
Sie dürfen normalerweise nicht:
- Systemdateien beliebig ändern
- fremde Dateien lesen
- Dienste systemweit verändern
- Benutzer anlegen
- Pakete installieren
Vorteil:
Fehler oder Angriffe haben weniger Auswirkungen.
Merksatz:
Normale Benutzer schützen das System vor unnötigen Risiken.
sudo
sudo bedeutet sinngemäß:
führe einen Befehl mit erhöhten Rechten aus
Mit sudo kann ein berechtigter Benutzer einzelne administrative Befehle ausführen, ohne dauerhaft als Root angemeldet zu sein.
Beispiel:
sudo systemctl restart nginx
Bedeutung:
Der Dienst nginx wird mit administrativen Rechten neu gestartet.
Vorteile:
- keine dauerhafte Root-Sitzung nötig
- bessere Nachvollziehbarkeit
- gezielte Rechtevergabe möglich
- weniger Risiko durch versehentliche Root-Befehle
Merksatz:
sudo erlaubt gezielte administrative Befehle.
Linux im Serverbetrieb
Linux wird häufig als Serverbetriebssystem genutzt.
Typische Serveraufgaben:
- Webserver
- Datenbankserver
- Dateiserver
- DNS-Server
- DHCP-Server
- Mailserver
- Container-Host
- Firewall
- VPN-Server
- Monitoring-System
- Backup-Server
Gründe für Linux im Serverbereich:
- stabil
- ressourcenschonend
- gut automatisierbar
- viele Serverdienste verfügbar
- starke Netzwerkfunktionen
- gute Fernadministration per SSH
- weit verbreitet in Cloud und Containern
Merksatz:
Linux ist ein Standardbetriebssystem im Serverbereich.
Linux und Open Source
Linux ist eng mit Open Source verbunden.
Open Source bedeutet:
Der Quellcode ist offen einsehbar
und kann je nach Lizenz genutzt,
verändert
und weitergegeben werden.
Vorteile:
- Transparenz
- große Community
- Anpassbarkeit
- viele freie Werkzeuge
- schnelle Fehleranalyse möglich
- breite Nutzung in Bildung und Unternehmen
Wichtig:
Open Source bedeutet nicht automatisch kostenlos in jedem geschäftlichen Zusammenhang.
Lizenzen und Supportmodelle müssen beachtet werden.
Merksatz:
Open Source bedeutet offener Quellcode,
nicht automatisch regelfrei.
Linux und Dateisystem-Hierarchie
Linux nutzt einen hierarchischen Verzeichnisbaum.
Der oberste Punkt ist:
/
Das nennt man Root-Verzeichnis.
Wichtige Verzeichnisse:
| Verzeichnis | Bedeutung |
|---|---|
| / | Wurzel des Dateisystems |
| /home | Benutzerverzeichnisse |
| /root | Home-Verzeichnis des Root-Benutzers |
| /etc | Konfigurationsdateien |
| /var | veränderliche Daten, Logs, Spool |
| /tmp | temporäre Dateien |
| /usr | Programme und Bibliotheken |
| /bin | wichtige Programme |
| /sbin | Systemprogramme |
| /dev | Gerätedateien |
| /mnt | temporäre Mountpoints |
| /media | Wechselmedien |
| /proc | Kernel- und Prozessinformationen |
Diese Verzeichnisse werden auf der nächsten Seite genauer erklärt.
Merksatz:
Unter Linux beginnt alles bei /.
Linux und Dienste
Viele Serverfunktionen laufen unter Linux als Dienste.
Ein Dienst ist ein Programm, das im Hintergrund läuft und eine bestimmte Aufgabe erfüllt.
Beispiele:
Webserver
Datenbankserver
SSH-Server
DNS-Server
Backupdienst
Monitoring-Agent
Dienste werden auf vielen Linux-Systemen mit systemd verwaltet.
Typische Befehle:
systemctl status dienstname
systemctl start dienstname
systemctl stop dienstname
systemctl restart dienstname
systemctl enable dienstname
systemctl disable dienstname
Merksatz:
Dienste laufen im Hintergrund
und stellen Funktionen bereit.
Linux und Prozesse
Ein Prozess ist ein laufendes Programm.
Beispiele:
Shell
Webserver-Prozess
Datenbankprozess
Editor
Backupskript
Jeder Prozess hat unter Linux eine Prozess-ID.
Diese nennt man:
PID
Prozesse können angezeigt, überwacht und beendet werden.
Typische Befehle:
ps
top
htop
kill
Merksatz:
Prozess = laufendes Programm.
Linux und Netzwerk
Linux bringt viele Werkzeuge für Netzwerkdiagnose mit.
Typische Netzwerkbefehle:
| Befehl | Zweck |
|---|---|
| ip addr | IP-Adressen anzeigen |
| ip route | Routing anzeigen |
| ping | Erreichbarkeit per ICMP testen |
| ss | Ports und Verbindungen anzeigen |
| curl | HTTP/HTTPS prüfen |
| dig | DNS prüfen |
| nslookup | DNS prüfen |
| ssh | sichere Fernadministration |
Für FISI ist das besonders wichtig, weil Linux häufig im Server, Container- und Cloud-Umfeld genutzt wird.
Merksatz:
Linux ist sehr stark bei Netzwerkdiagnose und Serverbetrieb.
Linux und Paketverwaltung
Software wird unter Linux meistens über Paketverwaltungen installiert.
Beispiele:
| Distribution | Paketverwaltung |
|---|---|
| Debian / Ubuntu | apt |
| Fedora | dnf |
| Rocky Linux | dnf |
| openSUSE | zypper |
| Arch Linux | pacman |
| Alpine Linux | apk |
Paketverwaltungen können:
- Software installieren
- Software entfernen
- Updates einspielen
- Abhängigkeiten verwalten
- Paketquellen nutzen
- Versionsstände prüfen
Merksatz:
Paketverwaltung installiert Software kontrolliert aus Paketquellen.
Linux und Konfiguration
Viele Linux-Programme werden über Textdateien konfiguriert.
Häufige Orte:
/etc
/etc/systemd
/etc/ssh
/etc/nginx
/etc/fstab
Vorteile:
- gut dokumentierbar
- per SSH änderbar
- versionierbar
- automatisierbar
- auch ohne GUI nutzbar
Wichtig:
Änderungen an Konfigurationsdateien sollten nachvollziehbar,
vorsichtig
und möglichst mit Backup erfolgen.
Merksatz:
Linux-Konfiguration liegt häufig in Textdateien.
Linux und Logs
Linux schreibt viele Ereignisse in Logdateien oder das Journal.
Logs helfen bei:
- Fehlersuche
- Sicherheitsanalyse
- Dienstproblemen
- Loginproblemen
- Startproblemen
- Netzwerkproblemen
Typische Werkzeuge:
journalctl
dmesg
tail
grep
Typische Orte:
/var/log
systemd-journal
Merksatz:
Logs sind bei Linux-Fehlersuche zentral.
Linux und Automatisierung
Linux eignet sich sehr gut für Automatisierung.
Typische Mittel:
- Shell-Skripte
- Cronjobs
- systemd Timer
- SSH
- Paketmanager
- Konfigurationsdateien
- Pipes und Umleitungen
Beispiele:
Backups automatisch starten
Logs auswerten
Dienste überwachen
Dateien regelmäßig synchronisieren
Systeme aktualisieren
Merksatz:
Linux wird stark über Skripte und Automatisierung verwaltet.
Typische Linux-Begriffe
| Begriff | Bedeutung |
|---|---|
| Kernel | Kern des Betriebssystems |
| Distribution | vollständiges Linux-Systempaket |
| Shell | Befehlsinterpreter |
| Terminal | Eingabeumgebung für Befehle |
| Root | administrativer Hauptbenutzer |
| sudo | Befehl mit erhöhten Rechten ausführen |
| Prozess | laufendes Programm |
| Dienst | Hintergrundprogramm mit Aufgabe |
| Paketmanager | installiert und aktualisiert Software |
| Repository | Paketquelle |
| Log | Protokolldatei oder Ereignisprotokoll |
| Mount | Einhängen eines Dateisystems |
| Pfad | Ort einer Datei oder eines Verzeichnisses |
| Home-Verzeichnis | persönlicher Benutzerbereich |
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist Linux im engeren Sinn? | der Kernel |
| Was ist eine Distribution? | Linux-Kernel plus Systemumgebung |
| Was macht der Kernel? | verwaltet Hardwarezugriffe und Systemressourcen |
| Was ist eine Shell? | Befehlsinterpreter |
| Was ist ein Terminal? | Eingabeumgebung für Befehle |
| Was ist Root? | administrativer Hauptbenutzer |
| Was macht sudo? | führt Befehle mit erhöhten Rechten aus |
| Warum wird Linux auf Servern genutzt? | stabil, automatisierbar, ressourcenschonend |
| Wo liegen viele Konfigurationen? | unter /etc |
| Wo liegen viele Logs? | unter /var/log oder im Journal |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| Linux immer als komplette Distribution bezeichnen | streng genommen ist Linux der Kernel |
| Terminal und Shell gleichsetzen | Terminal ist Umgebung, Shell interpretiert Befehle |
| Root dauerhaft nutzen | besser gezielt sudo verwenden |
| GUI für Server voraussetzen | viele Linux-Server laufen ohne GUI |
| Paketmanager mit App Store gleichsetzen | Paketmanager verwaltet Pakete und Abhängigkeiten |
| Logs ignorieren | Logs sind zentral für Fehlersuche |
| Konfiguration nur grafisch erwarten | Linux nutzt häufig Textdateien |
| Open Source mit automatisch kostenlos gleichsetzen | Lizenz und Support beachten |
IHK-sichere Kurzformulierung
Linux ist im engeren Sinn der Kernel eines Betriebssystems. Im Alltag bezeichnet Linux meist eine vollständige Distribution, also ein System aus Linux-Kernel, Systemprogrammen, Shell, Paketverwaltung, Diensten und Benutzerprogrammen. Der Kernel verwaltet zentrale Ressourcen wie Prozesse, Arbeitsspeicher, Dateisysteme, Treiber und Netzwerkzugriffe. Eine Shell ist ein Befehlsinterpreter, der Eingaben verarbeitet und Befehle ausführt. Das Terminal ist die Umgebung, in der diese Befehle eingegeben werden. Root ist der administrative Hauptbenutzer, während sudo einzelnen berechtigten Benutzern erlaubt, gezielt Befehle mit erhöhten Rechten auszuführen. Linux wird im Serverbereich häufig eingesetzt, weil es stabil, ressourcenschonend, gut automatisierbar und sehr gut per SSH administrierbar ist.
Merksätze
Linux ist streng genommen der Kernel.
Im Alltag meint Linux oft die ganze Distribution.
Kernel verbindet Hardware und Software.
Distribution = Kernel plus Systemumgebung.
Terminal = Eingabeumgebung.
Shell = Befehlsinterpreter.
Bash ist eine bekannte Shell.
Root ist der administrative Hauptbenutzer.
sudo führt einzelne Befehle mit erhöhten Rechten aus.
Normale Benutzer begrenzen Risiken.
Linux-Server laufen häufig ohne grafische Oberfläche.
CLI ist gut automatisierbar.
SSH ist wichtig für Fernadministration.
Unter Linux beginnt der Verzeichnisbaum bei /.
/etc enthält viele Konfigurationsdateien.
/var/log enthält viele Logdateien.
systemd verwaltet viele Dienste.
Prozess = laufendes Programm.
Dienst = Hintergrundprogramm mit Aufgabe.
Paketmanager verwalten Software und Abhängigkeiten.
Logs sind zentral für Fehlersuche.
Linux ist stark im Serverbetrieb,
bei Netzwerkdiensten,
in Containern
und in der Cloud.
2. Dateisystem, Pfade und Verzeichnisse
2.1 Dateisystem, Pfade und Verzeichnisse
Linux verwendet einen hierarchischen Verzeichnisbaum.
Das bedeutet:
Alle Dateien,
Verzeichnisse,
Geräte,
Mountpoints
und Systembereiche befinden sich unter einem gemeinsamen Startpunkt.
Dieser Startpunkt heißt:
/
Das ist das Root-Verzeichnis des Dateisystems.
Wichtig:
Das Root-Verzeichnis / ist nicht dasselbe wie der Benutzer root.
Merksatz:
Unter Linux beginnt alles bei /.
Lernziele
Nach dieser Seite solltest du erklären können:
- wie der Linux-Verzeichnisbaum aufgebaut ist
- was absolute und relative Pfade sind
- was das Root-Verzeichnis ist
- was das Home-Verzeichnis ist
- welche wichtigen Systemverzeichnisse es gibt
- was versteckte Dateien sind
- was Mountpoints sind
- warum unter Linux Laufwerke nicht wie C: oder D: eingebunden werden
Grundidee des Linux-Dateisystems
Unter Linux gibt es keinen Laufwerksbuchstaben wie bei Windows.
Windows-Beispiel:
C:\Users\Felix\Dokumente
Linux-Beispiel:
/home/felix/Dokumente
Unter Linux werden Datenträger, Partitionen, USB-Sticks, Netzlaufwerke oder andere Dateisysteme in den bestehenden Verzeichnisbaum eingehängt.
Dieses Einhängen nennt man:
Mounten
Merksatz:
Linux nutzt einen gemeinsamen Verzeichnisbaum,
keine Laufwerksbuchstaben.
Root-Verzeichnis /
Das Root-Verzeichnis ist der oberste Punkt im Linux-Dateisystem.
Es wird dargestellt durch:
/
Alle anderen Verzeichnisse liegen darunter.
Beispiele:
/home
/etc
/var
/usr
/tmp
/root
/dev
/proc
Wichtig:
/ ist der Anfang des Dateisystems.
root ist der administrative Benutzer.
Merksatz:
/ ist ein Verzeichnis.
root ist ein Benutzer.
Verzeichnisbaum
Ein einfacher Linux-Verzeichnisbaum kann so aussehen:
/
├── bin
├── boot
├── dev
├── etc
├── home
│ └── felix
├── root
├── tmp
├── usr
└── var
Bedeutung:
/ ist der oberste Punkt.
/home/felix ist ein Benutzerverzeichnis.
/etc enthält viele Konfigurationen.
/var enthält veränderliche Daten wie Logs.
Merksatz:
Pfade beschreiben die Position im Verzeichnisbaum.
Absolute Pfade
Ein absoluter Pfad beginnt immer bei:
/
Beispiele:
/home/felix
/etc/ssh/sshd_config
/var/log
/usr/bin
/tmp/test.txt
Vorteil:
Ein absoluter Pfad ist eindeutig,
egal in welchem Verzeichnis man sich gerade befindet.
Merksatz:
Absoluter Pfad beginnt mit /.
Relative Pfade
Ein relativer Pfad beginnt nicht bei /, sondern bezieht sich auf das aktuelle Verzeichnis.
Beispiel:
dokumente/datei.txt
Wenn man sich gerade in
/home/felix
befindet, dann bedeutet der relative Pfad:
/home/felix/dokumente/datei.txt
Merksatz:
Relativer Pfad hängt vom aktuellen Verzeichnis ab.
Aktuelles Verzeichnis
Das aktuelle Verzeichnis ist der Ort, an dem man sich gerade in der Shell befindet.
Anzeigen mit:
pwd
pwd steht für:
print working directory
Beispielausgabe:
/home/felix
Merksatz:
pwd zeigt,
wo du gerade bist.
In Verzeichnisse wechseln
Mit cd wechselt man das aktuelle Verzeichnis.
Beispiele:
cd /etc
cd /home/felix
cd ..
cd ~
cd -
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| cd /etc | wechselt nach /etc |
| cd .. | eine Ebene nach oben |
| cd ~ | ins eigene Home-Verzeichnis |
| cd - | zurück ins vorherige Verzeichnis |
| cd | ebenfalls meist ins eigene Home-Verzeichnis |
Merksatz:
cd wechselt das Verzeichnis.
Punkt und Doppelpunkt
Unter Linux haben . und .. eine besondere Bedeutung.
| Zeichen | Bedeutung |
|---|---|
| . | aktuelles Verzeichnis |
| .. | übergeordnetes Verzeichnis |
Beispiele:
./script.sh
bedeutet:
script.sh im aktuellen Verzeichnis ausführen
cd ..
bedeutet:
eine Ebene nach oben wechseln
Merksatz:
. ist hier.
.. ist eine Ebene höher.
Home-Verzeichnis
Jeder normale Benutzer hat meist ein eigenes Home-Verzeichnis.
Beispiel:
/home/felix
Dort liegen persönliche Dateien, Konfigurationen und Benutzerdaten.
Typische Inhalte:
Dokumente
Downloads
Skripte
versteckte Konfigurationsdateien
persönliche Einstellungen
Das Home-Verzeichnis kann mit ~ abgekürzt werden.
Beispiel:
~/Dokumente
bedeutet:
/home/felix/Dokumente
Merksatz:
~ steht für das eigene Home-Verzeichnis.
Root-Benutzer und /root
Der administrative Benutzer heißt:
root
Sein Home-Verzeichnis ist meist:
/root
Das ist nicht dasselbe wie:
/
Unterschied:
| Begriff | Bedeutung |
|---|---|
| / | Root-Verzeichnis des gesamten Dateisystems |
| root | administrativer Benutzer |
| /root | Home-Verzeichnis des Benutzers root |
Merksatz:
/,
root
und /root sind drei verschiedene Dinge.
Wichtige Linux-Verzeichnisse
| Verzeichnis | Bedeutung |
|---|---|
| / | Wurzel des Dateisystems |
| /home | Home-Verzeichnisse normaler Benutzer |
| /root | Home-Verzeichnis des Root-Benutzers |
| /etc | Konfigurationsdateien |
| /var | veränderliche Daten |
| /var/log | Logdateien |
| /tmp | temporäre Dateien |
| /usr | Programme, Bibliotheken und Ressourcen |
| /bin | wichtige Benutzerprogramme |
| /sbin | wichtige Systemprogramme |
| /boot | Bootdateien und Kernel |
| /dev | Gerätedateien |
| /proc | Prozess- und Kernelinformationen |
| /sys | Kernel- und Geräteinformationen |
| /mnt | temporäre Mountpoints |
| /media | automatisch eingebundene Wechselmedien |
| /opt | optionale Zusatzsoftware |
| /srv | Daten für bereitgestellte Dienste |
| /run | Laufzeitdaten seit Systemstart |
Merksatz:
/etc für Konfiguration.
/var/log für Logs.
/home für Benutzer.
/etc
Das Verzeichnis /etc enthält viele systemweite Konfigurationsdateien.
Beispiele:
/etc/ssh/sshd_config
/etc/fstab
/etc/hosts
/etc/passwd
/etc/group
/etc/resolv.conf
Typische Inhalte:
Dienstkonfiguration
Netzwerkkonfiguration
Benutzer- und Gruppendateien
Mount-Konfiguration
Systemkonfiguration
Merksatz:
/etc ist zentral für Konfigurationen.
/var
Das Verzeichnis /var enthält veränderliche Daten.
var steht für:
variable
Typische Inhalte:
Logs
Spool-Dateien
Caches
Daten von Diensten
Warteschlangen
Beispiele:
/var/log
/var/cache
/var/spool
/var/lib
Merksatz:
/var enthält Daten,
die sich im Betrieb ändern.
/var/log
Das Verzeichnis /var/log enthält viele Logdateien.
Logs helfen bei:
Fehlersuche
Dienstproblemen
Loginproblemen
Sicherheitsanalyse
Systemereignissen
Beispiele:
/var/log/syslog
/var/log/auth.log
/var/log/messages
/var/log/nginx
/var/log/apache2
Wichtig:
Welche Logdateien vorhanden sind,
hängt von Distribution und Diensten ab.
Merksatz:
/var/log ist wichtig für Fehlersuche.
/tmp
Das Verzeichnis /tmp enthält temporäre Dateien.
Typische Nutzung:
Zwischenspeicher
temporäre Skriptdateien
Installationsreste
kurzfristige Arbeitsdateien
Wichtig:
Daten in /tmp können automatisch gelöscht werden,
zum Beispiel beim Neustart oder durch Aufräumdienste.
Merksatz:
/tmp ist nicht für dauerhafte Speicherung gedacht.
/usr
Das Verzeichnis /usr enthält viele Programme, Bibliotheken und gemeinsam genutzte Ressourcen.
Typische Unterverzeichnisse:
/usr/bin
/usr/sbin
/usr/lib
/usr/share
Beispiele:
Programme für Benutzer
Systemprogramme
Bibliotheken
Dokumentation
Merksatz:
/usr enthält viele installierte Programme und Ressourcen.
/bin und /sbin
/bin enthält wichtige Benutzerprogramme.
Beispiele:
ls
cp
mv
rm
cat
/sbin enthält wichtige Systemprogramme.
Beispiele:
ip
reboot
shutdown
fsck
Hinweis:
Auf modernen Distributionen sind /bin und /sbin teilweise symbolische Links nach /usr/bin und /usr/sbin.
Merksatz:
bin = Programme.
sbin = Systemprogramme.
/boot
Das Verzeichnis /boot enthält Dateien, die für den Systemstart wichtig sind.
Typische Inhalte:
Kernel
Bootloader-Dateien
Initramfs
Wichtig:
Fehler in /boot können dazu führen,
dass das System nicht mehr startet.
Merksatz:
/boot enthält wichtige Startdateien.
/dev
Das Verzeichnis /dev enthält Gerätedateien.
Unter Linux werden viele Geräte als Dateien dargestellt.
Beispiele:
/dev/sda
/dev/nvme0n1
/dev/null
/dev/tty
/dev/random
Bedeutung:
Festplatten
Partitionen
Terminals
virtuelle Geräte
Merksatz:
Unter Linux erscheinen Geräte oft als Dateien unter /dev.
/proc
Das Verzeichnis /proc ist ein virtuelles Dateisystem.
Es enthält Informationen über:
Prozesse
Kernel
Speicher
CPU
Systemzustand
Beispiele:
/proc/cpuinfo
/proc/meminfo
/proc/1
Wichtig:
/proc liegt nicht einfach normal auf der Festplatte.
Es wird vom Kernel bereitgestellt.
Merksatz:
/proc zeigt laufende Kernel- und Prozessinformationen.
/sys
Das Verzeichnis /sys ist ebenfalls ein virtuelles Dateisystem.
Es enthält Informationen über:
Geräte
Treiber
Kernelobjekte
Hardwarezustände
Wichtig:
/sys wird häufig von Systemdiensten,
Hardwareverwaltung
und Diagnosewerkzeugen genutzt.
Merksatz:
/sys zeigt System- und Geräteinformationen.
/mnt und /media
/mnt wird häufig für temporäre manuelle Mountpoints genutzt.
Beispiel:
/mnt/backup
/mnt/usb
/media wird häufig für automatisch eingebundene Wechselmedien genutzt.
Beispiel:
/media/felix/USB-STICK
Merksatz:
/mnt für manuelle Mounts.
/media oft für Wechselmedien.
/opt
Das Verzeichnis /opt ist für optionale Zusatzsoftware gedacht.
Beispiele:
herstellerspezifische Programme
manuell installierte Anwendungen
große Zusatzpakete
Merksatz:
/opt enthält optionale Zusatzsoftware.
/srv
Das Verzeichnis /srv kann Daten enthalten, die von Serverdiensten bereitgestellt werden.
Beispiele:
Webdaten
FTP-Daten
Projektdaten für Dienste
Merksatz:
/srv kann Dienst-Daten enthalten.
/run
Das Verzeichnis /run enthält Laufzeitdaten seit dem Systemstart.
Beispiele:
PID-Dateien
Sockets
temporäre Dienstinformationen
Wichtig:
Inhalte in /run sind nicht dauerhaft.
Merksatz:
/run enthält aktuelle Laufzeitinformationen.
Versteckte Dateien
Dateien und Verzeichnisse, deren Name mit einem Punkt beginnt, gelten unter Linux als versteckt.
Beispiele:
.bashrc
.profile
.ssh
.config
.local
Anzeigen mit:
ls -a
Typische Nutzung:
Benutzerkonfigurationen
SSH-Schlüssel
Programmeinstellungen
Merksatz:
Punkt am Anfang bedeutet versteckt.
Dateitypen unter Linux
Unter Linux gibt es verschiedene Dateitypen.
| Typ | Bedeutung |
|---|---|
| normale Datei | Textdatei, Programm, Bild, Archiv |
| Verzeichnis | enthält Dateien und weitere Verzeichnisse |
| symbolischer Link | Verweis auf andere Datei oder Verzeichnis |
| Gerätedatei | Zugriff auf Geräte |
| Socket | Kommunikation zwischen Prozessen |
| Pipe | Datenstrom zwischen Prozessen |
Mit folgendem Befehl kann man Dateiinformationen anzeigen:
ls -l
Merksatz:
Unter Linux ist nicht jede „Datei“ eine normale Datei.
Symbolische Links
Ein symbolischer Link ist ein Verweis auf eine andere Datei oder ein anderes Verzeichnis.
Beispiel:
/bin kann auf /usr/bin zeigen
Symbolische Links erkennt man bei ls -l häufig an:
->
Beispiel:
bin -> usr/bin
Nutzen:
Kompatibilität
Abkürzungen
flexible Pfade
Verweise auf gemeinsame Orte
Merksatz:
Symbolischer Link = Verweis.
Mountpoints
Ein Mountpoint ist ein Verzeichnis, an dem ein Dateisystem eingehängt wird.
Beispiel:
/mnt/backup
Dort kann zum Beispiel eine externe Festplatte, eine Partition oder ein Netzlaufwerk eingebunden werden.
Wichtig:
Das Dateisystem erscheint dann an dieser Stelle im Verzeichnisbaum.
Merksatz:
Mountpoint = Einhängepunkt im Verzeichnisbaum.
Warum Linux keine Laufwerksbuchstaben nutzt
Windows nutzt oft Laufwerksbuchstaben:
C:
D:
E:
Linux nutzt stattdessen einen einheitlichen Verzeichnisbaum.
Beispiel:
/
/home
/mnt/backup
/media/usb
Vorteil:
Alle Dateisysteme erscheinen an einer Stelle im Baum.
Programme können mit festen Pfaden arbeiten,
unabhängig davon,
welches Gerät darunter eingebunden ist.
Merksatz:
Linux hängt Laufwerke in den Verzeichnisbaum ein.
Groß- und Kleinschreibung
Linux unterscheidet bei Dateinamen zwischen Groß- und Kleinschreibung.
Diese Dateien wären unterschiedlich:
Datei.txt
datei.txt
DATEI.txt
Wichtig:
Befehle,
Pfade
und Dateinamen müssen exakt geschrieben werden.
Merksatz:
Linux ist case-sensitive.
Leerzeichen in Dateinamen
Leerzeichen in Dateinamen können in der Shell Probleme verursachen, wenn sie nicht korrekt behandelt werden.
Beispiel:
Meine Datei.txt
Mögliche Schreibweisen:
"Meine Datei.txt"
oder:
Meine\ Datei.txt
Besser für Server und Skripte:
meine_datei.txt
meine-datei.txt
Merksatz:
Leerzeichen in Dateinamen besser vermeiden,
besonders in Skripten.
Dateiendungen unter Linux
Linux ist weniger abhängig von Dateiendungen als Windows.
Eine Datei kann ausführbar sein, wenn sie die passenden Rechte besitzt, nicht nur, weil sie eine bestimmte Endung hat.
Beispiele:
script.sh
backup
programm
Trotzdem sind Endungen nützlich, um Dateien leichter zu erkennen.
Beispiele:
.txt
.conf
.log
.sh
.tar.gz
Merksatz:
Unter Linux sind Rechte wichtiger als Dateiendung.
Wichtige Befehle zu Pfaden und Verzeichnissen
| Befehl | Bedeutung |
|---|---|
| pwd | aktuelles Verzeichnis anzeigen |
| ls | Inhalt anzeigen |
| ls -l | ausführliche Liste anzeigen |
| ls -a | versteckte Dateien anzeigen |
| cd | Verzeichnis wechseln |
| cd .. | eine Ebene höher |
| cd ~ | ins Home-Verzeichnis |
| mkdir | Verzeichnis erstellen |
| rmdir | leeres Verzeichnis löschen |
| tree | Verzeichnisbaum anzeigen, falls installiert |
Merksatz:
pwd,
ls
und cd sind Grundbefehle für Navigation.
Typische Beispiele
Aktuelles Verzeichnis anzeigen:
pwd
In das Home-Verzeichnis wechseln:
cd ~
Nach /etc wechseln:
cd /etc
Eine Ebene nach oben wechseln:
cd ..
Inhalt anzeigen:
ls
Ausführliche Liste anzeigen:
ls -l
Auch versteckte Dateien anzeigen:
ls -a
Verzeichnis erstellen:
mkdir testordner
Merksatz:
Erst wissen,
wo man ist.
Dann Befehl ausführen.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist /? | Root-Verzeichnis des Dateisystems |
| Was ist /root? | Home-Verzeichnis des Root-Benutzers |
| Was ist root? | administrativer Benutzer |
| Wo liegen viele Konfigurationsdateien? | /etc |
| Wo liegen viele Logs? | /var/log |
| Wo liegen Benutzerverzeichnisse? | /home |
| Was bedeutet ~? | eigenes Home-Verzeichnis |
| Was bedeutet ..? | übergeordnetes Verzeichnis |
| Was ist ein absoluter Pfad? | Pfad ab / |
| Was ist ein relativer Pfad? | Pfad relativ zum aktuellen Verzeichnis |
| Was ist ein Mountpoint? | Einhängepunkt für ein Dateisystem |
| Was bedeutet versteckte Datei? | Name beginnt mit Punkt |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| / und /root verwechseln | / ist Dateisystemwurzel, /root ist Root-Home |
| root und / verwechseln | root ist Benutzer, / ist Verzeichnis |
| absolute und relative Pfade verwechseln | absolut beginnt mit / |
| ~ als normales Zeichen verstehen | ~ steht für Home-Verzeichnis |
| /tmp dauerhaft nutzen | /tmp ist temporär |
| /etc löschen oder blind ändern | enthält wichtige Konfiguration |
| Logs nicht unter /var/log suchen | /var/log ist zentral |
| Groß- und Kleinschreibung ignorieren | Linux unterscheidet |
| Leerzeichen in Skripten vergessen | Anführungszeichen oder Escape nötig |
| Mountpoint nicht verstehen | Dateisystem wird in Verzeichnis eingehängt |
IHK-sichere Kurzformulierung
Linux verwendet einen hierarchischen Verzeichnisbaum, der beim Root-Verzeichnis / beginnt. Alle Dateien, Verzeichnisse, Geräte und eingebundenen Dateisysteme befinden sich unterhalb dieses Baums. Ein absoluter Pfad beginnt immer mit /, ein relativer Pfad bezieht sich auf das aktuelle Verzeichnis. Benutzerdateien liegen meist unter /home, systemweite Konfigurationen unter /etc und Logdateien häufig unter /var/log. Das Home-Verzeichnis des administrativen Benutzers root ist /root und darf nicht mit dem Root-Verzeichnis / verwechselt werden. Datenträger werden unter Linux nicht über Laufwerksbuchstaben angesprochen, sondern an Mountpoints in den Verzeichnisbaum eingehängt.
Merksätze
Unter Linux beginnt alles bei /.
/ ist das Root-Verzeichnis.
root ist der administrative Benutzer.
/root ist das Home-Verzeichnis von root.
/home enthält Benutzerverzeichnisse.
/etc enthält Konfigurationen.
/var enthält veränderliche Daten.
/var/log enthält Logs.
/tmp ist temporär.
/usr enthält Programme und Ressourcen.
/dev enthält Gerätedateien.
/proc enthält Prozess- und Kernelinformationen.
/sys enthält System- und Geräteinformationen.
/mnt ist oft für manuelle Mounts.
/media ist oft für Wechselmedien.
/opt ist für optionale Zusatzsoftware.
Absoluter Pfad beginnt mit /.
Relativer Pfad hängt vom aktuellen Verzeichnis ab.
pwd zeigt das aktuelle Verzeichnis.
cd wechselt das Verzeichnis.
. bedeutet aktuelles Verzeichnis.
.. bedeutet übergeordnetes Verzeichnis.
~ bedeutet eigenes Home-Verzeichnis.
Punkt am Anfang bedeutet versteckte Datei.
Linux unterscheidet Groß- und Kleinschreibung.
Laufwerke werden unter Linux eingehängt,
nicht als C: oder D: angezeigt.
Mountpoint = Einhängepunkt im Verzeichnisbaum.
3. Dateien suchen, anzeigen und bearbeiten
3.1 Dateien suchen, anzeigen und bearbeiten
In diesem Kapitel geht es um den praktischen Umgang mit Dateien unter Linux.
Dazu gehören:
- Dateien anzeigen
- Dateien erstellen
- Dateien kopieren
- Dateien verschieben
- Dateien löschen
- Inhalte lesen
- Inhalte filtern
- Dateien suchen
- einfache Textbearbeitung
Für Fachinformatiker Systemintegration ist das wichtig, weil viele Linux-Aufgaben direkt mit Dateien, Konfigurationen, Logs und Skripten zu tun haben.
Merksatz:
Unter Linux ist sehr vieles eine Datei:
Konfigurationen,
Logs,
Geräteinformationen
und Skripte.
Lernziele
Nach dieser Seite solltest du erklären und anwenden können:
- wie man Dateien und Verzeichnisse auflistet
- wie man Dateiinhalte anzeigt
- wie man Dateien erstellt
- wie man Dateien kopiert,
verschiebt
und löscht
- wie man nach Dateien sucht
- wie man Inhalte in Dateien findet
- wofür cat,
less,
head,
tail,
grep,
find
und nano genutzt werden
- welche typischen Fehler beim Umgang mit Dateien auftreten
Grundidee
Viele administrative Aufgaben unter Linux bestehen daraus, Dateien zu lesen, zu ändern oder zu prüfen.
Beispiele:
- Konfigurationsdatei unter /etc bearbeiten
- Logdatei unter /var/log auswerten
- Skript im Home-Verzeichnis erstellen
- Backup-Dateien prüfen
- Dienstkonfiguration vergleichen
- Text in Dateien suchen
- alte Dateien finden und löschen
Wichtig:
Vor Änderungen an wichtigen Konfigurationsdateien sollte man eine Sicherungskopie erstellen.
Merksatz:
Erst lesen,
dann sichern,
dann ändern.
Dateien und Verzeichnisse anzeigen
Der wichtigste Befehl zum Anzeigen von Verzeichnisinhalten ist:
ls
Beispiele:
ls
ls -l
ls -a
ls -la
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| ls | Inhalt des aktuellen Verzeichnisses anzeigen |
| ls -l | ausführliche Liste anzeigen |
| ls -a | auch versteckte Dateien anzeigen |
| ls -la | ausführlich und mit versteckten Dateien |
| ls /etc | Inhalt von /etc anzeigen |
| ls -lh | Größen menschenlesbar anzeigen |
Merksatz:
ls zeigt Dateien und Verzeichnisse an.
Ausgabe von ls -l verstehen
Beispiel:
-rw-r--r-- 1 felix users 1200 Jul 08 12:30 beispiel.txt
Bedeutung:
| Teil | Bedeutung |
|---|---|
| -rw-r--r-- | Dateityp und Rechte |
| 1 | Anzahl der Links |
| felix | Besitzer |
| users | Gruppe |
| 1200 | Dateigröße in Byte |
| Jul 08 12:30 | Änderungsdatum |
| beispiel.txt | Dateiname |
Der erste Buchstabe zeigt den Dateityp:
| Zeichen | Bedeutung |
|---|---|
| - | normale Datei |
| d | Verzeichnis |
| l | symbolischer Link |
| c | Zeichen-Gerät |
| b | Block-Gerät |
| s | Socket |
| p | Pipe |
Merksatz:
ls -l zeigt Rechte,
Besitzer,
Größe,
Datum
und Dateinamen.
Dateiinhalte mit cat anzeigen
cat zeigt den Inhalt einer Datei direkt im Terminal an.
Beispiel:
cat datei.txt
Typische Nutzung:
kleine Textdateien anzeigen
Konfigurationsdateien kurz prüfen
Inhalt in Skripten ausgeben
Wichtig:
cat ist unpraktisch bei sehr langen Dateien,
weil der Inhalt direkt durchläuft.
Merksatz:
cat zeigt kleine Dateien direkt an.
Dateiinhalte mit less anzeigen
less zeigt Dateien seitenweise an.
Beispiel:
less /var/log/syslog
| Taste | Bedeutung |
|---|---|
| Leertaste | eine Seite weiter |
| b | eine Seite zurück |
| Pfeiltasten | zeilenweise bewegen |
| /suchwort | innerhalb der Datei suchen |
| n | nächster Treffer |
| q | less verlassen |
Vorteil:
less eignet sich gut für lange Dateien und Logs.
Merksatz:
less ist besser für lange Dateien.
Anfang einer Datei anzeigen
Mit head zeigt man den Anfang einer Datei.
Beispiel:
head datei.txt
Standardmäßig werden die ersten 10 Zeilen angezeigt.
Mehr Zeilen anzeigen:
head -n 20 datei.txt
Typische Nutzung:
Anfang einer Logdatei prüfen
CSV-Datei kurz ansehen
Kopfzeilen prüfen
Merksatz:
head zeigt den Anfang.
Ende einer Datei anzeigen
Mit tail zeigt man das Ende einer Datei.
Beispiel:
tail datei.txt
Standardmäßig werden die letzten 10 Zeilen angezeigt.
Mehr Zeilen anzeigen:
tail -n 50 datei.txt
Live mitlesen:
tail -f /var/log/syslog
Typische Nutzung:
aktuelle Logeinträge verfolgen
Dienstfehler live beobachten
neue Einträge prüfen
Merksatz:
tail zeigt das Ende.
tail -f liest live mit.
Dateien erstellen mit touch
touch erstellt eine leere Datei, wenn sie noch nicht existiert.
Beispiel:
touch notiz.txt
Wenn die Datei bereits existiert, wird der Zeitstempel aktualisiert.
Typische Nutzung:
leere Datei anlegen
Testdatei erstellen
Zeitstempel aktualisieren
Merksatz:
touch erstellt leere Dateien oder aktualisiert Zeitstempel.
Verzeichnisse erstellen mit mkdir
Mit mkdir erstellt man Verzeichnisse.
Beispiel:
mkdir testordner
Mehrere Ebenen erstellen:
mkdir -p projekt/logs/archiv
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| mkdir test | Verzeichnis test erstellen |
| mkdir -p a/b/c | komplette Verzeichnisstruktur erstellen |
Merksatz:
mkdir erstellt Verzeichnisse.
mkdir -p erstellt auch fehlende Zwischenordner.
Dateien kopieren mit cp
Mit cp kopiert man Dateien.
Beispiele:
cp quelle.txt ziel.txt
cp datei.txt /tmp/
cp /etc/hosts ~/hosts.backup
Verzeichnisse rekursiv kopieren:
cp -r ordner1 ordner2
Wichtige Optionen:
| Option | Bedeutung |
|---|---|
| -r | rekursiv, für Verzeichnisse |
| -i | vor Überschreiben nachfragen |
| -v | zeigt ausgeführte Aktionen |
| -p | erhält Zeitstempel und Rechte möglichst bei |
Merksatz:
cp kopiert.
Für Verzeichnisse braucht man meist cp -r.
Dateien verschieben oder umbenennen mit mv
Mit mv verschiebt oder benennt man Dateien um.
Umbenennen:
mv alt.txt neu.txt
Verschieben:
mv datei.txt /tmp/
Verzeichnis verschieben:
mv projekt /tmp/
Wichtig:
mv kann bestehende Dateien überschreiben,
wenn man nicht aufpasst.
Sicherer:
mv -i alt.txt neu.txt
Merksatz:
mv verschiebt und benennt um.
Dateien löschen mit rm
Mit rm löscht man Dateien.
Beispiel:
rm datei.txt
Mit Nachfrage:
rm -i datei.txt
Verzeichnis mit Inhalt löschen:
rm -r ordner
Sehr vorsichtig verwenden:
rm -rf ordner
Bedeutung:
| Option | Bedeutung |
|---|---|
| -r | rekursiv, auch Unterordner |
| -f | force, keine Rückfrage |
| -i | interaktiv, mit Nachfrage |
Wichtig:
rm löscht normalerweise nicht in einen Papierkorb.
Gelöschte Dateien sind nicht einfach wiederherstellbar.
Merksatz:
rm löscht direkt.
rm -rf nur sehr bewusst verwenden.
Leere Verzeichnisse löschen mit rmdir
rmdir löscht nur leere Verzeichnisse.
Beispiel:
rmdir leerer_ordner
Wenn das Verzeichnis nicht leer ist, schlägt der Befehl fehl.
Merksatz:
rmdir löscht nur leere Verzeichnisse.
Dateien mit nano bearbeiten
nano ist ein einfacher Texteditor im Terminal.
Datei öffnen oder erstellen:
nano datei.txt
Wichtige Tastenkombinationen:
| Tastenkombination | Bedeutung |
|---|---|
| Strg + O | speichern |
| Enter | Dateiname bestätigen |
| Strg + X | nano verlassen |
| Strg + W | suchen |
| Strg + K | Zeile ausschneiden |
| Strg + U | Zeile einfügen |
Typische Nutzung:
Konfigurationsdateien bearbeiten
Notizen erstellen
kleine Skripte schreiben
Merksatz:
nano ist ein einfacher Terminal-Editor.
Dateien sicher bearbeiten
Vor Änderungen an wichtigen Dateien sollte man eine Sicherung erstellen.
Beispiel:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Danach bearbeiten:
nano /etc/ssh/sshd_config
Vorteil:
Bei Fehlern kann man die alte Version wiederherstellen.
Beispiel:
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
Merksatz:
Vor Konfigurationsänderung Backup-Datei erstellen.
In Dateien suchen mit grep
grep sucht Text in Dateien.
Beispiel:
grep "error" logfile.txt
Groß- und Kleinschreibung ignorieren:
grep -i "error" logfile.txt
Zeilennummern anzeigen:
grep -n "error" logfile.txt
Rekursiv in Verzeichnissen suchen:
grep -r "PermitRootLogin" /etc/ssh
Wichtige Optionen:
| Option | Bedeutung |
|---|---|
| -i | Groß-/Kleinschreibung ignorieren |
| -n | Zeilennummer anzeigen |
| -r | rekursiv in Verzeichnissen suchen |
| -v | Treffer umkehren, also nicht passende Zeilen |
| -l | nur Dateinamen mit Treffern anzeigen |
Merksatz:
grep sucht Textmuster in Dateien.
Typische grep-Beispiele
Fehler in Logdatei suchen:
grep -i "error" /var/log/syslog
SSH-Konfiguration prüfen:
grep "PermitRootLogin" /etc/ssh/sshd_config
Alle Zeilen ohne Kommentar anzeigen:
grep -v "^#" datei.conf
Mehrere Treffer mit Zeilennummern:
grep -n "root" /etc/passwd
Merksatz:
grep ist eines der wichtigsten Werkzeuge für Logs und Konfigurationen.
Dateien suchen mit find
find sucht Dateien und Verzeichnisse im Dateisystem.
Beispiele:
find /home -name "datei.txt"
find /var/log -name "*.log"
find /etc -name "*ssh*"
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| find /home -name "test.txt" | sucht test.txt unter /home |
| find . -name "*.txt" | sucht .txt-Dateien ab aktuellem Verzeichnis |
| find /var/log -type f | sucht normale Dateien unter /var/log |
| find /var/log -type d | sucht Verzeichnisse unter /var/log |
Merksatz:
find sucht Dateien nach Kriterien.
find nach Dateityp
Mit -type kann man Dateitypen einschränken.
Beispiele:
find /home -type f
find /home -type d
find /home -type l
Bedeutung:
| Option | Bedeutung |
|---|---|
| -type f | normale Dateien |
| -type d | Verzeichnisse |
| -type l | symbolische Links |
Merksatz:
find -type f sucht Dateien.
find -type d sucht Verzeichnisse.
find nach Größe
Dateien größer als 100 MB finden:
find /home -type f -size +100M
Dateien kleiner als 1 MB finden:
find /home -type f -size -1M
Dateien genau 10 KB:
find /home -type f -size 10k
Merksatz:
find kann auch nach Dateigröße suchen.
find nach Zeit
Dateien suchen, die in den letzten 7 Tagen geändert wurden:
find /home -type f -mtime -7
Dateien suchen, die älter als 30 Tage sind:
find /tmp -type f -mtime +30
Bedeutung:
| Ausdruck | Bedeutung |
|---|---|
| -mtime -7 | jünger als 7 Tage |
| -mtime +30 | älter als 30 Tage |
| -mtime 1 | ungefähr vor einem Tag geändert |
Merksatz:
find kann alte oder neue Dateien finden.
which und whereis
which zeigt, welcher Programmpfad beim Ausführen verwendet wird.
Beispiel:
which ssh
Mögliche Ausgabe:
/usr/bin/ssh
whereis zeigt weitere Orte zu einem Programm an.
Beispiel:
whereis ssh
Merksatz:
which zeigt,
welches Programm ausgeführt wird.
Dateiinformationen mit file anzeigen
file erkennt den Dateityp anhand des Inhalts.
Beispiel:
file dokument.txt
file script.sh
file bild.png
Nützlich, wenn die Dateiendung unklar oder falsch ist.
Merksatz:
file erkennt Dateitypen anhand des Inhalts.
Dateigrößen anzeigen
Mit ls -lh werden Größen besser lesbar angezeigt.
Beispiel:
ls -lh
Mit du kann man Speicherverbrauch anzeigen.
Beispiel:
du -sh ordner
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| ls -lh | Dateigrößen lesbar anzeigen |
| du -sh ordner | Gesamtgröße eines Ordners anzeigen |
| du -h | Größen rekursiv anzeigen |
Merksatz:
ls zeigt Dateigröße.
du zeigt Speicherverbrauch.
Dateien zählen
Dateien in einem Verzeichnis zählen:
ls | wc -l
Alle normalen Dateien unter einem Verzeichnis zählen:
find /home/felix -type f | wc -l
Bedeutung:
| Befehl | Zweck |
|---|---|
| wc -l | Zeilen zählen |
| find ... | wc -l | gefundene Einträge zählen |
Merksatz:
wc -l zählt Zeilen.
Ausgaben mit Platzhaltern
Die Shell kann Platzhalter verwenden.
| Platzhalter | Bedeutung |
|---|---|
| * | beliebige Zeichen |
| ? | genau ein beliebiges Zeichen |
| [abc] | eines der Zeichen a, b oder c |
Beispiele:
ls *.txt
rm *.tmp
cp *.conf backup/
Wichtig:
Platzhalter werden von der Shell erweitert,
bevor der Befehl ausgeführt wird.
Merksatz:
* steht für beliebige Zeichen.
Achtung bei rm und Platzhaltern
Beispiel:
rm *.tmp
löscht alle Dateien, die auf .tmp enden.
Gefährlich:
rm *
löscht alle passenden Dateien im aktuellen Verzeichnis.
Noch gefährlicher:
rm -rf *
löscht rekursiv alles Passende im aktuellen Verzeichnis.
Merksatz:
Vor rm mit Platzhaltern immer prüfen,
was betroffen ist.
Sichere Arbeitsweise
Vor riskanten Befehlen:
pwd
ls
ls -la
echo *.tmp
dann erst löschen oder verschieben
Beispiel:
echo *.tmp
zeigt, welche Dateien vom Platzhalter betroffen wären.
Merksatz:
Erst anzeigen,
dann löschen.
Typische Datei-Aufgaben im Admin-Alltag
| Aufgabe | Möglicher Befehl |
|---|---|
| aktuelle Position anzeigen | pwd |
| Dateien anzeigen | ls -la |
| Datei lesen | cat datei.txt |
| lange Datei lesen | less datei.txt |
| Log live verfolgen | tail -f logfile |
| Datei erstellen | touch datei.txt |
| Verzeichnis erstellen | mkdir ordner |
| Datei kopieren | cp quelle ziel |
| Verzeichnis kopieren | cp -r quelle ziel |
| Datei verschieben | mv quelle ziel |
| Datei löschen | rm datei |
| leeres Verzeichnis löschen | rmdir ordner |
| Text suchen | grep "text" datei |
| Datei suchen | find /pfad -name "datei" |
| Datei bearbeiten | nano datei |
Typische Fehlerbilder
| Fehlerbild | Wahrscheinliche Ursache |
|---|---|
| Datei nicht gefunden | falscher Pfad oder falscher Name |
| Permission denied | fehlende Rechte |
| No such file or directory | Datei oder Verzeichnis existiert nicht |
| Is a directory | Befehl erwartet Datei, Ziel ist Verzeichnis |
| Not a directory | Pfadbestandteil ist keine Ordnerstruktur |
| Datei leer nach Umleitung | falscher Einsatz von > |
| rm löscht zu viel | Platzhalter oder falscher Pfad |
| grep findet nichts | Groß-/Kleinschreibung oder falsches Muster |
| find findet nichts | falscher Startpfad oder Suchkriterium |
Permission denied
Die Meldung:
Permission denied
bedeutet:
Zugriff verweigert
Mögliche Ursachen:
fehlende Leserechte
fehlende Schreibrechte
fehlende Ausführrechte
Datei gehört anderem Benutzer
Verzeichnisrechte fehlen
administrative Rechte nötig
Nicht immer ist sudo die beste Lösung.
Besser zuerst prüfen:
ls -l datei
ls -ld verzeichnis
Merksatz:
Permission denied bedeutet Rechteproblem.
No such file or directory
Die Meldung:
No such file or directory
bedeutet:
Datei oder Verzeichnis wurde nicht gefunden.
Mögliche Ursachen:
Tippfehler
falscher Pfad
falsche Groß-/Kleinschreibung
Datei wurde gelöscht
relativer Pfad falsch verstanden
Prüfen:
pwd
ls
ls -la
Merksatz:
Linux unterscheidet Groß- und Kleinschreibung.
Vor Änderungen an Konfigurationsdateien
Sicheres Vorgehen:
1. Datei ansehen
2. Backup erstellen
3. Datei bearbeiten
4. Syntax prüfen,
falls möglich
5. Dienst neu laden oder neu starten
6. Status prüfen
7. Logs prüfen
Beispiel:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
nano /etc/ssh/sshd_config
systemctl restart ssh
systemctl status ssh
Merksatz:
Konfiguration nie blind ändern.
Wichtige Befehle dieser Seite
| Befehl | Zweck |
|---|---|
| ls | Dateien anzeigen |
| cat | Datei direkt ausgeben |
| less | Datei seitenweise lesen |
| head | Anfang anzeigen |
| tail | Ende anzeigen |
| tail -f | live mitlesen |
| touch | leere Datei erstellen |
| mkdir | Verzeichnis erstellen |
| cp | kopieren |
| mv | verschieben oder umbenennen |
| rm | löschen |
| rmdir | leeres Verzeichnis löschen |
| nano | Datei bearbeiten |
| grep | Text suchen |
| find | Dateien suchen |
| file | Dateityp erkennen |
| which | Programmpfad anzeigen |
| du | Speicherverbrauch anzeigen |
| wc | zählen |
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Wofür ist ls? | Verzeichnisinhalt anzeigen |
| Wofür ist cat? | Dateiinhalt direkt anzeigen |
| Wofür ist less? | lange Dateien seitenweise anzeigen |
| Wofür ist tail -f? | Datei live mitlesen |
| Wofür ist touch? | leere Datei erstellen oder Zeitstempel ändern |
| Wofür ist cp? | kopieren |
| Wofür ist mv? | verschieben oder umbenennen |
| Wofür ist rm? | löschen |
| Wofür ist grep? | Text in Dateien suchen |
| Wofür ist find? | Dateien im Dateisystem suchen |
| Wofür ist nano? | Textdateien im Terminal bearbeiten |
| Was bedeutet Permission denied? | fehlende Rechte |
| Was bedeutet No such file or directory? | Datei oder Pfad existiert nicht |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| cat für riesige Logs nutzen | besser less oder tail verwenden |
| rm wie Papierkorb verstehen | rm löscht direkt |
| cp ohne -r bei Verzeichnissen | Verzeichnisse rekursiv kopieren |
| mv nur als Verschieben verstehen | mv benennt auch um |
| grep ohne -i bei unbekannter Schreibweise | -i ignoriert Groß-/Kleinschreibung |
| find im falschen Startpfad | Suchpfad bewusst wählen |
| sudo sofort verwenden | zuerst Rechte und Pfad prüfen |
| Konfigurationsdatei ohne Backup ändern | vorher Kopie erstellen |
| Platzhalter bei rm unterschätzen | vorher mit echo prüfen |
| relative Pfade falsch verstehen | pwd prüfen |
IHK-sichere Kurzformulierung
Unter Linux werden Dateien und Verzeichnisse häufig über die Shell verwaltet. Mit ls werden Verzeichnisinhalte angezeigt, mit cat, less, head und tail werden Dateiinhalte gelesen. tail -f eignet sich besonders zum Live-Mitlesen von Logdateien. Dateien werden mit touch erstellt, mit cp kopiert, mit mv verschoben oder umbenannt und mit rm gelöscht. grep sucht Textmuster in Dateien, während find Dateien und Verzeichnisse anhand von Kriterien wie Name, Typ, Größe oder Änderungszeit sucht. Vor Änderungen an wichtigen Konfigurationsdateien sollte eine Sicherungskopie erstellt werden. Fehlermeldungen wie Permission denied deuten auf Rechteprobleme hin, während No such file or directory auf einen falschen oder nicht vorhandenen Pfad hinweist.
Merksätze
ls zeigt Dateien und Verzeichnisse.
ls -l zeigt Details.
ls -a zeigt versteckte Dateien.
cat zeigt kleine Dateien direkt.
less ist besser für lange Dateien.
head zeigt den Anfang.
tail zeigt das Ende.
tail -f liest live mit.
touch erstellt leere Dateien.
mkdir erstellt Verzeichnisse.
mkdir -p erstellt Zwischenordner mit.
cp kopiert.
cp -r kopiert Verzeichnisse.
mv verschiebt und benennt um.
rm löscht direkt.
rmdir löscht leere Verzeichnisse.
nano bearbeitet Textdateien.
grep sucht Text.
find sucht Dateien.
file erkennt Dateitypen.
which zeigt den Programmpfad.
du zeigt Speicherverbrauch.
wc -l zählt Zeilen.
Permission denied bedeutet Rechteproblem.
No such file or directory bedeutet:
Datei oder Pfad existiert nicht.
Vor Konfigurationsänderungen Backup erstellen.
Erst anzeigen,
dann löschen.
Platzhalter bei rm sehr vorsichtig verwenden.
Linux unterscheidet Groß- und Kleinschreibung.
4. Benutzer, Gruppen und Rechte
4.1 Benutzer, Gruppen und Rechte
Linux ist ein Mehrbenutzersystem.
Das bedeutet:
Mehrere Benutzer können auf demselben System arbeiten,
ohne automatisch Zugriff auf alle Dateien,
Prozesse
oder Systemfunktionen zu haben.
Dafür nutzt Linux:
- Benutzer
- Gruppen
- Besitzer
- Dateirechte
- sudo
- Root-Rechte
- optional ACLs
Für Fachinformatiker Systemintegration ist dieses Thema besonders wichtig, weil Rechteprobleme, Sicherheitskonzepte, Dienstkonten, SSH-Zugriffe und Datei-Freigaben sehr häufig mit Benutzer- und Gruppenrechten zusammenhängen.
Merksatz:
Linux-Sicherheit beginnt bei Benutzern,
Gruppen
und Rechten.
Lernziele
Nach dieser Seite solltest du erklären können:
- was Benutzer unter Linux sind
- was Gruppen sind
- was UID und GID bedeuten
- wie Linux Dateirechte aufteilt
- was Besitzer,
Gruppe
und Andere bedeuten
- was r,
w
und x bedeuten
- wie chmod,
chown
und chgrp grundsätzlich funktionieren
- was sudo macht
- warum Root-Rechte gefährlich sein können
- welche typischen Rechtefehler auftreten
Grundidee
Jede Datei und jedes Verzeichnis unter Linux hat Berechtigungen.
Diese Berechtigungen regeln:
- wer lesen darf
- wer schreiben darf
- wer ausführen darf
- wem die Datei gehört
- welcher Gruppe die Datei zugeordnet ist
Linux unterscheidet dabei klassisch drei Bereiche:
| Bereich | Bedeutung |
|---|---|
| Benutzer / Besitzer | Eigentümer der Datei |
| Gruppe | zugeordnete Benutzergruppe |
| Andere | alle übrigen Benutzer |
Merksatz:
Linux-Rechte gelten für Besitzer,
Gruppe
und Andere.
Benutzer
Ein Benutzer ist ein Konto auf dem Linux-System.
Benutzer können:
- sich anmelden
- Dateien besitzen
- Prozesse starten
- Gruppen zugeordnet sein
- Rechte erhalten
- Dienste ausführen
Beispiele:
felix
root
www-data
postgres
backup
Wichtig:
Nicht jeder Benutzer ist ein Mensch.
Viele Dienste laufen unter eigenen Systembenutzern.
Merksatz:
Benutzer können Menschen oder Dienstkonten sein.
Root
root ist der administrative Hauptbenutzer unter Linux.
root darf fast alles:
- Systemdateien ändern
- Benutzer anlegen
- Rechte ändern
- Dienste starten und stoppen
- Software installieren
- Dateien anderer Benutzer lesen oder löschen
- Systemkonfiguration ändern
Das ist mächtig, aber auch gefährlich.
Ein falscher Befehl mit Root-Rechten kann das System beschädigen.
Merksatz:
Root-Rechte nur bewusst verwenden.
Normale Benutzer
Normale Benutzer haben eingeschränkte Rechte.
Sie dürfen typischerweise:
- im eigenen Home-Verzeichnis arbeiten
- eigene Dateien bearbeiten
- eigene Prozesse starten
- Programme ausführen
Sie dürfen normalerweise nicht:
- Systemdateien ändern
- Dienste systemweit verwalten
- fremde Dateien beliebig lesen
- Pakete installieren
- Benutzer anlegen
Vorteil:
Fehler oder Angriffe wirken sich weniger stark auf das gesamte System aus.
Merksatz:
Normale Benutzer begrenzen Risiken.
Systembenutzer und Dienstkonten
Viele Dienste laufen unter eigenen Benutzern.
Beispiele:
| Benutzer | Typischer Zweck |
|---|---|
| www-data | Webserver-Prozesse |
| nginx | Webserver-Prozesse |
| postgres | PostgreSQL-Datenbank |
| mysql | MySQL/MariaDB-Datenbank |
| backup | Backup-Aufgaben |
| nobody | stark eingeschränkter Benutzer |
Warum?
Dienste sollen nicht mit Root-Rechten laufen,
wenn das nicht notwendig ist.
Vorteil:
Wenn ein Dienst kompromittiert wird,
ist der Schaden begrenzter.
Merksatz:
Dienste sollten nur die Rechte haben,
die sie benötigen.
UID und GID
Linux identifiziert Benutzer und Gruppen intern über Zahlen.
UID bedeutet:
User ID
GID bedeutet:
Group ID
Beispiele:
| Begriff | Bedeutung |
|---|---|
| UID | eindeutige Benutzerkennung |
| GID | eindeutige Gruppenkennung |
| UID 0 | root-Benutzer |
| normale UID | normaler Benutzer oder Systembenutzer |
Wichtig:
Der Benutzername ist für Menschen lesbar.
Intern arbeitet Linux stark mit UID und GID.
Merksatz:
UID identifiziert Benutzer.
GID identifiziert Gruppen.
Benutzerinformationen anzeigen
Aktuellen Benutzer anzeigen:
whoami
Benutzer-ID und Gruppen anzeigen:
id
Beispiel:
id felix
Mögliche Ausgabe:
uid=1000(felix) gid=1000(felix) groups=1000(felix),27(sudo)
Bedeutung:
Benutzer felix hat UID 1000,
Hauptgruppe felix
und ist zusätzlich in der Gruppe sudo.
Merksatz:
id zeigt Benutzer,
UID,
GID
und Gruppen.
Gruppen
Gruppen fassen Benutzer zusammen.
Damit können Rechte einfacher vergeben werden.
Beispiel:
Alle Benutzer der Gruppe developers
dürfen auf ein Projektverzeichnis zugreifen.
Vorteile:
Rechte müssen nicht einzeln pro Benutzer vergeben werden
Verwaltung wird übersichtlicher
Zugriff kann über Gruppenmitgliedschaft gesteuert werden
Rollen lassen sich besser abbilden
Merksatz:
Gruppen vereinfachen Rechteverwaltung.
Hauptgruppe und Zusatzgruppen
Ein Benutzer hat eine Hauptgruppe und kann zusätzlich Mitglied weiterer Gruppen sein.
Beispiel:
Benutzer:
felix
Hauptgruppe:
felix
Zusatzgruppen:
sudo,
docker,
www-data
Die Hauptgruppe wird oft für neu erstellte Dateien verwendet.
Zusatzgruppen geben weitere Rechte.
Merksatz:
Hauptgruppe ist Standardgruppe.
Zusatzgruppen geben zusätzliche Rechte.
Wichtige Dateien für Benutzer und Gruppen
Linux speichert Benutzer- und Gruppeninformationen in bestimmten Dateien.
| Datei | Bedeutung |
|---|---|
| /etc/passwd | Benutzerkonten |
| /etc/group | Gruppen |
| /etc/shadow | Passwort-Hashes und Passwortinformationen |
| /etc/sudoers | sudo-Regeln |
| /etc/sudoers.d/ | zusätzliche sudo-Regeln |
Wichtig:
/etc/shadow ist besonders geschützt,
weil dort Passwort-Hashes liegen.
Merksatz:
Benutzer stehen in /etc/passwd,
Gruppen in /etc/group.
/etc/passwd
Die Datei /etc/passwd enthält Benutzerinformationen.
Beispielzeile:
felix:x:1000:1000:Felix Ulrich:/home/felix:/bin/bash
Bedeutung:
| Feld | Bedeutung |
|---|---|
| felix | Benutzername |
| x | Passwort liegt nicht direkt hier |
| 1000 | UID |
| 1000 | GID |
| Felix Ulrich | Kommentar oder Beschreibung |
| /home/felix | Home-Verzeichnis |
| /bin/bash | Login-Shell |
Merksatz:
/etc/passwd enthält Benutzerstammdaten.
/etc/group
Die Datei /etc/group enthält Gruppeninformationen.
Beispielzeile:
sudo:x:27:felix
Bedeutung:
| Feld | Bedeutung |
|---|---|
| sudo | Gruppenname |
| x | Passwortfeld, meist ungenutzt |
| 27 | GID |
| felix | Mitglieder der Gruppe |
Merksatz:
/etc/group zeigt Gruppen und Mitglieder.
Dateirechte anzeigen
Dateirechte zeigt man mit:
ls -l
Beispiel:
-rw-r--r-- 1 felix users 1200 Jul 08 12:30 notiz.txt
Wichtiger Teil:
-rw-r--r--
Aufteilung:
- rw- r-- r--
Typ User Gruppe Andere
Merksatz:
ls -l zeigt Dateityp,
Rechte,
Besitzer
und Gruppe.
Rechtebereiche
Linux-Rechte sind klassisch in drei Bereiche aufgeteilt:
| Bereich | Bedeutung |
|---|---|
| User / Owner | Besitzer der Datei |
| Group | zugeordnete Gruppe |
| Others | alle anderen Benutzer |
Beispiel:
-rw-r--r--
Bedeutung:
| Bereich | Rechte |
|---|---|
| Besitzer | rw- |
| Gruppe | r-- |
| Andere | r-- |
Merksatz:
Rechte werden in Dreiergruppen gelesen.
r, w und x
Die Buchstaben bedeuten:
| Zeichen | Name | Bei Dateien | Bei Verzeichnissen |
|---|---|---|---|
| r | read | Datei lesen | Inhalt auflisten |
| w | write | Datei ändern | Einträge erstellen/löschen/umbenennen |
| x | execute | Datei ausführen | Verzeichnis betreten |
Wichtig:
x hat bei Dateien und Verzeichnissen unterschiedliche praktische Bedeutung.
Merksatz:
r = lesen.
w = schreiben.
x = ausführen oder betreten.
Rechte bei Dateien
Bei Dateien bedeutet:
| Recht | Bedeutung |
|---|---|
| r | Inhalt lesen |
| w | Inhalt ändern |
| x | Datei ausführen |
Beispiel:
-rwxr-xr--
Bedeutung:
Besitzer darf lesen,
schreiben
und ausführen.
Gruppe darf lesen
und ausführen.
Andere dürfen nur lesen.
Merksatz:
x macht eine Datei ausführbar.
Rechte bei Verzeichnissen
Bei Verzeichnissen bedeutet:
| Recht | Bedeutung |
|---|---|
| r | Inhalt des Verzeichnisses anzeigen |
| w | Dateien im Verzeichnis erstellen, löschen oder umbenennen |
| x | Verzeichnis betreten und Pfade darin nutzen |
Wichtig:
Ohne x kann man ein Verzeichnis nicht sinnvoll betreten,
auch wenn r gesetzt ist.
Beispiel:
drwxr-x---
Bedeutung:
Besitzer darf alles.
Gruppe darf betreten und auflisten.
Andere haben keinen Zugriff.
Merksatz:
Bei Verzeichnissen ist x besonders wichtig.
Numerische Rechte
Rechte können auch als Zahlen dargestellt werden.
| Recht | Wert |
|---|---|
| r | 4 |
| w | 2 |
| x | 1 |
Kombinationen:
| Rechte | Zahl |
|---|---|
| --- | 0 |
| --x | 1 |
| -w- | 2 |
| -wx | 3 |
| r-- | 4 |
| r-x | 5 |
| rw- | 6 |
| rwx | 7 |
Beispiele:
| Zahl | Bedeutung |
|---|---|
| 644 | Besitzer rw-, Gruppe r--, Andere r-- |
| 600 | Besitzer rw-, Gruppe ---, Andere --- |
| 755 | Besitzer rwx, Gruppe r-x, Andere r-x |
| 700 | Besitzer rwx, Gruppe ---, Andere --- |
Merksatz:
r=4,
w=2,
x=1.
chmod
Mit chmod ändert man Dateirechte.
Beispiele:
chmod 644 datei.txt
chmod 600 geheim.txt
chmod 755 script.sh
chmod +x script.sh
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| chmod 644 datei.txt | typische Rechte für normale Textdatei |
| chmod 600 geheim.txt | nur Besitzer darf lesen und schreiben |
| chmod 755 script.sh | Besitzer darf alles, andere lesen/ausführen |
| chmod +x script.sh | Ausführrecht hinzufügen |
Merksatz:
chmod ändert Rechte.
chown
Mit chown ändert man den Besitzer einer Datei.
Beispiel:
chown felix datei.txt
Besitzer und Gruppe ändern:
chown felix:users datei.txt
Rekursiv für Verzeichnisse:
chown -R felix:users projektordner
Wichtig:
chown benötigt häufig administrative Rechte.
Merksatz:
chown ändert Besitzer und optional Gruppe.
chgrp
Mit chgrp ändert man die Gruppe einer Datei.
Beispiel:
chgrp developers projekt.txt
Rekursiv:
chgrp -R developers projektordner
Merksatz:
chgrp ändert die Gruppenzuordnung.
sudo
sudo erlaubt berechtigten Benutzern, einzelne Befehle mit erhöhten Rechten auszuführen.
Beispiel:
sudo systemctl restart ssh
Vorteile:
keine dauerhafte Root-Sitzung nötig
bessere Nachvollziehbarkeit
gezielte administrative Rechte
geringeres Risiko als dauerhaft als root zu arbeiten
Wichtig:
sudo sollte nur berechtigten Benutzern gegeben werden.
Merksatz:
sudo gibt gezielt erhöhte Rechte für einzelne Befehle.
su
su steht für:
substitute user
Mit su kann man zu einem anderen Benutzer wechseln.
Beispiel:
su -
Häufig wird damit zu root gewechselt, wenn das Root-Konto aktiviert ist.
Unterschied zu sudo:
| Befehl | Bedeutung |
|---|---|
| sudo befehl | einzelnen Befehl mit erhöhten Rechten ausführen |
| su | Benutzer wechseln |
| su - | Login-Shell des Zielbenutzers starten |
Merksatz:
sudo führt Befehl aus.
su wechselt Benutzer.
Dateien ausführbar machen
Ein Skript muss ausführbar sein, wenn man es direkt starten möchte.
Beispiel:
chmod +x backup.sh
Starten:
./backup.sh
Wichtig:
./ bedeutet:
Datei im aktuellen Verzeichnis ausführen.
Ohne Ausführrecht kommt häufig:
Permission denied
Merksatz:
Skript direkt starten braucht x-Recht.
Typische Rechte für Dateien
| Zweck | Rechte | Bedeutung |
|---|---|---|
| normale Textdatei | 644 | Besitzer schreibt, andere lesen |
| private Datei | 600 | nur Besitzer liest und schreibt |
| Skript oder Programm | 755 | Besitzer schreibt, alle dürfen ausführen |
| geheimes Skript | 700 | nur Besitzer darf alles |
| öffentlich lesbares Verzeichnis | 755 | andere können betreten und lesen |
| privates Verzeichnis | 700 | nur Besitzer Zugriff |
Merksatz:
644 für normale Dateien.
755 für ausführbare Programme oder Verzeichnisse.
600 für private Dateien.
Rechte und Sicherheit
Zu breite Rechte sind ein Sicherheitsrisiko.
Beispiel kritisch:
chmod 777 datei
777 bedeutet:
Besitzer darf alles.
Gruppe darf alles.
Andere dürfen alles.
Risiko:
Jeder Benutzer kann lesen,
schreiben
und ausführen.
Besser:
Rechte gezielt setzen.
Merksatz:
777 ist selten eine saubere Lösung.
Permission denied
Die Meldung:
Permission denied
bedeutet:
Zugriff verweigert.
Mögliche Ursachen:
Datei nicht lesbar
Datei nicht beschreibbar
Datei nicht ausführbar
Verzeichnis nicht betretbar
falscher Besitzer
falsche Gruppe
sudo nötig
Prüfen:
ls -l datei
ls -ld verzeichnis
id
Merksatz:
Permission denied zuerst mit ls -l und id prüfen.
Rechteproblem bei Verzeichnissen
Ein Benutzer hat Leserecht auf eine Datei, kann sie aber trotzdem nicht öffnen.
Mögliche Ursache:
fehlendes x-Recht auf einem übergeordneten Verzeichnis.
Beispiel:
/srv/projekt/datei.txt
Damit der Benutzer die Datei erreichen kann, braucht er passende Rechte auf:
/srv
/srv/projekt
/srv/projekt/datei.txt
Merksatz:
Für Zugriff auf Dateien müssen auch Verzeichnisrechte passen.
Gruppenbasierter Zugriff
Beispiel:
Mehrere Benutzer sollen auf /srv/projekt zugreifen.
Sinnvolles Vorgehen:
Gruppe projekt anlegen
Benutzer zur Gruppe hinzufügen
Verzeichnis der Gruppe projekt zuordnen
Gruppenrechte passend setzen
Beispielhafte Befehle:
chgrp -R projekt /srv/projekt
chmod -R 770 /srv/projekt
Bedeutung:
Besitzer und Gruppe dürfen alles.
Andere haben keinen Zugriff.
Merksatz:
Gemeinsamer Zugriff wird sauber über Gruppen geregelt.
Benutzer anlegen
Typische Befehle je nach Distribution:
useradd
adduser
Beispiel:
adduser felix
oder:
useradd -m felix
Bedeutung:
-m erstellt ein Home-Verzeichnis.
Wichtig:
Die genaue Bedienung kann je nach Distribution unterschiedlich sein.
Merksatz:
Benutzerverwaltung kann je nach Distribution leicht unterschiedlich sein.
Passwort setzen
Passwort für Benutzer setzen:
passwd felix
Eigenes Passwort ändern:
passwd
Wichtig:
Starke Passwörter verwenden.
Für administrative Zugänge zusätzlich MFA oder Schlüsselverfahren nutzen,
wenn möglich.
Merksatz:
passwd setzt oder ändert Passwörter.
Benutzer zu Gruppe hinzufügen
Beispiel:
usermod -aG gruppe benutzer
Wichtig:
-aG bedeutet:
zur Zusatzgruppe hinzufügen,
ohne bestehende Gruppen zu entfernen.
Beispiel:
usermod -aG sudo felix
Nach Gruppenänderungen ist oft eine neue Anmeldung erforderlich.
Merksatz:
usermod -aG fügt Benutzer zu Zusatzgruppe hinzu.
Benutzer löschen
Benutzer löschen:
userdel benutzer
Benutzer inklusive Home-Verzeichnis löschen:
userdel -r benutzer
Wichtig:
Vor dem Löschen prüfen:
Gibt es noch Dateien des Benutzers?
Gibt es laufende Prozesse?
Gibt es Dienste oder Cronjobs?
Müssen Daten archiviert werden?
Merksatz:
Benutzer nicht löschen,
ohne Daten und Dienste zu prüfen.
ACLs
ACL steht für:
Access Control List
ACLs erlauben feinere Rechte als klassische Linux-Rechte.
Beispiel:
Eine bestimmte Benutzerin soll Zugriff erhalten,
ohne Besitzer oder Gruppe zu ändern.
Typische Befehle:
getfacl datei
setfacl -m u:benutzer:r datei
Wichtig:
ACLs sind nützlich,
können Rechteverwaltung aber komplexer machen.
Merksatz:
ACLs erweitern klassische Linux-Rechte.
SetUID, SetGID und Sticky Bit
Neben normalen Rechten gibt es Sonderrechte.
| Sonderrecht | Bedeutung |
|---|---|
| SetUID | Programm läuft mit Rechten des Dateibesitzers |
| SetGID | Programm oder Verzeichnis nutzt Gruppenlogik besonders |
| Sticky Bit | in Verzeichnissen dürfen Benutzer nur eigene Dateien löschen |
Typisches Beispiel für Sticky Bit:
/tmp
Rechte häufig:
drwxrwxrwt
Das t am Ende zeigt das Sticky Bit.
Merksatz:
Sticky Bit schützt gemeinsame Verzeichnisse wie /tmp.
Typische Fehlerbilder
| Fehlerbild | Wahrscheinliche Ursache |
|---|---|
| Permission denied beim Lesen | fehlendes Leserecht |
| Permission denied beim Schreiben | fehlendes Schreibrecht |
| Skript startet nicht | fehlendes Ausführrecht |
| Datei trotz Rechten nicht erreichbar | Verzeichnisrecht fehlt |
| Benutzer sieht Datei nicht | fehlendes r auf Verzeichnis |
| Benutzer kann Datei nicht löschen | fehlendes w auf Verzeichnis |
| sudo nicht erlaubt | Benutzer nicht in sudoers |
| Gruppenrecht wirkt nicht | Benutzer neu anmelden oder falsche Gruppe |
| Dienst kann Datei nicht lesen | Dienstbenutzer hat keine Rechte |
| 777 wurde gesetzt | unsichere Notlösung |
Sichere Arbeitsweise bei Rechteproblemen
Nicht sofort:
chmod 777
Besser prüfen:
whoami
id
ls -l datei
ls -ld verzeichnis
groups benutzer
getfacl datei
Dann gezielt entscheiden:
Besitzer ändern?
Gruppe ändern?
Rechte ändern?
Benutzer in Gruppe aufnehmen?
sudo nötig?
Merksatz:
Rechteprobleme gezielt lösen,
nicht pauschal mit 777.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist root? | administrativer Hauptbenutzer |
| Was bedeutet UID? | User ID |
| Was bedeutet GID? | Group ID |
| Was macht chmod? | ändert Rechte |
| Was macht chown? | ändert Besitzer |
| Was macht chgrp? | ändert Gruppe |
| Was macht sudo? | führt Befehl mit erhöhten Rechten aus |
| Was bedeutet r? | lesen |
| Was bedeutet w? | schreiben |
| Was bedeutet x bei Dateien? | ausführen |
| Was bedeutet x bei Verzeichnissen? | betreten |
| Was bedeutet 755? | rwx r-x r-x |
| Was bedeutet 644? | rw- r-- r-- |
| Was bedeutet 600? | nur Besitzer lesen/schreiben |
| Warum ist 777 kritisch? | jeder darf alles |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| x bei Verzeichnissen vergessen | x bedeutet Verzeichnis betreten |
| chmod 777 als Lösung | unsicher und meist falsch |
| nur Dateirechte prüfen | auch Verzeichnisrechte prüfen |
| sudo immer verwenden | erst Ursache prüfen |
| Besitzer und Gruppe verwechseln | beides getrennt betrachten |
| Gruppenänderung wirkt sofort erwarten | neue Anmeldung kann nötig sein |
| Dienst läuft als root | Sicherheitsrisiko, wenn nicht nötig |
| /etc/shadow frei lesbar erwarten | besonders geschützt |
| ACLs übersehen | zusätzliche Rechte können existieren |
| Root und normales Konto gleich behandeln | Root hat besondere Rechte |
IHK-sichere Kurzformulierung
Linux ist ein Mehrbenutzersystem und steuert Zugriffe über Benutzer, Gruppen und Rechte. Jede Datei und jedes Verzeichnis hat einen Besitzer, eine zugeordnete Gruppe und Rechte für Besitzer, Gruppe und Andere. Die klassischen Rechte sind r für Lesen, w für Schreiben und x für Ausführen beziehungsweise bei Verzeichnissen für Betreten. Mit chmod werden Rechte geändert, mit chown der Besitzer und mit chgrp die Gruppe. sudo erlaubt berechtigten Benutzern, einzelne Befehle mit erhöhten Rechten auszuführen. Rechteprobleme sollten mit whoami, id, ls -l und ls -ld geprüft werden. Pauschale Rechte wie 777 sind unsicher und sollten vermieden werden.
Merksätze
Linux ist ein Mehrbenutzersystem.
Benutzer können Menschen oder Dienste sein.
Root ist der administrative Hauptbenutzer.
UID identifiziert Benutzer.
GID identifiziert Gruppen.
Gruppen vereinfachen Rechteverwaltung.
Jede Datei hat Besitzer,
Gruppe
und Rechte.
Rechte gelten für Besitzer,
Gruppe
und Andere.
r bedeutet lesen.
w bedeutet schreiben.
x bedeutet bei Dateien ausführen.
x bedeutet bei Verzeichnissen betreten.
chmod ändert Rechte.
chown ändert Besitzer.
chgrp ändert Gruppe.
sudo gibt gezielt erhöhte Rechte.
su wechselt Benutzer.
644 ist typisch für normale Dateien.
600 ist typisch für private Dateien.
755 ist typisch für Programme oder Verzeichnisse.
700 ist typisch für private Verzeichnisse oder Skripte.
777 ist selten eine gute Lösung.
Permission denied bedeutet Rechteproblem.
Bei Dateien auch Verzeichnisrechte prüfen.
Dienstkonten sollten nur notwendige Rechte haben.
Gruppenänderungen können neue Anmeldung erfordern.
ACLs erweitern klassische Rechte.
Sticky Bit schützt gemeinsame Verzeichnisse wie /tmp.
5. Prozesse, Dienste und systemd
5.1 Prozesse, Dienste und systemd
Linux führt Programme als Prozesse aus.
Ein Prozess ist ein laufendes Programm. Ein Dienst ist ein Programm, das meist im Hintergrund läuft und eine bestimmte Aufgabe für das System oder Netzwerk bereitstellt.
Für Fachinformatiker Systemintegration ist dieses Thema wichtig, weil Serverdienste wie SSH, Webserver, Datenbanken, DNS, DHCP, Backupdienste oder Monitoring-Agenten auf Linux-Systemen als Prozesse und Dienste laufen.
Merksatz:
Prozess = laufendes Programm.
Dienst = Hintergrundprogramm mit Aufgabe.
Lernziele
Nach dieser Seite solltest du erklären können:
- was ein Prozess ist
- was eine PID ist
- was ein Dienst ist
- was ein Daemon ist
- wie man Prozesse anzeigt
- wie man Prozesse beendet
- wie man Systemressourcen prüft
- wie Dienste mit systemd verwaltet werden
- was systemctl macht
- was enable und disable bedeuten
- wie man typische Dienstfehler eingrenzt
Grundidee
Wenn unter Linux ein Programm gestartet wird, entsteht daraus ein Prozess.
Beispiele:
- Shell
- Texteditor
- Webserver
- Datenbankserver
- Backupskript
- SSH-Server
- Cronjob
- Monitoring-Agent
Jeder Prozess verbraucht Ressourcen, zum Beispiel:
- CPU
- Arbeitsspeicher
- Dateizugriffe
- Netzwerkverbindungen
- Prozess-IDs
- offene Dateien
Merksatz:
Alles,
was läuft,
ist als Prozess im System sichtbar.
Prozess
Ein Prozess ist eine laufende Instanz eines Programms.
Beispiel:
Das Programm nginx ist installiert.
Wenn nginx gestartet wird,
laufen ein oder mehrere nginx-Prozesse.
Ein Programm kann mehrfach als Prozess laufen.
Beispiele:
mehrere Shells
mehrere Webserver-Worker
mehrere Datenbankprozesse
mehrere SSH-Sitzungen
Merksatz:
Programm = Datei auf dem System.
Prozess = laufendes Programm.
PID
PID steht für:
Process ID
Die PID ist eine eindeutige Nummer eines laufenden Prozesses.
Beispiel:
PID 1234
Mit der PID kann ein Prozess gezielt angesprochen werden, zum Beispiel zum Beenden oder Prüfen.
Merksatz:
PID = eindeutige Nummer eines Prozesses.
PPID
PPID steht für:
Parent Process ID
Das ist die Prozess-ID des Elternprozesses.
Viele Prozesse werden von anderen Prozessen gestartet.
Beispiel:
Eine Shell startet ein Skript.
Die Shell ist der Elternprozess.
Das Skript ist der Kindprozess.
Merksatz:
Prozesse können Eltern-
und Kindprozesse haben.
Prozesse anzeigen mit ps
Der Befehl ps zeigt Prozesse an.
Beispiele:
ps
ps aux
ps -ef
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| ps | Prozesse der aktuellen Shell anzeigen |
| ps aux | viele Prozesse systemweit anzeigen |
| ps -ef | Prozesse in anderem verbreiteten Format anzeigen |
Typische Spalten:
| Spalte | Bedeutung |
|---|---|
| USER | Benutzer, unter dem der Prozess läuft |
| PID | Prozess-ID |
| %CPU | CPU-Nutzung |
| %MEM | Speicheranteil |
| COMMAND | gestarteter Befehl |
| PPID | Elternprozess-ID |
Merksatz:
ps zeigt laufende Prozesse.
Prozesse suchen
Prozesse kann man mit ps und grep suchen.
Beispiel:
ps aux | grep nginx
Bedeutung:
ps aux zeigt Prozesse.
grep nginx filtert nach nginx.
Alternative Befehle:
pgrep nginx
pidof nginx
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| pgrep nginx | sucht Prozess-IDs nach Namen |
| pidof nginx | zeigt PID eines laufenden Programms |
Merksatz:
ps zeigt,
grep filtert.
Prozesse live überwachen mit top
top zeigt laufende Prozesse und Systemauslastung live an.
Starten:
top
Typische Informationen:
CPU-Auslastung
RAM-Nutzung
laufende Prozesse
Load Average
Prozessliste
Benutzer
Prozess-IDs
Beenden:
q
Merksatz:
top zeigt Systemlast live.
htop
htop ist eine komfortablere Alternative zu top.
Starten:
htop
Vorteile:
übersichtlicher
farbliche Anzeige
einfachere Prozessauswahl
leichteres Beenden von Prozessen
Wichtig:
htop ist nicht immer standardmäßig installiert.
Merksatz:
htop ist ein komfortabler Prozessmonitor,
falls installiert.
CPU, RAM und Load Average
Bei Prozessproblemen sind drei Werte besonders wichtig:
| Wert | Bedeutung |
|---|---|
| CPU | Rechenleistung |
| RAM | Arbeitsspeicher |
| Load Average | durchschnittliche Systemlast |
Hohe CPU-Auslastung kann bedeuten:
Prozess rechnet stark
Endlosschleife
hohe Nutzerlast
Angriff oder Fehlkonfiguration
Hohe RAM-Nutzung kann bedeuten:
Dienst benötigt viel Speicher
Speicherleck
zu viele Prozesse
falsche Konfiguration
Merksatz:
Langsame Systeme immer mit Messwerten prüfen.
Load Average einfach erklärt
Load Average zeigt, wie viele Prozesse im Durchschnitt auf CPU oder I/O warten.
Typische Anzeige:
load average: 0.50, 1.20, 2.10
Die drei Werte stehen für:
letzte 1 Minute
letzte 5 Minuten
letzte 15 Minuten
Ein hoher Wert kann auf Überlastung hindeuten.
Wichtig:
Bewertung hängt von der Anzahl der CPU-Kerne ab.
Merksatz:
Load Average zeigt durchschnittliche Systemlast.
Prozesse beenden mit kill
Mit kill sendet man ein Signal an einen Prozess.
Beispiel:
kill 1234
Das sendet standardmäßig ein TERM-Signal.
TERM bedeutet:
Prozess soll sauber beendet werden.
Wenn das nicht funktioniert:
kill -9 1234
Das sendet ein KILL-Signal.
Wichtig:
kill -9 beendet hart
und sollte nur verwendet werden,
wenn normales Beenden nicht funktioniert.
Merksatz:
Erst normal beenden,
dann nur notfalls kill -9.
Wichtige Signale
| Signal | Nummer | Bedeutung |
|---|---|---|
| TERM | 15 | sauber beenden |
| KILL | 9 | sofort hart beenden |
| HUP | 1 | häufig Konfiguration neu laden |
| INT | 2 | Unterbrechung, ähnlich Strg+C |
Beispiele:
kill -15 1234
kill -9 1234
kill -HUP 1234
Merksatz:
TERM bittet um Beenden.
KILL erzwingt Beenden.
Prozess mit Namen beenden
Mit pkill kann man Prozesse anhand des Namens beenden.
Beispiel:
pkill nginx
Wichtig:
Vorsichtig verwenden,
weil mehrere Prozesse betroffen sein können.
Besser vorher prüfen:
pgrep -a nginx
Merksatz:
pkill beendet nach Namen,
deshalb vorher genau prüfen.
Prozesse im Vordergrund und Hintergrund
Ein Prozess kann im Vordergrund oder Hintergrund laufen.
Vordergrund:
blockiert die aktuelle Shell,
bis er beendet ist.
Hintergrund:
läuft weiter,
während man die Shell weiter nutzen kann.
Befehl im Hintergrund starten:
befehl &
Beispiel:
sleep 60 &
Jobs anzeigen:
jobs
Merksatz:
& startet einen Befehl im Hintergrund.
Strg+C und Strg+Z
Wichtige Tastenkombinationen:
| Tastenkombination | Bedeutung |
|---|---|
| Strg+C | laufenden Vordergrundprozess abbrechen |
| Strg+Z | Prozess anhalten |
| fg | angehaltenen Job in Vordergrund holen |
| bg | angehaltenen Job im Hintergrund fortsetzen |
Merksatz:
Strg+C beendet meist.
Strg+Z hält an.
Daemon
Ein Daemon ist ein Hintergrundprozess, der dauerhaft oder bei Bedarf eine Systemaufgabe erfüllt.
Typische Daemons:
sshd
cron
nginx
mysqld
systemd
rsyslogd
Viele Daemon-Namen enden auf:
d
Beispiele:
sshd = SSH-Daemon
cron oder crond = Cron-Daemon
Merksatz:
Daemon = Hintergrunddienst.
Dienst
Ein Dienst ist eine Systemfunktion, die meist im Hintergrund bereitgestellt wird.
Beispiele:
| Dienst | Zweck |
|---|---|
| ssh | Fernadministration |
| nginx | Webserver |
| apache2 | Webserver |
| mariadb | Datenbank |
| postgresql | Datenbank |
| cron | zeitgesteuerte Aufgaben |
| systemd-journald | Logging |
| docker | Containerdienst |
Merksatz:
Dienste stellen Funktionen bereit.
systemd
systemd ist auf vielen modernen Linux-Distributionen das zentrale Init- und Dienstverwaltungssystem.
systemd ist zuständig für:
- Systemstart
- Dienste
- Abhängigkeiten
- Units
- Logging-Anbindung
- Timer
- Mounts
- Targets
- Systemzustände
Wichtig:
Nicht jede Linux-Distribution nutzt systemd.
Viele Serverdistributionen tun es aber.
Merksatz:
systemd verwaltet auf vielen Linux-Systemen Dienste und Systemstart.
Unit
Eine Unit ist eine Verwaltungseinheit von systemd.
Typische Unit-Arten:
| Unit-Art | Bedeutung |
|---|---|
| .service | Dienst |
| .socket | Socket-Aktivierung |
| .timer | zeitgesteuerte Aufgabe |
| .mount | Mountpoint |
| .target | Zielzustand des Systems |
Beispiel:
ssh.service
nginx.service
docker.service
Merksatz:
.service steht für einen Dienst.
systemctl
systemctl ist das wichtigste Werkzeug zur Verwaltung von systemd.
Typische Befehle:
systemctl status ssh
systemctl start ssh
systemctl stop ssh
systemctl restart ssh
systemctl reload ssh
systemctl enable ssh
systemctl disable ssh
Merksatz:
systemctl verwaltet systemd-Units.
Dienststatus prüfen
Status eines Dienstes prüfen:
systemctl status ssh
Typische Informationen:
Dienstname
aktiv oder inaktiv
Fehlerstatus
PID
Startzeit
letzte Logzeilen
Pfad zur Unit-Datei
Wichtige Zustände:
| Zustand | Bedeutung |
|---|---|
| active | Dienst läuft |
| inactive | Dienst läuft nicht |
| failed | Dienst ist fehlgeschlagen |
| enabled | startet automatisch beim Boot |
| disabled | startet nicht automatisch beim Boot |
Merksatz:
systemctl status ist die erste Prüfung bei Dienstproblemen.
Dienst starten
Dienst starten:
systemctl start ssh
Bedeutung:
Der Dienst wird jetzt gestartet.
Wichtig:
start bedeutet nicht automatisch,
dass der Dienst beim nächsten Neustart wieder startet.
Merksatz:
start startet jetzt.
Dienst stoppen
Dienst stoppen:
systemctl stop ssh
Bedeutung:
Der Dienst wird jetzt gestoppt.
Wichtig:
stop deaktiviert nicht automatisch den Autostart.
Merksatz:
stop stoppt jetzt.
Dienst neu starten
Dienst neu starten:
systemctl restart ssh
Bedeutung:
Der Dienst wird gestoppt und neu gestartet.
Typische Nutzung:
nach Konfigurationsänderungen
nach Fehlern
nach Updates
Wichtig:
Bei SSH vorsichtig sein,
besonders wenn man gerade per SSH verbunden ist.
Merksatz:
restart startet Dienst komplett neu.
Dienst neu laden
Dienst neu laden:
systemctl reload nginx
Bedeutung:
Der Dienst lädt seine Konfiguration neu,
ohne vollständig beendet zu werden.
Nicht jeder Dienst unterstützt reload.
Unterschied:
| Befehl | Bedeutung |
|---|---|
| restart | Dienst komplett neu starten |
| reload | Konfiguration neu laden, falls unterstützt |
Merksatz:
reload ist oft schonender als restart,
wenn der Dienst es unterstützt.
Autostart aktivieren
Dienst beim Systemstart automatisch starten:
systemctl enable ssh
Wichtig:
enable startet den Dienst nicht unbedingt sofort.
Dafür braucht man:
systemctl start ssh
Oder kombiniert:
systemctl enable --now ssh
Merksatz:
enable aktiviert Autostart.
Autostart deaktivieren
Autostart deaktivieren:
systemctl disable ssh
Wichtig:
disable stoppt den aktuell laufenden Dienst nicht unbedingt sofort.
Dafür braucht man:
systemctl stop ssh
Merksatz:
disable entfernt Autostart.
enable, disable, start und stop unterscheiden
| Befehl | Wirkung |
|---|---|
| start | startet Dienst jetzt |
| stop | stoppt Dienst jetzt |
| enable | startet Dienst künftig automatisch beim Boot |
| disable | startet Dienst künftig nicht automatisch beim Boot |
| restart | stoppt und startet Dienst jetzt neu |
| reload | lädt Konfiguration neu, falls unterstützt |
Merksatz:
start und stop gelten jetzt.
enable und disable gelten für den Systemstart.
Dienst prüfen nach Änderung
Nach Änderung an einem Dienst:
systemctl restart dienstname
systemctl status dienstname
journalctl -u dienstname
Typisches Vorgehen:
1. Konfiguration ändern
2. Syntax prüfen,
falls möglich
3. Dienst neu laden oder neu starten
4. Status prüfen
5. Logs prüfen
Merksatz:
Nach Dienständerung immer Status und Logs prüfen.
journalctl für Dienste
Logs eines Dienstes anzeigen:
journalctl -u ssh
Live mitlesen:
journalctl -u ssh -f
Seit letztem Boot:
journalctl -u ssh -b
Nur letzte Einträge:
journalctl -u ssh -n 50
Merksatz:
journalctl -u zeigt Logs einer Unit.
Dienst läuft, aber Port ist nicht erreichbar
Mögliche Ursachen:
Dienst lauscht nicht auf erwarteter Adresse
Dienst lauscht auf anderem Port
lokale Firewall blockiert
Netzwerkfirewall blockiert
Dienst ist nur lokal gebunden
falsche Konfiguration
IPv4/IPv6-Verwechslung
Prüfen:
systemctl status dienst
ss -tulpen
journalctl -u dienst
Firewall-Regeln
Merksatz:
Dienst läuft heißt nicht automatisch:
Port ist erreichbar.
Offene Ports anzeigen
Mit ss kann man offene Ports und Verbindungen anzeigen.
Beispiele:
ss -tulpen
ss -tulpn
Bedeutung der Optionen:
| Option | Bedeutung |
|---|---|
| -t | TCP |
| -u | UDP |
| -l | listening |
| -p | Prozess anzeigen |
| -e | erweiterte Informationen |
| -n | numerische Anzeige |
Merksatz:
ss zeigt,
welche Dienste auf welchen Ports lauschen.
Dienst lauscht nur auf localhost
Wenn ein Dienst nur auf 127.0.0.1 lauscht, ist er nur lokal erreichbar.
Beispiel:
127.0.0.1:8080
Bedeutung:
Nur Programme auf demselben System können direkt darauf zugreifen.
Wenn ein Dienst auf allen IPv4-Schnittstellen lauscht:
0.0.0.0:8080
Bedeutung:
Dienst lauscht auf allen IPv4-Interfaces.
Merksatz:
127.0.0.1 = nur lokal.
0.0.0.0 = alle IPv4-Interfaces.
Dienst startet nicht
Wenn ein Dienst nicht startet, sollte man prüfen:
systemctl status dienst
journalctl -u dienst
Konfigurationsdatei
Syntaxprüfung
Ports bereits belegt?
Rechte auf Dateien
Abhängigkeiten
Speicherplatz
Benutzer des Dienstes
Pfade
Zertifikate
Merksatz:
Dienstfehler immer mit Status und Logs eingrenzen.
Port bereits belegt
Ein Dienst kann nicht starten, wenn ein anderer Prozess denselben Port bereits nutzt.
Beispiel:
nginx soll TCP 80 nutzen,
aber Apache läuft bereits auf TCP 80.
Prüfen:
ss -tulpen
Lösung:
einen Dienst stoppen
Port ändern
Konfiguration anpassen
Merksatz:
Ein Port kann pro IP und Protokoll nur passend gebunden werden.
Dienst hat Rechteproblem
Ein Dienst läuft oft unter einem eigenen Benutzer.
Beispiel:
www-data
nginx
postgres
Wenn dieser Benutzer keine Rechte auf Dateien oder Verzeichnisse hat, kann der Dienst fehlschlagen.
Prüfen:
systemctl status dienst
journalctl -u dienst
ls -l datei
ls -ld verzeichnis
Merksatz:
Dienstprobleme können Rechteprobleme sein.
Dienst hat Konfigurationsfehler
Viele Dienste starten nicht, wenn die Konfiguration fehlerhaft ist.
Beispiele:
falsche Syntax
falscher Pfad
falscher Port
Zertifikat fehlt
Benutzer existiert nicht
ungültige Option
Viele Dienste bieten Syntaxprüfungen.
Beispiele:
nginx -t
apachectl configtest
Wichtig:
Vor restart möglichst Syntax prüfen,
wenn der Dienst das unterstützt.
Merksatz:
Konfiguration prüfen,
bevor man produktive Dienste neu startet.
Abhängigkeiten
Dienste können voneinander abhängig sein.
Beispiele:
Webanwendung braucht Datenbank.
Backupdienst braucht Netzwerkshare.
Monitoring braucht Netzwerk.
Containerdienst braucht Storage.
Wenn eine Abhängigkeit fehlt, startet der Dienst eventuell nicht korrekt oder funktioniert nur teilweise.
Merksatz:
Dienste funktionieren oft nur mit ihren Abhängigkeiten.
Dienste beim Boot
Beim Systemstart werden Dienste automatisch gestartet, wenn sie aktiviert sind.
Prüfen, ob ein Dienst aktiviert ist:
systemctl is-enabled ssh
Prüfen, ob ein Dienst läuft:
systemctl is-active ssh
Merksatz:
enabled heißt Autostart.
active heißt läuft gerade.
Targets
Targets sind systemd-Zielzustände.
Beispiele:
| Target | Bedeutung |
|---|---|
| multi-user.target | Mehrbenutzerbetrieb ohne grafische Oberfläche |
| graphical.target | Mehrbenutzerbetrieb mit grafischer Oberfläche |
| rescue.target | Rettungsmodus |
| emergency.target | Minimaler Notfallmodus |
Merksatz:
Targets beschreiben Systemzustände.
Cron und systemd Timer
Zeitgesteuerte Aufgaben können unter Linux über cron oder systemd Timer laufen.
cron:
klassischer Zeitplaner
systemd Timer:
systemd-eigene zeitgesteuerte Units
Beispiele für Aufgaben:
Backup starten
Logs aufräumen
Updates prüfen
Skript regelmäßig ausführen
Merksatz:
Wiederkehrende Aufgaben laufen oft über cron oder systemd Timer.
Typische Prozessbefehle
| Befehl | Zweck |
|---|---|
| ps | Prozesse anzeigen |
| ps aux | viele Prozesse anzeigen |
| pgrep | Prozesse nach Namen suchen |
| pidof | PID eines Programms anzeigen |
| top | Prozesse live überwachen |
| htop | komfortabler Prozessmonitor |
| kill | Signal an Prozess senden |
| pkill | Prozess nach Namen beenden |
| jobs | Hintergrundjobs anzeigen |
| fg | Job in Vordergrund holen |
| bg | Job im Hintergrund fortsetzen |
Typische Dienstbefehle
| Befehl | Zweck |
|---|---|
| systemctl status dienst | Dienststatus prüfen |
| systemctl start dienst | Dienst jetzt starten |
| systemctl stop dienst | Dienst jetzt stoppen |
| systemctl restart dienst | Dienst neu starten |
| systemctl reload dienst | Konfiguration neu laden |
| systemctl enable dienst | Autostart aktivieren |
| systemctl disable dienst | Autostart deaktivieren |
| systemctl enable --now dienst | Autostart aktivieren und sofort starten |
| systemctl is-active dienst | prüfen, ob Dienst läuft |
| systemctl is-enabled dienst | prüfen, ob Autostart aktiv ist |
| journalctl -u dienst | Dienstlogs anzeigen |
Typische Fehlerbilder
| Fehlerbild | Wahrscheinliche Ursache |
|---|---|
| Dienst ist inactive | Dienst läuft nicht |
| Dienst ist failed | Startfehler oder Absturz |
| Dienst startet nicht | Konfiguration, Rechte, Port, Abhängigkeit |
| Dienst läuft, aber nicht erreichbar | Firewall, Port, Bind-Adresse, Netzwerk |
| Port bereits belegt | anderer Prozess nutzt denselben Port |
| Dienst nach Boot nicht gestartet | Autostart nicht enabled |
| Dienst kann Datei nicht lesen | Rechteproblem |
| Dienst findet Datei nicht | falscher Pfad |
| Dienst bricht nach Änderung ab | Konfigurationsfehler |
| System langsam | CPU, RAM, I/O oder Prozesslast prüfen |
Sichere Arbeitsweise bei Dienständerungen
Vor Änderung:
aktuelle Konfiguration sichern
Dokumentation prüfen
Wartungsfenster beachten
aktive Verbindung berücksichtigen
Während Änderung:
Syntax prüfen,
falls möglich
Dienst reload statt restart nutzen,
wenn ausreichend
Nach Änderung:
systemctl status prüfen
journalctl -u prüfen
Funktion testen
Rollback bereithalten
Merksatz:
Dienständerungen immer prüfbar und rückgängig planbar machen.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist ein Prozess? | laufendes Programm |
| Was ist eine PID? | eindeutige Prozess-ID |
| Was ist ein Dienst? | Hintergrundprogramm mit Aufgabe |
| Was ist ein Daemon? | Hintergrundprozess |
| Was macht ps? | Prozesse anzeigen |
| Was macht top? | Prozesse live überwachen |
| Was macht kill? | Signal an Prozess senden |
| Was macht systemctl? | systemd-Units verwalten |
| Was bedeutet active? | Dienst läuft |
| Was bedeutet inactive? | Dienst läuft nicht |
| Was bedeutet failed? | Dienst ist fehlgeschlagen |
| Was bedeutet enabled? | Autostart aktiv |
| Was bedeutet disabled? | Autostart nicht aktiv |
| Was macht journalctl -u? | Logs einer Unit anzeigen |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| Programm und Prozess gleichsetzen | Programm ist Datei, Prozess läuft |
| kill immer als hartes Beenden verstehen | kill sendet Signale, Standard ist TERM |
| kill -9 sofort verwenden | erst sauber beenden |
| Dienst läuft = erreichbar | Firewall, Port und Bind-Adresse prüfen |
| enable mit start verwechseln | enable ist Autostart, start ist jetzt |
| disable mit stop verwechseln | disable entfernt Autostart, stop stoppt jetzt |
| Logs nicht prüfen | journalctl -u ist zentral |
| reload und restart gleichsetzen | reload lädt Konfiguration, restart startet neu |
| SSH unvorsichtig neu starten | Remote-Zugriff kann abbrechen |
| Portproblem nur am Dienst suchen | auch Firewall und Bind-Adresse prüfen |
IHK-sichere Kurzformulierung
Ein Prozess ist eine laufende Instanz eines Programms und besitzt eine eindeutige Prozess-ID, die PID. Dienste sind Hintergrundprogramme, die System- oder Netzwerkfunktionen bereitstellen, zum Beispiel SSH, Webserver oder Datenbanken. Auf vielen Linux-Systemen werden Dienste mit systemd verwaltet. Das Werkzeug systemctl dient zum Starten, Stoppen, Neustarten, Aktivieren und Prüfen von Diensten. active bedeutet, dass ein Dienst läuft, enabled bedeutet, dass er beim Systemstart automatisch gestartet wird. Bei Dienstproblemen sollten systemctl status, journalctl -u, offene Ports, Rechte, Konfiguration und Abhängigkeiten geprüft werden. Ein laufender Dienst ist nicht automatisch von außen erreichbar, weil Firewall-Regeln, Bind-Adresse und Netzwerkpfade ebenfalls passen müssen.
Merksätze
Prozess = laufendes Programm.
Programm = Datei auf dem System.
PID = Prozess-ID.
PPID = Elternprozess-ID.
Dienst = Hintergrundprogramm mit Aufgabe.
Daemon = Hintergrunddienst.
ps zeigt Prozesse.
top zeigt Prozesse live.
htop ist komfortabler,
falls installiert.
kill sendet Signale.
TERM beendet sauber.
KILL beendet hart.
kill -9 nur im Notfall.
systemd verwaltet Dienste und Systemstart.
systemctl verwaltet systemd-Units.
.service steht für Dienst.
status prüft Dienstzustand.
start startet jetzt.
stop stoppt jetzt.
restart startet neu.
reload lädt Konfiguration neu.
enable aktiviert Autostart.
disable deaktiviert Autostart.
active heißt:
läuft gerade.
enabled heißt:
startet beim Boot.
Dienst läuft heißt nicht automatisch:
Port erreichbar.
127.0.0.1 heißt:
nur lokal.
0.0.0.0 heißt:
alle IPv4-Interfaces.
journalctl -u zeigt Dienstlogs.
Dienstfehler mit Status,
Logs,
Ports,
Rechten,
Konfiguration
und Abhängigkeiten prüfen.
6. Paketverwaltung und Updates
6.1 Paketverwaltung und Updates
Unter Linux wird Software meistens nicht einzeln von Webseiten heruntergeladen, sondern über eine Paketverwaltung installiert, aktualisiert und entfernt.
Die Paketverwaltung sorgt dafür, dass Programme, Bibliotheken, Abhängigkeiten und Updates kontrolliert verwaltet werden.
Für Fachinformatiker Systemintegration ist das wichtig, weil Server sicher, aktuell und nachvollziehbar administriert werden müssen.
Merksatz:
Paketverwaltung installiert,
aktualisiert
entfernt
und verwaltet Software kontrolliert.
Lernziele
Nach dieser Seite solltest du erklären können:
- was ein Paket ist
- was ein Paketmanager ist
- was ein Repository ist
- was Abhängigkeiten sind
- wie Updates grundsätzlich funktionieren
- warum Sicherheitsupdates wichtig sind
- was apt,
dnf,
zypper,
pacman
und apk sind
- wie man Software installiert,
entfernt
und aktualisiert
- welche typischen Fehler bei Paketverwaltung auftreten
Grundidee
Ein Linux-System besteht aus vielen Softwarepaketen.
Ein Paket enthält zum Beispiel:
- Programmdateien
- Bibliotheken
- Konfigurationsvorlagen
- Dokumentation
- Metadaten
- Installationsskripte
- Abhängigkeitsinformationen
Die Paketverwaltung weiß, welche Pakete installiert sind, welche Versionen verfügbar sind und welche Pakete voneinander abhängen.
Merksatz:
Ein Paket ist eine verwaltete Softwareeinheit.
Paketmanager
Ein Paketmanager ist das Werkzeug, mit dem Software verwaltet wird.
Er kann:
- Pakete installieren
- Pakete entfernen
- Pakete aktualisieren
- Paketinformationen anzeigen
- Abhängigkeiten auflösen
- Paketquellen nutzen
- Versionsstände prüfen
- Sicherheitsupdates einspielen
Beispiele:
| Distribution | Paketmanager |
|---|---|
| Debian | apt |
| Ubuntu | apt |
| Fedora | dnf |
| Rocky Linux | dnf |
| openSUSE | zypper |
| Arch Linux | pacman |
| Alpine Linux | apk |
Merksatz:
Paketmanager unterscheiden sich je nach Distribution.
Repository
Ein Repository ist eine Paketquelle.
Dort liegen Softwarepakete, Metadaten und Versionsinformationen.
Ein System lädt aus Repositories Informationen darüber, welche Pakete verfügbar sind und welche Updates existieren.
Beispiele für Repository-Inhalte:
- Webserver
- Datenbanken
- Bibliotheken
- Sicherheitsupdates
- Systemwerkzeuge
- Entwicklungswerkzeuge
Merksatz:
Repository = Paketquelle.
Abhängigkeiten
Viele Programme benötigen andere Pakete, damit sie funktionieren.
Diese benötigten Pakete nennt man:
Abhängigkeiten
Beispiel:
Ein Programm benötigt eine bestimmte Bibliothek.
Die Paketverwaltung installiert diese Abhängigkeit automatisch mit, wenn sie fehlt.
Vorteil:
Programme werden nicht isoliert,
sondern passend zum System installiert.
Merksatz:
Abhängigkeiten sind Pakete,
die andere Pakete benötigen.
Warum Paketverwaltung statt manueller Installation?
Paketverwaltung hat viele Vorteile:
- zentrale Installation
- automatische Abhängigkeitsauflösung
- einfache Updates
- einfache Entfernung
- nachvollziehbare Paketlisten
- Sicherheitsupdates
- Versionsverwaltung
- saubere Integration ins System
Manuelle Installation kann problematisch sein, weil:
- Abhängigkeiten fehlen können
- Updates unklar sind
- Dateien schwer zu entfernen sind
- Sicherheitsupdates nicht automatisch kommen
- Versionskonflikte entstehen können
Merksatz:
Paketmanager sorgen für Ordnung,
Updates
und Nachvollziehbarkeit.
Debian und Ubuntu: apt
Debian und Ubuntu nutzen häufig:
apt
Typische Befehle:
| Befehl | Bedeutung |
|---|---|
| apt update | Paketlisten aktualisieren |
| apt upgrade | installierte Pakete aktualisieren |
| apt install paket | Paket installieren |
| apt remove paket | Paket entfernen |
| apt purge paket | Paket inklusive Konfigurationsdateien entfernen |
| apt search begriff | Paket suchen |
| apt show paket | Paketinformationen anzeigen |
| apt autoremove | nicht mehr benötigte Abhängigkeiten entfernen |
Merksatz:
apt update aktualisiert Paketlisten.
apt upgrade aktualisiert installierte Pakete.
apt update
Der Befehl:
apt update
lädt aktuelle Paketlisten aus den Repositories.
Wichtig:
apt update installiert noch keine Updates.
Es aktualisiert nur die Information darüber, welche Pakete und Versionen verfügbar sind.
Merksatz:
apt update aktualisiert die Paketinformationen,
nicht die Software selbst.
apt upgrade
Der Befehl:
apt upgrade
aktualisiert installierte Pakete, wenn neuere Versionen verfügbar sind.
Typische Nutzung:
apt update
apt upgrade
Bedeutung:
Erst Paketlisten aktualisieren,
dann Pakete aktualisieren.
Merksatz:
update holt Listen.
upgrade installiert Updates.
Paket installieren mit apt
Paket installieren:
apt install nginx
Bedeutung:
Das Paket nginx wird installiert.
Benötigte Abhängigkeiten werden automatisch mitinstalliert.
Häufig benötigt man administrative Rechte:
sudo apt install nginx
Merksatz:
apt install installiert Pakete.
Paket entfernen mit apt
Paket entfernen:
apt remove nginx
Das entfernt das Programm, aber Konfigurationsdateien können erhalten bleiben.
Paket inklusive Konfigurationsdateien entfernen:
apt purge nginx
Nicht mehr benötigte Abhängigkeiten entfernen:
apt autoremove
Merksatz:
remove entfernt Paket.
purge entfernt Paket plus Konfiguration.
Paket suchen mit apt
Paket suchen:
apt search nginx
Paketinformationen anzeigen:
apt show nginx
Installierte Pakete anzeigen:
apt list --installed
Merksatz:
apt search sucht Pakete.
apt show zeigt Details.
Fedora und Rocky Linux: dnf
Fedora und Rocky Linux nutzen häufig:
dnf
Typische Befehle:
| Befehl | Bedeutung |
|---|---|
| dnf check-update | verfügbare Updates prüfen |
| dnf upgrade | Pakete aktualisieren |
| dnf install paket | Paket installieren |
| dnf remove paket | Paket entfernen |
| dnf search begriff | Paket suchen |
| dnf info paket | Paketinformationen anzeigen |
Beispiele:
dnf install nginx
dnf upgrade
dnf remove nginx
Merksatz:
dnf ist typisch für Fedora-
und Enterprise-nahe Distributionen.
openSUSE: zypper
openSUSE nutzt häufig:
zypper
Typische Befehle:
| Befehl | Bedeutung |
|---|---|
| zypper refresh | Paketquellen aktualisieren |
| zypper update | Pakete aktualisieren |
| zypper install paket | Paket installieren |
| zypper remove paket | Paket entfernen |
| zypper search begriff | Paket suchen |
| zypper info paket | Paketinformationen anzeigen |
Merksatz:
zypper ist typisch für openSUSE.
Arch Linux: pacman
Arch Linux nutzt:
pacman
Typische Befehle:
| Befehl | Bedeutung |
|---|---|
| pacman -Syu | System aktualisieren |
| pacman -S paket | Paket installieren |
| pacman -R paket | Paket entfernen |
| pacman -Ss begriff | Paket suchen |
| pacman -Qi paket | installiertes Paket anzeigen |
Merksatz:
pacman ist typisch für Arch Linux.
Alpine Linux: apk
Alpine Linux nutzt:
apk
Typische Befehle:
| Befehl | Bedeutung |
|---|---|
| apk update | Paketlisten aktualisieren |
| apk upgrade | Pakete aktualisieren |
| apk add paket | Paket installieren |
| apk del paket | Paket entfernen |
| apk search begriff | Paket suchen |
| apk info paket | Paketinformationen anzeigen |
Alpine ist besonders häufig bei kleinen Container-Images.
Merksatz:
apk ist typisch für Alpine Linux.
Update, Upgrade und Dist-Upgrade
Die Begriffe können je nach Distribution unterschiedlich verwendet werden.
Bei Debian/Ubuntu gilt grob:
| Befehl | Bedeutung |
|---|---|
| apt update | Paketlisten aktualisieren |
| apt upgrade | installierte Pakete aktualisieren |
| apt full-upgrade | Pakete aktualisieren, auch mit Entfernen/Ersetzen bei Bedarf |
Wichtig:
full-upgrade kann stärker in das System eingreifen als upgrade.
Merksatz:
Nicht jedes Upgrade ist gleich tiefgreifend.
Sicherheitsupdates
Sicherheitsupdates schließen bekannte Schwachstellen.
Sie sind wichtig, weil ungepatchte Systeme ein Risiko darstellen.
Risiken ungepatchter Systeme:
- Ausnutzung bekannter Sicherheitslücken
- Malware-Infektion
- unberechtigter Zugriff
- Datenabfluss
- Manipulation
- Ausfall von Diensten
- Compliance-Probleme
Merksatz:
Patchmanagement reduziert bekannte Risiken.
Patchmanagement
Patchmanagement bedeutet:
Updates geplant,
kontrolliert
und nachvollziehbar einspielen.
Dazu gehören:
- Updates prüfen
- Risiko bewerten
- Wartungsfenster planen
- Backup erstellen
- Abhängigkeiten beachten
- Updates installieren
- Dienste prüfen
- Logs prüfen
- Rollback-Möglichkeit vorbereiten
- Dokumentation aktualisieren
Merksatz:
Updates sind nicht nur Technik,
sondern auch Prozess.
Warum Updates nicht blind einspielen?
Updates können Probleme verursachen.
Beispiele:
- Dienst startet nach Update nicht
- Konfiguration ist nicht mehr kompatibel
- Abhängigkeit ändert sich
- API-Verhalten ändert sich
- Kernel-Update benötigt Neustart
- Softwareversion passt nicht zur Anwendung
- Paket entfernt ältere Komponente
Deshalb wichtig:
testen
sichern
dokumentieren
Wartungsfenster nutzen
Merksatz:
Sicherheitsupdates sind wichtig,
aber produktive Systeme brauchen kontrollierte Änderungen.
Kernel-Updates
Kernel-Updates aktualisieren den Kern des Betriebssystems.
Wichtig:
Ein neuer Kernel wird häufig erst nach einem Neustart aktiv.
Prüfen:
uname -r
zeigt den aktuell laufenden Kernel.
Nach Kernel-Update:
Neustart planen
Bootfähigkeit prüfen
Dienste prüfen
Treiber oder Module beachten
Merksatz:
Kernel-Update braucht oft Neustart.
Distribution-Upgrade
Ein Distribution-Upgrade ist ein Wechsel auf eine neue Hauptversion der Distribution.
Beispiele:
Ubuntu 22.04 auf 24.04
Debian 12 auf Debian 13
Das ist umfangreicher als normale Paketupdates.
Vorher wichtig:
Backup
Kompatibilität prüfen
Release Notes lesen
Drittanbieter-Repositories prüfen
Wartungsfenster planen
Rollback-Plan
Testsystem nutzen
Merksatz:
Distribution-Upgrade ist größer als normales Update.
Paketquellen und Drittanbieter-Repositories
Neben offiziellen Repositories können Drittanbieter-Quellen eingebunden werden.
Vorteile:
neuere Software
spezielle Anwendungen
Herstellerpakete
Risiken:
Vertrauenswürdigkeit
Sicherheitsrisiko
Versionskonflikte
unklare Updateversorgung
Abhängigkeiten
Paketquelle kann wegfallen
Merksatz:
Drittanbieter-Repositories nur bewusst und dokumentiert nutzen.
GPG-Schlüssel und Paketvertrauen
Viele Paketquellen nutzen Signaturen, damit Pakete und Paketlisten geprüft werden können.
Grundidee:
Das System prüft,
ob Pakete aus einer vertrauenswürdigen Quelle stammen.
Wichtig:
Nur vertrauenswürdige Paketquellen und Schlüssel einbinden.
Risiko:
Eine unsichere Paketquelle kann manipulierte Software liefern.
Merksatz:
Paketquellen sind Vertrauensquellen.
Paketinformationen prüfen
Paketinformationen helfen, ein Paket vor der Installation einzuschätzen.
Bei apt:
apt show paket
Typische Informationen:
Version
Beschreibung
Abhängigkeiten
Paketquelle
Größe
Maintainer
Homepage
Merksatz:
Vor Installation prüfen,
was installiert wird.
Installierte Pakete anzeigen
Bei apt:
apt list --installed
Nach bestimmtem Paket suchen:
apt list --installed | grep nginx
Alternativen je nach Distribution:
dnf list installed
pacman -Q
apk info
Merksatz:
Installierte Pakete sollten nachvollziehbar sein.
Paketdateien und Konfiguration
Paketmanager installieren Dateien an bestimmte Orte.
Beispiele:
Programme nach /usr/bin
Konfigurationen nach /etc
Dienste nach systemd-Unit-Pfaden
Daten nach /var/lib
Logs nach /var/log
Wichtig:
Konfigurationsdateien können bei Updates besondere Behandlung bekommen.
Änderungen sollten dokumentiert werden.
Merksatz:
Pakete verteilen Dateien an standardisierte Orte.
Dienste nach Paketinstallation
Ein installiertes Paket bedeutet nicht immer, dass der Dienst läuft.
Nach Installation prüfen:
systemctl status dienst
systemctl is-enabled dienst
ss -tulpen
Beispiel:
nginx ist installiert,
aber der Dienst ist nicht gestartet.
Dann nötig:
systemctl start nginx
systemctl enable nginx
Merksatz:
Installiert heißt nicht automatisch:
Dienst läuft.
Paket entfernen und Reste
Beim Entfernen können Reste bleiben.
Mögliche Reste:
Konfigurationsdateien
Datenverzeichnisse
Logdateien
Benutzerkonten
systemd-Units
Cache-Dateien
Beispiel:
apt remove paket
entfernt meist nicht alle Konfigurationen.
apt purge paket
entfernt zusätzlich Paketkonfigurationen.
Wichtig:
Datenbanken oder Anwendungsdaten werden oft nicht automatisch gelöscht.
Merksatz:
Entfernen heißt nicht immer vollständig bereinigt.
Autoremove
autoremove entfernt Pakete, die als Abhängigkeiten installiert wurden und nicht mehr benötigt werden.
Bei apt:
apt autoremove
Wichtig:
Vorher prüfen,
welche Pakete entfernt werden sollen.
Merksatz:
autoremove räumt nicht mehr benötigte Abhängigkeiten auf.
Paketcache
Paketmanager speichern heruntergeladene Paketdaten teilweise im Cache.
Bei apt kann man aufräumen mit:
apt clean
oder:
apt autoclean
Nutzen:
Speicherplatz freigeben
Merksatz:
Paketcache kann Speicherplatz belegen.
Typische Fehler: Paketlisten veraltet
Fehlerbild:
Paket wird nicht gefunden
Mögliche Ursache:
Paketlisten sind veraltet.
Bei apt prüfen:
apt update
Danach erneut:
apt search paket
apt install paket
Merksatz:
Wenn apt ein Paket nicht findet,
zuerst Paketlisten prüfen.
Typische Fehler: Repository nicht erreichbar
Fehlerbild:
Paketmanager kann keine Paketlisten laden.
Mögliche Ursachen:
kein Internet
DNS-Problem
Proxy-Problem
Repository offline
falsche Paketquelle
Zertifikatsproblem
Firewall blockiert
Prüfen:
Netzwerkverbindung
DNS
Repository-URL
Proxy
Uhrzeit
Merksatz:
Paketfehler können Netzwerkfehler sein.
Typische Fehler: Abhängigkeitskonflikt
Fehlerbild:
Paket kann nicht installiert werden,
weil Abhängigkeiten nicht erfüllt sind.
Mögliche Ursachen:
gemischte Paketquellen
falsche Distribution-Version
Drittanbieter-Repository
Paketversion passt nicht
unvollständiges Upgrade
Merksatz:
Abhängigkeitsprobleme entstehen oft durch Versions-
oder Repository-Konflikte.
Typische Fehler: Paketdatenbank gesperrt
Fehlerbild bei apt:
Could not get lock
Bedeutung:
Ein anderer Paketverwaltungsprozess läuft gerade
oder wurde nicht sauber beendet.
Mögliche Ursachen:
automatisches Update läuft
anderer apt-Prozess offen
vorheriger Vorgang abgebrochen
Sicheres Vorgehen:
prüfen,
ob ein Paketprozess läuft
warten,
wenn Updates aktiv sind
nicht blind Sperrdateien löschen
Merksatz:
Paketdatenbank-Sperren nicht unüberlegt entfernen.
Typische Fehler: Speicherplatz voll
Paketinstallationen können fehlschlagen, wenn Speicherplatz fehlt.
Prüfen:
df -h
du -sh /var/cache
du -sh /var/log
Mögliche Maßnahmen:
Logs prüfen und sauber rotieren
Paketcache bereinigen
alte Kernel prüfen
nicht benötigte Pakete entfernen
Merksatz:
Updatefehler können Speicherplatzprobleme sein.
Typische Fehler: Dienst startet nach Update nicht
Mögliche Ursachen:
Konfigurationsänderung
veraltete Option
neue Version inkompatibel
Rechteproblem
Port bereits belegt
Abhängigkeit fehlt
Prüfen:
systemctl status dienst
journalctl -u dienst
Konfiguration prüfen
Änderungsnotizen prüfen
Rollback oder Fix planen
Merksatz:
Nach Update immer Dienste und Logs prüfen.
Paketverwaltung und Sicherheit
Paketverwaltung ist Teil der Systemsicherheit.
Sicheres Vorgehen:
- offizielle Paketquellen bevorzugen
- Drittanbieterquellen dokumentieren
- Updates regelmäßig prüfen
- Sicherheitsupdates priorisieren
- Dienste nach Updates testen
- Paketquellen absichern
- keine unbekannten Installationsskripte blind ausführen
- minimale Installation bevorzugen
Merksatz:
Weniger unnötige Pakete bedeutet kleinere Angriffsfläche.
Minimale Installation
Auf Servern sollte nur installiert sein, was benötigt wird.
Vorteile:
weniger Angriffsfläche
weniger Updates
weniger Abhängigkeiten
weniger Fehlerquellen
bessere Übersicht
Beispiel:
Ein Datenbankserver braucht normalerweise keine grafische Desktopumgebung.
Merksatz:
Installiere nur,
was für den Zweck nötig ist.
Paketverwaltung in Containern
Container-Images nutzen ebenfalls Paketmanager, aber anders als normale Server.
Beispiel Alpine:
apk add paket
Beispiel Debian-basiertes Image:
apt update
apt install paket
Wichtig bei Containern:
Images klein halten
Paketlisten nach Installation bereinigen
feste Versionen prüfen
keine unnötigen Tools installieren
Sicherheitsupdates über neue Images einspielen
Merksatz:
In Containern wird Software meist über neue Images aktualisiert.
Typische Paketmanager-Befehle im Vergleich
| Aufgabe | Debian/Ubuntu | Fedora/Rocky | openSUSE | Arch | Alpine |
|---|---|---|---|---|---|
| Paketlisten aktualisieren | apt update | dnf check-update | zypper refresh | pacman -Sy | apk update |
| System aktualisieren | apt upgrade | dnf upgrade | zypper update | pacman -Syu | apk upgrade |
| Paket installieren | apt install | dnf install | zypper install | pacman -S | apk add |
| Paket entfernen | apt remove | dnf remove | zypper remove | pacman -R | apk del |
| Paket suchen | apt search | dnf search | zypper search | pacman -Ss | apk search |
| Paketinfo anzeigen | apt show | dnf info | zypper info | pacman -Qi | apk info |
Merksatz:
Gleiche Aufgabe,
anderer Paketmanager.
Typische Admin-Reihenfolge bei Updates
Sicheres Vorgehen bei Servern:
1. System und Dienste dokumentieren
2. Backup oder Snapshot prüfen
3. freie Kapazität prüfen
4. Paketlisten aktualisieren
5. verfügbare Updates prüfen
6. Wartungsfenster beachten
7. Updates installieren
8. Dienste prüfen
9. Logs prüfen
10. Funktion testen
11. Dokumentation aktualisieren
Merksatz:
Updates brauchen Vorbereitung,
Durchführung
und Nachprüfung.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist ein Paket? | verwaltete Softwareeinheit |
| Was ist ein Paketmanager? | Werkzeug zur Verwaltung von Softwarepaketen |
| Was ist ein Repository? | Paketquelle |
| Was sind Abhängigkeiten? | benötigte Zusatzpakete |
| Was macht apt update? | Paketlisten aktualisieren |
| Was macht apt upgrade? | installierte Pakete aktualisieren |
| Was macht apt install? | Paket installieren |
| Was macht apt remove? | Paket entfernen |
| Was macht apt purge? | Paket inklusive Konfiguration entfernen |
| Was ist Patchmanagement? | geplanter Umgang mit Updates |
| Warum sind Sicherheitsupdates wichtig? | schließen bekannte Schwachstellen |
| Warum nicht blind updaten? | Dienste oder Abhängigkeiten können brechen |
| Warum minimale Installation? | kleinere Angriffsfläche |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| apt update als Softwareupdate verstehen | aktualisiert nur Paketlisten |
| apt upgrade vergessen | installiert die Updates |
| installierter Dienst läuft automatisch | nicht immer, systemctl prüfen |
| Paket entfernen heißt alles weg | Daten und Konfiguration können bleiben |
| Drittanbieter-Repos blind nutzen | Vertrauens- und Versionsrisiko |
| Updates ohne Backup | riskant bei produktiven Systemen |
| Kernel-Update ohne Neustart einplanen | neuer Kernel oft erst nach Reboot aktiv |
| Sicherheitsupdates aufschieben | bekannte Lücken bleiben offen |
| Paketfehler nur als Paketproblem sehen | Netzwerk, DNS, Speicher prüfen |
| manuelle Installationsskripte blind ausführen | Sicherheitsrisiko |
IHK-sichere Kurzformulierung
Unter Linux wird Software meist über Paketmanager installiert, entfernt und aktualisiert. Ein Paket ist eine verwaltete Softwareeinheit, ein Repository ist eine Paketquelle. Paketmanager wie apt, dnf, zypper, pacman oder apk lösen Abhängigkeiten auf und stellen Updates bereit. Bei Debian und Ubuntu aktualisiert apt update die Paketlisten, während apt upgrade installierte Pakete aktualisiert. Sicherheitsupdates sind wichtig, weil sie bekannte Schwachstellen schließen. In produktiven Umgebungen sollten Updates geplant durchgeführt werden, mit Backup, Wartungsfenster, Prüfung der Dienste, Logkontrolle und Dokumentation. Drittanbieter-Repositories sollten nur bewusst genutzt werden, da sie Vertrauens- und Versionsrisiken mit sich bringen.
Merksätze
Paket = verwaltete Softwareeinheit.
Paketmanager verwaltet Pakete.
Repository = Paketquelle.
Abhängigkeiten sind benötigte Zusatzpakete.
apt ist typisch für Debian und Ubuntu.
dnf ist typisch für Fedora und Rocky Linux.
zypper ist typisch für openSUSE.
pacman ist typisch für Arch Linux.
apk ist typisch für Alpine Linux.
apt update aktualisiert Paketlisten.
apt upgrade aktualisiert installierte Pakete.
apt install installiert Pakete.
apt remove entfernt Pakete.
apt purge entfernt Paketkonfigurationen mit.
apt autoremove entfernt nicht mehr benötigte Abhängigkeiten.
Sicherheitsupdates schließen bekannte Lücken.
Patchmanagement ist ein Prozess.
Updates auf Servern brauchen Planung.
Kernel-Updates brauchen oft Neustart.
Installiert heißt nicht automatisch:
Dienst läuft.
Drittanbieter-Repositories sind Vertrauensquellen.
Paketfehler können Netzwerkprobleme sein.
Speicherplatzprobleme können Updates verhindern.
Minimale Installation reduziert Angriffsfläche.
Nach Updates Dienste,
Ports
und Logs prüfen.
7. Netzwerk, SSH und Firewall
7.1 Netzwerk, SSH und Firewall
Linux wird sehr häufig für Netzwerkdienste, Server, Container, Router, Firewalls, VPN-Systeme und Cloud-Systeme eingesetzt.
Deshalb gehört Netzwerkdiagnose unter Linux zu den wichtigsten Fähigkeiten in der Systemadministration.
In diesem Kapitel geht es um:
- IP-Adressen anzeigen
- Routing prüfen
- DNS prüfen
- Erreichbarkeit testen
- Ports und Verbindungen prüfen
- SSH verstehen
- Firewall-Grundlagen unter Linux
- typische Netzwerkfehler eingrenzen
Merksatz:
Linux ist im Serverbetrieb stark,
weil Netzwerk,
Dienste,
Logs
und Fernadministration gut über die Shell prüfbar sind.
Lernziele
Nach dieser Seite solltest du erklären und anwenden können:
- wie man IP-Adressen unter Linux prüft
- wie man Routing und Gateway prüft
- wie man DNS prüft
- wie man Erreichbarkeit mit ping testet
- wie man Ports mit ss prüft
- was SSH ist
- warum SSH sicherer als Telnet ist
- wie SSH-Schlüssel grundsätzlich funktionieren
- was eine lokale Firewall macht
- wie man typische Netzwerkfehler systematisch eingrenzt
Grundidee
Netzwerkprobleme unter Linux können viele Ursachen haben.
Typische Fehlerquellen:
- falsche IP-Adresse
- falsche Subnetzmaske
- falsches Gateway
- falscher DNS-Server
- Dienst läuft nicht
- Port ist nicht offen
- Firewall blockiert
- Dienst lauscht nur lokal
- falsche Route
- SSH-Zugang falsch konfiguriert
- Rechte oder Schlüsselproblem
Merksatz:
Bei Netzwerkproblemen immer trennen:
IP,
Route,
DNS,
Port,
Dienst,
Firewall
und Anwendung.
Wichtige Netzwerkbefehle
| Befehl | Zweck |
|---|---|
| ip addr | IP-Adressen anzeigen |
| ip link | Netzwerkschnittstellen anzeigen |
| ip route | Routing-Tabelle anzeigen |
| ping | Erreichbarkeit per ICMP prüfen |
| traceroute | Weg zum Ziel prüfen, falls installiert |
| tracepath | Weg zum Ziel prüfen, häufig einfacher verfügbar |
| ss | Ports und Verbindungen anzeigen |
| curl | HTTP/HTTPS testen |
| dig | DNS prüfen |
| nslookup | DNS prüfen |
| hostname | Hostname anzeigen |
| resolvectl | DNS-Status bei systemd-resolved anzeigen |
| ssh | sichere Fernadministration |
Merksatz:
ip,
ping,
ss,
dig
und ssh gehören zu den wichtigsten Linux-Netzwerkbefehlen.
Netzwerkschnittstellen anzeigen
Netzwerkschnittstellen zeigt man mit:
ip link
Beispielausgabe:
1: lo: <LOOPBACK,UP,LOWER_UP>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
Typische Schnittstellen:
| Schnittstelle | Bedeutung |
|---|---|
| lo | Loopback |
| eth0 | Ethernet-Schnittstelle |
| ens18 | Ethernet-Schnittstelle nach moderner Benennung |
| enp0s3 | Ethernet-Schnittstelle nach moderner Benennung |
| wlan0 | WLAN-Schnittstelle |
| docker0 | Docker-Bridge |
| br0 | Bridge |
| tun0 | VPN-Tunnel |
| wg0 | WireGuard-Schnittstelle |
Merksatz:
ip link zeigt,
welche Netzwerkinterfaces existieren und ob sie aktiv sind.
Loopback
Die Loopback-Adresse ist:
127.0.0.1
Der Name dazu ist meist:
localhost
Bedeutung:
Kommunikation mit dem eigenen System.
Beispiele:
curl http://127.0.0.1:8080
ping 127.0.0.1
Wichtig:
Wenn ein Dienst nur auf 127.0.0.1 lauscht,
ist er nur lokal auf dem Server erreichbar,
nicht von anderen Systemen.
Merksatz:
127.0.0.1 bedeutet:
dieses System selbst.
IP-Adressen anzeigen
IP-Adressen zeigt man mit:
ip addr
oder kurz:
ip a
Beispiel:
ip addr show eth0
Typische Informationen:
Schnittstellenname
MAC-Adresse
IPv4-Adresse
IPv6-Adresse
Status
Netzpräfix
Beispiel:
inet 192.168.1.50/24
Bedeutung:
IPv4-Adresse:
192.168.1.50
Präfix:
/24
Merksatz:
ip addr zeigt IP-Adressen und Präfixe.
IPv4-Adresse und Präfix
Beispiel:
192.168.10.25/24
Bedeutung:
IP-Adresse:
192.168.10.25
Präfix:
/24
Netz:
192.168.10.0/24
Ein Client mit /24 kann direkt mit anderen Geräten im gleichen Netz kommunizieren, zum Beispiel:
192.168.10.1
192.168.10.50
192.168.10.200
Für andere Netze braucht er ein Gateway.
Merksatz:
Präfix bestimmt,
was lokal erreichbar ist.
Routing-Tabelle anzeigen
Die Routing-Tabelle zeigt man mit:
ip route
Beispielausgabe:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.50
Bedeutung:
| Eintrag | Bedeutung |
|---|---|
| default via 192.168.1.1 | Standardgateway |
| dev eth0 | über Schnittstelle eth0 |
| 192.168.1.0/24 | lokales Netz |
| src 192.168.1.50 | eigene Quelladresse |
Merksatz:
ip route zeigt,
wohin Pakete gesendet werden.
Standardgateway
Das Standardgateway ist der Router in andere Netze.
In der Routing-Tabelle steht es meist als:
default via ...
Beispiel:
default via 192.168.1.1 dev eth0
Bedeutung:
Alle Ziele,
für die keine spezifischere Route existiert,
werden über 192.168.1.1 gesendet.
Wichtig:
Das Gateway muss im lokalen Subnetz erreichbar sein.
Merksatz:
Gateway führt aus dem lokalen Netz heraus.
Erreichbarkeit mit ping prüfen
ping prüft Erreichbarkeit per ICMP.
Beispiel:
ping 192.168.1.1
Nur 4 Pakete senden:
ping -c 4 192.168.1.1
Beispiele:
ping -c 4 127.0.0.1
ping -c 4 192.168.1.1
ping -c 4 8.8.8.8
ping -c 4 example.com
Wichtig:
ping prüft nicht,
ob ein TCP- oder UDP-Dienst funktioniert.
Merksatz:
ping prüft Host-Erreichbarkeit,
nicht Dienst-Erreichbarkeit.
ping richtig einordnen
| Ergebnis | Bedeutung |
|---|---|
| ping 127.0.0.1 geht | eigener Netzwerkstack funktioniert grundsätzlich |
| ping eigene IP geht | lokale IP ist aktiv |
| ping Gateway geht | lokales Netz zum Gateway funktioniert |
| ping externe IP geht | Routing ins externe Netz funktioniert |
| ping Domain geht nicht, IP geht | DNS-Problem wahrscheinlich |
| ping geht nicht | ICMP blockiert oder Ziel nicht erreichbar |
Wichtig:
Manche Systeme blockieren ICMP.
Dann kann ein Dienst trotzdem erreichbar sein.
Merksatz:
ping-Ergebnis immer im Zusammenhang bewerten.
DNS prüfen
DNS löst Namen in IP-Adressen auf.
Typische Befehle:
nslookup example.com
dig example.com
resolvectl status
Beispiel:
dig ulrich-wiki.com
Wichtig:
Wenn IP-Adressen erreichbar sind,
Namen aber nicht,
ist DNS wahrscheinlich das Problem.
Merksatz:
IP geht,
Name geht nicht:
DNS prüfen.
DNS-Server anzeigen
Je nach Distribution und Konfiguration gibt es verschiedene Wege.
Häufig:
cat /etc/resolv.conf
Bei systemd-resolved:
resolvectl status
Wichtig:
/etc/resolv.conf kann eine echte Datei
oder ein symbolischer Link auf systemd-resolved sein.
Merksatz:
DNS-Konfiguration hängt von Distribution und Resolver ab.
/etc/hosts
Die Datei:
/etc/hosts
enthält lokale Namenszuordnungen.
Beispiel:
127.0.0.1 localhost
192.168.1.10 server01.local
Wichtig:
Einträge in /etc/hosts können DNS-Abfragen übersteuern oder ergänzen.
Typische Nutzung:
lokale Tests
feste interne Namen
kleine Umgebungen
Fehleranalyse
Merksatz:
/etc/hosts ist lokale Namensauflösung.
Hostname anzeigen
Hostname anzeigen:
hostname
Mehr Informationen:
hostnamectl
Hostname setzen, wenn systemd genutzt wird:
hostnamectl set-hostname server01
Wichtig:
Hostname,
DNS-Name
und Eintrag in /etc/hosts sollten sinnvoll zusammenpassen.
Merksatz:
hostname zeigt den Systemnamen.
Ports und Verbindungen mit ss prüfen
Offene Ports und Verbindungen zeigt man mit:
ss
Häufige Variante:
ss -tulpen
Bedeutung:
| Option | Bedeutung |
|---|---|
| -t | TCP |
| -u | UDP |
| -l | listening |
| -p | Prozess anzeigen |
| -e | erweiterte Informationen |
| -n | numerisch, keine Namensauflösung |
Beispiel:
ss -tulpen
Merksatz:
ss zeigt,
welche Dienste auf welchen Ports lauschen.
LISTEN verstehen
Wenn ein Dienst auf einem Port wartet, steht er im Zustand:
LISTEN
Beispiel:
0.0.0.0:22
Bedeutung:
Der Dienst lauscht auf TCP 22 auf allen IPv4-Schnittstellen.
Beispiel:
127.0.0.1:8080
Bedeutung:
Der Dienst lauscht nur lokal auf dem System.
Merksatz:
LISTEN heißt:
Dienst wartet auf Verbindungen.
127.0.0.1 und 0.0.0.0
| Adresse | Bedeutung bei lauschendem Dienst |
|---|---|
| 127.0.0.1 | nur lokal erreichbar |
| 0.0.0.0 | auf allen IPv4-Schnittstellen erreichbar |
| ::1 | IPv6 localhost |
| :: | auf allen IPv6-Schnittstellen erreichbar |
Beispiel:
127.0.0.1:8080
nur lokal.
0.0.0.0:8080
grundsätzlich von außen erreichbar, wenn Firewall, Routing und Netz passen.
Merksatz:
127.0.0.1 ist lokal.
0.0.0.0 ist auf allen IPv4-Interfaces.
HTTP und HTTPS mit curl prüfen
curl kann HTTP- und HTTPS-Verbindungen testen.
Beispiele:
curl http://localhost
curl http://127.0.0.1:8080
curl https://example.com
Nur Header anzeigen:
curl -I https://example.com
Ausführlichere Verbindungsausgabe:
curl -v https://example.com
Typische Nutzung:
Webdienst prüfen
Reverse Proxy testen
HTTP-Statuscode sehen
TLS-Probleme erkennen
Merksatz:
curl prüft Webdienste direkt auf Anwendungsebene.
HTTP-Statuscodes kurz
| Code | Bedeutung |
|---|---|
| 200 | OK |
| 301 | dauerhaft weitergeleitet |
| 302 | temporär weitergeleitet |
| 400 | fehlerhafte Anfrage |
| 401 | nicht authentifiziert |
| 403 | verboten |
| 404 | nicht gefunden |
| 500 | interner Serverfehler |
| 502 | Bad Gateway |
| 503 | Dienst nicht verfügbar |
Merksatz:
ping prüft ICMP.
curl prüft HTTP oder HTTPS.
SSH
SSH steht für:
Secure Shell
SSH dient zur sicheren Fernadministration.
Typischer Port:
TCP 22
Beispiel:
ssh felix@192.168.1.10
Bedeutung:
Verbindung als Benutzer felix zum Server 192.168.1.10 herstellen.
SSH verschlüsselt die Verbindung und ist deshalb sicherer als Telnet.
Merksatz:
SSH = sichere Fernadministration über TCP 22.
SSH und Telnet
Telnet ist unsicher, weil es Daten unverschlüsselt überträgt.
SSH ist sicherer, weil es die Verbindung verschlüsselt.
| Protokoll | Sicherheit |
|---|---|
| Telnet | unverschlüsselt, unsicher |
| SSH | verschlüsselt, sicherer |
Merksatz:
Telnet vermeiden,
SSH nutzen.
SSH-Server und SSH-Client
SSH besteht aus Client und Server.
SSH-Client:
baut Verbindung auf
Beispiel:
ssh felix@server
SSH-Server:
nimmt Verbindungen an
Dienstname häufig:
ssh
oder:
sshd
Prüfen:
systemctl status ssh
oder je nach Distribution:
systemctl status sshd
Merksatz:
ssh ist der Client.
sshd ist der SSH-Dienst.
SSH-Konfiguration
Die wichtige SSH-Server-Konfiguration liegt häufig unter:
/etc/ssh/sshd_config
Typische Einstellungen:
Port
PermitRootLogin
PasswordAuthentication
PubkeyAuthentication
AllowUsers
ListenAddress
Wichtig:
Nach Änderungen SSH-Konfiguration prüfen,
Dienst neu laden oder neu starten
und bestehende Sitzung nicht sofort schließen.
Merksatz:
SSH-Änderungen vorsichtig durchführen,
damit man sich nicht aussperrt.
SSH-Root-Login
Direkter Root-Login per SSH ist sicherheitskritisch.
Risiken:
Angreifer kennen den Benutzernamen root
Brute-Force-Angriffe einfacher
Aktionen weniger personenbezogen nachvollziehbar
Besser:
normaler Benutzer meldet sich an
administrative Befehle gezielt mit sudo
Merksatz:
Kein direkter Root-Login per SSH,
wenn nicht zwingend nötig.
SSH-Passwort und SSH-Schlüssel
SSH kann verschiedene Authentifizierungsarten nutzen.
| Methode | Bedeutung |
|---|---|
| Passwort | Benutzer meldet sich mit Passwort an |
| Schlüssel | Anmeldung über privates und öffentliches Schlüsselpaar |
SSH-Schlüssel bestehen aus:
privatem Schlüssel
öffentlichem Schlüssel
Der öffentliche Schlüssel liegt auf dem Server. Der private Schlüssel bleibt beim Benutzer.
Merksatz:
Öffentlicher Schlüssel auf Server.
Privater Schlüssel bleibt geheim.
SSH-Schlüssel-Grundprinzip
Vereinfachtes Prinzip:
1. Benutzer besitzt privaten Schlüssel.
2. Server kennt passenden öffentlichen Schlüssel.
3. SSH prüft,
ob der private Schlüssel zum öffentlichen Schlüssel passt.
4. Der private Schlüssel wird nicht an den Server übertragen.
Wichtig:
Der private Schlüssel sollte mit einer Passphrase geschützt sein.
Merksatz:
Der private SSH-Schlüssel darf nicht weitergegeben werden.
Öffentliche SSH-Schlüssel eines Benutzers liegen häufig in:
~/.ssh/authorized_keys
Beispiel:
/home/felix/.ssh/authorized_keys
Wichtige Rechte:
~/.ssh sollte nicht für andere beschreibbar sein.
authorized_keys sollte nicht für andere beschreibbar sein.
Typische Rechte:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Merksatz:
SSH-Schlüsselzugriff hängt auch von Dateirechten ab.
SSH-Fehlerbilder
| Fehlerbild | Mögliche Ursache |
|---|---|
| Connection refused | SSH-Dienst läuft nicht oder Port falsch |
| Connection timed out | Firewall, Routing oder Ziel nicht erreichbar |
| Permission denied | Benutzer, Passwort oder Schlüssel falsch |
| Host key verification failed | Host-Key hat sich geändert |
| No route to host | Routingproblem oder Zielnetz nicht erreichbar |
| Port 22 nicht erreichbar | Firewall oder Dienstproblem |
| Login als root nicht möglich | PermitRootLogin deaktiviert |
Merksatz:
SSH-Fehler unterscheiden:
Netzwerk,
Port,
Dienst,
Schlüssel
oder Benutzer.
Host-Key
Beim ersten Verbinden speichert SSH den Host-Key des Servers.
Datei auf dem Client:
~/.ssh/known_hosts
Zweck:
prüfen,
ob man wieder mit demselben Server spricht.
Warnung:
Host key verification failed
kann bedeuten:
Server wurde neu installiert
IP zeigt auf anderes System
Host-Key wurde geändert
möglicher Man-in-the-Middle-Angriff
Merksatz:
Host-Key schützt vor unbemerktem Serverwechsel.
SCP und SFTP
SSH kann auch für Dateiübertragung genutzt werden.
SCP:
Dateiübertragung über SSH
SFTP:
SSH File Transfer Protocol
Beispiele:
scp datei.txt felix@server:/tmp/
sftp felix@server
Wichtig:
SFTP ist nicht dasselbe wie FTPS.
Merksatz:
SFTP nutzt SSH.
FTPS ist FTP mit TLS.
Firewall unter Linux
Eine Firewall filtert Netzwerkverkehr.
Sie kann entscheiden:
- welche Verbindungen erlaubt sind
- welche Ports erreichbar sind
- welche Quellen zugreifen dürfen
- welcher Verkehr blockiert wird
Linux-Firewall-Techniken:
iptables
nftables
firewalld
ufw
Wichtig:
Je nach Distribution wird ein anderes Werkzeug verwendet.
Merksatz:
Linux-Firewall kann mit unterschiedlichen Werkzeugen verwaltet werden.
ufw
ufw steht für:
Uncomplicated Firewall
ufw wird häufig bei Ubuntu verwendet und ist eine vereinfachte Oberfläche für Firewall-Regeln.
Typische Befehle:
ufw status
ufw allow 22/tcp
ufw allow 443/tcp
ufw deny 445/tcp
ufw enable
ufw disable
Wichtig:
Vor dem Aktivieren einer Firewall per SSH sicherstellen,
dass SSH erlaubt ist.
Merksatz:
Firewall per SSH nie aktivieren,
ohne SSH-Regel zu erlauben.
firewalld
firewalld wird häufig bei Fedora, Rocky Linux und ähnlichen Distributionen genutzt.
Typische Konzepte:
Zonen
Dienste
Ports
permanente Regeln
Beispielbefehle:
firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
Merksatz:
firewalld arbeitet stark mit Zonen und Diensten.
nftables
nftables ist ein moderner Linux-Firewall-Unterbau.
Es ersetzt in vielen Umgebungen ältere iptables-Strukturen.
Prüfen:
nft list ruleset
Wichtig:
nftables ist leistungsfähig,
aber weniger einsteigerfreundlich als ufw.
Merksatz:
nftables ist moderner Firewall-Unterbau unter Linux.
iptables
iptables ist ein älteres, aber noch häufig anzutreffendes Firewall-Werkzeug.
Prüfen:
iptables -L -n -v
Wichtig:
Auf modernen Systemen kann iptables intern auf nftables aufsetzen.
Merksatz:
iptables ist klassisch,
nftables ist moderner.
Firewall-Regeln vollständig denken
Eine Firewall-Regel sollte nicht nur aus einem Port bestehen.
Wichtige Angaben:
Quelle
Ziel
Protokoll
Port
Richtung
Aktion
Zweck
Beispiel:
Quelle:
Adminnetz
Ziel:
Linux-Server
Protokoll:
TCP
Port:
22
Aktion:
erlauben
Zweck:
SSH-Administration
Merksatz:
Port allein ist keine vollständige Firewall-Regel.
Lokale Firewall und Netzwerkfirewall
Ein Zugriff kann an mehreren Stellen blockiert werden.
Beispiele:
lokale Firewall auf dem Linux-Server
Firewall auf Router
Firewall zwischen VLANs
Cloud Security Group
Container-Firewall oder Docker-Regeln
Provider-Firewall
Merksatz:
Bei Portproblemen alle Filterstellen prüfen.
Dienst läuft, aber Zugriff geht nicht
Mögliche Ursachen:
Dienst lauscht nur auf 127.0.0.1
Dienst lauscht auf anderem Port
lokale Firewall blockiert
Netzwerkfirewall blockiert
Routingproblem
DNS zeigt auf falsche IP
falsches Protokoll TCP/UDP
Dienst erwartet TLS oder Hostname
Prüfen:
systemctl status dienst
ss -tulpen
ip addr
ip route
Firewall-Regeln
Logs
Merksatz:
Dienststatus allein reicht nicht.
Netzwerkdiagnose: sinnvolle Reihenfolge
Bei Linux-Netzwerkproblemen:
1. Schnittstelle aktiv?
2. IP-Adresse korrekt?
3. Route und Gateway korrekt?
4. DNS korrekt?
5. Ziel per IP erreichbar?
6. Ziel per Name erreichbar?
7. Port offen?
8. Dienst läuft?
9. Firewall-Regeln korrekt?
10. Logs prüfen
Merksatz:
Erst IP,
dann Route,
dann DNS,
dann Port,
dann Dienst.
Beispiel: Kein Internet
Fehlerbild:
Server kommt nicht ins Internet.
Prüfen:
ip addr
ip route
ping -c 4 gateway-ip
ping -c 4 8.8.8.8
ping -c 4 example.com
Mögliche Einordnung:
| Ergebnis | Ursache |
|---|---|
| keine IP | DHCP oder Interface |
| Gateway nicht erreichbar | lokales Netz oder Gateway |
| externe IP nicht erreichbar | Routing, NAT oder Firewall |
| Domain nicht erreichbar, IP geht | DNS |
Merksatz:
Kein Internet ist kein genauer Fehler.
Schrittweise eingrenzen.
Beispiel: Webseite geht nicht
Fehlerbild:
Webseite auf Linux-Server ist nicht erreichbar.
Prüfen:
systemctl status nginx
ss -tulpen
curl http://127.0.0.1
curl http://server-ip
ip addr
ip route
Firewall
journalctl -u nginx
Mögliche Ursachen:
Webserver läuft nicht
Port 80 oder 443 nicht offen
Dienst lauscht nur lokal
Firewall blockiert
falsche IP
Reverse Proxy falsch
Zertifikatproblem
Merksatz:
Webseite prüfen:
Dienst,
Port,
Bind-Adresse,
Firewall,
Logs.
Beispiel: SSH geht nicht
Fehlerbild:
SSH-Verbindung schlägt fehl.
Prüfen auf Clientseite:
ssh -v benutzer@server
Prüfen auf Serverseite:
systemctl status ssh
ss -tulpen
journalctl -u ssh
Firewall-Regeln
Benutzer und Rechte
~/.ssh/authorized_keys
Mögliche Ursachen:
Dienst läuft nicht
TCP 22 blockiert
falscher Benutzer
Schlüssel fehlt
Rechte auf .ssh falsch
Root-Login deaktiviert
Merksatz:
SSH-Fehler mit -v,
Dienststatus,
Port
und Logs eingrenzen.
Beispiel: DNS geht nicht
Fehlerbild:
IP funktioniert,
Name funktioniert nicht.
Prüfen:
cat /etc/resolv.conf
resolvectl status
dig name
nslookup name
ping -c 4 dns-server-ip
Firewall UDP/TCP 53
Mögliche Ursachen:
falscher DNS-Server
DNS-Server nicht erreichbar
falscher Suchsuffix
Firewall blockiert DNS
/etc/hosts überschreibt Namen
Merksatz:
IP ja,
Name nein:
DNS.
Typische Fehlerbilder
| Fehlerbild | Wahrscheinliches Thema |
|---|---|
| keine IP-Adresse | DHCP oder Interface |
| Gateway nicht erreichbar | lokales Netz, VLAN, Gateway |
| externe IP nicht erreichbar | Routing, NAT oder Firewall |
| IP erreichbar, Name nicht | DNS |
| Dienst läuft, Port nicht erreichbar | Firewall, Bind-Adresse, Port |
| Port lauscht auf 127.0.0.1 | nur lokal erreichbar |
| SSH Connection refused | Dienst läuft nicht oder Port falsch |
| SSH Connection timed out | Firewall oder Routing |
| SSH Permission denied | Benutzer, Passwort oder Schlüssel |
| curl zeigt 404 | Ressource oder Pfad nicht gefunden |
| curl zeigt 502 | Proxy oder Backendproblem |
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Wofür ist ip addr? | IP-Adressen anzeigen |
| Wofür ist ip route? | Routing-Tabelle anzeigen |
| Was ist default via? | Standardgateway |
| Wofür ist ping? | ICMP-Erreichbarkeit prüfen |
| Warum ersetzt ping keinen Porttest? | ping prüft nicht TCP/UDP-Dienste |
| Wofür ist ss? | Ports und Verbindungen anzeigen |
| Was bedeutet LISTEN? | Dienst wartet auf Verbindungen |
| Was bedeutet 127.0.0.1? | localhost, nur eigenes System |
| Was bedeutet 0.0.0.0 bei Diensten? | alle IPv4-Schnittstellen |
| Was ist SSH? | sichere Fernadministration |
| Welchen Port nutzt SSH? | TCP 22 |
| Warum ist Telnet unsicher? | unverschlüsselte Übertragung |
| Was ist /etc/hosts? | lokale Namensauflösung |
| Was ist ufw? | einfache Firewall-Verwaltung |
| Was ist firewalld? | Firewall-Verwaltung mit Zonen |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| ping geht, also Dienst geht | falsch, ping prüft nur ICMP |
| 127.0.0.1 als extern erreichbar verstehen | nur lokal |
| 0.0.0.0 als Zieladresse verwenden | bei LISTEN bedeutet alle Interfaces |
| DNS und Internet verwechseln | IP kann gehen, DNS trotzdem nicht |
| SSH-Problem nur als Passwortproblem sehen | Netzwerk, Port, Dienst, Schlüssel prüfen |
| Firewall nur lokal prüfen | auch Netzwerkfirewall, Cloud, Router prüfen |
| Portnummer ohne TCP/UDP nennen | unvollständig |
| SSH-Root-Login erlauben | Sicherheitsrisiko |
| private SSH-Schlüssel weitergeben | niemals weitergeben |
| /etc/hosts vergessen | kann Namensauflösung beeinflussen |
IHK-sichere Kurzformulierung
Unter Linux werden Netzwerkprobleme systematisch mit Werkzeugen wie ip addr, ip route, ping, dig, nslookup, ss, curl und journalctl geprüft. ip addr zeigt IP-Adressen und Schnittstellen, ip route zeigt Routing-Tabelle und Standardgateway. ping prüft die ICMP-Erreichbarkeit, ersetzt aber keinen Port- oder Diensttest. ss zeigt, welche Dienste auf welchen TCP- oder UDP-Ports lauschen. DNS-Probleme erkennt man häufig daran, dass eine IP-Adresse erreichbar ist, ein Name aber nicht aufgelöst wird. SSH dient der sicheren Fernadministration über TCP 22 und ist Telnet vorzuziehen, weil die Verbindung verschlüsselt ist. Bei Verbindungsproblemen müssen Dienststatus, Port, Bind-Adresse, Firewall, Routing, DNS und Logs gemeinsam geprüft werden.
Merksätze
Netzwerkfehler systematisch eingrenzen.
ip addr zeigt IP-Adressen.
ip link zeigt Schnittstellen.
ip route zeigt Routing.
default via ist das Standardgateway.
ping prüft ICMP.
ping ist kein Porttest.
DNS löst Namen auf.
IP ja,
Name nein:
DNS.
ss zeigt Ports und Verbindungen.
LISTEN heißt:
Dienst wartet.
127.0.0.1 heißt:
nur lokal.
0.0.0.0 heißt:
alle IPv4-Interfaces.
curl prüft HTTP und HTTPS.
SSH nutzt TCP 22.
SSH ist verschlüsselt.
Telnet ist unverschlüsselt.
ssh ist der Client.
sshd ist der Dienst.
Privater SSH-Schlüssel bleibt geheim.
authorized_keys enthält öffentliche Schlüssel.
Host-Key schützt vor unbemerktem Serverwechsel.
ufw ist eine einfache Firewall-Oberfläche.
firewalld arbeitet mit Zonen.
nftables ist moderner Firewall-Unterbau.
iptables ist klassisch.
Firewall-Regeln brauchen Quelle,
Ziel,
Protokoll,
Port,
Aktion
und Zweck.
Dienst läuft heißt nicht automatisch:
Dienst ist erreichbar.
Erst IP,
dann Route,
dann DNS,
dann Port,
dann Dienst,
dann Logs.
8. Speicher, Mounts und Dateisysteme
8.1 Speicher, Mounts und Dateisysteme
Linux verwaltet Datenträger, Partitionen, Dateisysteme und eingebundene Speicherbereiche anders als Windows.
Es gibt keine Laufwerksbuchstaben wie C: oder D:. Stattdessen werden Dateisysteme in den gemeinsamen Verzeichnisbaum eingehängt.
Dieses Einhängen nennt man:
Mounten
Für Fachinformatiker Systemintegration ist dieses Thema wichtig, weil Server, NAS-Systeme, Backups, Container, Logdateien, Datenbanken und Freigaben sehr häufig von korrektem Speicherplatz, Mountpoints und Dateisystemen abhängen.
Merksatz:
Linux hängt Speicher in den Verzeichnisbaum ein.
Lernziele
Nach dieser Seite solltest du erklären können:
- was ein Datenträger ist
- was eine Partition ist
- was ein Dateisystem ist
- was ein Mountpoint ist
- wie man Speicherplatz prüft
- wie man Datenträger und Partitionen anzeigt
- was /etc/fstab macht
- was df,
du,
lsblk,
mount
und umount machen
- warum volle Dateisysteme Dienste stören können
- welche typischen Speicherfehler unter Linux auftreten
Grundidee
Ein Linux-System kann verschiedene Speicherbereiche nutzen:
- interne SSDs
- interne HDDs
- externe USB-Datenträger
- Netzlaufwerke
- NAS-Freigaben
- virtuelle Datenträger
- Container-Volumes
- RAM-Dateisysteme
- Backup-Speicher
Damit Daten dort gespeichert werden können, braucht man meistens:
1. Datenträger
2. Partition oder Volume
3. Dateisystem
4. Mountpoint
5. Einbindung ins System
Merksatz:
Datenträger allein reicht nicht.
Er muss passend partitioniert,
formatiert
und eingebunden sein.
Datenträger
Ein Datenträger ist das physische oder virtuelle Speichermedium.
Beispiele:
- SSD
- HDD
- USB-Stick
- SD-Karte
- virtuelles Laufwerk einer VM
- iSCSI-LUN
- Cloud-Block-Storage
Unter Linux erscheinen Datenträger häufig unter:
/dev
Beispiele:
/dev/sda
/dev/sdb
/dev/nvme0n1
Merksatz:
Datenträger erscheinen unter Linux oft als Gerätedateien unter /dev.
Partition
Eine Partition ist ein Bereich auf einem Datenträger.
Beispiel:
/dev/sda
ist der Datenträger.
/dev/sda1
ist die erste Partition auf diesem Datenträger.
Bei NVMe-Datenträgern sieht es oft so aus:
/dev/nvme0n1
Datenträger
/dev/nvme0n1p1
erste Partition
/dev/nvme0n1p2
zweite Partition
Merksatz:
Datenträger ist das Gerät.
Partition ist ein Bereich darauf.
Dateisystem
Ein Dateisystem legt fest, wie Dateien und Verzeichnisse auf einem Speicher organisiert werden.
Beispiele für Dateisysteme:
| Dateisystem | Typischer Einsatz |
|---|---|
| ext4 | sehr verbreitet unter Linux |
| XFS | häufig auf Servern |
| Btrfs | Snapshots, moderne Funktionen |
| ZFS | Integrität, Snapshots, Storage-Systeme |
| FAT32 | einfache Wechselmedien |
| exFAT | größere Wechselmedien |
| NTFS | Windows-Dateisystem |
| tmpfs | Dateisystem im RAM |
Merksatz:
Dateisystem = Organisationsform für Dateien auf Speicher.
Formatieren
Beim Formatieren wird auf einer Partition oder einem Volume ein Dateisystem erstellt.
Beispiel:
ext4-Dateisystem auf einer Partition erstellen
Wichtig:
Formatieren löscht normalerweise vorhandene Daten
oder macht sie nicht mehr direkt nutzbar.
Merksatz:
Formatieren ist gefährlich,
wenn Daten erhalten bleiben sollen.
Mountpoint
Ein Mountpoint ist ein Verzeichnis, an dem ein Dateisystem eingebunden wird.
Beispiele:
/mnt/backup
/media/usb
/srv/data
/var/lib/docker
Wenn ein Dateisystem dort gemountet ist, erscheinen seine Inhalte an dieser Stelle im Verzeichnisbaum.
Merksatz:
Mountpoint = Einhängepunkt im Verzeichnisbaum.
mount
Mit mount kann man anzeigen, welche Dateisysteme aktuell eingebunden sind.
Befehl:
mount
Gefiltert anzeigen:
mount | grep /mnt
Ein Dateisystem manuell einhängen:
mount /dev/sdb1 /mnt/backup
Wichtig:
Der Mountpoint muss existieren.
Beispiel:
mkdir -p /mnt/backup
mount /dev/sdb1 /mnt/backup
Merksatz:
mount hängt Dateisysteme ein oder zeigt Mounts an.
umount
Mit umount wird ein Dateisystem ausgehängt.
Beispiel:
umount /mnt/backup
oder:
umount /dev/sdb1
Wichtig:
Der Befehl heißt umount,
nicht unmount.
Wenn ein Dateisystem noch benutzt wird, kann umount fehlschlagen.
Mögliche Ursache:
Datei ist noch offen
Prozess nutzt das Verzeichnis
Shell befindet sich im Mountpoint
Merksatz:
umount hängt ein Dateisystem aus.
Warum umount fehlschlagen kann
Fehlerbild:
target is busy
Bedeutung:
Das Dateisystem wird noch verwendet.
Mögliche Ursachen:
Terminal befindet sich im Verzeichnis
Prozess liest oder schreibt Dateien
Dienst nutzt den Mount
Datei ist geöffnet
Prüfen kann man je nach System mit Werkzeugen wie:
lsof
fuser
Merksatz:
Ein benutzter Mount kann nicht sauber ausgehängt werden.
lsblk
lsblk zeigt Blockgeräte übersichtlich an.
Befehl:
lsblk
Mit Dateisysteminformationen:
lsblk -f
Typische Ausgabe enthält:
Name
Größe
Typ
Mountpoint
Dateisystem
UUID
Beispiel:
sda
├─sda1 ext4 /
└─sda2 swap
Merksatz:
lsblk zeigt Datenträger,
Partitionen
und Mountpoints.
df
df zeigt belegten und freien Speicherplatz von eingehängten Dateisystemen.
Häufiger Befehl:
df -h
Bedeutung:
| Spalte | Bedeutung |
|---|---|
| Filesystem | Dateisystem oder Gerät |
| Size | Gesamtgröße |
| Used | belegt |
| Avail | frei |
| Use% | prozentuale Nutzung |
| Mounted on | Mountpoint |
Merksatz:
df zeigt,
wie voll Dateisysteme sind.
df -h
Die Option -h bedeutet:
human-readable
Also:
menschenlesbar
Beispiel:
df -h
zeigt Größen in:
K
M
G
T
statt nur in Blöcken oder Bytes.
Merksatz:
df -h ist Standard zur Speicherplatzprüfung.
du
du zeigt, wie viel Speicher Dateien oder Verzeichnisse belegen.
Beispiele:
du -sh /var/log
du -sh /home/felix
du -h /var/log
Bedeutung:
| Befehl | Bedeutung |
|---|---|
| du -sh ordner | Gesamtgröße eines Ordners |
| du -h ordner | Größen rekursiv anzeigen |
| du -sh * | Größen im aktuellen Verzeichnis zusammenfassen |
Merksatz:
df zeigt Dateisysteme.
du zeigt Verzeichnisgrößen.
df und du unterscheiden
| Befehl | Zeigt |
|---|---|
| df | freien und belegten Platz von Dateisystemen |
| du | Speicherverbrauch von Dateien und Ordnern |
Beispiel:
df -h
zeigt, ob /var voll ist.
du -sh /var/log
zeigt, wie groß der Logordner ist.
Merksatz:
df für Dateisystem.
du für Ordner.
Speicherplatz voll
Wenn ein Dateisystem voll ist, können viele Probleme entstehen.
Mögliche Folgen:
Dienste starten nicht
Logs können nicht geschrieben werden
Datenbanken stoppen oder beschädigen Transaktionen
Updates schlagen fehl
Benutzer können keine Dateien speichern
Backups schlagen fehl
temporäre Dateien können nicht erstellt werden
System wird instabil
Merksatz:
Volle Dateisysteme verursachen viele scheinbar unterschiedliche Fehler.
Typische volle Verzeichnisse
Häufige Ursachen für vollen Speicher:
| Verzeichnis | Möglicher Grund |
|---|---|
| /var/log | zu viele oder zu große Logs |
| /var/lib | Datenbanken, Docker, Anwendungen |
| /tmp | temporäre Dateien |
| /home | Benutzerdateien |
| /var/cache | Paketcache oder Anwendungscache |
| /var/spool | Warteschlangen, Mail, Druck |
| /backup | alte Sicherungen |
Merksatz:
Bei vollem Speicher zuerst /var,
Logs,
Cache
und Anwendungsdaten prüfen.
Inodes
Neben Speicherplatz gibt es Inodes.
Ein Inode ist eine Verwaltungsstruktur für Dateien.
Ein Dateisystem kann voll sein, auch wenn noch Speicherplatz frei ist, wenn alle Inodes verbraucht sind.
Prüfen:
df -i
Typische Ursache:
sehr viele kleine Dateien
Beispiele:
Cache-Dateien
Session-Dateien
Mailspool
temporäre Dateien
Merksatz:
Speicher kann auch durch zu viele Dateien knapp werden.
df -i
df -i zeigt Inode-Nutzung.
Beispiel:
df -i
Wichtige Spalten:
Inodes
IUsed
IFree
IUse%
Wenn IUse% bei 100 Prozent liegt, können keine neuen Dateien mehr angelegt werden, auch wenn noch Speicherplatz frei ist.
Merksatz:
df -i prüft,
ob zu viele Dateien existieren.
/etc/fstab
Die Datei:
/etc/fstab
legt fest, welche Dateisysteme beim Systemstart automatisch eingebunden werden.
fstab steht für:
file system table
Typische Inhalte:
Gerät oder UUID
Mountpoint
Dateisystemtyp
Mountoptionen
Dump
fsck-Reihenfolge
Beispielzeile:
UUID=abcd-1234 /mnt/backup ext4 defaults 0 2
Merksatz:
/etc/fstab regelt automatische Mounts beim Start.
Warum UUIDs in fstab sinnvoll sind
Gerätenamen wie /dev/sdb1 können sich ändern, zum Beispiel wenn Datenträger in anderer Reihenfolge erkannt werden.
UUIDs sind eindeutige Kennungen von Dateisystemen.
Anzeigen:
lsblk -f
oder:
blkid
Vorteil:
Mounts bleiben stabiler,
auch wenn sich Gerätenamen ändern.
Merksatz:
UUID ist zuverlässiger als /dev/sdX für dauerhafte Mounts.
fstab-Fehler
Fehler in /etc/fstab können dazu führen, dass das System beim Start Probleme bekommt oder ein Dateisystem nicht eingehängt wird.
Typische Fehler:
falsche UUID
falscher Mountpoint
Mountpoint existiert nicht
falscher Dateisystemtyp
falsche Optionen
Netzwerkfreigabe beim Boot nicht erreichbar
Sicher prüfen:
mount -a
Bedeutung:
mount -a versucht,
alle fstab-Einträge einzuhängen.
Merksatz:
fstab-Änderungen immer testen,
bevor man neu startet.
mount -a
Der Befehl:
mount -a
liest /etc/fstab und versucht, alle noch nicht gemounteten Einträge einzuhängen.
Nutzen:
fstab testen
Fehler vor Neustart erkennen
Wichtig:
Bei Fehlern Ausgabe genau lesen.
Merksatz:
mount -a prüft fstab praktisch.
Mountoptionen
Mountoptionen steuern, wie ein Dateisystem eingebunden wird.
Beispiele:
| Option | Bedeutung |
|---|---|
| defaults | Standardoptionen |
| ro | read-only, nur lesbar |
| rw | read-write, lesbar und beschreibbar |
| noexec | keine Programme ausführen |
| nosuid | SetUID ignorieren |
| nodev | Gerätedateien ignorieren |
| noatime | Zugriffszeit nicht ständig aktualisieren |
| user | Benutzer dürfen mounten |
Merksatz:
Mountoptionen beeinflussen Sicherheit und Verhalten.
read-only Mount
Ein Dateisystem kann nur lesbar eingebunden sein.
Anzeige möglich über:
mount
oder:
findmnt
Typische Ursache:
bewusst so konfiguriert
Dateisystemfehler
Schutzmodus
Rettungsmodus
Folge:
Schreiben ist nicht möglich.
Merksatz:
ro bedeutet read-only.
rw bedeutet read-write.
findmnt
findmnt zeigt Mounts übersichtlich an.
Befehl:
findmnt
Bestimmten Mountpoint prüfen:
findmnt /mnt/backup
Merksatz:
findmnt zeigt eingebundene Dateisysteme strukturiert.
blkid
blkid zeigt Informationen zu Blockgeräten.
Befehl:
blkid
Typische Informationen:
UUID
Dateisystemtyp
Label
Merksatz:
blkid hilft,
UUIDs und Dateisysteme zu erkennen.
Dateisystemprüfung
Dateisysteme können geprüft und repariert werden.
Typisches Werkzeug:
fsck
Wichtig:
Dateisysteme sollten in der Regel nicht im eingehängten,
aktiv genutzten Zustand repariert werden.
Risiko:
Datenverlust
weitere Beschädigung
inkonsistenter Zustand
Merksatz:
fsck vorsichtig verwenden,
besonders auf produktiven Systemen.
Swap
Swap ist Auslagerungsspeicher.
Wenn RAM knapp wird, kann Linux Speicherbereiche auf Datenträger auslagern.
Swap kann sein:
Swap-Partition
Swap-Datei
Prüfen:
swapon --show
free -h
Wichtig:
Swap ersetzt keinen ausreichenden RAM.
Sehr starke Swap-Nutzung kann das System langsam machen.
Merksatz:
Swap hilft bei Speicherdruck,
ist aber langsamer als RAM.
free -h
free zeigt Arbeitsspeicher und Swap.
Befehl:
free -h
Typische Werte:
total
used
free
available
swap
Merksatz:
free -h zeigt RAM und Swap.
Speicher und Container
Container nutzen häufig:
Images
Container-Dateisysteme
Volumes
Bind Mounts
Logs
Caches
Typische Speicherorte je nach System:
/var/lib/docker
/var/lib/containerd
Wichtig:
Container-Logs,
Images
und Volumes können viel Speicher belegen.
Merksatz:
Container können Speicher durch Images,
Volumes
und Logs verbrauchen.
Volumes und Bind Mounts
Container können Daten außerhalb des Containers speichern.
Volume:
vom Container-System verwalteter Speicher
Bind Mount:
bestimmter Host-Ordner wird in Container eingebunden
Beispielhafte Idee:
Host-Ordner:
/srv/appdata
im Container:
/data
Vorteil:
Daten bleiben erhalten,
auch wenn der Container neu erstellt wird.
Merksatz:
Containerdaten sollten nicht nur im Container-Dateisystem liegen.
Netzwerkspeicher
Linux kann Netzwerkspeicher einbinden.
Beispiele:
NFS
SMB/CIFS
SSHFS
Typische Nutzung:
Backups
gemeinsame Daten
NAS-Freigaben
zentrale Projektordner
Wichtig:
Netzwerk-Mounts hängen von Netzwerk,
DNS,
Berechtigungen
und Serververfügbarkeit ab.
Merksatz:
Netzwerkspeicher braucht Netzwerk und Rechte.
NFS
NFS steht für:
Network File System
Typischer Einsatz:
Linux/Unix-Netzwerkfreigaben
Vorteile:
gut in Linux-Umgebungen integriert
geeignet für Server-zu-Server-Freigaben
Wichtig:
Rechte,
UID/GID
und Export-Regeln müssen passen.
Merksatz:
NFS ist typisch für Linux/Unix-Freigaben.
SMB/CIFS
SMB wird häufig für Windows-Freigaben genutzt, kann aber auch unter Linux eingebunden werden.
Typische Nutzung:
Windows-Freigaben
NAS-Freigaben
gemischte Umgebungen
Wichtig:
Benutzer,
Passwort,
Domain,
Rechte
und Mountoptionen müssen passen.
Merksatz:
SMB/CIFS ist typisch für Windows-
und NAS-Freigaben.
Backup-Speicher
Backup-Speicher sollte besonders geschützt werden.
Wichtig:
getrennte Rechte
keine normalen Benutzer mit Löschrechten
Monitoring
genügend Speicherplatz
Retention
Restore-Test
Schutz vor Ransomware
Merksatz:
Backup-Speicher ist sicherheitskritisch.
Typische Speicherbefehle
| Befehl | Zweck |
|---|---|
| lsblk | Datenträger und Partitionen anzeigen |
| lsblk -f | Dateisysteme und UUIDs anzeigen |
| blkid | UUIDs und Dateisystemtypen anzeigen |
| df -h | Speicherplatz von Dateisystemen anzeigen |
| df -i | Inode-Nutzung anzeigen |
| du -sh ordner | Größe eines Ordners anzeigen |
| mount | Mounts anzeigen oder einhängen |
| umount | Dateisystem aushängen |
| findmnt | Mounts strukturiert anzeigen |
| free -h | RAM und Swap anzeigen |
| swapon --show | Swap anzeigen |
Typische Fehlerbilder
| Fehlerbild | Wahrscheinliche Ursache |
|---|---|
| No space left on device | Speicherplatz oder Inodes voll |
| Read-only file system | Dateisystem nur lesbar eingebunden oder Fehler |
| target is busy | Mount wird noch verwendet |
| mount: wrong fs type | falscher Dateisystemtyp oder fehlender Treiber |
| Mount nach Neustart fehlt | fstab fehlt oder fehlerhaft |
| System startet mit Mountfehler | fstab-Fehler |
| Dienst kann nicht schreiben | Rechte, voller Speicher oder read-only |
| Backup schlägt fehl | Ziel voll, nicht gemountet oder Rechteproblem |
| Daten scheinbar verschwunden | Mount nicht aktiv oder anderer Mount überlagert Verzeichnis |
| Container belegt viel Speicher | Images, Volumes oder Logs |
No space left on device
Diese Meldung bedeutet:
Auf dem Ziel-Dateisystem kann nicht geschrieben werden.
Mögliche Ursachen:
Speicherplatz voll
Inodes voll
Quota erreicht
Prüfen:
df -h
df -i
du -sh pfad
Merksatz:
Bei No space left on device Speicherplatz und Inodes prüfen.
Read-only file system
Diese Meldung bedeutet:
Das Dateisystem ist nur lesbar eingebunden.
Mögliche Ursachen:
bewusst read-only gemountet
Dateisystemfehler
Schutzmodus nach Fehler
Rettungssystem
Prüfen:
mount
findmnt
Logs
Merksatz:
read-only verhindert Schreibzugriffe.
Mount überlagert vorhandene Daten
Wenn ein Dateisystem auf ein Verzeichnis gemountet wird, verdeckt es die bisherigen Inhalte dieses Verzeichnisses.
Beispiel:
In /mnt/data liegen Dateien.
Dann wird ein anderes Dateisystem auf /mnt/data gemountet.
Nun sieht man die Inhalte des gemounteten Dateisystems.
Die ursprünglichen Dateien sind nicht weg, aber durch den Mount verdeckt.
Merksatz:
Mounts können vorhandene Verzeichnisinhalte verdecken.
Sicheres Vorgehen bei fstab-Änderungen
Vor Änderung:
aktuelle fstab sichern
cp /etc/fstab /etc/fstab.bak
Änderung durchführen:
nano /etc/fstab
Testen:
mount -a
Prüfen:
findmnt
df -h
Wichtig:
Erst testen,
dann neu starten.
Merksatz:
fstab nie ungetestet ändern.
Sichere Arbeitsweise bei Speicherproblemen
Bei Speicherproblemen:
1. Fehler genau lesen
2. df -h prüfen
3. df -i prüfen
4. du -sh für große Ordner nutzen
5. Logs prüfen
6. Mountstatus prüfen
7. Rechte prüfen
8. Dienste erst danach neu starten
Nicht sofort:
wahllos Dateien löschen
Logs blind entfernen
Datenbanken im laufenden Betrieb löschen
Backup-Verzeichnisse ohne Prüfung leeren
Merksatz:
Speicherprobleme erst messen,
dann gezielt bereinigen.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist ein Datenträger? | physisches oder virtuelles Speichermedium |
| Was ist eine Partition? | Bereich auf einem Datenträger |
| Was ist ein Dateisystem? | Organisationsform für Dateien |
| Was ist ein Mountpoint? | Einhängepunkt im Verzeichnisbaum |
| Was macht mount? | Dateisystem einhängen oder Mounts anzeigen |
| Was macht umount? | Dateisystem aushängen |
| Was zeigt lsblk? | Datenträger und Partitionen |
| Was zeigt df -h? | freien und belegten Speicherplatz |
| Was zeigt du -sh? | Größe eines Ordners |
| Was zeigt df -i? | Inode-Nutzung |
| Was macht /etc/fstab? | automatische Mounts beim Systemstart |
| Warum UUID statt /dev/sdb1? | stabiler bei wechselnder Geräteerkennung |
| Was ist Swap? | Auslagerungsspeicher |
| Was bedeutet read-only? | nur lesbar eingebunden |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| Linux mit C: und D: erklären | Linux nutzt Mountpoints |
| df und du verwechseln | df Dateisystem, du Ordner |
| Speicher frei, aber keine Datei möglich | Inodes prüfen |
| fstab ungetestet ändern | immer mount -a testen |
| /dev/sdb1 fest erwarten | Gerätenamen können sich ändern |
| UUID ignorieren | für dauerhafte Mounts besser |
| umount falsch als unmount schreiben | Befehl heißt umount |
| Mountpoint nicht vorhanden | Verzeichnis vorher erstellen |
| Mount verdeckt vorhandene Daten | Daten sind überlagert |
| Swap mit RAM gleichsetzen | Swap ist langsamer Auslagerungsspeicher |
| Containerdaten im Container lassen | Volumes oder Bind Mounts nutzen |
| Backup-Speicher normal freigeben | Sicherheitsrisiko |
IHK-sichere Kurzformulierung
Linux verwendet keine Laufwerksbuchstaben, sondern bindet Dateisysteme über Mountpoints in den gemeinsamen Verzeichnisbaum ein. Ein Datenträger kann in Partitionen aufgeteilt werden, auf denen Dateisysteme wie ext4, XFS oder Btrfs erstellt werden. Mit lsblk werden Datenträger und Partitionen angezeigt, df -h zeigt belegten und freien Speicherplatz von Dateisystemen und du -sh zeigt die Größe einzelner Verzeichnisse. Die Datei /etc/fstab legt fest, welche Dateisysteme beim Systemstart automatisch eingebunden werden. Für dauerhafte Mounts sind UUIDs oft zuverlässiger als Gerätenamen wie /dev/sdb1, weil sich Gerätenamen ändern können. Bei Speicherproblemen sollten Speicherplatz, Inodes, Mountstatus, Rechte und Logs geprüft werden.
Merksätze
Linux nutzt Mountpoints statt Laufwerksbuchstaben.
Datenträger erscheinen oft unter /dev.
Partition = Bereich auf einem Datenträger.
Dateisystem = Organisationsform für Dateien.
Mountpoint = Einhängepunkt.
mount hängt ein.
umount hängt aus.
Der Befehl heißt umount,
nicht unmount.
lsblk zeigt Datenträger und Partitionen.
lsblk -f zeigt Dateisysteme und UUIDs.
df -h zeigt Speicherplatz von Dateisystemen.
du -sh zeigt Größe eines Ordners.
df -i zeigt Inode-Nutzung.
No space left on device:
Speicherplatz oder Inodes prüfen.
/etc/fstab regelt automatische Mounts.
fstab-Änderungen mit mount -a testen.
UUIDs sind stabiler als /dev/sdX.
ro bedeutet read-only.
rw bedeutet read-write.
findmnt zeigt Mounts übersichtlich.
Swap ist Auslagerungsspeicher.
Swap ist langsamer als RAM.
Netzwerk-Mounts brauchen Netzwerk,
DNS
und Rechte.
Containerdaten brauchen Volumes oder Bind Mounts.
Backup-Speicher besonders schützen.
Mounts können vorhandene Verzeichnisinhalte verdecken.
Erst messen,
dann löschen.
9. Logs, Monitoring und Fehlersuche
9.1 Logs, Monitoring und Fehlersuche
Logs und Monitoring sind zentrale Werkzeuge, um Linux-Systeme zu überwachen, Fehler zu finden und Sicherheitsereignisse nachzuvollziehen.
Unter Linux werden viele Ereignisse protokolliert:
- Systemstarts
- Dienststarts
- Fehler
- Warnungen
- Anmeldungen
- SSH-Zugriffe
- Kernelmeldungen
- Paketinstallationen
- Netzwerkprobleme
- Sicherheitsereignisse
Für Fachinformatiker Systemintegration ist dieses Thema besonders wichtig, weil man im Serverbetrieb nicht nur Befehle ausführt, sondern Probleme gezielt anhand von Logs, Messwerten und Statusinformationen eingrenzen muss.
Merksatz:
Gute Fehlersuche basiert auf Logs,
Messwerten
und systematischer Eingrenzung.
Lernziele
Nach dieser Seite solltest du erklären können:
- was Logs sind
- wo Linux-Logs häufig liegen
- was journalctl macht
- was /var/log enthält
- wie man Dienstlogs prüft
- wie man aktuelle Logeinträge live mitliest
- wie man CPU,
RAM,
Speicher
und Prozesse prüft
- wie man typische Fehlerbilder systematisch eingrenzt
- warum Monitoring wichtig ist
- was Alerting bedeutet
Grundidee
Logs sind Protokolle von Ereignissen.
Sie helfen bei Fragen wie:
- Warum startet ein Dienst nicht?
- Warum schlägt eine Anmeldung fehl?
- Warum ist ein Server langsam?
- Warum ist Speicher voll?
- Warum wird eine Verbindung blockiert?
- Wann trat der Fehler erstmals auf?
- Welcher Benutzer war beteiligt?
- Welche Meldung schreibt der Dienst?
Merksatz:
Logs beantworten oft:
was,
wann,
wo
und warum etwas passiert ist.
Typische Logquellen
| Quelle | Bedeutung |
|---|---|
| systemd-Journal | zentrale systemd-Logs |
| /var/log | klassische Logdateien |
| Dienstlogs | Logs einzelner Anwendungen |
| Kernelmeldungen | Hardware, Treiber, Kernel |
| Authentifizierungslogs | Login, sudo, SSH |
| Paketmanager-Logs | Installationen und Updates |
| Webserver-Logs | HTTP-Zugriffe und Fehler |
| Firewall-Logs | erlaubter oder blockierter Verkehr |
| Anwendungslogs | Fehler und Ereignisse von Anwendungen |
Merksatz:
Nicht alle Logs liegen an derselben Stelle.
/var/log
Viele klassische Logdateien liegen unter:
/var/log
Beispiele:
| Pfad | Bedeutung |
|---|---|
| /var/log/syslog | allgemeine Systemmeldungen, häufig Debian/Ubuntu |
| /var/log/messages | allgemeine Systemmeldungen, häufig RHEL/Fedora-Umfeld |
| /var/log/auth.log | Authentifizierung, häufig Debian/Ubuntu |
| /var/log/secure | Authentifizierung, häufig RHEL/Fedora-Umfeld |
| /var/log/kern.log | Kernelmeldungen, je nach Distribution |
| /var/log/dmesg | Boot- und Kernelmeldungen, je nach Distribution |
| /var/log/nginx | Nginx-Logs |
| /var/log/apache2 | Apache-Logs |
| /var/log/apt | apt-Logs |
| /var/log/journal | dauerhaftes systemd-Journal, falls aktiviert |
Wichtig:
Welche Dateien vorhanden sind,
hängt von Distribution,
Diensten
und Logging-Konfiguration ab.
Merksatz:
/var/log ist der klassische Ort für Logdateien.
systemd-Journal
Auf vielen modernen Linux-Systemen sammelt systemd Logs im Journal.
Das Journal enthält unter anderem:
- Systemmeldungen
- Dienstmeldungen
- Bootmeldungen
- Fehler
- Warnungen
- Logs einzelner Units
Auswertung mit:
journalctl
Merksatz:
journalctl liest das systemd-Journal.
journalctl Grundlagen
Alle Journal-Einträge anzeigen:
journalctl
Letzte Einträge anzeigen:
journalctl -n 50
Live mitlesen:
journalctl -f
Logs seit letztem Boot:
journalctl -b
Logs eines Dienstes:
journalctl -u ssh
Live-Logs eines Dienstes:
journalctl -u ssh -f
Merksatz:
journalctl ist eines der wichtigsten Werkzeuge für Linux-Fehlersuche.
Dienstlogs mit journalctl
Wenn ein Dienst Probleme macht, prüft man zuerst:
systemctl status dienstname
Dann:
journalctl -u dienstname
Beispiel:
systemctl status nginx
journalctl -u nginx
Nur letzte Einträge:
journalctl -u nginx -n 50
Live mitlesen:
journalctl -u nginx -f
Seit letztem Boot:
journalctl -u nginx -b
Merksatz:
Dienstproblem:
status prüfen,
dann journalctl -u.
Zeitfilter bei journalctl
journalctl kann nach Zeit filtern.
Beispiele:
journalctl --since "1 hour ago"
journalctl --since "today"
journalctl --since "2026-07-08 10:00"
journalctl --until "2026-07-08 12:00"
Kombiniert mit Dienst:
journalctl -u ssh --since "today"
Merksatz:
Zeitfilter helfen,
Fehler auf einen Zeitraum einzugrenzen.
Prioritäten bei journalctl
Logs haben Prioritäten.
Nur Fehler anzeigen:
journalctl -p err
Warnungen und Schlimmeres anzeigen:
journalctl -p warning
Häufige Prioritäten:
| Priorität | Bedeutung |
|---|---|
| emerg | System unbenutzbar |
| alert | sofortiges Eingreifen nötig |
| crit | kritischer Fehler |
| err | Fehler |
| warning | Warnung |
| notice | Hinweis |
| info | Information |
| debug | Debug-Ausgabe |
Merksatz:
journalctl -p err zeigt Fehler.
dmesg
dmesg zeigt Kernelmeldungen.
Befehl:
dmesg
Menschenlesbare Zeitstempel:
dmesg -T
Typische Inhalte:
- Hardwareerkennung
- Treiberprobleme
- USB-Geräte
- Festplattenfehler
- Kernelwarnungen
- Netzwerkadapter
- Dateisystemfehler
Merksatz:
dmesg hilft bei Kernel-,
Hardware-
und Treiberproblemen.
Logdateien mit less lesen
Lange Logdateien liest man besser mit less.
Beispiel:
less /var/log/syslog
In less suchen:
/error
Nächster Treffer:
n
Verlassen:
q
Merksatz:
less ist besser als cat für lange Logs.
Logdateien live mitlesen
Mit tail kann man neue Logeinträge live verfolgen.
Beispiel:
tail -f /var/log/syslog
Letzte 100 Zeilen und live weiter:
tail -n 100 -f /var/log/syslog
Typische Nutzung:
Dienst neu starten
gleichzeitig Logs beobachten
Fehler direkt sehen
Merksatz:
tail -f liest neue Logeinträge live mit.
grep in Logs
Mit grep sucht man gezielt nach Begriffen.
Beispiele:
grep -i "error" /var/log/syslog
grep -i "failed" /var/log/auth.log
grep -i "denied" /var/log/auth.log
Mit Zeilennummer:
grep -n "error" datei.log
Groß-/Kleinschreibung ignorieren:
grep -i "error" datei.log
Merksatz:
grep filtert relevante Logzeilen.
Typische Suchbegriffe in Logs
| Suchbegriff | Mögliche Bedeutung |
|---|---|
| error | Fehler |
| failed | fehlgeschlagen |
| denied | verweigert |
| refused | abgelehnt |
| timeout | Zeitüberschreitung |
| not found | nicht gefunden |
| permission | Rechteproblem |
| authentication | Anmeldung |
| invalid | ungültig |
| disconnect | Verbindung getrennt |
| no space | Speicherproblem |
| read-only | nur lesbares Dateisystem |
Merksatz:
Gute Suchbegriffe beschleunigen Logauswertung.
Logrotation
Logs wachsen mit der Zeit.
Damit sie nicht unbegrenzt Speicher verbrauchen, werden sie rotiert.
Logrotation bedeutet:
alte Logs werden umbenannt,
komprimiert,
gelöscht
oder archiviert.
Typisches Werkzeug:
logrotate
Beispielhafte rotierte Dateien:
syslog
syslog.1
syslog.2.gz
Merksatz:
Logrotation verhindert,
dass Logs den Speicher füllen.
Warum Logs Speicher füllen können
Logs können sehr groß werden, wenn:
ein Dienst ständig Fehler schreibt
Debug-Logging aktiviert ist
Angriffe viele Einträge erzeugen
Logrotation nicht funktioniert
ein Dienst in einer Fehlerschleife hängt
Folgen:
Dateisystem voll
Dienste können nicht schreiben
Updates schlagen fehl
System wird instabil
Prüfen:
df -h
du -sh /var/log
Merksatz:
Viele Logs können Ursache und Folge eines Problems sein.
Monitoring
Monitoring bedeutet:
Systeme,
Dienste
Ressourcen
und Zustände regelmäßig überwachen.
Überwacht werden zum Beispiel:
- CPU
- RAM
- Speicherplatz
- Inodes
- Netzwerk
- Dienste
- Ports
- Antwortzeiten
- Backups
- Zertifikate
- Logs
- Sicherheitsereignisse
Merksatz:
Monitoring soll Probleme erkennen,
bevor Benutzer sie melden.
Alerting
Alerting bedeutet:
Bei bestimmten Ereignissen oder Grenzwerten wird eine Benachrichtigung ausgelöst.
Beispiele:
Speicher über 90 Prozent
Backup fehlgeschlagen
Dienst nicht erreichbar
Zertifikat läuft bald ab
CPU dauerhaft sehr hoch
viele fehlgeschlagene Logins
Wichtig:
Alarme müssen sinnvoll sein.
Zu viele unwichtige Alarme führen zu Alarmmüdigkeit.
Merksatz:
Alerting macht aus Monitoring eine aktive Warnung.
Wichtige Systemwerte
| Wert | Warum wichtig? |
|---|---|
| CPU | hohe Last kann Dienste verlangsamen |
| RAM | Speichermangel führt zu Swap oder Fehlern |
| Swap | starke Nutzung kann System verlangsamen |
| Speicherplatz | volle Dateisysteme verhindern Schreibzugriffe |
| Inodes | zu viele Dateien verhindern neue Dateien |
| Load Average | zeigt Systemlast |
| Netzwerk | Verbindungsprobleme oder Paketverlust |
| Dienststatus | zeigt, ob Dienste laufen |
| Logs | zeigen Ursachen und Fehler |
Merksatz:
Langsame Systeme brauchen Messwerte,
keine Vermutungen.
CPU und Prozesse prüfen
Prozesse und CPU prüfen mit:
top
oder:
htop
Prozesse anzeigen:
ps aux
Nach Prozess suchen:
ps aux | grep nginx
Mögliche Ursachen hoher CPU:
hohe Nutzerlast
Endlosschleife
fehlerhafter Prozess
Angriff
falsche Konfiguration
Merksatz:
Hohe CPU immer pro Prozess einordnen.
RAM und Swap prüfen
RAM prüfen:
free -h
Live prüfen:
top
Swap prüfen:
swapon --show
Mögliche Fehlerbilder:
System langsam
Prozesse werden beendet
starke Swap-Nutzung
Dienst startet nicht
Out-of-Memory-Ereignis
Merksatz:
Swap ist langsamer als RAM.
Viel Swap kann System stark verlangsamen.
Out of Memory
Wenn der Arbeitsspeicher knapp wird, kann Linux Prozesse beenden, um das System zu stabilisieren.
Das nennt man häufig:
OOM
oder:
Out of Memory
Suchen in Logs:
journalctl -k | grep -i "out of memory"
dmesg -T | grep -i "killed process"
Merksatz:
Wenn Prozesse plötzlich verschwinden,
OOM in Kernelmeldungen prüfen.
Speicherplatz prüfen
Dateisysteme prüfen:
df -h
Inodes prüfen:
df -i
Große Ordner prüfen:
du -sh /var/log
du -sh /var/lib
du -sh /home/*
Typische Ursachen:
Logs
Backups
Datenbanken
Container-Images
Cache
temporäre Dateien
Merksatz:
No space left on device:
df -h und df -i prüfen.
Netzwerk prüfen
IP-Adressen:
ip addr
Routen:
ip route
Gateway testen:
ping -c 4 gateway-ip
DNS prüfen:
dig example.com
Ports prüfen:
ss -tulpen
Webdienst prüfen:
curl -I http://localhost
Merksatz:
Netzwerkfehler Schritt für Schritt prüfen:
IP,
Route,
DNS,
Port,
Dienst.
Dienststatus prüfen
Dienststatus:
systemctl status dienstname
Autostart prüfen:
systemctl is-enabled dienstname
Aktiv prüfen:
systemctl is-active dienstname
Logs prüfen:
journalctl -u dienstname
Merksatz:
Dienstfehler:
systemctl status
und journalctl -u.
HTTP-Fehler einordnen
| Code | Bedeutung | Wahrscheinliche Richtung |
|---|---|---|
| 200 | OK | Dienst antwortet |
| 301 / 302 | Weiterleitung | Webserver oder Anwendung |
| 401 | nicht authentifiziert | Login fehlt oder falsch |
| 403 | verboten | Rechteproblem |
| 404 | nicht gefunden | Pfad oder Ressource falsch |
| 500 | interner Serverfehler | Anwendung oder Backend |
| 502 | Bad Gateway | Proxy erreicht Backend nicht |
| 503 | Dienst nicht verfügbar | Backend oder Dienst nicht bereit |
Merksatz:
HTTP-Code zeigt,
auf welcher Ebene man weiter suchen sollte.
Fehlersuche nach Änderung
Wenn ein Fehler direkt nach einer Änderung auftritt, ist diese Änderung besonders relevant.
Mögliche Änderungen:
Update
Konfigurationsänderung
Firewall-Regel
Rechteänderung
Zertifikatswechsel
Mountänderung
DNS-Änderung
Neustart
Sinnvolle Fragen:
Was wurde geändert?
Wann wurde geändert?
Wer hat geändert?
Gibt es ein Backup?
Gibt es einen Rollback-Plan?
Merksatz:
Fehler nach Änderung:
Änderung zuerst prüfen.
Systematische Fehlersuche
Eine gute Reihenfolge:
1. Fehler genau beschreiben
2. Zeitpunkt feststellen
3. betroffene Systeme eingrenzen
4. letzte Änderungen prüfen
5. Status prüfen
6. Logs prüfen
7. Ressourcen prüfen
8. Netzwerk prüfen
9. Berechtigungen prüfen
10. Maßnahme testen und dokumentieren
Merksatz:
Nicht raten,
sondern eingrenzen.
Einzelnes System oder viele Systeme?
Wichtige Eingrenzung:
| Betroffen | Wahrscheinliche Richtung |
|---|---|
| ein Benutzer | Benutzerrechte, Client, Konto |
| alle Benutzer | Dienst, Server, Netzwerk, Authentifizierung |
| ein Server | Dienst, Ressourcen, lokale Konfiguration |
| alle Server | Netzwerk, DNS, zentrale Dienste |
| eine Anwendung | Anwendung, Datenbank, Backend |
| mehrere Anwendungen | Infrastruktur, DNS, Storage, Netzwerk |
Merksatz:
Anzahl der Betroffenen hilft bei der Eingrenzung.
Typische Linux-Fehlerbilder
| Fehlerbild | Wahrscheinliche Ursache |
|---|---|
| Dienst startet nicht | Konfiguration, Rechte, Port, Abhängigkeit |
| Permission denied | Rechteproblem |
| No such file or directory | falscher Pfad oder Datei fehlt |
| No space left on device | Speicherplatz oder Inodes voll |
| Read-only file system | Dateisystem nur lesbar oder Fehler |
| Connection refused | Dienst läuft nicht oder Port geschlossen |
| Connection timed out | Firewall, Routing oder Ziel nicht erreichbar |
| Name or service not known | DNS oder Name falsch |
| Too many open files | Limit für offene Dateien erreicht |
| Out of memory | RAM knapp, OOM-Killer aktiv |
| Target is busy | Mount oder Datei wird noch verwendet |
Connection refused
Bedeutung:
Das Zielsystem ist erreichbar,
aber der Dienst nimmt auf diesem Port keine Verbindung an.
Mögliche Ursachen:
Dienst läuft nicht
falscher Port
Dienst lauscht nur auf anderer Adresse
lokale Firewall lehnt aktiv ab
Prüfen:
systemctl status dienst
ss -tulpen
journalctl -u dienst
Merksatz:
Connection refused:
Ziel erreichbar,
Dienst oder Port problematisch.
Connection timed out
Bedeutung:
Die Verbindung erhält keine Antwort innerhalb der Zeit.
Mögliche Ursachen:
Firewall verwirft Pakete
Routingproblem
Ziel nicht erreichbar
falsche IP
Netzwerkproblem
Cloud Security Group blockiert
Prüfen:
ping
ip route
Firewall-Regeln
Netzwerkpfad
Merksatz:
Timeout deutet oft auf Firewall,
Routing
oder Nichterreichbarkeit hin.
Permission denied
Bedeutung:
Zugriff verweigert.
Mögliche Ursachen:
fehlende Dateirechte
falscher Besitzer
falsche Gruppe
fehlendes x-Recht auf Verzeichnis
sudo nötig
Dienstbenutzer hat keine Rechte
Prüfen:
whoami
id
ls -l datei
ls -ld verzeichnis
Merksatz:
Permission denied ist meist ein Rechteproblem.
No such file or directory
Bedeutung:
Datei oder Verzeichnis existiert nicht.
Mögliche Ursachen:
falscher Pfad
Tippfehler
falsche Groß-/Kleinschreibung
Datei wurde gelöscht
Mount fehlt
relativer Pfad falsch verstanden
Prüfen:
pwd
ls -la
find
mount
Merksatz:
Linux unterscheidet Groß-
und Kleinschreibung.
Too many open files
Bedeutung:
Ein Prozess oder Benutzer hat zu viele Dateien,
Sockets
oder Verbindungen geöffnet.
Mögliche Ursachen:
hohe Last
Fehler in Anwendung
zu niedriges Limit
Verbindungsleck
Prüfen:
Logs
Prozessstatus
Limits
offene Dateien
Merksatz:
Unter Linux zählen auch Netzwerkverbindungen als offene Dateien.
Logs und Sicherheit
Logs sind auch für Sicherheit wichtig.
Wichtige Ereignisse:
fehlgeschlagene Logins
sudo-Nutzung
SSH-Zugriffe
neue Benutzer
Rechteänderungen
Dienststarts
Firewall-Blockierungen
ungewöhnliche Prozesse
viele Anmeldeversuche
Beispiele:
journalctl -u ssh
grep -i "failed" /var/log/auth.log
grep -i "sudo" /var/log/auth.log
Merksatz:
Sicherheitsanalyse beginnt oft in Auth-
und Dienstlogs.
Backup und Logs
Logs können nach einem Vorfall wichtig sein.
Aber:
Logs auf demselben kompromittierten System können manipuliert werden.
Besser:
zentrale Logsammlung
SIEM
manipulationsgeschützte Logs
Zeitserver verwenden
ausreichende Aufbewahrung
Merksatz:
Für Sicherheitsvorfälle sind zentrale und geschützte Logs wertvoll.
Zeit und Logs
Korrekte Uhrzeit ist für Logs wichtig.
Wenn die Systemzeit falsch ist, werden Ereignisse schwer nachvollziehbar.
Prüfen:
timedatectl
Zeitdienst prüfen:
systemctl status systemd-timesyncd
oder je nach System:
chrony
ntpd
Merksatz:
Ohne korrekte Zeit sind Logs schwer auswertbar.
Dokumentation bei Fehlersuche
Bei Fehlersuche dokumentieren:
- Fehlerbild
- Zeitpunkt
- betroffene Systeme
- ausgeführte Prüfungen
- relevante Logmeldungen
- Ursache
- Maßnahme
- Ergebnis
- offene Punkte
Warum?
Nachvollziehbarkeit
Wiederverwendbarkeit
Übergabe an Kollegen
spätere Analyse
Prüfungsrelevanz
Merksatz:
Gute Administration dokumentiert Fehler und Lösung.
Typische Befehle dieser Seite
| Befehl | Zweck |
|---|---|
| journalctl | systemd-Journal anzeigen |
| journalctl -u dienst | Logs eines Dienstes anzeigen |
| journalctl -f | Logs live mitlesen |
| journalctl -b | Logs seit letztem Boot |
| dmesg | Kernelmeldungen anzeigen |
| dmesg -T | Kernelmeldungen mit lesbarer Zeit |
| less logfile | lange Logdatei lesen |
| tail -f logfile | Log live verfolgen |
| grep muster logfile | Log nach Muster filtern |
| systemctl status dienst | Dienststatus prüfen |
| top | Prozesse und Last live prüfen |
| free -h | RAM und Swap prüfen |
| df -h | Speicherplatz prüfen |
| df -i | Inodes prüfen |
| du -sh ordner | Ordnergröße prüfen |
| ip addr | IP-Adressen prüfen |
| ip route | Routing prüfen |
| ss -tulpen | Ports prüfen |
| curl -I URL | Webantwort prüfen |
| timedatectl | Uhrzeit und Zeitsynchronisation prüfen |
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was sind Logs? | Protokolle von Ereignissen |
| Wo liegen viele klassische Logs? | /var/log |
| Was macht journalctl? | systemd-Journal anzeigen |
| Wie zeigt man Dienstlogs? | journalctl -u dienst |
| Wie liest man Logs live mit? | tail -f oder journalctl -f |
| Was macht dmesg? | Kernelmeldungen anzeigen |
| Was ist Monitoring? | regelmäßige Überwachung |
| Was ist Alerting? | Benachrichtigung bei Ereignissen |
| Warum ist Logrotation wichtig? | verhindert zu große Logs |
| Was prüft df -h? | Speicherplatz |
| Was prüft free -h? | RAM und Swap |
| Was bedeutet Connection refused? | Ziel erreichbar, Dienst/Port lehnt ab |
| Was bedeutet Connection timed out? | keine Antwort, oft Firewall/Routing |
| Warum ist korrekte Zeit wichtig? | Logs müssen zeitlich stimmen |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| Logs ignorieren | Logs liefern Ursache und Zeitbezug |
| nur Dienst neu starten | erst Status und Logs prüfen |
| cat für riesige Logs nutzen | less, tail oder grep verwenden |
| Monitoring mit Logging verwechseln | Logs protokollieren, Monitoring überwacht |
| Alerting vergessen | Monitoring ohne Alarm wird leicht übersehen |
| hohe CPU ohne Prozessbezug nennen | verursachenden Prozess ermitteln |
| Speicher frei, aber Fehler beim Schreiben | Inodes prüfen |
| Zeitfehler ignorieren | falsche Zeit erschwert Loganalyse |
| Connection refused und timed out gleichsetzen | unterschiedliche Ursachen |
| nach Änderung nicht an Rollback denken | Änderungen dokumentieren und absichern |
IHK-sichere Kurzformulierung
Logs sind Protokolle von Ereignissen und dienen der Fehlersuche, Überwachung und Sicherheitsanalyse. Viele klassische Logdateien liegen unter /var/log, während auf systemd-Systemen journalctl das zentrale Journal auswertet. Dienstprobleme werden typischerweise mit systemctl status und journalctl -u geprüft. tail -f oder journalctl -f können neue Logeinträge live anzeigen. Monitoring überwacht Ressourcen und Dienste wie CPU, RAM, Speicherplatz, Inodes, Netzwerk, Ports, Backups und Zertifikate. Alerting benachrichtigt bei Grenzwerten oder Fehlern. Eine systematische Fehlersuche grenzt das Problem anhand von Fehlerbild, Zeitpunkt, betroffenen Systemen, Logs, Ressourcen, Netzwerk, Rechten und letzten Änderungen ein.
Merksätze
Logs zeigen Ereignisse.
Monitoring überwacht Zustände.
Alerting warnt aktiv.
/var/log enthält viele klassische Logs.
journalctl liest das systemd-Journal.
journalctl -u zeigt Dienstlogs.
journalctl -f liest live mit.
journalctl -b zeigt Logs seit letztem Boot.
dmesg zeigt Kernelmeldungen.
less ist gut für lange Logs.
tail -f liest Logdateien live mit.
grep filtert relevante Logzeilen.
Logrotation verhindert zu große Logs.
df -h prüft Speicherplatz.
df -i prüft Inodes.
free -h prüft RAM und Swap.
top zeigt Last und Prozesse.
ss zeigt Ports.
curl prüft HTTP oder HTTPS.
systemctl status zeigt Dienstzustand.
Connection refused:
Dienst oder Port problematisch.
Connection timed out:
Firewall,
Routing
oder Nichterreichbarkeit.
Permission denied:
Rechteproblem.
No space left on device:
Speicherplatz oder Inodes prüfen.
Nach Änderung zuerst Änderung prüfen.
Nicht raten,
sondern eingrenzen.
Gute Fehlersuche wird dokumentiert.
Korrekte Uhrzeit ist wichtig für Logs.
10. Shell, Pipes und Umleitungen
10.1 Shell, Pipes und Umleitungen
Die Shell ist eines der wichtigsten Werkzeuge unter Linux.
Sie nimmt Befehle entgegen, führt sie aus und kann Ausgaben, Eingaben und Fehlermeldungen gezielt weiterleiten.
Besonders wichtig sind dabei:
- Pipes
- Umleitungen
- Wildcards
- Variablen
- Befehlsverkettung
- Exit-Codes
- einfache Filterbefehle
Für Fachinformatiker Systemintegration ist dieses Thema wichtig, weil viele administrative Aufgaben unter Linux aus mehreren kleinen Befehlen bestehen, die miteinander kombiniert werden.
Merksatz:
Die Stärke der Shell liegt darin,
einfache Werkzeuge sinnvoll zu kombinieren.
Lernziele
Nach dieser Seite solltest du erklären können:
- was eine Shell ist
- was Bash ist
- was Standardausgabe,
Standardeingabe
und Standardfehler sind
- was Pipes machen
- wie Umleitungen funktionieren
- was >,
>>,
<,
2>
und &> bedeuten
- wie man Befehle verkettet
- was Exit-Codes sind
- wie man grep,
sort,
uniq,
wc,
cut
und tee sinnvoll nutzt
Grundidee
Unter Linux geben viele Befehle Text aus.
Diese Ausgabe kann man:
- anzeigen
- filtern
- speichern
- an andere Befehle weitergeben
- in Dateien schreiben
- zählen
- sortieren
- durchsuchen
Beispiel:
ps aux | grep nginx
Bedeutung:
ps aux zeigt Prozesse.
grep nginx filtert nur Zeilen mit nginx.
Merksatz:
Befehle können ihre Ausgabe an andere Befehle weitergeben.
Shell
Eine Shell ist ein Befehlsinterpreter.
Sie verarbeitet eingegebene Befehle und startet Programme.
Bekannte Shells:
| Shell | Bedeutung |
|---|---|
| sh | klassische Unix-Shell |
| bash | Bourne Again Shell |
| zsh | moderne interaktive Shell |
| fish | benutzerfreundliche Shell |
Viele Linux-Systeme nutzen Bash als Standardshell.
Merksatz:
Shell = Befehlsinterpreter.
Bash
Bash steht für:
Bourne Again Shell
Bash kann:
- Befehle ausführen
- Variablen verwenden
- Ausgaben umleiten
- Pipes nutzen
- Bedingungen auswerten
- Schleifen ausführen
- Skripte starten
Beispiel:
echo "Hallo Linux"
Merksatz:
Bash ist Shell und Skriptumgebung.
Prompt
Der Prompt ist die Eingabeaufforderung.
Beispiel:
felix@server:~$
Bedeutung:
| Teil | Bedeutung |
|---|---|
| felix | Benutzer |
| server | Hostname |
| ~ | Home-Verzeichnis |
| $ | normaler Benutzer |
Bei Root sieht man häufig:
root@server:~#
Merksatz:
$ normaler Benutzer.
# häufig Root.
Standardkanäle
Linux-Programme verwenden drei wichtige Standardkanäle.
| Kanal | Nummer | Bedeutung |
|---|---|---|
| stdin | 0 | Standardeingabe |
| stdout | 1 | Standardausgabe |
| stderr | 2 | Standardfehler |
Beispiel:
Ein Befehl liest Eingaben über stdin,
schreibt normale Ergebnisse nach stdout
und Fehlermeldungen nach stderr.
Merksatz:
0 = Eingabe.
1 = Ausgabe.
2 = Fehler.
Standardausgabe
Die Standardausgabe ist die normale Ausgabe eines Befehls.
Beispiel:
ls
zeigt Dateien im Terminal an.
Diese Ausgabe kann man umleiten oder weiterverarbeiten.
Beispiel:
ls > dateiliste.txt
Merksatz:
stdout ist die normale Ausgabe.
Standardfehler
Die Standardfehlerausgabe enthält Fehlermeldungen.
Beispiel:
ls /nicht-vorhanden
Mögliche Fehlermeldung:
No such file or directory
Diese Fehlermeldung kommt über stderr.
Merksatz:
stderr ist für Fehlermeldungen.
Ausgabe umleiten mit >
Mit > wird die Standardausgabe in eine Datei geschrieben.
Beispiel:
ls > dateien.txt
Wichtig:
Wenn die Datei bereits existiert,
wird sie überschrieben.
Beispiel:
echo "Test" > datei.txt
schreibt Test in datei.txt und ersetzt vorhandenen Inhalt.
Merksatz:
> schreibt neu und überschreibt.
Ausgabe anhängen mit >>
Mit >> wird die Standardausgabe an eine Datei angehängt.
Beispiel:
echo "Neue Zeile" >> datei.txt
Der vorhandene Inhalt bleibt erhalten.
Typische Nutzung:
Logs erweitern
Ergebnisse sammeln
Text an Datei anhängen
Merksatz:
>> hängt an.
Eingabe umleiten mit <
Mit < wird eine Datei als Eingabe für einen Befehl verwendet.
Beispiel:
wc -l < datei.txt
Bedeutung:
wc zählt Zeilen,
liest die Eingabe aber aus datei.txt.
Merksatz:
< nutzt Datei als Eingabe.
Fehler umleiten mit 2>
Mit 2> leitet man Fehlermeldungen um.
Beispiel:
ls /nicht-vorhanden 2> fehler.txt
Bedeutung:
Fehlermeldungen werden in fehler.txt geschrieben.
Normale Ausgabe bleibt davon getrennt.
Merksatz:
2> leitet Fehlermeldungen um.
Fehler anhängen mit 2>>
Mit 2>> werden Fehlermeldungen an eine Datei angehängt.
Beispiel:
ls /nicht-vorhanden 2>> fehler.log
Merksatz:
2>> hängt Fehlermeldungen an.
Ausgabe und Fehler gemeinsam umleiten
Ausgabe und Fehler gemeinsam umleiten:
befehl > ausgabe.log 2>&1
Bedeutung:
stdout geht nach ausgabe.log.
stderr wird ebenfalls dorthin geleitet.
Kurzform bei Bash:
befehl &> ausgabe.log
Anhängen:
befehl &>> ausgabe.log
Merksatz:
&> leitet Ausgabe und Fehler gemeinsam um.
/dev/null
/dev/null ist ein spezielles Gerät, das Ausgaben verwirft.
Beispiel:
befehl > /dev/null
Fehler verwerfen:
befehl 2> /dev/null
Alles verwerfen:
befehl &> /dev/null
Typische Nutzung:
unerwünschte Ausgaben unterdrücken
Wichtig:
Nicht blind verwenden,
weil Fehlermeldungen dann verloren gehen.
Merksatz:
/dev/null ist der digitale Papierkorb.
Pipe
Eine Pipe leitet die Ausgabe eines Befehls an den nächsten Befehl weiter.
Zeichen:
|
Beispiel:
ls -l | grep ".log"
Bedeutung:
ls -l erzeugt Ausgabe.
grep filtert diese Ausgabe.
Merksatz:
Pipe verbindet Befehle.
Pipe-Beispiel mit Prozessen
Beispiel:
ps aux | grep ssh
Bedeutung:
ps aux zeigt Prozesse.
grep ssh filtert Zeilen mit ssh.
Typische Nutzung:
Prozesse suchen
Logs filtern
Paketlisten durchsuchen
Ausgaben zählen
Merksatz:
Pipe macht aus mehreren einfachen Befehlen eine Auswertung.
Pipe-Beispiel mit Logs
Beispiel:
journalctl -u ssh | grep -i "failed"
Bedeutung:
journalctl -u ssh zeigt SSH-Logs.
grep -i "failed" filtert fehlgeschlagene Einträge.
Merksatz:
Logs werden mit Pipes schnell auswertbar.
grep
grep sucht nach Textmustern.
Beispiele:
grep "error" logfile.txt
grep -i "error" logfile.txt
grep -n "error" logfile.txt
grep -r "PermitRootLogin" /etc/ssh
Wichtige Optionen:
| Option | Bedeutung |
|---|---|
| -i | Groß-/Kleinschreibung ignorieren |
| -n | Zeilennummer anzeigen |
| -r | rekursiv suchen |
| -v | Treffer umkehren |
| -l | nur Dateinamen mit Treffern anzeigen |
Merksatz:
grep filtert Text.
sort
sort sortiert Textzeilen.
Beispiel:
cat namen.txt | sort
Numerisch sortieren:
sort -n zahlen.txt
Rückwärts sortieren:
sort -r namen.txt
Merksatz:
sort sortiert Zeilen.
uniq
uniq entfernt direkt aufeinanderfolgende doppelte Zeilen.
Beispiel:
sort namen.txt | uniq
Wichtig:
uniq erkennt doppelte Zeilen nur,
wenn sie nebeneinander stehen.
Deshalb wird oft vorher sort verwendet.
Anzahl anzeigen:
sort namen.txt | uniq -c
Merksatz:
sort und uniq werden oft kombiniert.
wc
wc zählt Zeilen, Wörter und Zeichen.
Beispiele:
wc datei.txt
wc -l datei.txt
ps aux | wc -l
Bedeutung:
| Option | Bedeutung |
|---|---|
| -l | Zeilen zählen |
| -w | Wörter zählen |
| -c | Bytes zählen |
Merksatz:
wc -l zählt Zeilen.
cut
cut schneidet Spalten oder Zeichen aus Text.
Beispiel mit Trennzeichen:
cut -d ":" -f 1 /etc/passwd
Bedeutung:
-d ":" verwendet Doppelpunkt als Trenner.
-f 1 gibt das erste Feld aus.
Typische Nutzung:
einfache strukturierte Dateien auswerten
Spalten ausgeben
Merksatz:
cut extrahiert Felder aus Text.
awk kurz eingeordnet
awk ist ein Werkzeug zur Textverarbeitung.
Beispiel:
awk '{print $1}' datei.txt
Bedeutung:
gibt die erste Spalte aus.
awk ist mächtiger als cut, weil es Bedingungen, Berechnungen und komplexere Ausgaben kann.
Merksatz:
awk verarbeitet spaltenorientierten Text.
sed kurz eingeordnet
sed ist ein Stream-Editor.
Er kann Textströme verändern.
Beispiel:
sed 's/alt/neu/g' datei.txt
Bedeutung:
ersetzt alt durch neu in der Ausgabe.
Wichtig:
Ohne passende Option wird die Datei nicht automatisch geändert,
sondern nur die Ausgabe.
Merksatz:
sed verändert Textströme.
tee
tee schreibt Ausgabe gleichzeitig auf den Bildschirm und in eine Datei.
Beispiel:
echo "Test" | tee datei.txt
Anhängen:
echo "Neue Zeile" | tee -a datei.txt
Nützlich, wenn man Ausgabe sehen und speichern möchte.
Beispiel:
systemctl status ssh | tee ssh-status.txt
Merksatz:
tee zeigt und speichert gleichzeitig.
Befehle nacheinander ausführen mit ;
Mit ; führt man Befehle nacheinander aus, unabhängig davon, ob der vorherige erfolgreich war.
Beispiel:
echo "Start"; echo "Ende"
Auch wenn der erste Befehl fehlschlägt, wird der zweite ausgeführt.
Merksatz:
; führt einfach nacheinander aus.
Befehle nur bei Erfolg ausführen mit &&
Mit && wird der zweite Befehl nur ausgeführt, wenn der erste erfolgreich war.
Beispiel:
mkdir backup && cp datei.txt backup/
Bedeutung:
Nur wenn mkdir erfolgreich ist,
wird cp ausgeführt.
Merksatz:
&& bedeutet:
nur bei Erfolg weiter.
Befehle nur bei Fehler ausführen mit ||
Mit || wird der zweite Befehl nur ausgeführt, wenn der erste fehlschlägt.
Beispiel:
ping -c 1 server || echo "Server nicht erreichbar"
Merksatz:
|| bedeutet:
nur bei Fehler ausführen.
Exit-Code
Jeder Befehl liefert einen Exit-Code zurück.
Typisch:
| Exit-Code | Bedeutung |
|---|---|
| 0 | erfolgreich |
| ungleich 0 | Fehler oder besonderer Zustand |
Den letzten Exit-Code anzeigen:
echo $?
Beispiel:
ls /etc
echo $?
Merksatz:
Exit-Code 0 bedeutet Erfolg.
Warum Exit-Codes wichtig sind
Exit-Codes sind wichtig für:
- Skripte
- Automatisierung
- && und ||
- Monitoring
- Fehlerbehandlung
- Cronjobs
- systemd-Units
Beispiel:
grep "root" /etc/passwd
echo $?
Wenn grep etwas findet, ist der Exit-Code 0. Wenn nichts gefunden wird, ist der Exit-Code ungleich 0.
Merksatz:
Skripte entscheiden oft anhand von Exit-Codes.
Variablen
In der Shell können Variablen verwendet werden.
Beispiel:
NAME="Felix"
Ausgeben:
echo "$NAME"
Wichtig:
Keine Leerzeichen um das Gleichheitszeichen.
Richtig:
NAME="Felix"
Falsch:
NAME = "Felix"
Merksatz:
Variablen speichern Werte.
Umgebungsvariablen
Umgebungsvariablen beeinflussen Programme und Shell-Verhalten.
Beispiele:
| Variable | Bedeutung |
|---|---|
| HOME | Home-Verzeichnis |
| USER | Benutzername |
| PATH | Suchpfade für Programme |
| SHELL | aktuelle Shell |
| PWD | aktuelles Verzeichnis |
Anzeigen:
echo "$HOME"
echo "$PATH"
Alle Umgebungsvariablen anzeigen:
env
Merksatz:
Umgebungsvariablen beschreiben die Umgebung eines Prozesses.
PATH
PATH enthält Verzeichnisse, in denen die Shell nach Programmen sucht.
Anzeigen:
echo "$PATH"
Beispielinhalt:
/usr/local/bin:/usr/bin:/bin
Wenn man einen Befehl eingibt, sucht die Shell in diesen Verzeichnissen.
Prüfen, welches Programm ausgeführt wird:
which ssh
Merksatz:
PATH bestimmt,
wo Befehle gesucht werden.
Quotes
Anführungszeichen beeinflussen, wie die Shell Text verarbeitet.
| Zeichen | Bedeutung |
|---|---|
| " " | Variablen werden ausgewertet |
| ' ' | Text bleibt fast vollständig unverändert |
| \ | maskiert ein einzelnes Zeichen |
Beispiele:
NAME="Felix"
echo "Hallo $NAME"
Ausgabe:
Hallo Felix
Beispiel:
echo 'Hallo $NAME'
Ausgabe:
Hallo $NAME
Merksatz:
Doppelte Quotes erlauben Variablen.
Einfache Quotes schützen Text stärker.
Wildcards
Wildcards sind Platzhalter.
| Wildcard | Bedeutung |
|---|---|
| * | beliebige Zeichen |
| ? | genau ein Zeichen |
| [abc] | eines der Zeichen a, b oder c |
Beispiele:
ls *.log
rm *.tmp
cp backup-?.tar /tmp/
Merksatz:
* steht für beliebige Zeichen.
Achtung bei Wildcards und rm
Gefährlich:
rm *
Noch gefährlicher:
rm -rf *
Sicherer prüfen:
echo *
ls
pwd
Dann erst löschen.
Merksatz:
Vor rm mit Wildcards immer prüfen,
was betroffen ist.
Befehlshistorie
Die Shell speichert häufig eine Befehlshistorie.
Anzeigen:
history
Letzten Befehl erneut ausführen:
!!
Nach Befehlen suchen:
Strg + R
Wichtig:
Keine Passwörter oder Geheimnisse direkt in Befehle schreiben,
weil sie in der Historie landen können.
Merksatz:
history ist praktisch,
kann aber Geheimnisse verraten.
Tab-Vervollständigung
Mit Tab kann die Shell Befehle, Dateinamen und Pfade vervollständigen.
Vorteile:
weniger Tippfehler
schnelleres Arbeiten
Pfade prüfen
Befehle entdecken
Merksatz:
Tab spart Zeit und reduziert Tippfehler.
Aliases
Aliases sind Abkürzungen für Befehle.
Beispiel:
alias ll='ls -la'
Danach kann man eingeben:
ll
und es wird ausgeführt:
ls -la
Wichtig:
Aliases gelten je nach Konfiguration nur in der aktuellen Shell
oder dauerhaft über Dateien wie ~/.bashrc.
Merksatz:
Aliases sind Befehlsabkürzungen.
.bashrc und .profile
Benutzerspezifische Shell-Konfigurationen liegen häufig in:
~/.bashrc
~/.profile
Dort können stehen:
Aliases
Umgebungsvariablen
Prompt-Konfiguration
Shell-Funktionen
PATH-Erweiterungen
Wichtig:
Fehler in diesen Dateien können Shell-Verhalten beeinflussen.
Merksatz:
~/.bashrc beeinflusst die interaktive Bash.
Typische Befehlsketten
Prozesse nach nginx suchen:
ps aux | grep nginx
Fehler in Logs zählen:
grep -i "error" /var/log/syslog | wc -l
Größte Ordner anzeigen:
du -sh * | sort -h
Benutzer aus /etc/passwd anzeigen:
cut -d ":" -f 1 /etc/passwd
Doppelte Zeilen zählen:
sort datei.txt | uniq -c
Merksatz:
Pipes machen Auswertungen aus einfachen Befehlen.
Typische Fehlerbilder
| Fehlerbild | Wahrscheinliche Ursache |
|---|---|
| Datei leer nach Befehl | > hat Datei überschrieben |
| Fehler nicht in Datei | stderr wurde nicht umgeleitet |
| Befehl nicht gefunden | PATH oder Paket fehlt |
| Variable leer | falsch gesetzt oder falsch zitiert |
| rm löscht zu viel | Wildcard falsch verwendet |
| grep findet nichts | Groß-/Kleinschreibung oder Muster falsch |
| Pipe liefert nichts | erster Befehl erzeugt keine passende Ausgabe |
| Permission denied | fehlende Rechte |
| Ausgabe fehlt | nach /dev/null umgeleitet |
| Skript reagiert falsch | Exit-Code nicht beachtet |
Befehl nicht gefunden
Fehlermeldung:
command not found
Mögliche Ursachen:
Paket nicht installiert
Tippfehler
Befehl liegt nicht im PATH
Skript nicht ausführbar
falsche Shell
Prüfen:
which befehl
echo "$PATH"
ls -l datei
Merksatz:
command not found bedeutet:
Shell findet den Befehl nicht.
Permission denied bei Skript
Fehlerbild:
./script.sh: Permission denied
Mögliche Ursachen:
Skript hat kein Ausführrecht
Dateisystem ist mit noexec gemountet
falsche Rechte
Prüfen:
ls -l script.sh
Ausführbar machen:
chmod +x script.sh
Starten:
./script.sh
Merksatz:
Skript direkt starten braucht x-Recht.
Sichere Arbeitsweise in der Shell
Vor riskanten Befehlen:
pwd
ls -la
echo *.tmp
Befehl ohne Löschung testen,
wenn möglich
Bei Umleitungen:
> überschreibt
>> hängt an
Bei Root-Rechten:
Befehl genau prüfen
Pfad genau prüfen
Wildcards vermeiden oder vorher testen
Merksatz:
In der Shell erst prüfen,
dann ausführen.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist eine Shell? | Befehlsinterpreter |
| Was ist Bash? | verbreitete Linux-Shell |
| Was macht eine Pipe? | Ausgabe an nächsten Befehl weitergeben |
| Was macht >? | Ausgabe in Datei schreiben und überschreiben |
| Was macht >>? | Ausgabe an Datei anhängen |
| Was macht 2>? | Fehlerausgabe umleiten |
| Was ist stdout? | Standardausgabe |
| Was ist stderr? | Standardfehler |
| Was ist stdin? | Standardeingabe |
| Was bedeutet Exit-Code 0? | Erfolg |
| Was macht grep? | Text filtern |
| Was macht wc -l? | Zeilen zählen |
| Was macht sort? | Zeilen sortieren |
| Was macht uniq? | doppelte Nachbarzeilen entfernen |
| Was macht tee? | Ausgabe anzeigen und speichern |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| > und >> verwechseln | > überschreibt, >> hängt an |
| stderr nicht umleiten | Fehler gehen über Kanal 2 |
| Pipe mit Umleitung gleichsetzen | Pipe zu Befehl, Umleitung zu Datei |
| grep ohne -i bei unbekannter Schreibweise | -i ignoriert Groß-/Kleinschreibung |
| uniq ohne sort nutzen | doppelte Zeilen müssen nebeneinander stehen |
| rm mit * unterschätzen | vorher mit echo oder ls prüfen |
| Variablen mit Leerzeichen setzen | NAME="Wert", nicht NAME = "Wert" |
| einfache und doppelte Quotes verwechseln | einfache Quotes werten Variablen nicht aus |
| command not found falsch deuten | Paket, PATH oder Tippfehler prüfen |
| Exit-Codes ignorieren | wichtig für Skripte und Automatisierung |
IHK-sichere Kurzformulierung
Die Shell ist ein Befehlsinterpreter, der Befehle ausführt und deren Ein- und Ausgaben steuern kann. Linux unterscheidet Standardeingabe, Standardausgabe und Standardfehler mit den Kanälen 0, 1 und 2. Mit Pipes wird die Ausgabe eines Befehls an einen weiteren Befehl weitergegeben. Mit > wird Ausgabe in eine Datei geschrieben und überschrieben, mit >> wird sie angehängt. Fehlerausgaben können mit 2> umgeleitet werden. Werkzeuge wie grep, sort, uniq, wc, cut, awk, sed und tee werden häufig kombiniert, um Text, Logs und Befehlsausgaben auszuwerten. Exit-Codes zeigen an, ob ein Befehl erfolgreich war, und sind besonders wichtig für Skripte und Automatisierung.
Merksätze
Shell = Befehlsinterpreter.
Bash ist eine verbreitete Shell.
stdin = Eingabe.
stdout = Ausgabe.
stderr = Fehlerausgabe.
0 = stdin.
1 = stdout.
2 = stderr.
> überschreibt.
>> hängt an.
2> leitet Fehler um.
&> leitet Ausgabe und Fehler um.
/dev/null verwirft Ausgaben.
Pipe verbindet Befehle.
grep filtert Text.
sort sortiert Zeilen.
uniq entfernt doppelte Nachbarzeilen.
wc -l zählt Zeilen.
cut extrahiert Felder.
awk verarbeitet Spalten.
sed verändert Textströme.
tee zeigt und speichert gleichzeitig.
; führt nacheinander aus.
&& läuft nur bei Erfolg weiter.
|| läuft nur bei Fehler weiter.
Exit-Code 0 bedeutet Erfolg.
PATH bestimmt,
wo Befehle gesucht werden.
Doppelte Quotes werten Variablen aus.
Einfache Quotes schützen Text stärker.
* steht für beliebige Zeichen.
Vor rm mit Wildcards immer prüfen.
Erst testen,
dann ausführen.
11. Bash-Scripting Grundlagen
11.1 Bash-Scripting Grundlagen
Bash-Scripting Grundlagen
Bash-Skripte sind Textdateien, in denen mehrere Shell-Befehle gespeichert werden.
Statt Befehle immer wieder einzeln in die Shell einzugeben, kann man sie in einem Skript zusammenfassen und wiederholt ausführen.
Für Fachinformatiker Systemintegration ist Bash-Scripting wichtig, weil viele administrative Aufgaben automatisiert werden können.
Beispiele:
- Backups starten
- Logdateien prüfen
- Dienste überwachen
- Dateien aufräumen
- Benutzerinformationen auswerten
- Netzwerkprüfungen durchführen
- wiederkehrende Befehle automatisieren
Merksatz:
Ein Bash-Skript ist eine automatisierte Befehlsfolge.
Lernziele
Nach dieser Seite solltest du erklären können:
- was ein Bash-Skript ist
- was ein Shebang ist
- wie man ein Skript ausführbar macht
- wie Variablen genutzt werden
- wie Parameter übergeben werden
- wie if-Abfragen funktionieren
- wie Schleifen grundsätzlich funktionieren
- was Exit-Codes bedeuten
- warum Kommentare wichtig sind
- wie man einfache Admin-Aufgaben automatisiert
Grundidee
Ein Bash-Skript ist eine normale Textdatei mit Shell-Befehlen.
Beispiel:
echo "Backup startet"
date
df -h
Wenn diese Befehle in einer Datei gespeichert werden, kann man sie später als Skript ausführen.
Typische Dateiendung:
.sh
Beispiel:
backup.sh
Wichtig:
Die Endung .sh ist hilfreich,
aber nicht allein entscheidend.
Entscheidend sind Inhalt,
Rechte
und Ausführung.
Merksatz:
Bash-Skripte bestehen aus Shell-Befehlen.
Warum Skripte nutzen?
Skripte helfen bei:
- Wiederholung
- Automatisierung
- Standardisierung
- Dokumentation
- Fehlervermeidung
- schneller Ausführung
- reproduzierbaren Abläufen
Beispiel:
Statt jeden Tag mehrere Befehle manuell einzugeben,
kann ein Skript diese Befehle automatisch ausführen.
Merksatz:
Skripte machen wiederkehrende Aufgaben wiederholbar.
Ein erstes Skript
Datei erstellen:
nano hallo.sh
Inhalt:
#!/bin/bash
echo "Hallo Linux"
date
whoami
Speichern und schließen.
Ausführbar machen:
chmod +x hallo.sh
Starten:
./hallo.sh
Merksatz:
Skript erstellen,
ausführbar machen,
starten.
Shebang
Die erste Zeile eines Skripts ist häufig der Shebang.
Beispiel:
#!/bin/bash
Bedeutung:
Das Skript soll mit /bin/bash ausgeführt werden.
Alternative:
#!/usr/bin/env bash
Bedeutung:
bash wird über die Umgebung gesucht.
Wichtig:
Der Shebang ist besonders wichtig,
wenn ein Skript direkt gestartet wird.
Merksatz:
Shebang legt fest,
welcher Interpreter das Skript ausführt.
Skript ausführen
Es gibt mehrere Möglichkeiten, ein Skript auszuführen.
Direkt starten:
./script.sh
Dafür braucht das Skript Ausführrecht.
Ausführen mit bash:
bash script.sh
Dafür braucht das Skript nicht zwingend Ausführrecht, weil bash die Datei liest.
Unterschied:
| Startart | Bedeutung |
|---|---|
| ./script.sh | Skript direkt ausführen, Shebang und x-Recht wichtig |
| bash script.sh | Skript mit Bash ausführen |
| sh script.sh | Skript mit sh ausführen, kann anders funktionieren |
Merksatz:
./script.sh nutzt Shebang und Ausführrecht.
bash script.sh nutzt Bash direkt.
Ausführrecht setzen
Ein Skript direkt ausführbar machen:
chmod +x script.sh
Prüfen:
ls -l script.sh
Beispiel:
-rwxr-xr-x script.sh
Das x bedeutet:
ausführbar
Wenn x fehlt, kommt oft:
Permission denied
Merksatz:
Direkt gestartete Skripte brauchen x-Recht.
Aktuelles Verzeichnis und ./ erklären
Wenn man ein Skript im aktuellen Verzeichnis starten möchte, nutzt man:
./script.sh
Bedeutung:
Starte script.sh aus dem aktuellen Verzeichnis.
Warum nicht einfach:
script.sh
Weil das aktuelle Verzeichnis normalerweise nicht im PATH enthalten ist.
Merksatz:
./ bedeutet:
aus dem aktuellen Verzeichnis.
Kommentare
Kommentare erklären, was ein Skript macht.
Kommentarzeilen beginnen mit:
#
Beispiel:
# Dieses Skript zeigt Systeminformationen an
echo "System:"
hostname
Kommentare werden nicht ausgeführt.
Vorteile:
verständlicher
wartbarer
besser für Übergabe
besser für Fehlersuche
Merksatz:
Kommentare erklären den Zweck,
nicht jeden einzelnen offensichtlichen Befehl.
echo
echo gibt Text aus.
Beispiele:
echo "Hallo"
echo "Backup startet"
echo "Aktueller Benutzer: $USER"
Typische Nutzung:
Statusmeldungen
Debug-Ausgaben
einfache Benutzerinformationen
Merksatz:
echo schreibt Text in die Ausgabe.
Variablen
Variablen speichern Werte.
Beispiel:
NAME="Felix"
echo "$NAME"
Wichtig:
Keine Leerzeichen um das Gleichheitszeichen.
Richtig:
NAME="Felix"
Falsch:
NAME = "Felix"
Merksatz:
Variable setzen ohne Leerzeichen.
Variablen verwenden
Variablen werden mit $ angesprochen.
Beispiel:
SERVER="web01"
echo "Servername: $SERVER"
Sicherer Stil:
echo "Servername: ${SERVER}"
Warum?
${SERVER} grenzt den Variablennamen sauber ab.
Merksatz:
$VARIABLE liest den Wert einer Variable.
Anführungszeichen bei Variablen
Variablen sollten meistens in doppelte Anführungszeichen gesetzt werden.
Beispiel:
DATEI="Meine Datei.txt"
cat "$DATEI"
Ohne Anführungszeichen würde die Shell den Dateinamen wegen des Leerzeichens falsch aufteilen.
Merksatz:
Variablen in Skripten meistens quoten:
"$VARIABLE"
Einfache und doppelte Anführungszeichen
| Zeichen | Wirkung |
|---|---|
| " " | Variablen werden ausgewertet |
| ' ' | Variablen werden nicht ausgewertet |
Beispiel:
NAME="Felix"
echo "Hallo $NAME"
Ausgabe:
Hallo Felix
Beispiel:
echo 'Hallo $NAME'
Ausgabe:
Hallo $NAME
Merksatz:
Doppelte Quotes erlauben Variablen.
Einfache Quotes schützen Text.
Befehlsausgabe in Variable speichern
Die Ausgabe eines Befehls kann in einer Variable gespeichert werden.
Beispiel:
HEUTE=$(date)
echo "$HEUTE"
Hostname speichern:
HOST=$(hostname)
echo "System: $HOST"
Merksatz:
$(befehl) speichert Befehlsausgabe.
Parameter an Skripte übergeben
Skripte können Parameter erhalten.
Beispielaufruf:
./backup.sh /home/felix
Im Skript:
echo "Erster Parameter: $1"
Wichtige Parameter:
| Variable | Bedeutung |
|---|---|
| $0 | Name des Skripts |
| $1 | erster Parameter |
| $2 | zweiter Parameter |
| $3 | dritter Parameter |
| $# | Anzahl der Parameter |
| "$@" | alle Parameter einzeln sauber übergeben |
Merksatz:
$1 ist der erste übergebene Parameter.
Beispiel mit Parameter
Skript:
#!/bin/bash
echo "Skriptname: $0"
echo "Erster Parameter: $1"
echo "Anzahl Parameter: $#"
Start:
./test.sh server01
Ausgabe sinngemäß:
Skriptname: ./test.sh
Erster Parameter: server01
Anzahl Parameter: 1
Merksatz:
Parameter machen Skripte flexibel.
Prüfen, ob Parameter fehlt
Beispiel:
#!/bin/bash
if [ -z "$1" ]; then
echo "Fehler: Bitte Dateiname angeben"
exit 1
fi
echo "Datei: $1"
Bedeutung:
-z prüft,
ob eine Zeichenkette leer ist.
Merksatz:
Eingaben prüfen,
bevor das Skript weiterarbeitet.
Exit-Code
Ein Skript kann mit einem Exit-Code beendet werden.
Beispiel:
exit 0
bedeutet:
erfolgreich
Beispiel:
exit 1
bedeutet:
Fehler
Allgemein:
| Exit-Code | Bedeutung |
|---|---|
| 0 | Erfolg |
| ungleich 0 | Fehler oder besonderer Zustand |
Merksatz:
Exit-Code 0 bedeutet Erfolg.
Letzten Exit-Code anzeigen
Nach einem Befehl:
echo $?
Beispiel:
ls /etc
echo $?
Wenn der Befehl erfolgreich war, ist der Exit-Code meist:
0
Wenn der Befehl fehlschlägt, ist er ungleich 0.
Merksatz:
$? enthält den Exit-Code des letzten Befehls.
if-Abfrage
Mit if kann ein Skript Entscheidungen treffen.
Grundstruktur:
if [ Bedingung ]; then
Befehl
fi
Beispiel:
if [ -f "/etc/hosts" ]; then
echo "Datei existiert"
fi
Merksatz:
if führt Befehle abhängig von Bedingungen aus.
if, else und elif
Beispiel:
if [ "$1" = "start" ]; then
echo "Starte Dienst"
elif [ "$1" = "stop" ]; then
echo "Stoppe Dienst"
else
echo "Unbekannter Parameter"
fi
Bedeutung:
| Schlüsselwort | Bedeutung |
|---|---|
| if | wenn |
| elif | sonst wenn |
| else | sonst |
| fi | Ende der if-Abfrage |
Merksatz:
fi beendet die if-Abfrage.
Wichtige Dateitests
| Test | Bedeutung |
|---|---|
| -f DATEI | normale Datei existiert |
| -d PFAD | Verzeichnis existiert |
| -e PFAD | Datei oder Verzeichnis existiert |
| -r DATEI | lesbar |
| -w DATEI | beschreibbar |
| -x DATEI | ausführbar |
| -s DATEI | Datei existiert und ist nicht leer |
Beispiele:
if [ -d "/var/log" ]; then
echo "Logverzeichnis vorhanden"
fi
if [ -x "./script.sh" ]; then
echo "Skript ist ausführbar"
fi
Merksatz:
Dateitests prüfen Pfade und Rechte.
Zeichenketten vergleichen
| Test | Bedeutung |
|---|---|
| "$A" = "$B" | gleich |
| "$A" != "$B" | ungleich |
| -z "$A" | leer |
| -n "$A" | nicht leer |
Beispiel:
if [ "$USER" = "root" ]; then
echo "Du bist root"
fi
Merksatz:
Strings immer in Quotes vergleichen.
Zahlen vergleichen
| Test | Bedeutung |
|---|---|
| -eq | gleich |
| -ne | ungleich |
| -lt | kleiner als |
| -le | kleiner oder gleich |
| -gt | größer als |
| -ge | größer oder gleich |
Beispiel:
ANZAHL=5
if [ "$ANZAHL" -gt 3 ]; then
echo "Mehr als 3"
fi
Merksatz:
Zahlen in Bash mit -eq,
-lt,
-gt vergleichen.
for-Schleife
Eine for-Schleife wiederholt Befehle für mehrere Werte.
Beispiel:
for DATEI in *.log; do
echo "Logdatei: $DATEI"
done
Bedeutung:
Für jede Datei,
die auf .log endet,
wird der Befehl ausgeführt.
Merksatz:
for läuft über eine Liste von Werten.
while-Schleife
Eine while-Schleife läuft, solange eine Bedingung wahr ist.
Beispiel:
ZAHL=1
while [ "$ZAHL" -le 5 ]; do
echo "$ZAHL"
ZAHL=$((ZAHL + 1))
done
Merksatz:
while läuft,
solange die Bedingung stimmt.
case-Abfrage
case eignet sich gut, wenn ein Parameter mehrere mögliche Werte haben kann.
Beispiel:
case "$1" in
start)
echo "Starte"
;;
stop)
echo "Stoppe"
;;
restart)
echo "Starte neu"
;;
*)
echo "Unbekannter Parameter"
exit 1
;;
esac
Merksatz:
case ist übersichtlich für mehrere Auswahlmöglichkeiten.
Rechnen in Bash
Einfache Rechnungen:
ZAHL=5
ERGEBNIS=$((ZAHL + 3))
echo "$ERGEBNIS"
Weitere Beispiele:
A=10
B=2
echo $((A + B))
echo $((A - B))
echo $((A * B))
echo $((A / B))
Wichtig:
Bash rechnet hier ganzzahlig.
Merksatz:
$(( ... )) nutzt arithmetische Auswertung.
read
Mit read kann ein Skript Benutzereingaben lesen.
Beispiel:
echo "Name eingeben:"
read NAME
echo "Hallo $NAME"
Mit Eingabeaufforderung:
read -p "Name: " NAME
Merksatz:
read liest Eingaben vom Benutzer.
Funktionen
Funktionen fassen wiederverwendbare Befehle zusammen.
Beispiel:
check_disk() {
df -h
}
check_disk
Vorteile:
Skript wird übersichtlicher
Wiederholungen werden reduziert
Aufgaben werden gegliedert
Merksatz:
Funktionen machen Skripte strukturierter.
set -e
Mit set -e kann ein Skript beendet werden, wenn ein Befehl fehlschlägt.
Beispiel:
#!/bin/bash
set -e
mkdir /tmp/testordner
cp datei.txt /tmp/testordner/
Wichtig:
set -e kann hilfreich sein,
muss aber bewusst genutzt werden,
weil nicht jeder ungleiche Exit-Code automatisch ein echter Fehler sein muss.
Merksatz:
set -e beendet das Skript bei Fehlern schneller.
set -u
Mit set -u erzeugt die Shell einen Fehler, wenn eine nicht gesetzte Variable verwendet wird.
Beispiel:
set -u
Vorteil:
Tippfehler bei Variablennamen fallen schneller auf.
Merksatz:
set -u schützt vor unbemerkten leeren Variablen.
set -o pipefail
Normalerweise zählt bei einer Pipe oft nur der Exit-Code des letzten Befehls.
Mit:
set -o pipefail
wird ein Fehler innerhalb einer Pipe besser erkannt.
Beispiel:
grep "Fehler" datei.txt | wc -l
Wenn grep wegen fehlender Datei fehlschlägt, soll das Skript dies erkennen können.
Merksatz:
pipefail macht Fehler in Pipes sichtbarer.
Häufiger sicherer Skriptanfang
Ein häufig genutzter sicherer Einstieg ist:
#!/bin/bash
set -euo pipefail
Bedeutung:
| Teil | Bedeutung |
|---|---|
| set -e | bei Fehler abbrechen |
| set -u | nicht gesetzte Variablen als Fehler behandeln |
| set -o pipefail | Fehler in Pipes erkennen |
Wichtig:
Diese Optionen sind nützlich,
aber man muss verstehen,
wie sie wirken.
Merksatz:
set -euo pipefail macht Skripte strenger.
Temporäre Dateien
Skripte sollten temporäre Dateien vorsichtig verwenden.
Besser als feste Namen:
mktemp
Beispiel:
TEMPFILE=$(mktemp)
echo "Test" > "$TEMPFILE"
cat "$TEMPFILE"
rm "$TEMPFILE"
Warum?
eindeutiger Dateiname
weniger Konflikte
sicherer als feste Namen in /tmp
Merksatz:
Temporäre Dateien besser mit mktemp erzeugen.
Skript mit Logausgabe
Beispiel:
#!/bin/bash
LOGDATEI="/tmp/mein-script.log"
echo "Start: $(date)" >> "$LOGDATEI"
df -h >> "$LOGDATEI"
echo "Ende: $(date)" >> "$LOGDATEI"
Merksatz:
Skripte sollten wichtige Aktionen protokollieren.
Beispiel: Speicher prüfen
Ein einfaches Skript:
#!/bin/bash
echo "Speicherprüfung auf $(hostname)"
df -h
Erweitert mit Logdatei:
#!/bin/bash
LOG="/tmp/speichercheck.log"
echo "Prüfung: $(date)" >> "$LOG"
df -h >> "$LOG"
Merksatz:
Kleine Skripte können Admin-Prüfungen automatisieren.
Beispiel: Dienststatus prüfen
Beispiel:
#!/bin/bash
DIENST="ssh"
if systemctl is-active --quiet "$DIENST"; then
echo "$DIENST läuft"
else
echo "$DIENST läuft nicht"
exit 1
fi
Bedeutung:
Das Skript prüft,
ob der Dienst aktiv ist.
Merksatz:
Skripte können Dienstzustände automatisch prüfen.
Beispiel: Datei sichern
Beispiel:
#!/bin/bash
DATEI="/etc/hosts"
BACKUP="/tmp/hosts.backup"
if [ -f "$DATEI" ]; then
cp "$DATEI" "$BACKUP"
echo "Backup erstellt: $BACKUP"
else
echo "Datei nicht gefunden: $DATEI"
exit 1
fi
Merksatz:
Vor Änderungen können Skripte automatisch Sicherungen erstellen.
Cron und Skripte
Skripte können regelmäßig über cron gestartet werden.
Beispielhafte Aufgaben:
tägliches Backup
Logprüfung
Speicherprüfung
Aufräumen temporärer Dateien
Monitoring-Check
Wichtig:
Cron hat oft eine andere Umgebung als die interaktive Shell.
Deshalb in Skripten möglichst:
absolute Pfade nutzen
PATH bewusst setzen
Logs schreiben
Fehlerausgaben umleiten
Merksatz:
Skripte in cron brauchen klare Pfade und Logging.
Typische Fehler in Bash-Skripten
| Fehler | Ursache |
|---|---|
| command not found | Paket fehlt, PATH falsch oder Tippfehler |
| Permission denied | Skript nicht ausführbar oder Rechteproblem |
| Variable leer | nicht gesetzt oder falsch geschrieben |
| Syntax error | Klammer, Quote oder Schlüsselwort fehlt |
| Datei nicht gefunden | relativer Pfad falsch |
| Skript läuft per Hand, aber nicht in cron | andere Umgebung oder PATH |
| if funktioniert nicht | Leerzeichen bei [ ] falsch |
| Schleife verarbeitet Dateinamen falsch | Variablen nicht gequotet |
| Pipe-Fehler bleibt unbemerkt | pipefail fehlt |
| rm löscht zu viel | Variable leer oder Wildcard falsch |
Wichtig bei [ ]
Bei if-Tests mit [ ] sind Leerzeichen wichtig.
Richtig:
if [ "$A" = "$B" ]; then
Falsch:
if ["$A"="$B"]; then
Warum?
[ ist ein eigener Befehl
und braucht getrennte Argumente.
Merksatz:
Bei [ ] müssen Leerzeichen stehen.
Variablen immer quoten
Unsicher:
rm $DATEI
Besser:
rm "$DATEI"
Warum?
Leerzeichen,
Sonderzeichen
oder leere Variablen können gefährlich werden.
Beispiel:
DATEI="Meine Datei.txt"
Ohne Quotes würde die Shell daraus mehrere Argumente machen.
Merksatz:
In Skripten Variablen fast immer in doppelte Quotes setzen.
Relative und absolute Pfade
Ein Skript kann aus verschiedenen Verzeichnissen gestartet werden.
Deshalb können relative Pfade Probleme machen.
Beispiel:
cp config.txt /tmp/
funktioniert nur, wenn config.txt im aktuellen Verzeichnis liegt.
Sicherer:
absolute Pfade verwenden
oder das Skriptverzeichnis bestimmen.
Merksatz:
Skripte sollten nicht blind vom aktuellen Verzeichnis abhängen.
Skripte und Root-Rechte
Manche Skripte brauchen administrative Rechte.
Beispiele:
Dienste neu starten
Pakete installieren
Dateien unter /etc ändern
Benutzer verwalten
Prüfen, ob Skript als root läuft:
if [ "$EUID" -ne 0 ]; then
echo "Bitte als root oder mit sudo ausführen"
exit 1
fi
Merksatz:
Administrative Skripte sollten Rechte bewusst prüfen.
Skript debuggen
Bash-Skript mit Debug-Ausgabe starten:
bash -x script.sh
Oder im Skript:
set -x
Bedeutung:
Befehle werden beim Ausführen angezeigt.
Ausschalten:
set +x
Merksatz:
bash -x hilft bei der Fehlersuche in Skripten.
ShellCheck
ShellCheck ist ein Werkzeug, das Bash-Skripte auf typische Fehler prüft.
Es erkennt zum Beispiel:
fehlende Quotes
unsichere Variablennutzung
mögliche Syntaxprobleme
ungenutzte Variablen
problematische Konstruktionen
Befehl, falls installiert:
shellcheck script.sh
Merksatz:
ShellCheck hilft,
Bash-Fehler früh zu finden.
Sichere Arbeitsweise beim Scripting
Vor produktiver Nutzung:
Skript in Testumgebung prüfen
mit harmlosen Beispieldaten testen
keine gefährlichen rm-Befehle ohne Prüfung
Variablen quoten
Fehlerbehandlung einbauen
Logs schreiben
Exit-Codes sinnvoll setzen
Backup vor Änderungen erstellen
Pfade bewusst wählen
Rechte prüfen
Merksatz:
Skripte automatisieren auch Fehler,
wenn man sie nicht prüft.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was ist ein Bash-Skript? | Textdatei mit Shell-Befehlen |
| Was ist ein Shebang? | legt Interpreter fest |
| Wie macht man ein Skript ausführbar? | chmod +x script.sh |
| Wie startet man ein Skript im aktuellen Verzeichnis? | ./script.sh |
| Was ist $1? | erster Parameter |
| Was ist $#? | Anzahl der Parameter |
| Was ist "$@"? | alle Parameter sauber einzeln |
| Was bedeutet exit 0? | erfolgreich beenden |
| Was bedeutet exit 1? | mit Fehler beenden |
| Was macht if? | Bedingung prüfen |
| Was macht for? | über Werte iterieren |
| Was macht while? | solange Bedingung wahr ist |
| Was macht case? | mehrere Auswahlfälle behandeln |
| Warum Variablen quoten? | Schutz vor Leerzeichen und Aufteilung |
| Warum Logs in Skripten? | Nachvollziehbarkeit |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| Shebang vergessen | Skript wird eventuell mit falscher Shell ausgeführt |
| chmod +x vergessen | direktes Starten schlägt fehl |
| ./ vor Skript vergessen | aktuelles Verzeichnis ist meist nicht im PATH |
| Leerzeichen bei Variablen setzen | NAME="Wert", nicht NAME = "Wert" |
| Variablen nicht quoten | Probleme bei Leerzeichen oder leeren Werten |
| [ ] ohne Leerzeichen schreiben | Syntaxfehler |
| relative Pfade blind nutzen | Startverzeichnis kann anders sein |
| cron wie interaktive Shell behandeln | cron hat andere Umgebung |
| Exit-Codes ignorieren | Automatisierung erkennt Fehler nicht sauber |
| rm mit leerer Variable | sehr gefährlich |
| Skript nicht testen | Fehler werden automatisiert |
IHK-sichere Kurzformulierung
Ein Bash-Skript ist eine Textdatei mit Shell-Befehlen, die automatisiert ausgeführt werden können. Die Shebang-Zeile wie #!/bin/bash legt fest, welcher Interpreter verwendet wird. Damit ein Skript direkt gestartet werden kann, benötigt es Ausführrechte, zum Beispiel mit chmod +x script.sh, und wird im aktuellen Verzeichnis mit ./script.sh gestartet. Variablen speichern Werte und sollten in Skripten meist in doppelte Anführungszeichen gesetzt werden. Parameter wie $1, $2 und $# machen Skripte flexibel. Mit if, case, for und while können Bedingungen und Wiederholungen umgesetzt werden. Exit-Codes zeigen Erfolg oder Fehler an und sind wichtig für Automatisierung, Monitoring und cronjobs. Skripte sollten getestet, dokumentiert und mit sinnvoller Fehlerbehandlung geschrieben werden.
Merksätze
Bash-Skript = automatisierte Befehlsfolge.
Shebang legt den Interpreter fest.
#!/bin/bash startet mit Bash.
chmod +x macht Skripte ausführbar.
./script.sh startet Skript aus aktuellem Verzeichnis.
bash script.sh startet Skript über Bash.
Kommentare erklären den Zweck.
echo gibt Text aus.
Variablen speichern Werte.
Keine Leerzeichen beim Setzen von Variablen.
$1 ist der erste Parameter.
$# ist die Anzahl der Parameter.
"$@" steht für alle Parameter sauber einzeln.
$(befehl) speichert Befehlsausgabe.
exit 0 bedeutet Erfolg.
exit 1 bedeutet Fehler.
$? zeigt den letzten Exit-Code.
if prüft Bedingungen.
elif bedeutet sonst wenn.
else bedeutet sonst.
fi beendet if.
for läuft über Werte.
while läuft solange eine Bedingung wahr ist.
case ist gut für mehrere Auswahlmöglichkeiten.
$(( ... )) rechnet ganzzahlig.
read liest Benutzereingaben.
Funktionen strukturieren Skripte.
set -e bricht bei Fehlern ab.
set -u erkennt nicht gesetzte Variablen.
pipefail erkennt Fehler in Pipes besser.
mktemp erzeugt temporäre Dateien sicherer.
Cron hat oft andere Umgebung als die normale Shell.
Variablen in Skripten meistens quoten.
Bei [ ] sind Leerzeichen wichtig.
Skripte immer testen,
bevor sie produktiv laufen.
Skripte automatisieren auch Fehler,
wenn sie falsch geschrieben sind.
12. Sicherheit, Backup und Automatisierung
12.1 Sicherheit, Backup und Automatisierung
Linux-Systeme werden häufig als Server, Container-Hosts, Datenbanksysteme, Webserver, NAS-Systeme oder Administrationssysteme eingesetzt.
Deshalb sind Sicherheit, Backups und Automatisierung besonders wichtig.
Ein Linux-System soll nicht nur funktionieren, sondern auch:
- sicher betrieben werden
- nachvollziehbar administriert werden
- regelmäßig gesichert werden
- im Fehlerfall wiederherstellbar sein
- wiederkehrende Aufgaben automatisch erledigen
- unnötige Risiken vermeiden
Merksatz:
Administration bedeutet nicht nur einrichten,
sondern sicher betreiben,
sichern
und überwachen.
Lernziele
Nach dieser Seite solltest du erklären können:
- welche Grundprinzipien Linux-Sicherheit hat
- warum minimale Rechte wichtig sind
- warum Updates sicherheitsrelevant sind
- warum Backups und Restore-Tests zusammengehören
- was RPO und RTO bedeuten
- welche Backup-Arten es gibt
- wie Automatisierung mit cron,
systemd Timern
und Skripten funktioniert
- warum Automatisierung dokumentiert und überwacht werden muss
- welche typischen Sicherheits-
und Backupfehler auftreten
Grundidee
Ein sicher betriebenes Linux-System braucht mehrere Schutzebenen.
Dazu gehören:
- Benutzer und Rechte
- sichere SSH-Konfiguration
- regelmäßige Updates
- Firewall-Regeln
- Diensthärtung
- Logauswertung
- Monitoring
- Backups
- Restore-Tests
- Automatisierung
- Dokumentation
Wichtig:
Eine einzelne Maßnahme reicht nicht aus.
Merksatz:
Sicherheit besteht aus mehreren Schichten.
Schutzziele der IT-Sicherheit
Die klassischen Schutzziele sind:
| Schutzziel | Bedeutung |
|---|---|
| Vertraulichkeit | Daten dürfen nur von Berechtigten gelesen werden |
| Integrität | Daten dürfen nicht unbemerkt verändert werden |
| Verfügbarkeit | Systeme und Daten müssen bei Bedarf nutzbar sein |
Beispiele:
| Beispiel | Schutzziel |
|---|---|
| SSH-Schlüssel schützen | Vertraulichkeit |
| Prüfsummen nutzen | Integrität |
| Backups und Redundanz | Verfügbarkeit |
Merksatz:
Vertraulichkeit,
Integrität
und Verfügbarkeit sind zentrale Schutzziele.
Prinzip der minimalen Rechte
Ein Benutzer, Dienst oder Prozess sollte nur die Rechte haben, die er wirklich benötigt.
Dieses Prinzip nennt man:
Least Privilege
Beispiele:
Ein Webserver braucht keine Root-Rechte,
wenn er nur Webseiten ausliefern soll.
Ein Backup-Benutzer braucht nicht automatisch Schreibrechte auf alle Produktivdaten.
Ein normaler Benutzer sollte keine systemweiten Konfigurationen ändern dürfen.
Vorteil:
Fehler oder Angriffe richten weniger Schaden an.
Merksatz:
So wenig Rechte wie möglich,
so viele wie nötig.
Root-Rechte bewusst nutzen
Root kann fast alles auf dem System verändern.
Deshalb:
- nicht dauerhaft als root arbeiten
- sudo gezielt verwenden
- Befehle vor Ausführung prüfen
- Wildcards mit Vorsicht verwenden
- keine unbekannten Skripte als root ausführen
- administrative Aktionen dokumentieren
Beispiel:
sudo systemctl restart nginx
ist besser nachvollziehbar als dauerhaft als root zu arbeiten.
Merksatz:
Root-Rechte sind Werkzeug,
keine Arbeitsumgebung.
Dienstkonten
Dienste sollten unter eigenen Dienstkonten laufen.
Beispiele:
| Dienstkonto | Typischer Zweck |
|---|---|
| www-data | Webserver |
| nginx | Nginx-Webserver |
| postgres | PostgreSQL |
| mysql | MySQL/MariaDB |
| backup | Backup-Aufgaben |
Vorteil:
Wenn ein Dienst kompromittiert wird,
hat der Angreifer nur die Rechte dieses Dienstkontos.
Merksatz:
Dienste sollten nicht unnötig als root laufen.
SSH absichern
SSH ist ein häufiger Administrationszugang.
Wichtige Schutzmaßnahmen:
- sichere Passwörter oder SSH-Schlüssel nutzen
- direkten Root-Login vermeiden
- nur benötigte Benutzer zulassen
- Firewall-Regeln setzen
- Logs prüfen
- fehlgeschlagene Logins überwachen
- private Schlüssel schützen
- bekannte Hosts prüfen
Wichtige Datei:
/etc/ssh/sshd_config
Merksatz:
SSH ist mächtig und muss besonders geschützt werden.
SSH-Schlüssel schützen
Ein SSH-Schlüsselpaar besteht aus:
privatem Schlüssel
öffentlichem Schlüssel
Der öffentliche Schlüssel darf auf Servern liegen.
Der private Schlüssel bleibt geheim.
Wichtig:
privaten Schlüssel nicht weitergeben
Passphrase verwenden
Dateirechte passend setzen
Schlüssel bei Verlust oder Verdacht entfernen
authorized_keys regelmäßig prüfen
Merksatz:
Der private SSH-Schlüssel ist wie ein Passwort
und muss geschützt werden.
Firewall-Grundlagen
Eine Firewall begrenzt, welcher Netzwerkverkehr erlaubt ist.
Eine gute Firewall-Regel beschreibt:
- Quelle
- Ziel
- Protokoll
- Port
- Richtung
- Aktion
- Zweck
Beispiel:
| Feld | Beispiel |
|---|---|
| Quelle | Adminnetz |
| Ziel | Linux-Server |
| Protokoll | TCP |
| Port | 22 |
| Aktion | erlauben |
| Zweck | SSH-Administration |
Merksatz:
Port allein ist keine vollständige Firewall-Regel.
Nur benötigte Dienste betreiben
Jeder laufende Dienst kann eine Angriffsfläche sein.
Deshalb prüfen:
Welche Dienste laufen?
Welche Ports sind offen?
Welche Dienste werden wirklich benötigt?
Sind Dienste aktuell?
Sind Dienste sicher konfiguriert?
Prüfen:
systemctl --type=service
ss -tulpen
Merksatz:
Nicht benötigte Dienste deaktivieren oder entfernen.
Updates und Patchmanagement
Sicherheitsupdates schließen bekannte Schwachstellen.
Patchmanagement bedeutet:
Updates geplant,
kontrolliert
und nachvollziehbar einspielen.
Dazu gehören:
- verfügbare Updates prüfen
- Sicherheitsrelevanz bewerten
- Backup prüfen
- Wartungsfenster planen
- Updates einspielen
- Dienste prüfen
- Logs prüfen
- Dokumentation aktualisieren
Merksatz:
Updates sind Teil der Sicherheit.
Warum Updates nicht blind einspielen?
Updates sind wichtig, können aber auch Probleme verursachen.
Mögliche Risiken:
Dienst startet nicht mehr
Konfiguration ist nicht kompatibel
Abhängigkeiten ändern sich
Kernel-Update braucht Neustart
Anwendung verhält sich anders
Drittanbieter-Paket verursacht Konflikt
Deshalb:
vorher sichern
Änderungen dokumentieren
Dienste nachher prüfen
Rollback-Möglichkeit einplanen
Merksatz:
Sicherheitsupdates sind wichtig,
aber produktive Systeme brauchen kontrollierte Änderung.
Dateirechte und Sicherheit
Falsche Dateirechte sind ein häufiger Sicherheitsfehler.
Beispiele:
| Problem | Risiko |
|---|---|
| 777 auf Verzeichnissen | jeder darf schreiben |
| private Schlüssel zu offen | SSH verweigert Zugriff oder Schlüssel kann gelesen werden |
| Konfigurationsdateien für alle lesbar | Geheimnisse können sichtbar sein |
| Dienstdateien falscher Besitzer | Dienst startet nicht oder Sicherheitsrisiko |
| Backups für alle lesbar | Datenabfluss |
Merksatz:
Rechteprobleme sind Sicherheits-
und Betriebsprobleme.
Sensible Dateien
Sensible Dateien müssen besonders geschützt werden.
Beispiele:
SSH-Schlüssel
Datenbank-Passwörter
API-Tokens
Zertifikatsschlüssel
Backup-Dateien
Konfigurationsdateien mit Zugangsdaten
Passwort-Hashes
Beispiele für Pfade:
~/.ssh/id_rsa
~/.ssh/authorized_keys
/etc/shadow
/etc/ssh/sshd_config
/etc/sudoers
Merksatz:
Geheimnisse gehören nicht in offen lesbare Dateien.
sudo sicher nutzen
sudo sollte gezielt vergeben werden.
Wichtige Punkte:
- nicht jeder Benutzer braucht sudo
- sudo-Regeln dokumentieren
- Gruppenmitgliedschaften prüfen
- keine unnötigen NOPASSWD-Regeln
- administrative Aktionen nachvollziehbar halten
Prüfen:
id benutzer
groups benutzer
sudo -l
Merksatz:
sudo ist kontrollierte Rechteerweiterung.
Logs und Sicherheitsereignisse
Sicherheitsrelevante Ereignisse findet man häufig in Authentifizierungs- und Dienstlogs.
Beispiele:
fehlgeschlagene Logins
erfolgreiche SSH-Logins
sudo-Nutzung
neue Benutzer
Dienststarts
Firewall-Blockierungen
ungewöhnliche Prozesse
Beispiele:
journalctl -u ssh
grep -i "failed" /var/log/auth.log
grep -i "sudo" /var/log/auth.log
Merksatz:
Sicherheit ohne Logprüfung ist blind.
Backups
Ein Backup ist eine Sicherung von Daten, Konfigurationen oder Systemzuständen.
Backups schützen vor:
- versehentlichem Löschen
- Hardwaredefekt
- Dateisystemfehler
- Ransomware
- fehlgeschlagenem Update
- Fehlkonfiguration
- Diebstahl
- Brand oder Wasserschaden
- Benutzerfehler
Merksatz:
Kein Backup bedeutet:
keine sichere Wiederherstellung.
Backup ist nicht gleich Restore
Ein Backup ist nur dann wertvoll, wenn es auch wiederhergestellt werden kann.
Deshalb wichtig:
Restore testen
Wiederherstellungszeit messen
Datenintegrität prüfen
Dokumentation erstellen
Zuständigkeiten klären
Notfallzugriff prüfen
Merksatz:
Ein ungetestetes Backup ist nur eine Hoffnung.
Restore
Restore bedeutet:
Wiederherstellung aus einem Backup.
Beispiele:
einzelne Datei wiederherstellen
Datenbank zurückspielen
VM wiederherstellen
Serverkonfiguration wiederherstellen
komplettes System neu aufbauen
Wichtig:
Restore muss geübt und dokumentiert sein.
Merksatz:
Backup ist die Sicherung.
Restore ist die Wiederherstellung.
RPO
RPO steht für:
Recovery Point Objective
Es beschreibt, wie viel Datenverlust maximal akzeptabel ist.
Beispiel:
RPO 24 Stunden
bedeutet:
Im schlimmsten Fall dürfen Daten seit dem letzten täglichen Backup verloren gehen.
Beispiel:
RPO 1 Stunde
bedeutet:
Maximal eine Stunde Datenverlust ist akzeptabel.
Merksatz:
RPO beantwortet:
Wie viele Daten dürfen maximal verloren gehen?
RTO
RTO steht für:
Recovery Time Objective
Es beschreibt, wie lange die Wiederherstellung maximal dauern darf.
Beispiel:
RTO 4 Stunden
bedeutet:
Der Dienst soll innerhalb von 4 Stunden wieder laufen.
Merksatz:
RTO beantwortet:
Wie schnell muss es wieder funktionieren?
RPO und RTO unterscheiden
| Begriff | Frage | Beispiel |
|---|---|---|
| RPO | Wie viele Daten dürfen verloren gehen? | maximal 1 Stunde |
| RTO | Wie lange darf die Wiederherstellung dauern? | maximal 4 Stunden |
Merksatz:
RPO = Datenverlust.
RTO = Wiederherstellungszeit.
Backup-Arten
| Backup-Art | Bedeutung |
|---|---|
| Vollbackup | vollständige Sicherung |
| inkrementelles Backup | sichert Änderungen seit letztem Backup |
| differentielles Backup | sichert Änderungen seit letztem Vollbackup |
| Snapshot | Zustand zu einem Zeitpunkt |
| Image-Backup | vollständiges Abbild eines Systems |
| Datei-Backup | Sicherung einzelner Dateien und Ordner |
| Datenbankdump | logische Sicherung einer Datenbank |
Merksatz:
Backup-Art muss zum Wiederherstellungsziel passen.
Vollbackup
Ein Vollbackup sichert alle ausgewählten Daten vollständig.
Vorteile:
einfach zu verstehen
Wiederherstellung oft einfacher
vollständiger Stand
Nachteile:
benötigt viel Speicher
dauert länger
erzeugt mehr Last
Merksatz:
Vollbackup ist einfach,
aber speicherintensiv.
Inkrementelles Backup
Ein inkrementelles Backup sichert nur Änderungen seit dem letzten Backup.
Vorteile:
spart Speicher
schneller als Vollbackup
Nachteile:
Wiederherstellung kann mehrere Sicherungen benötigen
Kette muss vollständig sein
Merksatz:
Inkrementell spart Speicher,
macht Restore aber abhängiger von der Backup-Kette.
Differentielles Backup
Ein differentielles Backup sichert Änderungen seit dem letzten Vollbackup.
Vorteile:
Restore einfacher als bei langer inkrementeller Kette
weniger Speicher als tägliches Vollbackup
Nachteile:
wächst bis zum nächsten Vollbackup
Merksatz:
Differentiell bezieht sich auf das letzte Vollbackup.
Snapshot
Ein Snapshot ist ein Zustand zu einem bestimmten Zeitpunkt.
Snapshots sind nützlich vor:
Updates
Konfigurationsänderungen
Tests
größeren Wartungen
Wichtig:
Snapshots ersetzen nicht immer ein echtes externes Backup.
Risiko:
Wenn das gesamte Storage-System ausfällt,
kann auch der Snapshot verloren sein.
Merksatz:
Snapshot ist praktisch,
aber nicht automatisch ein vollständiges Backup-Konzept.
3-2-1-Regel
Eine bekannte Backup-Regel ist:
3 Kopien der Daten
2 unterschiedliche Medientypen oder Speicherorte
1 Kopie extern oder offline
Ziel:
Schutz vor Hardwareausfall,
Bedienfehlern,
Ransomware
und Standortschäden.
Merksatz:
3-2-1 reduziert das Risiko,
dass alle Kopien gleichzeitig verloren gehen.
Offline-Backup
Ein Offline-Backup ist nach der Sicherung nicht dauerhaft erreichbar.
Vorteile:
Schutz vor Ransomware
Schutz vor versehentlichem Löschen
Schutz vor kompromittierten Zugangsdaten
Beispiele:
externe Festplatte getrennt lagern
offline geschalteter Backup-Speicher
unveränderbare Sicherung
Merksatz:
Was dauerhaft verbunden ist,
kann auch dauerhaft angegriffen oder gelöscht werden.
Backup-Verschlüsselung
Backups enthalten oft sensible Daten.
Deshalb sollten sie geschützt werden durch:
- Verschlüsselung
- Zugriffskontrolle
- sichere Aufbewahrung
- getrennte Zugangsdaten
- Protokollierung
- regelmäßige Prüfung
Wichtig:
Schlüssel und Passwörter müssen sicher aufbewahrt werden.
Ohne Schlüssel ist ein verschlüsseltes Backup nicht wiederherstellbar.
Merksatz:
Verschlüsseltes Backup schützt Daten,
aber der Schlüssel muss verfügbar bleiben.
Backup-Integrität
Backups müssen vollständig und unverändert sein.
Mögliche Prüfungen:
Prüfsummen
Test-Restore
Backup-Logs
Vergleich von Dateianzahlen
Stichproben
automatische Prüfberichte
Merksatz:
Backup erfolgreich gemeldet heißt noch nicht:
Restore funktioniert.
Backup von Konfigurationen
Neben Daten sollten auch Konfigurationen gesichert werden.
Beispiele:
/etc
systemd-Units
Firewall-Regeln
Webserver-Konfiguration
Datenbank-Konfiguration
SSH-Konfiguration
Cronjobs
Skripte
Docker Compose Dateien
Dokumentation
Warum?
Ohne Konfiguration dauert Wiederherstellung deutlich länger.
Merksatz:
Daten ohne Konfiguration reichen oft nicht für schnellen Restore.
Backup von Datenbanken
Datenbanken sollte man nicht einfach im laufenden Betrieb als Dateien kopieren, wenn dadurch inkonsistente Daten entstehen können.
Sicherer sind oft:
Datenbankdump
datenbankspezifische Backup-Werkzeuge
konsistente Snapshots
Replikation plus Backup
Beispiele:
PostgreSQL:
pg_dump
MySQL/MariaDB:
mysqldump
Merksatz:
Datenbanken brauchen konsistente Backups.
Automatisierung
Automatisierung bedeutet, wiederkehrende Aufgaben automatisch auszuführen.
Beispiele:
Backups
Logrotation
Updates prüfen
Speicherplatz prüfen
Dienste überwachen
Reports erstellen
Dateien aufräumen
Zertifikatsprüfung
Synchronisation
Merksatz:
Automatisierung spart Zeit,
muss aber überwacht werden.
cron
cron ist ein klassischer Zeitplaner unter Linux.
Cronjobs können Befehle oder Skripte regelmäßig ausführen.
Crontab bearbeiten:
crontab -e
Crontab anzeigen:
crontab -l
Beispiel:
0 2 * * * /home/felix/backup.sh
Bedeutung:
Jeden Tag um 02:00 Uhr backup.sh ausführen.
Merksatz:
cron startet Aufgaben nach Zeitplan.
Crontab-Zeitfelder
Ein Cronjob hat fünf Zeitfelder.
Minute Stunde Tag-des-Monats Monat Wochentag Befehl
Beispiel:
30 3 * * 1 /home/felix/report.sh
Bedeutung:
Jeden Montag um 03:30 Uhr.
| Feld | Bedeutung |
|---|---|
| Minute | 0 bis 59 |
| Stunde | 0 bis 23 |
| Tag des Monats | 1 bis 31 |
| Monat | 1 bis 12 |
| Wochentag | 0 bis 7, häufig 0 und 7 = Sonntag |
Merksatz:
Cron hat fünf Zeitfelder vor dem Befehl.
Typische Cron-Beispiele
| Cron-Eintrag | Bedeutung |
|---|---|
| 0 2 * * * | täglich um 02:00 Uhr |
| */15 * * * * | alle 15 Minuten |
| 0 * * * * | jede volle Stunde |
| 30 3 * * 1 | montags um 03:30 Uhr |
| 0 1 1 * * | am 1. jedes Monats um 01:00 Uhr |
Merksatz:
Stern bedeutet:
jeder mögliche Wert.
cron und Umgebung
Cron hat oft eine andere Umgebung als die normale Shell.
Typische Probleme:
PATH ist anders
Variablen fehlen
Arbeitsverzeichnis ist anders
Ausgaben gehen verloren
Berechtigungen unterscheiden sich
Deshalb in Cron-Skripten:
absolute Pfade verwenden
PATH bewusst setzen
Logs schreiben
Fehlerausgabe umleiten
Skripte ausführbar machen
Merksatz:
Ein Skript,
das manuell funktioniert,
funktioniert nicht automatisch auch in cron.
cron mit Logging
Beispiel:
0 2 * * * /home/felix/backup.sh >> /var/log/backup.log 2>&1
Bedeutung:
Standardausgabe und Fehlerausgabe werden in backup.log geschrieben.
Merksatz:
Automatisierung braucht Logausgaben.
systemd Timer
systemd Timer sind eine moderne Alternative zu cron.
Sie bestehen meist aus:
.service
.timer
Beispielhafte Einsatzbereiche:
regelmäßige Backups
Prüfskripte
Aufräumaufgaben
Monitoring-Jobs
Vorteile:
Integration in systemd
Logs über journalctl
Abhängigkeiten möglich
Status über systemctl
Merksatz:
systemd Timer sind zeitgesteuerte systemd-Units.
cron und systemd Timer vergleichen
| Merkmal | cron | systemd Timer |
|---|---|---|
| Klassiker | ja | moderner |
| einfache Zeitpläne | gut | gut |
| systemd-Integration | gering | hoch |
| Logs | oft manuell | journalctl |
| Abhängigkeiten | begrenzt | besser |
| Statusprüfung | weniger einheitlich | systemctl |
Merksatz:
cron ist einfach.
systemd Timer sind stärker in systemd integriert.
Automatisierung überwachen
Automatisierte Aufgaben können fehlschlagen.
Mögliche Ursachen:
Ziel nicht erreichbar
Speicher voll
Rechteproblem
Passwort oder Schlüssel ungültig
Netzwerkproblem
Skriptfehler
Dienst nicht verfügbar
Pfad geändert
Deshalb wichtig:
Logs
Exit-Codes
Benachrichtigung bei Fehler
regelmäßige Kontrolle
Monitoring
Merksatz:
Eine Automatisierung ohne Kontrolle kann unbemerkt ausfallen.
Exit-Codes in Automatisierung
Exit-Codes zeigen, ob ein Befehl erfolgreich war.
| Exit-Code | Bedeutung |
|---|---|
| 0 | Erfolg |
| ungleich 0 | Fehler oder besonderer Zustand |
Wichtig für:
cron
systemd Timer
Monitoring
Skripte
CI/CD
Merksatz:
Automatisierung muss Fehler über Exit-Codes erkennbar machen.
Dokumentation
Sicherheits- Backup- und Automatisierungsmaßnahmen müssen dokumentiert werden.
Dokumentieren:
- Zweck
- Pfade
- Zeitpläne
- Benutzer
- Rechte
- Abhängigkeiten
- Restore-Schritte
- Verantwortliche
- Prüftermine
- bekannte Risiken
- Änderungen
Merksatz:
Was nicht dokumentiert ist,
ist im Notfall schwer wiederherzustellen.
Typische Sicherheitsfehler
| Fehler | Risiko |
|---|---|
| direkter Root-Login per SSH | leichteres Angriffsziel |
| schwache Passwörter | unberechtigter Zugriff |
| 777-Rechte | jeder darf alles |
| keine Updates | bekannte Schwachstellen bleiben offen |
| unnötige Dienste | größere Angriffsfläche |
| private Schlüssel ungeschützt | Identitätsdiebstahl |
| Geheimnisse in Skripten | Zugangsdaten werden sichtbar |
| keine Logs | Vorfälle schwer nachvollziehbar |
| keine Firewall | unnötige Dienste erreichbar |
| sudo für alle | Rechteausweitung |
Typische Backupfehler
| Fehler | Risiko |
|---|---|
| kein Restore-Test | Backup eventuell unbrauchbar |
| Backup liegt nur lokal | Verlust bei Hardwaredefekt |
| Backup dauerhaft beschreibbar | Ransomware kann es verschlüsseln |
| Datenbankdateien inkonsistent kopiert | Restore fehlerhaft |
| Backup nicht verschlüsselt | Datenabfluss |
| Backup-Logs nicht geprüft | Fehler bleiben unbemerkt |
| Konfiguration nicht gesichert | Wiederherstellung dauert länger |
| RPO/RTO nicht definiert | unklare Anforderungen |
| Speicherziel voll | Backups schlagen fehl |
| alte Backups nie gelöscht | Speicher läuft voll |
Typische Automatisierungsfehler
| Fehler | Risiko |
|---|---|
| keine Logs | Fehler bleiben unsichtbar |
| keine Exit-Code-Prüfung | Fehler werden nicht erkannt |
| relative Pfade in cron | Skript findet Dateien nicht |
| PATH nicht gesetzt | Befehl wird nicht gefunden |
| keine Benachrichtigung | Ausfall bleibt unbemerkt |
| Skript nicht getestet | Fehler wird automatisiert |
| Geheimnisse im Klartext | Sicherheitsrisiko |
| keine Dokumentation | Wartung schwierig |
| keine Rechteprüfung | Skript scheitert oder ist unsicher |
| keine Sperre gegen parallele Läufe | Datenkonflikte |
Sichere Arbeitsweise
Bei Sicherheit:
minimale Rechte
Dienste prüfen
Updates planen
SSH absichern
Firewall setzen
Logs kontrollieren
Bei Backups:
Backupziel prüfen
Backup automatisieren
Restore testen
RPO/RTO definieren
Backup verschlüsseln
externe Kopie vorhalten
Bei Automatisierung:
Skripte testen
Logs schreiben
Exit-Codes nutzen
Monitoring einrichten
Dokumentation pflegen
Merksatz:
Sicherer Betrieb entsteht durch regelmäßige Kontrolle,
nicht durch einmalige Einrichtung.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Was bedeutet Least Privilege? | nur notwendige Rechte vergeben |
| Warum sollte SSH abgesichert werden? | zentraler Administrationszugang |
| Warum sind Updates wichtig? | schließen bekannte Schwachstellen |
| Was ist ein Backup? | Sicherung von Daten oder Systemzuständen |
| Was ist Restore? | Wiederherstellung aus Backup |
| Was bedeutet RPO? | maximal akzeptabler Datenverlust |
| Was bedeutet RTO? | maximal akzeptable Wiederherstellungszeit |
| Was ist ein Vollbackup? | vollständige Sicherung |
| Was ist ein inkrementelles Backup? | Änderungen seit letztem Backup |
| Was ist ein differentielles Backup? | Änderungen seit letztem Vollbackup |
| Was ist ein Snapshot? | Zustand zu einem Zeitpunkt |
| Was macht cron? | zeitgesteuerte Aufgaben ausführen |
| Was ist ein systemd Timer? | zeitgesteuerte systemd-Unit |
| Warum Restore-Test? | prüft, ob Backup wirklich nutzbar ist |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| Backup mit Restore gleichsetzen | Backup sichern, Restore wiederherstellen |
| Backup nie testen | ungetestetes Backup ist unsicher |
| RPO und RTO verwechseln | RPO Datenverlust, RTO Zeit |
| Snapshot als vollständiges Backup sehen | nicht automatisch extern oder unabhängig |
| cron ohne Logging | Fehler bleiben unsichtbar |
| manuelles Skript läuft, cron nicht | andere Umgebung beachten |
| 777 als schnelle Lösung | Sicherheitsrisiko |
| Root dauerhaft nutzen | unnötig gefährlich |
| Updates ohne Prüfung | produktive Dienste können betroffen sein |
| keine Dokumentation | Notfallwiederherstellung erschwert |
| Geheimnisse in Skripten speichern | Sicherheitsrisiko |
IHK-sichere Kurzformulierung
Linux-Sicherheit basiert auf mehreren Maßnahmen wie minimalen Rechten, sicheren SSH-Zugängen, regelmäßigen Updates, Firewall-Regeln, Diensthärtung, Logging und Monitoring. Backups schützen vor Datenverlust, sind aber nur zuverlässig, wenn auch die Wiederherstellung getestet wurde. RPO beschreibt, wie viel Datenverlust maximal akzeptabel ist, während RTO beschreibt, wie lange die Wiederherstellung maximal dauern darf. Backup-Arten sind unter anderem Vollbackup, inkrementelles Backup, differentielles Backup, Snapshot, Image-Backup und Datenbankdump. Wiederkehrende Aufgaben können mit cron, systemd Timern und Skripten automatisiert werden. Automatisierung muss protokolliert, überwacht und dokumentiert werden, damit Fehler nicht unbemerkt bleiben.
Merksätze
Sicherheit besteht aus mehreren Schichten.
Vertraulichkeit,
Integrität
und Verfügbarkeit sind zentrale Schutzziele.
Least Privilege bedeutet:
nur notwendige Rechte.
Root-Rechte bewusst verwenden.
Dienste nicht unnötig als root betreiben.
SSH besonders absichern.
Privater SSH-Schlüssel bleibt geheim.
Firewall-Regeln brauchen Quelle,
Ziel,
Protokoll,
Port,
Aktion
und Zweck.
Nicht benötigte Dienste entfernen oder deaktivieren.
Updates schließen bekannte Schwachstellen.
Patchmanagement ist ein Prozess.
Backup schützt vor Datenverlust.
Restore ist die Wiederherstellung.
Ein ungetestetes Backup ist nur eine Hoffnung.
RPO = maximal akzeptabler Datenverlust.
RTO = maximal akzeptable Wiederherstellungszeit.
Vollbackup sichert alles.
Inkrementell sichert Änderungen seit letztem Backup.
Differentiell sichert Änderungen seit letztem Vollbackup.
Snapshot ist ein Zeitpunktzustand.
Snapshot ersetzt nicht automatisch ein externes Backup.
3-2-1-Regel reduziert Backup-Risiken.
Backup-Speicher besonders schützen.
Datenbanken brauchen konsistente Backups.
cron startet Aufgaben nach Zeitplan.
systemd Timer sind zeitgesteuerte systemd-Units.
Cron hat oft andere Umgebung als die normale Shell.
Automatisierung braucht Logs.
Exit-Codes zeigen Erfolg oder Fehler.
Automatisierung ohne Kontrolle kann unbemerkt ausfallen.
Dokumentation ist Teil des Betriebs.
Sicherer Betrieb ist regelmäßige Kontrolle,
nicht einmalige Einrichtung.
13. Linux im Serverbetrieb
13.1 Linux im Serverbetrieb
Linux wird sehr häufig im Serverbetrieb eingesetzt.
Typische Einsatzbereiche sind:
- Webserver
- Datenbankserver
- Dateiserver
- DNS-Server
- DHCP-Server
- Mailserver
- Container-Hosts
- Monitoring-Systeme
- Backup-Server
- Proxy-Server
- VPN-Server
- NAS-Systeme
Für Fachinformatiker Systemintegration ist Linux im Serverbetrieb besonders wichtig, weil viele Dienste in Unternehmen, Rechenzentren, Cloud-Umgebungen und Homelabs auf Linux laufen.
Merksatz:
Linux ist eines der wichtigsten Betriebssysteme im Serverbereich.
Lernziele
Nach dieser Seite solltest du erklären können:
- warum Linux häufig als Serverbetriebssystem genutzt wird
- welche Aufgaben Linux-Server übernehmen können
- was Serverdienste sind
- wie Serverdienste verwaltet werden
- welche Rolle SSH im Serverbetrieb hat
- warum Headless-Betrieb typisch ist
- wie Linux mit Webservern,
Datenbanken,
Containern
und Freigaben zusammenhängt
- welche Grundregeln für sicheren Serverbetrieb gelten
- wie man typische Serverprobleme eingrenzt
Grundidee
Ein Server ist ein System, das Dienste für andere Systeme bereitstellt.
Ein Linux-Server kann zum Beispiel:
Webseiten ausliefern
Datenbanken bereitstellen
Dateien speichern
Benutzer authentifizieren
Container ausführen
Backups speichern
DNS-Namen auflösen
Netzwerkzugriffe absichern
Anwendungen hosten
Wichtig:
Ein Server ist nicht automatisch ein bestimmter Gerätetyp.
Server bedeutet vor allem:
Das System stellt Dienste bereit.
Merksatz:
Server stellen Dienste für Clients bereit.
Warum Linux im Serverbetrieb häufig genutzt wird
Linux wird auf Servern häufig eingesetzt, weil es:
- stabil läuft
- gut automatisierbar ist
- ressourcenschonend betrieben werden kann
- ohne grafische Oberfläche auskommt
- viele Netzwerkdienste unterstützt
- gut per SSH administrierbar ist
- stark in Cloud- und Containerumgebungen verbreitet ist
- viele Paketmanager und Repositories bietet
- gut dokumentierbare Konfigurationen nutzt
- flexibel anpassbar ist
Merksatz:
Linux ist stabil,
flexibel
und gut automatisierbar.
Server und Client
Ein Client nutzt einen Dienst.
Ein Server stellt einen Dienst bereit.
Beispiele:
| Client | Serverdienst |
|---|---|
| Browser | Webserver |
| E-Mail-Programm | Mailserver |
| Datenbankanwendung | Datenbankserver |
| PC im Netzwerk | Dateiserver |
| SSH-Client | SSH-Server |
| DNS-Client | DNS-Server |
Merksatz:
Client fragt an.
Server antwortet mit einem Dienst.
Serverdienst
Ein Serverdienst ist ein Programm, das im Hintergrund läuft und eine bestimmte Funktion bereitstellt.
Beispiele:
| Dienst | Zweck |
|---|---|
| sshd | Fernadministration |
| nginx | Webserver |
| apache2 | Webserver |
| mariadb | Datenbank |
| postgresql | Datenbank |
| named / bind9 | DNS |
| isc-dhcp-server | DHCP |
| samba | SMB-Dateifreigaben |
| nfs-server | NFS-Dateifreigaben |
| docker | Container |
| cron | zeitgesteuerte Aufgaben |
Merksatz:
Ein Server besteht oft aus mehreren Diensten.
Headless-Betrieb
Viele Linux-Server laufen ohne Monitor, Tastatur und grafische Oberfläche.
Das nennt man:
headless
Administration erfolgt meist über:
SSH
Weboberflächen
Automatisierung
Monitoring
Konfigurationsdateien
Vorteile:
weniger Ressourcenverbrauch
weniger Angriffsfläche
bessere Automatisierung
einfacher Remote-Betrieb
Merksatz:
Server werden häufig ohne grafische Oberfläche betrieben.
SSH im Serverbetrieb
SSH ist der wichtigste Zugriff für Linux-Serveradministration.
Typischer Port:
TCP 22
Beispiel:
ssh benutzer@server
SSH ermöglicht:
Befehle ausführen
Konfigurationen bearbeiten
Logs prüfen
Dienste verwalten
Dateien übertragen
Tunnel aufbauen
Wichtig:
SSH muss sicher konfiguriert werden.
Merksatz:
SSH ist der Standardzugang zur Linux-Serveradministration.
Typische Serveradministration über SSH
Beispiele:
systemctl status nginx
journalctl -u nginx
df -h
free -h
ss -tulpen
ip addr
ip route
nano /etc/nginx/nginx.conf
apt update
apt upgrade
Merksatz:
Linux-Server werden oft komplett über die Shell verwaltet.
Dienste verwalten
Auf vielen Linux-Systemen werden Dienste mit systemd verwaltet.
Wichtige Befehle:
| Befehl | Bedeutung |
|---|---|
| systemctl status dienst | Status prüfen |
| systemctl start dienst | Dienst starten |
| systemctl stop dienst | Dienst stoppen |
| systemctl restart dienst | Dienst neu starten |
| systemctl reload dienst | Konfiguration neu laden |
| systemctl enable dienst | Autostart aktivieren |
| systemctl disable dienst | Autostart deaktivieren |
| journalctl -u dienst | Logs eines Dienstes anzeigen |
Merksatz:
systemctl verwaltet Dienste.
journalctl zeigt Dienstlogs.
Autostart von Diensten
Ein Serverdienst soll oft automatisch beim Systemstart starten.
Autostart aktivieren:
systemctl enable dienst
Dienst sofort starten:
systemctl start dienst
Kombiniert:
systemctl enable --now dienst
Prüfen:
systemctl is-enabled dienst
systemctl is-active dienst
Merksatz:
enabled heißt:
startet beim Boot.
active heißt:
läuft gerade.
Webserver
Ein Webserver liefert Webseiten, Webanwendungen oder API-Antworten aus.
Typische Linux-Webserver:
nginx
Apache HTTP Server
Typische Ports:
| Protokoll | Port |
|---|---|
| HTTP | TCP 80 |
| HTTPS | TCP 443 |
Typische Aufgaben:
statische Webseiten ausliefern
Reverse Proxy
TLS beenden
Weiterleitungen
Zugriffskontrolle
Logging
Merksatz:
Webserver stellen Inhalte über HTTP oder HTTPS bereit.
Nginx
Nginx wird häufig genutzt als:
Webserver
Reverse Proxy
TLS-Endpunkt
Load Balancer
Proxy vor Anwendungen
Typische Prüfungen:
systemctl status nginx
nginx -t
journalctl -u nginx
ss -tulpen
curl -I http://localhost
Merksatz:
nginx -t prüft die Konfiguration.
Apache
Apache HTTP Server wird häufig genutzt als:
klassischer Webserver
PHP-Webserver
virtueller Host-Server
Webserver für viele Anwendungen
Typische Prüfungen:
systemctl status apache2
apachectl configtest
journalctl -u apache2
ss -tulpen
Merksatz:
Apache und Nginx sind typische Webserver unter Linux.
Reverse Proxy
Ein Reverse Proxy nimmt Anfragen von Clients entgegen und leitet sie an interne Dienste weiter.
Beispiel:
Client → Reverse Proxy → interne Webanwendung
Typische Aufgaben:
TLS-Zertifikate verwalten
mehrere Anwendungen über eine IP erreichbar machen
Weiterleitung nach Hostname
Schutz interner Dienste
Logging
zentrale Zugriffskontrolle
Merksatz:
Reverse Proxy steht vor internen Diensten.
Datenbankserver
Linux wird häufig für Datenbanken genutzt.
Beispiele:
| Datenbank | Typ |
|---|---|
| PostgreSQL | relationale Datenbank |
| MariaDB | relationale Datenbank |
| MySQL | relationale Datenbank |
| Redis | In-Memory-Datenbank / Cache |
| SQLite | dateibasierte Datenbank |
Typische Aufgaben:
Daten speichern
Anwendungen versorgen
Benutzerrechte verwalten
Backups erstellen
Performance überwachen
Merksatz:
Datenbanken sind zentrale Dienste und brauchen besondere Sicherung.
Datenbankserver sicher betreiben
Wichtige Punkte:
nicht unnötig öffentlich erreichbar machen
starke Passwörter verwenden
Benutzerrechte begrenzen
regelmäßige Backups erstellen
Restore testen
Updates einspielen
Logs prüfen
Speicherplatz überwachen
Dienststatus überwachen
Merksatz:
Datenbankserver brauchen Sicherheit,
Backups
und Monitoring.
Dateiserver
Linux kann Dateien im Netzwerk bereitstellen.
Typische Protokolle:
| Protokoll | Typischer Einsatz |
|---|---|
| SMB/CIFS | Windows- und gemischte Netzwerke |
| NFS | Linux/Unix-Umgebungen |
| SFTP | Dateiübertragung über SSH |
| rsync | Synchronisation und Backups |
Typische Dienste:
samba
nfs-server
sshd
Merksatz:
Dateiserver stellen Speicher im Netzwerk bereit.
Samba
Samba ermöglicht SMB/CIFS-Freigaben unter Linux.
Typische Nutzung:
Windows-Freigaben
NAS-Freigaben
gemischte Netzwerke
gemeinsame Ordner
Wichtige Themen:
Benutzerrechte
Dateirechte
Freigaberechte
Authentifizierung
Netzwerkerreichbarkeit
Merksatz:
Samba verbindet Linux mit SMB/Windows-Freigaben.
NFS
NFS steht für:
Network File System
Typische Nutzung:
Linux-zu-Linux-Freigaben
Server-zu-Server-Speicher
virtuelle Umgebungen
Backup-Ziele
Wichtig:
UID/GID,
Export-Regeln
und Dateirechte müssen passen.
Merksatz:
NFS ist typisch für Linux/Unix-Dateifreigaben.
DNS-Server
Ein DNS-Server löst Namen in IP-Adressen auf.
Beispiel:
server01.intern
wird zu:
192.168.10.20
Typische Aufgaben:
interne Namensauflösung
Zonen verwalten
Weiterleitung an externe DNS-Server
Reverse DNS
DNS-Caching
Typische Software:
BIND
Unbound
dnsmasq
Merksatz:
DNS macht Namen zu IP-Adressen.
DHCP-Server
Ein DHCP-Server vergibt Netzwerkkonfigurationen automatisch.
Typische Informationen:
IP-Adresse
Subnetzmaske
Gateway
DNS-Server
Lease-Zeit
Vorteil:
Clients müssen nicht manuell konfiguriert werden.
Merksatz:
DHCP verteilt IP-Konfigurationen automatisch.
Container-Host
Linux ist sehr häufig die Grundlage für Container.
Typische Werkzeuge:
Docker
Podman
containerd
Container nutzen Linux-Funktionen wie:
Namespaces
cgroups
Dateisystem-Layer
Netzwerk-Bridges
Volumes
Typische Aufgaben:
Container starten
Images aktualisieren
Volumes sichern
Logs prüfen
Ports verwalten
Netzwerke konfigurieren
Merksatz:
Container laufen häufig auf Linux-Hosts.
Container und Ports
Containerdienste sind oft über Portweiterleitungen erreichbar.
Beispielidee:
Host-Port 8080 → Container-Port 80
Wichtig prüfen:
welcher Host-Port genutzt wird
welcher Container-Port genutzt wird
ob der Dienst im Container läuft
ob der Container im richtigen Netzwerk ist
ob Volumes korrekt eingebunden sind
ob Firewall-Regeln passen
Merksatz:
Bei Containern immer Host-Port,
Container-Port,
Netzwerk
und Volume unterscheiden.
Container und persistente Daten
Container selbst sind oft ersetzbar.
Daten sollten deshalb in:
Volumes
Bind Mounts
Datenbanken
externem Speicher
liegen.
Warum?
Container können neu erstellt werden
Images können aktualisiert werden
Container-Dateisysteme können verloren gehen
Backups müssen Daten außerhalb des Containers erfassen
Merksatz:
Container ersetzen,
Daten erhalten.
Serverrollen
Ein Linux-Server kann eine oder mehrere Rollen haben.
Beispiele:
| Rolle | Aufgabe |
|---|---|
| Webserver | Webseiten bereitstellen |
| Datenbankserver | Daten speichern |
| Dateiserver | Dateien bereitstellen |
| Backupserver | Sicherungen speichern |
| Monitoringserver | Systeme überwachen |
| Proxyserver | Anfragen weiterleiten |
| Containerhost | Container ausführen |
| VPN-Server | sichere Tunnel bereitstellen |
| DNS-Server | Namen auflösen |
| DHCP-Server | IP-Konfiguration verteilen |
Merksatz:
Serverrollen beschreiben,
welche Aufgabe ein Server übernimmt.
Mehrere Dienste auf einem Server
Ein Server kann mehrere Dienste ausführen.
Beispiel:
Webserver
Datenbank
Backup-Agent
Monitoring-Agent
SSH
Vorteile:
weniger Systeme nötig
einfache kleine Umgebung
Nachteile:
höhere Abhängigkeit
mehr Angriffsfläche
schwierigeres Troubleshooting
Ressourcen teilen sich mehrere Dienste
ein Ausfall betrifft mehrere Funktionen
Merksatz:
Mehr Dienste auf einem Server bedeuten mehr Abhängigkeiten.
Trennung von Diensten
In größeren Umgebungen werden Dienste oft getrennt.
Beispiel:
Webserver auf Server A
Datenbank auf Server B
Backup auf Server C
Monitoring auf Server D
Vorteile:
bessere Sicherheit
klarere Zuständigkeiten
einfachere Skalierung
bessere Fehlereingrenzung
weniger gegenseitige Beeinflussung
Nachteile:
mehr Systeme
mehr Netzwerkabhängigkeiten
mehr Administration
Merksatz:
Diensttrennung verbessert Sicherheit und Skalierbarkeit,
erhöht aber Verwaltungsaufwand.
Produktivsystem, Testsystem und Entwicklungssystem
Typische Umgebungen:
| Umgebung | Zweck |
|---|---|
| Entwicklung | neue Funktionen entwickeln |
| Test | Änderungen prüfen |
| Produktion | echter Betrieb für Benutzer |
| Staging | produktionsnahe Vorstufe |
Wichtig:
Änderungen sollten nicht ungetestet direkt in Produktion erfolgen.
Merksatz:
Produktion ist nicht der Ort für ungetestete Experimente.
Serverhärtung
Serverhärtung bedeutet, ein System sicherer zu konfigurieren und unnötige Risiken zu reduzieren.
Maßnahmen:
nur benötigte Dienste installieren
unnötige Ports schließen
Updates einspielen
SSH absichern
Firewall aktivieren
Benutzerrechte begrenzen
Logs überwachen
Backups einrichten
Standardpasswörter entfernen
Konfiguration dokumentieren
Merksatz:
Härtung reduziert Angriffsfläche.
Minimale Installation
Ein Server sollte nur Software enthalten, die für seine Aufgabe notwendig ist.
Vorteile:
weniger Angriffsfläche
weniger Updates
weniger Abhängigkeiten
weniger Fehlerquellen
bessere Übersicht
Beispiel:
Ein Datenbankserver braucht normalerweise keine grafische Desktopumgebung.
Merksatz:
Installiere nur,
was benötigt wird.
Firewall im Serverbetrieb
Ein Server sollte nur notwendige Ports erreichbar machen.
Beispiele:
| Dienst | Port |
|---|---|
| SSH | TCP 22 |
| HTTP | TCP 80 |
| HTTPS | TCP 443 |
| DNS | TCP/UDP 53 |
| DHCP | UDP 67/68 |
| SMB | TCP 445 |
| PostgreSQL | TCP 5432 |
| MySQL/MariaDB | TCP 3306 |
Wichtig:
Nicht jeder Dienst muss aus jedem Netz erreichbar sein.
Merksatz:
Ports nur für notwendige Quellen öffnen.
Monitoring im Serverbetrieb
Server sollten überwacht werden.
Wichtige Messwerte:
CPU
RAM
Swap
Speicherplatz
Inodes
Netzwerk
Dienststatus
offene Ports
Logs
Zertifikate
Backups
Antwortzeiten
Merksatz:
Monitoring erkennt Probleme,
bevor sie kritisch werden.
Backup im Serverbetrieb
Server brauchen regelmäßige Backups.
Zu sichern sind oft:
Anwendungsdaten
Datenbanken
Konfigurationen
Skripte
Zertifikate
Schlüssel
systemd-Units
Docker Compose Dateien
Dokumentation
Wichtig:
Restore testen
RPO und RTO definieren
Backup-Logs prüfen
externe Kopie vorhalten
Merksatz:
Backup ohne Restore-Test ist unsicher.
Dokumentation im Serverbetrieb
Dokumentation sollte enthalten:
Servername
IP-Adresse
Aufgabe
installierte Dienste
offene Ports
Benutzer und Berechtigungen
wichtige Pfade
Backup-Plan
Restore-Anleitung
Abhängigkeiten
Monitoring
Ansprechpartner
Änderungsverlauf
Merksatz:
Gute Dokumentation spart im Fehlerfall Zeit.
Typische wichtige Pfade auf Servern
| Pfad | Bedeutung |
|---|---|
| /etc | Konfigurationen |
| /var/log | Logs |
| /var/lib | Anwendungsdaten |
| /srv | bereitgestellte Dienstdaten |
| /opt | optionale Anwendungen |
| /home | Benutzerverzeichnisse |
| /root | Root-Home |
| /tmp | temporäre Dateien |
| /usr/bin | Programme |
| /etc/systemd/system | eigene systemd-Units |
Merksatz:
Serverwissen bedeutet auch:
wichtige Pfade kennen.
Typische Serverprüfung nach Neustart
Nach einem Neustart prüfen:
Erreichbarkeit
SSH-Zugriff
wichtige Dienste
offene Ports
Speicherplatz
Logs
Mounts
Datenbanken
Webanwendungen
Backups
Beispielbefehle:
systemctl status dienst
ss -tulpen
df -h
journalctl -p err -b
findmnt
Merksatz:
Nach Neustart nicht nur schauen,
ob der Server pingt.
Typische Serverprüfung nach Update
Nach Updates prüfen:
Paketmanager meldet keine Fehler
Kernel-Neustart nötig?
Dienste laufen
Ports lauschen
Anwendungen antworten
Logs enthalten keine neuen Fehler
Speicherplatz ausreichend
Monitoring wieder grün
Beispielbefehle:
systemctl --failed
journalctl -p err -b
ss -tulpen
df -h
Merksatz:
Update fertig heißt erst fertig,
wenn Dienste und Anwendungen geprüft sind.
Typische Fehlerbilder im Serverbetrieb
| Fehlerbild | Mögliche Ursache |
|---|---|
| Server nicht erreichbar | Netzwerk, Firewall, ausgeschaltet, Routing |
| SSH geht nicht | Dienst, Port, Firewall, Benutzer, Schlüssel |
| Webseite nicht erreichbar | Webserver, Port, DNS, TLS, Reverse Proxy |
| Datenbank nicht erreichbar | Dienst, Port, Bind-Adresse, Rechte |
| Dienst startet nicht | Konfiguration, Rechte, Abhängigkeit, Port |
| Speicher voll | Logs, Datenbanken, Backups, Container |
| hohe Last | CPU, RAM, I/O, Prozesse, Angriff |
| Mount fehlt | fstab, Netzwerk, Datenträger |
| Backup fehlt | Cron, Rechte, Ziel voll, Netzwerk |
| Name löst nicht auf | DNS, /etc/hosts, Resolver |
Fehlersuche bei Serverdiensten
Sinnvolle Reihenfolge:
1. Fehlerbild genau beschreiben
2. Dienststatus prüfen
3. Logs prüfen
4. Port prüfen
5. lokale Verbindung testen
6. externe Verbindung testen
7. Firewall prüfen
8. Konfiguration prüfen
9. Rechte prüfen
10. Abhängigkeiten prüfen
Beispiel:
systemctl status nginx
journalctl -u nginx
ss -tulpen
curl -I http://127.0.0.1
Merksatz:
Dienstprobleme immer von innen nach außen prüfen.
Von innen nach außen prüfen
Bei einem Webdienst:
1. Läuft der Prozess?
2. Lauscht der Port lokal?
3. Antwortet der Dienst lokal?
4. Antwortet der Dienst über Server-IP?
5. Antwortet der Dienst aus dem Netzwerk?
6. Funktioniert DNS?
7. Funktioniert HTTPS?
8. Funktioniert die Anwendung?
Merksatz:
Erst lokal prüfen,
dann Netzwerk,
dann DNS,
dann Anwendung.
Typische Prüfungsfragen
| Frage | Kurzantwort |
|---|---|
| Warum wird Linux häufig als Server genutzt? | stabil, flexibel, automatisierbar, ressourcenschonend |
| Was ist ein Serverdienst? | Hintergrunddienst, der eine Funktion bereitstellt |
| Was bedeutet headless? | Betrieb ohne Monitor und grafische Oberfläche |
| Wofür wird SSH genutzt? | sichere Fernadministration |
| Was ist ein Webserver? | Dienst für HTTP/HTTPS |
| Was ist ein Reverse Proxy? | vorgeschalteter Proxy vor internen Diensten |
| Was ist ein Datenbankserver? | Server zur strukturierten Datenspeicherung |
| Was ist ein Dateiserver? | stellt Dateien im Netzwerk bereit |
| Was ist ein Container-Host? | System, das Container ausführt |
| Warum Serverhärtung? | Angriffsfläche reduzieren |
| Warum Monitoring? | Probleme früh erkennen |
| Warum Dokumentation? | Betrieb und Fehlerbehebung nachvollziehbar machen |
Typische Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| Server als Hardware definieren | Server ist vor allem eine Rolle |
| Dienst läuft = Dienst erreichbar | Port, Firewall, Bind-Adresse prüfen |
| Ping geht = Anwendung geht | Ping prüft nicht HTTP, SSH oder Datenbank |
| Headless mit eingeschränkter Verwaltung verwechseln | Verwaltung erfolgt per SSH und Tools |
| Datenbank öffentlich erreichbar machen | nur notwendige Quellen erlauben |
| Containerdaten im Container speichern | Volumes oder Bind Mounts nutzen |
| Backup nur für Benutzerdaten planen | auch Konfigurationen sichern |
| Update ohne Nachprüfung | Dienste, Logs und Anwendungen prüfen |
| mehrere Dienste ohne Abhängigkeiten betrachten | Dienste beeinflussen sich gegenseitig |
| keine Dokumentation | Fehlerfall wird langsamer und riskanter |
IHK-sichere Kurzformulierung
Linux wird häufig als Serverbetriebssystem eingesetzt, weil es stabil, ressourcenschonend, gut automatisierbar und per SSH administrierbar ist. Ein Server stellt Dienste für Clients bereit, zum Beispiel Webserver, Datenbankserver, Dateiserver, DNS, DHCP, Container oder Backupdienste. Viele Linux-Server laufen headless, also ohne grafische Oberfläche, und werden über SSH, systemctl, journalctl und Konfigurationsdateien verwaltet. Im sicheren Serverbetrieb sind minimale Installation, regelmäßige Updates, Firewall-Regeln, Diensthärtung, Monitoring, Backups, Restore-Tests und Dokumentation wichtig. Bei Fehlern wird systematisch geprüft: Dienststatus, Logs, offene Ports, lokale Antwort, Netzwerkzugriff, Firewall, Konfiguration, Rechte und Abhängigkeiten.
Merksätze
Linux ist im Serverbereich sehr verbreitet.
Server stellen Dienste bereit.
Client fragt an,
Server antwortet.
Serverdienst = Hintergrunddienst mit Aufgabe.
Headless bedeutet:
ohne grafische Oberfläche.
SSH ist Standard für Fernadministration.
systemctl verwaltet Dienste.
journalctl zeigt Dienstlogs.
enabled heißt Autostart.
active heißt läuft gerade.
Webserver nutzen HTTP und HTTPS.
HTTP nutzt TCP 80.
HTTPS nutzt TCP 443.
Reverse Proxy steht vor internen Diensten.
Datenbanken brauchen besondere Sicherung.
Dateiserver stellen Speicher im Netzwerk bereit.
Samba nutzt SMB/CIFS.
NFS ist typisch für Linux/Unix-Freigaben.
DNS löst Namen auf.
DHCP verteilt IP-Konfiguration.
Container laufen häufig auf Linux-Hosts.
Containerdaten gehören in Volumes oder Bind Mounts.
Serverrollen beschreiben Aufgaben.
Mehr Dienste bedeuten mehr Abhängigkeiten.
Diensttrennung verbessert Sicherheit und Skalierbarkeit.
Produktion ist nicht für ungetestete Experimente.
Härtung reduziert Angriffsfläche.
Nur benötigte Dienste betreiben.
Nur notwendige Ports öffnen.
Monitoring erkennt Probleme früh.
Backup ohne Restore-Test ist unsicher.
Dokumentation spart im Fehlerfall Zeit.
Dienstprobleme von innen nach außen prüfen.
14. Prüfungsvorbereitung und Wiederholung
14.1 Prüfungsvorbereitung und Wiederholung
Diese Seite fasst die wichtigsten Linux-Themen für die IHK-Prüfung zusammen.
Der Fokus liegt nicht auf auswendig gelernten Einzelbefehlen, sondern auf Verständnis:
- Was macht Linux als Betriebssystem?
- Wie ist das Dateisystem aufgebaut?
- Wie funktionieren Benutzer und Rechte?
- Wie prüft man Dienste?
- Wie grenzt man Fehler ein?
- Wie liest man Logs?
- Wie arbeitet man sicher auf Servern?
- Wie argumentiert man fachlich sauber?
Für Fachinformatiker Systemintegration ist Linux besonders relevant, weil viele Server, Container, Netzwerkdienste, Monitoring-Systeme, Firewalls, NAS-Systeme und Cloud-Umgebungen auf Linux basieren.
Merksatz:
In der Prüfung zählt nicht nur der Befehl,
sondern die richtige fachliche Einordnung.
Lernziele
Nach dieser Seite solltest du wiederholen können:
- Linux-Grundbegriffe
- Dateisystem und wichtige Pfade
- Dateioperationen
- Benutzer,
Gruppen
und Rechte
- Prozesse,
Dienste
und systemd
- Paketverwaltung
- Netzwerkdiagnose
- Speicher,
Mounts
und Dateisysteme
- Logs,
Monitoring
und Fehlersuche
- Shell,
Pipes
und Umleitungen
- Bash-Scripting
- Sicherheit,
Backup
und Automatisierung
- Linux im Serverbetrieb
Linux-Grundlagen wiederholen
| Begriff | Bedeutung |
|---|---|
| Linux | Betriebssystemkern, im Alltag oft komplette Distribution gemeint |
| Kernel | Kern des Betriebssystems |
| Distribution | Linux-Kernel plus Software, Paketmanager und Systemwerkzeuge |
| Shell | Befehlsinterpreter |
| Bash | verbreitete Linux-Shell |
| Terminal | Eingabeumgebung für Shell-Befehle |
| root | administrativer Hauptbenutzer |
| sudo | gezielte Ausführung mit erhöhten Rechten |
| Paketmanager | installiert und aktualisiert Softwarepakete |
Merksatz:
Linux ist streng genommen der Kernel,
im Alltag meint man oft die gesamte Distribution.
Kernel, Distribution und Shell unterscheiden
| Begriff | Aufgabe |
|---|---|
| Kernel | verwaltet Hardware, Speicher, Prozesse und Systemzugriffe |
| Distribution | stellt komplettes nutzbares Betriebssystem bereit |
| Shell | nimmt Befehle entgegen und startet Programme |
| Terminal | Fenster oder Umgebung zur Eingabe von Befehlen |
Typische Prüfungsfalle:
Linux,
Distribution,
Shell
und Terminal werden durcheinandergeworfen.
IHK-sicher:
Der Kernel ist der Betriebssystemkern.
Eine Distribution kombiniert den Kernel mit Systemprogrammen,
Paketverwaltung,
Diensten
und optional grafischer Oberfläche.
Wichtige Linux-Verzeichnisse
| Pfad | Bedeutung |
|---|---|
| / | Root-Verzeichnis des Dateisystems |
| /home | Benutzerverzeichnisse |
| /root | Home-Verzeichnis des Root-Benutzers |
| /etc | Konfigurationsdateien |
| /var | veränderliche Daten |
| /var/log | Logdateien |
| /tmp | temporäre Dateien |
| /usr | Programme und Ressourcen |
| /bin | wichtige Benutzerprogramme |
| /sbin | wichtige Systemprogramme |
| /dev | Gerätedateien |
| /proc | Prozess- und Kernelinformationen |
| /sys | System- und Geräteinformationen |
| /mnt | manuelle Mountpoints |
| /media | Wechselmedien |
| /opt | optionale Zusatzsoftware |
| /srv | Dienstdaten |
Merksatz:
/etc für Konfiguration.
/var/log für Logs.
/home für Benutzer.
/ ist die Wurzel des Dateisystems.
Absolute und relative Pfade
| Pfadart | Bedeutung | Beispiel |
|---|---|---|
| absolut | beginnt bei / | /etc/hosts |
| relativ | abhängig vom aktuellen Verzeichnis | dokumente/datei.txt |
Wichtige Zeichen:
| Zeichen | Bedeutung |
|---|---|
| / | Root-Verzeichnis oder Pfadtrenner |
| . | aktuelles Verzeichnis |
| .. | übergeordnetes Verzeichnis |
| ~ | eigenes Home-Verzeichnis |
Prüfungsfalle:
Relativer Pfad hängt immer davon ab,
wo man sich gerade befindet.
Merksatz:
Absoluter Pfad beginnt mit /.
Dateien anzeigen und bearbeiten
| Aufgabe | Befehl |
|---|---|
| Verzeichnisinhalt anzeigen | ls |
| ausführlich anzeigen | ls -l |
| versteckte Dateien anzeigen | ls -a |
| aktuelle Position anzeigen | pwd |
| Verzeichnis wechseln | cd |
| Dateiinhalt anzeigen | cat |
| lange Datei lesen | less |
| Anfang anzeigen | head |
| Ende anzeigen | tail |
| live mitlesen | tail -f |
| Datei erstellen | touch |
| Datei bearbeiten | nano |
| kopieren | cp |
| verschieben oder umbenennen | mv |
| löschen | rm |
| Verzeichnis erstellen | mkdir |
| Datei suchen | find |
| Text suchen | grep |
Merksatz:
cat für kleine Dateien.
less für lange Dateien.
tail -f für Live-Logs.
find und grep unterscheiden
| Befehl | Sucht |
|---|---|
| find | Dateien und Verzeichnisse |
| grep | Text innerhalb von Dateien oder Ausgaben |
Beispiele:
find /etc -name "*ssh*"
grep "PermitRootLogin" /etc/ssh/sshd_config
Prüfungsfalle:
find sucht Dateinamen oder Dateieigenschaften.
grep sucht Inhalte.
Merksatz:
find sucht Dateien.
grep sucht Text.
Benutzer, Gruppen und Rechte
Linux-Rechte gelten klassisch für:
Besitzer
Gruppe
Andere
Die Rechte sind:
| Recht | Bedeutung bei Dateien | Bedeutung bei Verzeichnissen |
|---|---|---|
| r | lesen | Inhalt auflisten |
| w | schreiben | Einträge erstellen, löschen, umbenennen |
| x | ausführen | Verzeichnis betreten |
Wichtige Befehle:
| Befehl | Zweck |
|---|---|
| whoami | aktuellen Benutzer anzeigen |
| id | UID, GID und Gruppen anzeigen |
| groups | Gruppen anzeigen |
| chmod | Rechte ändern |
| chown | Besitzer ändern |
| chgrp | Gruppe ändern |
| sudo | Befehl mit erhöhten Rechten ausführen |
Merksatz:
Bei Verzeichnissen bedeutet x:
betreten.
Numerische Rechte wiederholen
| Zahl | Rechte |
|---|---|
| 0 | --- |
| 1 | --x |
| 2 | -w- |
| 3 | -wx |
| 4 | r-- |
| 5 | r-x |
| 6 | rw- |
| 7 | rwx |
Typische Rechte:
| Rechte | Bedeutung |
|---|---|
| 644 | normale Datei |
| 600 | private Datei |
| 755 | Programm oder öffentlich betretbares Verzeichnis |
| 700 | privates Verzeichnis oder privates Skript |
| 777 | jeder darf alles, meist unsicher |
Merksatz:
r=4,
w=2,
x=1.
Root, sudo und Sicherheit
| Begriff | Bedeutung |
|---|---|
| root | administrativer Hauptbenutzer |
| sudo | einzelne Befehle mit erhöhten Rechten ausführen |
| su | Benutzer wechseln |
| /root | Home-Verzeichnis von root |
| / | Root-Verzeichnis des Dateisystems |
Prüfungsfalle:
root,
/root
und /
sind nicht dasselbe.
IHK-sicher:
Administrative Rechte sollten gezielt und nachvollziehbar genutzt werden.
Dauerhaftes Arbeiten als root erhöht das Risiko für Fehlbedienung und Schäden.
Merksatz:
Root-Rechte bewusst und nur bei Bedarf verwenden.
Prozesse und Dienste
| Begriff | Bedeutung |
|---|---|
| Prozess | laufendes Programm |
| PID | eindeutige Prozess-ID |
| Dienst | Hintergrundprogramm mit Aufgabe |
| Daemon | Hintergrundprozess |
| systemd | Dienst- und Init-System vieler Distributionen |
| Unit | Verwaltungseinheit von systemd |
| .service | Dienst-Unit |
Wichtige Befehle:
| Befehl | Zweck |
|---|---|
| ps aux | Prozesse anzeigen |
| top | Prozesse live anzeigen |
| htop | komfortabler Prozessmonitor, falls installiert |
| kill | Signal an Prozess senden |
| systemctl status dienst | Dienststatus prüfen |
| journalctl -u dienst | Dienstlogs anzeigen |
Merksatz:
Prozess = läuft.
Dienst = Hintergrundaufgabe.
systemctl sicher unterscheiden
| Befehl | Bedeutung |
|---|---|
| systemctl start dienst | startet jetzt |
| systemctl stop dienst | stoppt jetzt |
| systemctl restart dienst | startet neu |
| systemctl reload dienst | lädt Konfiguration neu, falls unterstützt |
| systemctl enable dienst | aktiviert Autostart |
| systemctl disable dienst | deaktiviert Autostart |
| systemctl status dienst | zeigt Status |
| systemctl is-active dienst | prüft, ob Dienst läuft |
| systemctl is-enabled dienst | prüft Autostart |
Prüfungsfalle:
start und enable sind nicht dasselbe.
Merksatz:
active heißt:
läuft jetzt.
enabled heißt:
startet beim Boot.
Paketverwaltung
| Distribution | Paketmanager |
|---|---|
| Debian / Ubuntu | apt |
| Fedora / Rocky Linux | dnf |
| openSUSE | zypper |
| Arch Linux | pacman |
| Alpine Linux | apk |
Wichtige apt-Befehle:
| Befehl | Bedeutung |
|---|---|
| apt update | Paketlisten aktualisieren |
| apt upgrade | installierte Pakete aktualisieren |
| apt install paket | Paket installieren |
| apt remove paket | Paket entfernen |
| apt purge paket | Paket inklusive Konfiguration entfernen |
| apt search begriff | Paket suchen |
| apt show paket | Paketinformationen anzeigen |
| apt autoremove | nicht mehr benötigte Abhängigkeiten entfernen |
Merksatz:
apt update holt Listen.
apt upgrade installiert Updates.
Repository, Paket und Abhängigkeit
| Begriff | Bedeutung |
|---|---|
| Paket | verwaltete Softwareeinheit |
| Repository | Paketquelle |
| Abhängigkeit | zusätzlich benötigtes Paket |
| Paketmanager | Werkzeug zur Paketverwaltung |
| Patchmanagement | geplanter Umgang mit Updates |
Prüfungsfalle:
Manuelle Installation von Webseiten ist unter Linux-Servern meist nicht der Standardweg.
IHK-sicher:
Paketmanager installieren Software kontrolliert,
lösen Abhängigkeiten auf
und stellen Updates bereit.
Merksatz:
Repository = Paketquelle.
Netzwerkdiagnose
| Aufgabe | Befehl |
|---|---|
| IP-Adressen anzeigen | ip addr |
| Schnittstellen anzeigen | ip link |
| Routing anzeigen | ip route |
| Erreichbarkeit prüfen | ping |
| DNS prüfen | dig oder nslookup |
| Ports anzeigen | ss -tulpen |
| HTTP/HTTPS prüfen | curl |
| Hostname anzeigen | hostname |
| DNS-Status prüfen | resolvectl status |
| SSH-Verbindung herstellen | ssh benutzer@server |
Merksatz:
Erst IP,
dann Route,
dann DNS,
dann Port,
dann Dienst.
Typische Netzwerkauswertung
| Ergebnis | Wahrscheinliche Richtung |
|---|---|
| keine IP-Adresse | DHCP oder Interface |
| Gateway nicht erreichbar | lokales Netz, VLAN, Gateway |
| externe IP nicht erreichbar | Routing, NAT oder Firewall |
| IP erreichbar, Name nicht | DNS |
| Dienst läuft, Port nicht erreichbar | Firewall, Bind-Adresse, Port |
| Port lauscht auf 127.0.0.1 | nur lokal erreichbar |
| Connection refused | Dienst oder Port lehnt ab |
| Connection timed out | Firewall, Routing oder Ziel nicht erreichbar |
Merksatz:
ping prüft ICMP,
nicht den Dienst.
SSH wiederholen
| Begriff | Bedeutung |
|---|---|
| SSH | sichere Fernadministration |
| TCP 22 | Standardport für SSH |
| ssh | Client-Befehl |
| sshd | SSH-Serverdienst |
| authorized_keys | erlaubte öffentliche Schlüssel |
| known_hosts | bekannte Server-Host-Keys |
| privater Schlüssel | bleibt geheim |
| öffentlicher Schlüssel | darf auf Server |
Sicherheitsregel:
Direkten Root-Login vermeiden.
Besser normaler Benutzer plus sudo.
Merksatz:
Öffentlicher Schlüssel auf Server.
Privater Schlüssel bleibt geheim.
Firewall wiederholen
Eine Firewall-Regel sollte enthalten:
Quelle
Ziel
Protokoll
Port
Richtung
Aktion
Zweck
Typische Werkzeuge:
| Werkzeug | Einordnung |
|---|---|
| ufw | einfache Firewall-Oberfläche, häufig Ubuntu |
| firewalld | Firewall-Verwaltung mit Zonen |
| nftables | moderner Firewall-Unterbau |
| iptables | klassisches Firewall-Werkzeug |
Merksatz:
Port allein ist keine vollständige Firewall-Regel.
Speicher und Mounts
| Begriff | Bedeutung |
|---|---|
| Datenträger | physisches oder virtuelles Speichermedium |
| Partition | Bereich auf einem Datenträger |
| Dateisystem | Organisationsform für Dateien |
| Mountpoint | Einhängepunkt im Verzeichnisbaum |
| fstab | automatische Mounts beim Systemstart |
| UUID | eindeutige Kennung eines Dateisystems |
| Swap | Auslagerungsspeicher |
Wichtige Befehle:
| Befehl | Zweck |
|---|---|
| lsblk | Datenträger und Partitionen anzeigen |
| lsblk -f | Dateisysteme und UUIDs anzeigen |
| df -h | Speicherplatz prüfen |
| df -i | Inodes prüfen |
| du -sh ordner | Ordnergröße anzeigen |
| mount | Mounts anzeigen oder einhängen |
| umount | aushängen |
| findmnt | Mounts strukturiert anzeigen |
| free -h | RAM und Swap anzeigen |
Merksatz:
df zeigt Dateisysteme.
du zeigt Ordnergrößen.
fstab wiederholen
Die Datei:
/etc/fstab
legt fest, welche Dateisysteme beim Start automatisch eingebunden werden.
Wichtige Prüfungen nach Änderung:
cp /etc/fstab /etc/fstab.bak
mount -a
findmnt
df -h
Prüfungsfalle:
/dev/sdb1 kann sich ändern.
UUIDs sind für dauerhafte Mounts oft stabiler.
Merksatz:
fstab nie ungetestet ändern.
Logs und Monitoring
| Aufgabe | Befehl |
|---|---|
| systemd-Journal anzeigen | journalctl |
| Dienstlogs anzeigen | journalctl -u dienst |
| Logs live anzeigen | journalctl -f |
| Logs seit Boot anzeigen | journalctl -b |
| Kernelmeldungen anzeigen | dmesg |
| Logdatei lesen | less logfile |
| Logdatei live lesen | tail -f logfile |
| Logs filtern | grep |
| Dienststatus prüfen | systemctl status dienst |
| CPU und Prozesse prüfen | top |
| RAM prüfen | free -h |
| Speicher prüfen | df -h |
Merksatz:
Dienstproblem:
status prüfen,
dann Logs lesen.
Typische Logorte
| Ort | Bedeutung |
|---|---|
| /var/log | klassische Logdateien |
| /var/log/syslog | allgemeine Logs, häufig Debian/Ubuntu |
| /var/log/messages | allgemeine Logs, häufig RHEL/Fedora-Umfeld |
| /var/log/auth.log | Authentifizierung, häufig Debian/Ubuntu |
| /var/log/secure | Authentifizierung, häufig RHEL/Fedora-Umfeld |
| journalctl | systemd-Journal |
| dmesg | Kernelmeldungen |
Merksatz:
Nicht jede Distribution nutzt dieselben Logdateinamen.
Shell, Pipes und Umleitungen
| Zeichen / Befehl | Bedeutung |
|---|---|
| | | Pipe, Ausgabe an nächsten Befehl |
| > | Ausgabe in Datei schreiben und überschreiben |
| >> | Ausgabe anhängen |
| < | Datei als Eingabe nutzen |
| 2> | Fehlerausgabe umleiten |
| &> | Ausgabe und Fehler gemeinsam umleiten |
| /dev/null | Ausgabe verwerfen |
| ; | Befehle nacheinander |
| && | nächster Befehl nur bei Erfolg |
| || | nächster Befehl nur bei Fehler |
| $? | Exit-Code des letzten Befehls |
Merksatz:
> überschreibt.
>> hängt an.
2> leitet Fehler um.
stdin, stdout und stderr
| Kanal | Nummer | Bedeutung |
|---|---|---|
| stdin | 0 | Standardeingabe |
| stdout | 1 | Standardausgabe |
| stderr | 2 | Standardfehler |
Prüfungsfalle:
Fehlermeldungen gehen nicht automatisch über stdout.
Deshalb reicht > nicht immer,
um Fehler umzuleiten.
Merksatz:
0 Eingabe,
1 Ausgabe,
2 Fehler.
Bash-Scripting wiederholen
| Element | Bedeutung |
|---|---|
| #!/bin/bash | Shebang für Bash |
| chmod +x script.sh | Skript ausführbar machen |
| ./script.sh | Skript aus aktuellem Verzeichnis starten |
| $1 | erster Parameter |
| $# | Anzahl Parameter |
| "$@" | alle Parameter sauber einzeln |
| $? | Exit-Code des letzten Befehls |
| if | Bedingung |
| for | Schleife über Werte |
| while | Schleife solange Bedingung wahr ist |
| case | Auswahl nach Muster |
| read | Benutzereingabe lesen |
| function | wiederverwendbarer Skriptblock |
Merksatz:
Skripte automatisieren Befehle,
aber auch Fehler,
wenn sie schlecht geschrieben sind.
Sichere Bash-Regeln
Wichtige Regeln:
Variablen meistens quoten
"$VARIABLE"
Parameter prüfen
Exit-Codes beachten
gefährliche Befehle vorher testen
absolute Pfade nutzen,
besonders bei cron
Logs schreiben
Skripte zuerst in Testumgebung prüfen
Kommentare für Zweck und Ablauf nutzen
Typische strenge Optionen:
set -euo pipefail
Merksatz:
In Skripten erst prüfen,
dann handeln.
Sicherheit wiederholen
Wichtige Sicherheitsprinzipien:
| Thema | Kerngedanke |
|---|---|
| Least Privilege | nur notwendige Rechte |
| Updates | bekannte Schwachstellen schließen |
| Firewall | unnötige Zugriffe blockieren |
| SSH-Härtung | sicheren Administrationszugang |
| Dienstkonten | Dienste nicht unnötig als root |
| Logging | Ereignisse nachvollziehen |
| Monitoring | Probleme früh erkennen |
| Backups | Wiederherstellung ermöglichen |
| Dokumentation | Betrieb nachvollziehbar machen |
Merksatz:
Sicherheit ist kein einzelner Befehl,
sondern ein Betriebskonzept.
Backup wiederholen
| Begriff | Bedeutung |
|---|---|
| Backup | Sicherung von Daten |
| Restore | Wiederherstellung |
| RPO | maximal akzeptabler Datenverlust |
| RTO | maximal akzeptable Wiederherstellungszeit |
| Vollbackup | vollständige Sicherung |
| inkrementell | Änderungen seit letztem Backup |
| differentiell | Änderungen seit letztem Vollbackup |
| Snapshot | Zustand zu einem Zeitpunkt |
| 3-2-1-Regel | mehrere Kopien, unterschiedliche Orte, externe Kopie |
Merksatz:
RPO = Datenverlust.
RTO = Wiederherstellungszeit.
Automatisierung wiederholen
| Werkzeug | Zweck |
|---|---|
| Bash-Skript | Befehlsfolge automatisieren |
| cron | zeitgesteuerte Aufgaben |
| systemd Timer | zeitgesteuerte systemd-Units |
| logrotate | Logs rotieren |
| Monitoring | Zustand überwachen |
| Alerting | bei Problemen benachrichtigen |
Wichtig:
Automatisierung braucht Logs,
Exit-Codes,
Monitoring
und Dokumentation.
Merksatz:
Automatisierung ohne Kontrolle kann unbemerkt ausfallen.
Linux im Serverbetrieb wiederholen
Typische Serverrollen:
| Rolle | Beispiel |
|---|---|
| Webserver | nginx, Apache |
| Datenbankserver | PostgreSQL, MariaDB |
| Dateiserver | Samba, NFS |
| DNS-Server | BIND, Unbound |
| DHCP-Server | DHCP-Dienst |
| Container-Host | Docker, Podman |
| Backupserver | Backupdienste |
| Monitoringserver | Überwachungssystem |
| Reverse Proxy | nginx, Proxy-Dienst |
| VPN-Server | WireGuard, OpenVPN |
Merksatz:
Server ist eine Rolle,
nicht nur ein bestimmtes Gerät.
Standardports wiederholen
| Dienst | Port |
|---|---|
| SSH | TCP 22 |
| DNS | TCP/UDP 53 |
| DHCP | UDP 67/68 |
| HTTP | TCP 80 |
| HTTPS | TCP 443 |
| SMB | TCP 445 |
| MySQL/MariaDB | TCP 3306 |
| PostgreSQL | TCP 5432 |
| SMTP | TCP 25 |
| IMAP | TCP 143 |
| IMAPS | TCP 993 |
| POP3 | TCP 110 |
| POP3S | TCP 995 |
| NTP | UDP 123 |
Merksatz:
Port immer mit Protokoll nennen:
TCP oder UDP.
Typische IHK-Fehlerfragen
| Fehlerbild | Erste sinnvolle Prüfungen |
|---|---|
| Dienst startet nicht | systemctl status, journalctl -u, Konfiguration, Rechte, Port |
| Webseite nicht erreichbar | Dienst, Port, curl lokal, Firewall, DNS, Logs |
| SSH geht nicht | Netzwerk, Port 22, sshd, Firewall, Benutzer, Schlüssel |
| Speicher voll | df -h, df -i, du -sh, Logs, Backups |
| DNS geht nicht | IP-Test, dig, resolv.conf, DNS-Server, /etc/hosts |
| Permission denied | whoami, id, ls -l, ls -ld, Gruppen |
| No such file | pwd, ls, Pfad, Groß-/Kleinschreibung, Mount |
| Containerdaten weg | Volumes, Bind Mounts, Container-Dateisystem |
| Backup fehlgeschlagen | Logs, Ziel, Rechte, Speicher, Netzwerk |
| System langsam | top, free -h, df -h, iowait, Logs |
Merksatz:
Fehlerbild lesen,
Ebene erkennen,
gezielt prüfen.
Fehlersuche: Standardreihenfolge
Bei vielen Linux-Problemen hilft diese Reihenfolge:
1. Fehler genau lesen
2. betroffenen Bereich bestimmen
3. letzte Änderung prüfen
4. Status prüfen
5. Logs prüfen
6. Ressourcen prüfen
7. Rechte prüfen
8. Netzwerk prüfen
9. Konfiguration prüfen
10. Maßnahme dokumentieren
Merksatz:
Nicht raten,
sondern eingrenzen.
Von innen nach außen prüfen
Bei Dienstproblemen:
1. Läuft der Prozess?
2. Läuft der Dienst laut systemctl?
3. Gibt es Fehler in journalctl?
4. Lauscht der Port lokal?
5. Antwortet der Dienst lokal?
6. Antwortet der Dienst über Server-IP?
7. Funktioniert Zugriff aus dem Netzwerk?
8. Stimmen DNS,
Firewall
und Anwendung?
Merksatz:
Erst lokal prüfen,
dann Netzwerk,
dann DNS,
dann Anwendung.
Häufige Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| ping geht, also Dienst geht | ping prüft nicht TCP/UDP-Dienst |
| Dienst läuft, also erreichbar | Port, Firewall und Bind-Adresse prüfen |
| apt update installiert Updates | apt update aktualisiert Paketlisten |
| enable startet Dienst sofort | enable aktiviert Autostart |
| / und /root verwechseln | / Dateisystemwurzel, /root Root-Home |
| x bei Verzeichnissen vergessen | x bedeutet betreten |
| chmod 777 als Lösung | unsicher und meist falsch |
| Backup ohne Restore-Test | unzuverlässig |
| Snapshot als Backup-Konzept | nicht automatisch ausreichend |
| cron wie normale Shell behandeln | andere Umgebung |
| > und >> verwechseln | > überschreibt, >> hängt an |
| stderr vergessen | Fehlerkanal ist 2 |
Kleine Prüfungsaufgaben mit Kurzantwort
| Aufgabe | Kurzantwort |
|---|---|
| Aktuelle IP anzeigen | ip addr |
| Standardgateway anzeigen | ip route |
| Dienststatus prüfen | systemctl status dienst |
| Dienstlogs anzeigen | journalctl -u dienst |
| Speicherplatz prüfen | df -h |
| Inodes prüfen | df -i |
| RAM prüfen | free -h |
| Prozesse prüfen | ps aux oder top |
| offene Ports anzeigen | ss -tulpen |
| Text in Datei suchen | grep "text" datei |
| Datei suchen | find /pfad -name "datei" |
| Datei ausführbar machen | chmod +x datei |
| Besitzer ändern | chown benutzer datei |
| Paketlisten aktualisieren | apt update |
| Pakete aktualisieren | apt upgrade |
| SSH verbinden | ssh benutzer@server |
IHK-sichere Kurzformulierungen
Linux ist ein Mehrbenutzersystem, das Zugriffe über Benutzer, Gruppen und Rechte steuert.
Ein absoluter Pfad beginnt mit /, ein relativer Pfad bezieht sich auf das aktuelle Verzeichnis.
Dienste werden auf vielen Distributionen mit systemd verwaltet. systemctl dient zur Verwaltung der Dienste, journalctl zur Auswertung der Logs.
apt update aktualisiert Paketlisten, apt upgrade aktualisiert installierte Pakete.
ping prüft ICMP-Erreichbarkeit, ersetzt aber keinen Test eines TCP- oder UDP-Dienstes.
df -h zeigt freien und belegten Speicherplatz von Dateisystemen, du -sh zeigt die Größe eines Verzeichnisses.
RPO beschreibt den maximal akzeptablen Datenverlust, RTO die maximal akzeptable Wiederherstellungszeit.
Ein Backup ist erst zuverlässig, wenn ein Restore erfolgreich getestet wurde.
Abschluss-Merksätze
Linux verstehen heißt:
Struktur,
Rechte,
Dienste,
Logs
und Netzwerk verstehen.
Nicht jeder Fehler ist ein Linux-Fehler.
Oft ist es Netzwerk,
DNS,
Rechte,
Speicher,
Dienst
oder Konfiguration.
Befehle sind Werkzeuge.
Entscheidend ist,
wann man welchen Befehl warum nutzt.
In der Prüfung immer fachlich sauber begründen.
Erst prüfen,
dann ändern.
Erst sichern,
dann konfigurieren.
Erst lokal testen,
dann extern testen.
Erst Logs lesen,
dann Maßnahmen ableiten.
Keine pauschalen 777-Rechte.
Kein blindes sudo.
Keine ungetesteten fstab-Änderungen.
Kein Backup ohne Restore-Test.
Keine Automatisierung ohne Logs.
Keine Serveränderung ohne Dokumentation.
15. Linux-Spickzettel
15.1 Prüfungsvorbereitung und Wiederholung
Diese Seite fasst die wichtigsten Linux-Themen für die IHK-Prüfung zusammen.
Der Fokus liegt nicht auf auswendig gelernten Einzelbefehlen, sondern auf Verständnis:
- Was macht Linux als Betriebssystem?
- Wie ist das Dateisystem aufgebaut?
- Wie funktionieren Benutzer und Rechte?
- Wie prüft man Dienste?
- Wie grenzt man Fehler ein?
- Wie liest man Logs?
- Wie arbeitet man sicher auf Servern?
- Wie argumentiert man fachlich sauber?
Für Fachinformatiker Systemintegration ist Linux besonders relevant, weil viele Server, Container, Netzwerkdienste, Monitoring-Systeme, Firewalls, NAS-Systeme und Cloud-Umgebungen auf Linux basieren.
Merksatz:
In der Prüfung zählt nicht nur der Befehl,
sondern die richtige fachliche Einordnung.
Lernziele
Nach dieser Seite solltest du wiederholen können:
- Linux-Grundbegriffe
- Dateisystem und wichtige Pfade
- Dateioperationen
- Benutzer,
Gruppen
und Rechte
- Prozesse,
Dienste
und systemd
- Paketverwaltung
- Netzwerkdiagnose
- Speicher,
Mounts
und Dateisysteme
- Logs,
Monitoring
und Fehlersuche
- Shell,
Pipes
und Umleitungen
- Bash-Scripting
- Sicherheit,
Backup
und Automatisierung
- Linux im Serverbetrieb
Linux-Grundlagen wiederholen
| Begriff | Bedeutung |
|---|---|
| Linux | Betriebssystemkern, im Alltag oft komplette Distribution gemeint |
| Kernel | Kern des Betriebssystems |
| Distribution | Linux-Kernel plus Software, Paketmanager und Systemwerkzeuge |
| Shell | Befehlsinterpreter |
| Bash | verbreitete Linux-Shell |
| Terminal | Eingabeumgebung für Shell-Befehle |
| root | administrativer Hauptbenutzer |
| sudo | gezielte Ausführung mit erhöhten Rechten |
| Paketmanager | installiert und aktualisiert Softwarepakete |
Merksatz:
Linux ist streng genommen der Kernel,
im Alltag meint man oft die gesamte Distribution.
Kernel, Distribution und Shell unterscheiden
| Begriff | Aufgabe |
|---|---|
| Kernel | verwaltet Hardware, Speicher, Prozesse und Systemzugriffe |
| Distribution | stellt komplettes nutzbares Betriebssystem bereit |
| Shell | nimmt Befehle entgegen und startet Programme |
| Terminal | Fenster oder Umgebung zur Eingabe von Befehlen |
Typische Prüfungsfalle:
Linux,
Distribution,
Shell
und Terminal werden durcheinandergeworfen.
IHK-sicher:
Der Kernel ist der Betriebssystemkern.
Eine Distribution kombiniert den Kernel mit Systemprogrammen,
Paketverwaltung,
Diensten
und optional grafischer Oberfläche.
Wichtige Linux-Verzeichnisse
| Pfad | Bedeutung |
|---|---|
| / | Root-Verzeichnis des Dateisystems |
| /home | Benutzerverzeichnisse |
| /root | Home-Verzeichnis des Root-Benutzers |
| /etc | Konfigurationsdateien |
| /var | veränderliche Daten |
| /var/log | Logdateien |
| /tmp | temporäre Dateien |
| /usr | Programme und Ressourcen |
| /bin | wichtige Benutzerprogramme |
| /sbin | wichtige Systemprogramme |
| /dev | Gerätedateien |
| /proc | Prozess- und Kernelinformationen |
| /sys | System- und Geräteinformationen |
| /mnt | manuelle Mountpoints |
| /media | Wechselmedien |
| /opt | optionale Zusatzsoftware |
| /srv | Dienstdaten |
Merksatz:
/etc für Konfiguration.
/var/log für Logs.
/home für Benutzer.
/ ist die Wurzel des Dateisystems.
Absolute und relative Pfade
| Pfadart | Bedeutung | Beispiel |
|---|---|---|
| absolut | beginnt bei / | /etc/hosts |
| relativ | abhängig vom aktuellen Verzeichnis | dokumente/datei.txt |
Wichtige Zeichen:
| Zeichen | Bedeutung |
|---|---|
| / | Root-Verzeichnis oder Pfadtrenner |
| . | aktuelles Verzeichnis |
| .. | übergeordnetes Verzeichnis |
| ~ | eigenes Home-Verzeichnis |
Prüfungsfalle:
Relativer Pfad hängt immer davon ab,
wo man sich gerade befindet.
Merksatz:
Absoluter Pfad beginnt mit /.
Dateien anzeigen und bearbeiten
| Aufgabe | Befehl |
|---|---|
| Verzeichnisinhalt anzeigen | ls |
| ausführlich anzeigen | ls -l |
| versteckte Dateien anzeigen | ls -a |
| aktuelle Position anzeigen | pwd |
| Verzeichnis wechseln | cd |
| Dateiinhalt anzeigen | cat |
| lange Datei lesen | less |
| Anfang anzeigen | head |
| Ende anzeigen | tail |
| live mitlesen | tail -f |
| Datei erstellen | touch |
| Datei bearbeiten | nano |
| kopieren | cp |
| verschieben oder umbenennen | mv |
| löschen | rm |
| Verzeichnis erstellen | mkdir |
| Datei suchen | find |
| Text suchen | grep |
Merksatz:
cat für kleine Dateien.
less für lange Dateien.
tail -f für Live-Logs.
find und grep unterscheiden
| Befehl | Sucht |
|---|---|
| find | Dateien und Verzeichnisse |
| grep | Text innerhalb von Dateien oder Ausgaben |
Beispiele:
find /etc -name "*ssh*"
grep "PermitRootLogin" /etc/ssh/sshd_config
Prüfungsfalle:
find sucht Dateinamen oder Dateieigenschaften.
grep sucht Inhalte.
Merksatz:
find sucht Dateien.
grep sucht Text.
Benutzer, Gruppen und Rechte
Linux-Rechte gelten klassisch für:
Besitzer
Gruppe
Andere
Die Rechte sind:
| Recht | Bedeutung bei Dateien | Bedeutung bei Verzeichnissen |
|---|---|---|
| r | lesen | Inhalt auflisten |
| w | schreiben | Einträge erstellen, löschen, umbenennen |
| x | ausführen | Verzeichnis betreten |
Wichtige Befehle:
| Befehl | Zweck |
|---|---|
| whoami | aktuellen Benutzer anzeigen |
| id | UID, GID und Gruppen anzeigen |
| groups | Gruppen anzeigen |
| chmod | Rechte ändern |
| chown | Besitzer ändern |
| chgrp | Gruppe ändern |
| sudo | Befehl mit erhöhten Rechten ausführen |
Merksatz:
Bei Verzeichnissen bedeutet x:
betreten.
Numerische Rechte wiederholen
| Zahl | Rechte |
|---|---|
| 0 | --- |
| 1 | --x |
| 2 | -w- |
| 3 | -wx |
| 4 | r-- |
| 5 | r-x |
| 6 | rw- |
| 7 | rwx |
Typische Rechte:
| Rechte | Bedeutung |
|---|---|
| 644 | normale Datei |
| 600 | private Datei |
| 755 | Programm oder öffentlich betretbares Verzeichnis |
| 700 | privates Verzeichnis oder privates Skript |
| 777 | jeder darf alles, meist unsicher |
Merksatz:
r=4,
w=2,
x=1.
Root, sudo und Sicherheit
| Begriff | Bedeutung |
|---|---|
| root | administrativer Hauptbenutzer |
| sudo | einzelne Befehle mit erhöhten Rechten ausführen |
| su | Benutzer wechseln |
| /root | Home-Verzeichnis von root |
| / | Root-Verzeichnis des Dateisystems |
Prüfungsfalle:
root,
/root
und /
sind nicht dasselbe.
IHK-sicher:
Administrative Rechte sollten gezielt und nachvollziehbar genutzt werden.
Dauerhaftes Arbeiten als root erhöht das Risiko für Fehlbedienung und Schäden.
Merksatz:
Root-Rechte bewusst und nur bei Bedarf verwenden.
Prozesse und Dienste
| Begriff | Bedeutung |
|---|---|
| Prozess | laufendes Programm |
| PID | eindeutige Prozess-ID |
| Dienst | Hintergrundprogramm mit Aufgabe |
| Daemon | Hintergrundprozess |
| systemd | Dienst- und Init-System vieler Distributionen |
| Unit | Verwaltungseinheit von systemd |
| .service | Dienst-Unit |
Wichtige Befehle:
| Befehl | Zweck |
|---|---|
| ps aux | Prozesse anzeigen |
| top | Prozesse live anzeigen |
| htop | komfortabler Prozessmonitor, falls installiert |
| kill | Signal an Prozess senden |
| systemctl status dienst | Dienststatus prüfen |
| journalctl -u dienst | Dienstlogs anzeigen |
Merksatz:
Prozess = läuft.
Dienst = Hintergrundaufgabe.
systemctl sicher unterscheiden
| Befehl | Bedeutung |
|---|---|
| systemctl start dienst | startet jetzt |
| systemctl stop dienst | stoppt jetzt |
| systemctl restart dienst | startet neu |
| systemctl reload dienst | lädt Konfiguration neu, falls unterstützt |
| systemctl enable dienst | aktiviert Autostart |
| systemctl disable dienst | deaktiviert Autostart |
| systemctl status dienst | zeigt Status |
| systemctl is-active dienst | prüft, ob Dienst läuft |
| systemctl is-enabled dienst | prüft Autostart |
Prüfungsfalle:
start und enable sind nicht dasselbe.
Merksatz:
active heißt:
läuft jetzt.
enabled heißt:
startet beim Boot.
Paketverwaltung
| Distribution | Paketmanager |
|---|---|
| Debian / Ubuntu | apt |
| Fedora / Rocky Linux | dnf |
| openSUSE | zypper |
| Arch Linux | pacman |
| Alpine Linux | apk |
Wichtige apt-Befehle:
| Befehl | Bedeutung |
|---|---|
| apt update | Paketlisten aktualisieren |
| apt upgrade | installierte Pakete aktualisieren |
| apt install paket | Paket installieren |
| apt remove paket | Paket entfernen |
| apt purge paket | Paket inklusive Konfiguration entfernen |
| apt search begriff | Paket suchen |
| apt show paket | Paketinformationen anzeigen |
| apt autoremove | nicht mehr benötigte Abhängigkeiten entfernen |
Merksatz:
apt update holt Listen.
apt upgrade installiert Updates.
Repository, Paket und Abhängigkeit
| Begriff | Bedeutung |
|---|---|
| Paket | verwaltete Softwareeinheit |
| Repository | Paketquelle |
| Abhängigkeit | zusätzlich benötigtes Paket |
| Paketmanager | Werkzeug zur Paketverwaltung |
| Patchmanagement | geplanter Umgang mit Updates |
Prüfungsfalle:
Manuelle Installation von Webseiten ist unter Linux-Servern meist nicht der Standardweg.
IHK-sicher:
Paketmanager installieren Software kontrolliert,
lösen Abhängigkeiten auf
und stellen Updates bereit.
Merksatz:
Repository = Paketquelle.
Netzwerkdiagnose
| Aufgabe | Befehl |
|---|---|
| IP-Adressen anzeigen | ip addr |
| Schnittstellen anzeigen | ip link |
| Routing anzeigen | ip route |
| Erreichbarkeit prüfen | ping |
| DNS prüfen | dig oder nslookup |
| Ports anzeigen | ss -tulpen |
| HTTP/HTTPS prüfen | curl |
| Hostname anzeigen | hostname |
| DNS-Status prüfen | resolvectl status |
| SSH-Verbindung herstellen | ssh benutzer@server |
Merksatz:
Erst IP,
dann Route,
dann DNS,
dann Port,
dann Dienst.
Typische Netzwerkauswertung
| Ergebnis | Wahrscheinliche Richtung |
|---|---|
| keine IP-Adresse | DHCP oder Interface |
| Gateway nicht erreichbar | lokales Netz, VLAN, Gateway |
| externe IP nicht erreichbar | Routing, NAT oder Firewall |
| IP erreichbar, Name nicht | DNS |
| Dienst läuft, Port nicht erreichbar | Firewall, Bind-Adresse, Port |
| Port lauscht auf 127.0.0.1 | nur lokal erreichbar |
| Connection refused | Dienst oder Port lehnt ab |
| Connection timed out | Firewall, Routing oder Ziel nicht erreichbar |
Merksatz:
ping prüft ICMP,
nicht den Dienst.
SSH wiederholen
| Begriff | Bedeutung |
|---|---|
| SSH | sichere Fernadministration |
| TCP 22 | Standardport für SSH |
| ssh | Client-Befehl |
| sshd | SSH-Serverdienst |
| authorized_keys | erlaubte öffentliche Schlüssel |
| known_hosts | bekannte Server-Host-Keys |
| privater Schlüssel | bleibt geheim |
| öffentlicher Schlüssel | darf auf Server |
Sicherheitsregel:
Direkten Root-Login vermeiden.
Besser normaler Benutzer plus sudo.
Merksatz:
Öffentlicher Schlüssel auf Server.
Privater Schlüssel bleibt geheim.
Firewall wiederholen
Eine Firewall-Regel sollte enthalten:
Quelle
Ziel
Protokoll
Port
Richtung
Aktion
Zweck
Typische Werkzeuge:
| Werkzeug | Einordnung |
|---|---|
| ufw | einfache Firewall-Oberfläche, häufig Ubuntu |
| firewalld | Firewall-Verwaltung mit Zonen |
| nftables | moderner Firewall-Unterbau |
| iptables | klassisches Firewall-Werkzeug |
Merksatz:
Port allein ist keine vollständige Firewall-Regel.
Speicher und Mounts
| Begriff | Bedeutung |
|---|---|
| Datenträger | physisches oder virtuelles Speichermedium |
| Partition | Bereich auf einem Datenträger |
| Dateisystem | Organisationsform für Dateien |
| Mountpoint | Einhängepunkt im Verzeichnisbaum |
| fstab | automatische Mounts beim Systemstart |
| UUID | eindeutige Kennung eines Dateisystems |
| Swap | Auslagerungsspeicher |
Wichtige Befehle:
| Befehl | Zweck |
|---|---|
| lsblk | Datenträger und Partitionen anzeigen |
| lsblk -f | Dateisysteme und UUIDs anzeigen |
| df -h | Speicherplatz prüfen |
| df -i | Inodes prüfen |
| du -sh ordner | Ordnergröße anzeigen |
| mount | Mounts anzeigen oder einhängen |
| umount | aushängen |
| findmnt | Mounts strukturiert anzeigen |
| free -h | RAM und Swap anzeigen |
Merksatz:
df zeigt Dateisysteme.
du zeigt Ordnergrößen.
fstab wiederholen
Die Datei:
/etc/fstab
legt fest, welche Dateisysteme beim Start automatisch eingebunden werden.
Wichtige Prüfungen nach Änderung:
cp /etc/fstab /etc/fstab.bak
mount -a
findmnt
df -h
Prüfungsfalle:
/dev/sdb1 kann sich ändern.
UUIDs sind für dauerhafte Mounts oft stabiler.
Merksatz:
fstab nie ungetestet ändern.
Logs und Monitoring
| Aufgabe | Befehl |
|---|---|
| systemd-Journal anzeigen | journalctl |
| Dienstlogs anzeigen | journalctl -u dienst |
| Logs live anzeigen | journalctl -f |
| Logs seit Boot anzeigen | journalctl -b |
| Kernelmeldungen anzeigen | dmesg |
| Logdatei lesen | less logfile |
| Logdatei live lesen | tail -f logfile |
| Logs filtern | grep |
| Dienststatus prüfen | systemctl status dienst |
| CPU und Prozesse prüfen | top |
| RAM prüfen | free -h |
| Speicher prüfen | df -h |
Merksatz:
Dienstproblem:
status prüfen,
dann Logs lesen.
Typische Logorte
| Ort | Bedeutung |
|---|---|
| /var/log | klassische Logdateien |
| /var/log/syslog | allgemeine Logs, häufig Debian/Ubuntu |
| /var/log/messages | allgemeine Logs, häufig RHEL/Fedora-Umfeld |
| /var/log/auth.log | Authentifizierung, häufig Debian/Ubuntu |
| /var/log/secure | Authentifizierung, häufig RHEL/Fedora-Umfeld |
| journalctl | systemd-Journal |
| dmesg | Kernelmeldungen |
Merksatz:
Nicht jede Distribution nutzt dieselben Logdateinamen.
Shell, Pipes und Umleitungen
| Zeichen / Befehl | Bedeutung |
|---|---|
| | | Pipe, Ausgabe an nächsten Befehl |
| > | Ausgabe in Datei schreiben und überschreiben |
| >> | Ausgabe anhängen |
| < | Datei als Eingabe nutzen |
| 2> | Fehlerausgabe umleiten |
| &> | Ausgabe und Fehler gemeinsam umleiten |
| /dev/null | Ausgabe verwerfen |
| ; | Befehle nacheinander |
| && | nächster Befehl nur bei Erfolg |
| || | nächster Befehl nur bei Fehler |
| $? | Exit-Code des letzten Befehls |
Merksatz:
> überschreibt.
>> hängt an.
2> leitet Fehler um.
stdin, stdout und stderr
| Kanal | Nummer | Bedeutung |
|---|---|---|
| stdin | 0 | Standardeingabe |
| stdout | 1 | Standardausgabe |
| stderr | 2 | Standardfehler |
Prüfungsfalle:
Fehlermeldungen gehen nicht automatisch über stdout.
Deshalb reicht > nicht immer,
um Fehler umzuleiten.
Merksatz:
0 Eingabe,
1 Ausgabe,
2 Fehler.
Bash-Scripting wiederholen
| Element | Bedeutung |
|---|---|
| #!/bin/bash | Shebang für Bash |
| chmod +x script.sh | Skript ausführbar machen |
| ./script.sh | Skript aus aktuellem Verzeichnis starten |
| $1 | erster Parameter |
| $# | Anzahl Parameter |
| "$@" | alle Parameter sauber einzeln |
| $? | Exit-Code des letzten Befehls |
| if | Bedingung |
| for | Schleife über Werte |
| while | Schleife solange Bedingung wahr ist |
| case | Auswahl nach Muster |
| read | Benutzereingabe lesen |
| function | wiederverwendbarer Skriptblock |
Merksatz:
Skripte automatisieren Befehle,
aber auch Fehler,
wenn sie schlecht geschrieben sind.
Sichere Bash-Regeln
Wichtige Regeln:
Variablen meistens quoten
"$VARIABLE"
Parameter prüfen
Exit-Codes beachten
gefährliche Befehle vorher testen
absolute Pfade nutzen,
besonders bei cron
Logs schreiben
Skripte zuerst in Testumgebung prüfen
Kommentare für Zweck und Ablauf nutzen
Typische strenge Optionen:
set -euo pipefail
Merksatz:
In Skripten erst prüfen,
dann handeln.
Sicherheit wiederholen
Wichtige Sicherheitsprinzipien:
| Thema | Kerngedanke |
|---|---|
| Least Privilege | nur notwendige Rechte |
| Updates | bekannte Schwachstellen schließen |
| Firewall | unnötige Zugriffe blockieren |
| SSH-Härtung | sicheren Administrationszugang |
| Dienstkonten | Dienste nicht unnötig als root |
| Logging | Ereignisse nachvollziehen |
| Monitoring | Probleme früh erkennen |
| Backups | Wiederherstellung ermöglichen |
| Dokumentation | Betrieb nachvollziehbar machen |
Merksatz:
Sicherheit ist kein einzelner Befehl,
sondern ein Betriebskonzept.
Backup wiederholen
| Begriff | Bedeutung |
|---|---|
| Backup | Sicherung von Daten |
| Restore | Wiederherstellung |
| RPO | maximal akzeptabler Datenverlust |
| RTO | maximal akzeptable Wiederherstellungszeit |
| Vollbackup | vollständige Sicherung |
| inkrementell | Änderungen seit letztem Backup |
| differentiell | Änderungen seit letztem Vollbackup |
| Snapshot | Zustand zu einem Zeitpunkt |
| 3-2-1-Regel | mehrere Kopien, unterschiedliche Orte, externe Kopie |
Merksatz:
RPO = Datenverlust.
RTO = Wiederherstellungszeit.
Automatisierung wiederholen
| Werkzeug | Zweck |
|---|---|
| Bash-Skript | Befehlsfolge automatisieren |
| cron | zeitgesteuerte Aufgaben |
| systemd Timer | zeitgesteuerte systemd-Units |
| logrotate | Logs rotieren |
| Monitoring | Zustand überwachen |
| Alerting | bei Problemen benachrichtigen |
Wichtig:
Automatisierung braucht Logs,
Exit-Codes,
Monitoring
und Dokumentation.
Merksatz:
Automatisierung ohne Kontrolle kann unbemerkt ausfallen.
Linux im Serverbetrieb wiederholen
Typische Serverrollen:
| Rolle | Beispiel |
|---|---|
| Webserver | nginx, Apache |
| Datenbankserver | PostgreSQL, MariaDB |
| Dateiserver | Samba, NFS |
| DNS-Server | BIND, Unbound |
| DHCP-Server | DHCP-Dienst |
| Container-Host | Docker, Podman |
| Backupserver | Backupdienste |
| Monitoringserver | Überwachungssystem |
| Reverse Proxy | nginx, Proxy-Dienst |
| VPN-Server | WireGuard, OpenVPN |
Merksatz:
Server ist eine Rolle,
nicht nur ein bestimmtes Gerät.
Standardports wiederholen
| Dienst | Port |
|---|---|
| SSH | TCP 22 |
| DNS | TCP/UDP 53 |
| DHCP | UDP 67/68 |
| HTTP | TCP 80 |
| HTTPS | TCP 443 |
| SMB | TCP 445 |
| MySQL/MariaDB | TCP 3306 |
| PostgreSQL | TCP 5432 |
| SMTP | TCP 25 |
| IMAP | TCP 143 |
| IMAPS | TCP 993 |
| POP3 | TCP 110 |
| POP3S | TCP 995 |
| NTP | UDP 123 |
Merksatz:
Port immer mit Protokoll nennen:
TCP oder UDP.
Typische IHK-Fehlerfragen
| Fehlerbild | Erste sinnvolle Prüfungen |
|---|---|
| Dienst startet nicht | systemctl status, journalctl -u, Konfiguration, Rechte, Port |
| Webseite nicht erreichbar | Dienst, Port, curl lokal, Firewall, DNS, Logs |
| SSH geht nicht | Netzwerk, Port 22, sshd, Firewall, Benutzer, Schlüssel |
| Speicher voll | df -h, df -i, du -sh, Logs, Backups |
| DNS geht nicht | IP-Test, dig, resolv.conf, DNS-Server, /etc/hosts |
| Permission denied | whoami, id, ls -l, ls -ld, Gruppen |
| No such file | pwd, ls, Pfad, Groß-/Kleinschreibung, Mount |
| Containerdaten weg | Volumes, Bind Mounts, Container-Dateisystem |
| Backup fehlgeschlagen | Logs, Ziel, Rechte, Speicher, Netzwerk |
| System langsam | top, free -h, df -h, iowait, Logs |
Merksatz:
Fehlerbild lesen,
Ebene erkennen,
gezielt prüfen.
Fehlersuche: Standardreihenfolge
Bei vielen Linux-Problemen hilft diese Reihenfolge:
1. Fehler genau lesen
2. betroffenen Bereich bestimmen
3. letzte Änderung prüfen
4. Status prüfen
5. Logs prüfen
6. Ressourcen prüfen
7. Rechte prüfen
8. Netzwerk prüfen
9. Konfiguration prüfen
10. Maßnahme dokumentieren
Merksatz:
Nicht raten,
sondern eingrenzen.
Von innen nach außen prüfen
Bei Dienstproblemen:
1. Läuft der Prozess?
2. Läuft der Dienst laut systemctl?
3. Gibt es Fehler in journalctl?
4. Lauscht der Port lokal?
5. Antwortet der Dienst lokal?
6. Antwortet der Dienst über Server-IP?
7. Funktioniert Zugriff aus dem Netzwerk?
8. Stimmen DNS,
Firewall
und Anwendung?
Merksatz:
Erst lokal prüfen,
dann Netzwerk,
dann DNS,
dann Anwendung.
Häufige Prüfungsfallen
| Falle | Richtig denken |
|---|---|
| ping geht, also Dienst geht | ping prüft nicht TCP/UDP-Dienst |
| Dienst läuft, also erreichbar | Port, Firewall und Bind-Adresse prüfen |
| apt update installiert Updates | apt update aktualisiert Paketlisten |
| enable startet Dienst sofort | enable aktiviert Autostart |
| / und /root verwechseln | / Dateisystemwurzel, /root Root-Home |
| x bei Verzeichnissen vergessen | x bedeutet betreten |
| chmod 777 als Lösung | unsicher und meist falsch |
| Backup ohne Restore-Test | unzuverlässig |
| Snapshot als Backup-Konzept | nicht automatisch ausreichend |
| cron wie normale Shell behandeln | andere Umgebung |
| > und >> verwechseln | > überschreibt, >> hängt an |
| stderr vergessen | Fehlerkanal ist 2 |
Kleine Prüfungsaufgaben mit Kurzantwort
| Aufgabe | Kurzantwort |
|---|---|
| Aktuelle IP anzeigen | ip addr |
| Standardgateway anzeigen | ip route |
| Dienststatus prüfen | systemctl status dienst |
| Dienstlogs anzeigen | journalctl -u dienst |
| Speicherplatz prüfen | df -h |
| Inodes prüfen | df -i |
| RAM prüfen | free -h |
| Prozesse prüfen | ps aux oder top |
| offene Ports anzeigen | ss -tulpen |
| Text in Datei suchen | grep "text" datei |
| Datei suchen | find /pfad -name "datei" |
| Datei ausführbar machen | chmod +x datei |
| Besitzer ändern | chown benutzer datei |
| Paketlisten aktualisieren | apt update |
| Pakete aktualisieren | apt upgrade |
| SSH verbinden | ssh benutzer@server |
IHK-sichere Kurzformulierungen
Linux ist ein Mehrbenutzersystem, das Zugriffe über Benutzer, Gruppen und Rechte steuert.
Ein absoluter Pfad beginnt mit /, ein relativer Pfad bezieht sich auf das aktuelle Verzeichnis.
Dienste werden auf vielen Distributionen mit systemd verwaltet. systemctl dient zur Verwaltung der Dienste, journalctl zur Auswertung der Logs.
apt update aktualisiert Paketlisten, apt upgrade aktualisiert installierte Pakete.
ping prüft ICMP-Erreichbarkeit, ersetzt aber keinen Test eines TCP- oder UDP-Dienstes.
df -h zeigt freien und belegten Speicherplatz von Dateisystemen, du -sh zeigt die Größe eines Verzeichnisses.
RPO beschreibt den maximal akzeptablen Datenverlust, RTO die maximal akzeptable Wiederherstellungszeit.
Ein Backup ist erst zuverlässig, wenn ein Restore erfolgreich getestet wurde.
Abschluss-Merksätze
Linux verstehen heißt:
Struktur,
Rechte,
Dienste,
Logs
und Netzwerk verstehen.
Nicht jeder Fehler ist ein Linux-Fehler.
Oft ist es Netzwerk,
DNS,
Rechte,
Speicher,
Dienst
oder Konfiguration.
Befehle sind Werkzeuge.
Entscheidend ist,
wann man welchen Befehl warum nutzt.
In der Prüfung immer fachlich sauber begründen.
Erst prüfen,
dann ändern.
Erst sichern,
dann konfigurieren.
Erst lokal testen,
dann extern testen.
Erst Logs lesen,
dann Maßnahmen ableiten.
Keine pauschalen 777-Rechte.
Kein blindes sudo.
Keine ungetesteten fstab-Änderungen.
Kein Backup ohne Restore-Test.
Keine Automatisierung ohne Logs.
Keine Serveränderung ohne Dokumentation.
16. Linux-Trainer
Linux Tests
1. Benutzer & Zugriffsrechte
Gegeben:
| Objekt | Rechte | Eigentümer | Gruppe |
|---|---|---|---|
| /home/ | rwx r-x r-x | root | root |
| /home/anton/ | rwx r-x --- | anton | berliner |
| bz | rw- r-- r-- | anton | berliner |
| caesar.jpg | r-- r-- r-- | caesar | roemer |
| /home/berta/ | rwx rwx r-x | berta | berliner |
| fahrplan | rw- rw- rw- | berta | berliner |
| BaS | rw- --- --- | anton | berliner |
| /home/caesar/ | rwx r-x r-x | caesar | roemer |
| urteile.txt | rw- r-- --- | caesar | roemer |
| kino.pdf | rw- r-- r-- | berta | berliner |
1. Darf berta die Datei bz lesen?
Antwort anzeigen
Ja.
Begründung: others hat Leserechte (r--).
2. Darf caesar die Datei bz lesen?
Antwort anzeigen
Ja.
Begründung: others hat Leserechte (r--).
3. Wer darf die Datei urteile.txt lesen?
Antwort anzeigen
Anton und berta.
Begründung: Die Gruppe hat Leserechte (r--).
4. Was ist zu tun, damit alle Benutzer die Datei urteile.txt lesen können?
Antwort anzeigen
chmod o+r urteile.txt
5. Darf caesar die Datei kino.pdf verändern?
Antwort anzeigen
Nein. Begründung: Er hat nur Leserechte.
6. Darf caesar die Datei kino.pdf löschen?
Antwort anzeigen
Ja. Begründung: Das Löschen hängt von den Rechten des Verzeichnisses ab, nicht von der Datei.
7. Darf anton die Datei BaS löschen?
Antwort anzeigen
Ja. Begründung: Entscheidend sind die Rechte des Verzeichnisses.
8. Wer darf die Datei fahrplan ändern?
Antwort anzeigen
Anton, berta und caesar.
Begründung: Die Datei hat rw- rw- rw-.
9. Nur berta soll die Datei fahrplan ändern dürfen. Was ist zu tun?
Antwort anzeigen
chmod 600 fahrplan
10. Wie versperrt caesar den Mitgliedern der Gruppe berliner den Zugriff auf sein Heimatverzeichnis?
Antwort anzeigen
chmod 700 /home/caesar
11. Die berliner sollen im Heimatverzeichnis von berta keine Ordner und Dateien anlegen dürfen und alle anderen sollen keinen Zugriff haben. Was ist zu tun?
Antwort anzeigen
chmod 750 /home/berta
12. Welche Rechte müssen gesetzt werden, damit caesar sein Bild caesar.jpg in antons Heimatverzeichnis ablegen kann?
Antwort anzeigen
/home/anton/ rwx r-x rwx
Begründung: Zum Ablegen einer Datei in ein Verzeichnis braucht man w + x.
Caesar ist weder Eigentümer noch in der Gruppe berliner, daher müssen diese Rechte bei others gesetzt sein.
13. Welche Rechte müssen gesetzt werden, damit berta die Datei kino.pdf in caesars Heimatverzeichnis ablegen kann?
Antwort anzeigen
/home/caesar/ rwx r-x rwx
Begründung: Berta ist weder Eigentümerin noch in der Gruppe roemer.
Darum braucht others Schreib- und Betretungsrechte (w + x).
14. Wer darf die Zugriffsrechte von Dateien und Ordnern verändern?
Antwort anzeigen
Der Eigentümer und root.
1 b. Zusatzaufgaben zu Linux-Benutzern, sudo, Besitzrechten und Sonderrechten.
1. Der Benutzer hund soll Superuser-/Root-Rechte erhalten. Was ist zu tun?
Antwort anzeigen
Der Benutzer muss zur Gruppe der Administratoren (sudo-Gruppe) hinzugefügt werden:
sudo usermod -aG sudo hund
Danach muss sich der Benutzer neu anmelden, damit die Gruppenrechte aktiv werden.
2. Der Benutzer hund kann mit sudo <befehl> arbeiten und muss dabei sein Passwort eingeben. Gibt es eine Möglichkeit, ohne Passwortabfrage zu arbeiten?
Antwort anzeigen
Ja, dies ist über die Konfigurationsdatei /etc/sudoers möglich.
Ein entsprechender Eintrag lautet:
hund ALL=(ALL:ALL) NOPASSWD: ALL
Die Datei sollte aus Sicherheitsgründen nicht direkt bearbeitet werden, sondern mit:
sudo visudo
3. Der tagesplan soll in den Besitz des Benutzers hund übergehen und in seinen Heimatordner verschoben werden. Was ist zu tun?
Antwort anzeigen
Zuerst wird der Besitzer der Datei geändert:
sudo chown hund:hund tagesplan
Danach wird die Datei in das Heimatverzeichnis verschoben:
mv tagesplan /home/hund/
Je nach Speicherort der Datei muss der Pfad angepasst werden.
4. Beim Anlegen von Benutzern sind manchmal schon Dateien oder Ordner vorhanden, zum Beispiel unter ubuntu die Datei examples.desktop. Woher kommen diese?
Antwort anzeigen
Diese Dateien stammen aus dem Vorlagenverzeichnis für neue Benutzer:
/etc/skel
Beim Anlegen eines neuen Benutzers wird dieses Verzeichnis in das Home-Verzeichnis kopiert.
5. Was ist der Nutzen solcher bereits vorhandenen Dateien und Ordner im Home-Verzeichnis?
Antwort anzeigen
Diese Dateien stellen eine Grundausstattung für neue Benutzer bereit.
Dazu gehören beispielsweise:
- Beispiel-Dateien
- voreingestellte Konfigurationen
- vorbereitete Ordnerstrukturen
Dadurch kann der Benutzer sofort mit einer sinnvollen Umgebung arbeiten.
6. Welche Aufgabe hat das Set-UID-Recht (SUID-Bit)?
Antwort anzeigen
Ein Programm wird mit den Rechten des Dateibesitzers ausgeführt und nicht mit den Rechten des Benutzers, der es startet.
Dadurch können Programme kurzfristig mit erweiterten Rechten ausgeführt werden.
7. Welche Aufgabe hat das Set-GID-Recht (SGID-Bit)?
Antwort anzeigen
Bei Dateien wird ein Programm mit den Rechten der Gruppe ausgeführt.
Bei Verzeichnissen sorgt das SGID-Bit dafür, dass neu angelegte Dateien und Ordner automatisch die Gruppe des Verzeichnisses übernehmen.
8. Welche Aufgabe hat das Sticky-Bit?
Antwort anzeigen
In einem Verzeichnis mit gesetztem Sticky-Bit dürfen Dateien nur vom jeweiligen Eigentümer, vom Verzeichnisbesitzer oder von root gelöscht oder umbenannt werden.
Ein typisches Beispiel ist das Verzeichnis:
/tmp
9. Wie werden diese Sonderrechte gesetzt und dargestellt?
Antwort anzeigen
Die Sonderrechte werden mit dem Befehl chmod gesetzt:
SUID setzen:
chmod u+s datei
SGID setzen:
chmod g+s datei
Sticky-Bit setzen:
chmod +t verzeichnis
Die Darstellung erfolgt mit ls -l:
- SUID:
soderSim Benutzer-Bereich - SGID:
soderSim Gruppen-Bereich - Sticky-Bit:
toderTim Other-Bereich
Kleinbuchstaben bedeuten, dass zusätzlich das Ausführungsrecht gesetzt ist.
Großbuchstaben bedeuten, dass das Ausführungsrecht fehlt.
10. Welchen Vorteil hat das Sticky-Bit gegenüber dem normalen Schreibrecht auf einen Ordner?
Antwort anzeigen
Ohne Sticky-Bit kann jeder Benutzer mit Schreibrechten in einem Verzeichnis auch Dateien anderer Benutzer löschen.
Mit gesetztem Sticky-Bit wird dies verhindert, sodass Benutzer nur ihre eigenen Dateien löschen können.
Dadurch wird die Sicherheit in gemeinsam genutzten Verzeichnissen erhöht.
2. Gemischt – Benutzer, Zugriffsrechte und Sonderrechte.
Gegeben: Linux – Benutzer, Zugriffsrechte und Sonderrechte.
1. Darf berta die Datei bz lesen?
Antwort anzeigen
Ja.
Begründung: Für „others“ sind Leserechte (r--) gesetzt.
2. Darf caesar die Datei bz lesen?
Antwort anzeigen
Ja.
Begründung: Auch „others“ besitzen Leserechte (r--).
3. Wer darf die Datei urteile.txt lesen?
Antwort anzeigen
Anton und berta.
Begründung: Die Gruppe besitzt Leserechte (r--).
4. Was ist zu tun, damit alle Benutzer die Datei urteile.txt lesen können?
Antwort anzeigen
Die Leserechte für „others“ müssen gesetzt werden:
chmod o+r urteile.txt
5. Darf caesar die Datei kino.pdf verändern?
Antwort anzeigen
Nein.
Begründung: Er besitzt nur Leserechte.
6. Darf caesar die Datei kino.pdf löschen?
Antwort anzeigen
Ja.
Begründung: Das Löschen hängt von den Rechten des Verzeichnisses ab, nicht von der Datei.
7. Wer darf die Datei fahrplan ändern?
Antwort anzeigen
Anton, berta und caesar.
Begründung: Die Datei besitzt die Rechte rw- rw- rw-.
8. Nur berta soll die Datei fahrplan ändern dürfen. Was ist zu tun?
Antwort anzeigen
Die Rechte müssen eingeschränkt werden:
chmod 600 fahrplan
9. Wie versperrt caesar den Mitgliedern der Gruppe berliner den Zugriff auf sein Heimatverzeichnis?
Antwort anzeigen
Die Rechte des Verzeichnisses müssen angepasst werden:
chmod 700 /home/caesar
10. Welche Rechte müssen gesetzt werden, damit caesar eine Datei in antons Heimatverzeichnis ablegen kann?
Antwort anzeigen
Das Verzeichnis muss Schreib- und Betretungsrechte für andere besitzen:
/home/anton/ rwx r-x rwx
Begründung: Zum Ablegen einer Datei werden w und x benötigt.
11. Der Benutzer hund soll Superuser-/Root-Rechte erhalten. Was ist zu tun?
Antwort anzeigen
Der Benutzer muss zur sudo-Gruppe hinzugefügt werden:
sudo usermod -aG sudo hund
12. Der Benutzer hund kann mit sudo <befehl> arbeiten und muss dabei sein Passwort eingeben. Gibt es eine Möglichkeit, ohne Passwortabfrage zu arbeiten?
Antwort anzeigen
Ja, über die Datei /etc/sudoers:
hund ALL=(ALL:ALL) NOPASSWD: ALL
Bearbeitung mit:
sudo visudo
13. Der tagesplan soll in den Besitz des Benutzers hund übergehen und in seinen Heimatordner verschoben werden. Was ist zu tun?
Antwort anzeigen
Besitzer ändern:
sudo chown hund:hund tagesplan
Danach verschieben:
mv tagesplan /home/hund/
14. Woher stammen Standard-Dateien beim Anlegen eines neuen Benutzers?
Antwort anzeigen
Sie stammen aus dem Verzeichnis:
/etc/skel
Dieses wird in das Home-Verzeichnis kopiert.
15. Welche Aufgabe hat das Set-UID-Recht (SUID-Bit)?
Antwort anzeigen
Programme werden mit den Rechten des Dateibesitzers ausgeführt.
16. Welche Aufgabe hat das Set-GID-Recht (SGID-Bit)?
Antwort anzeigen
Programme laufen mit Gruppenrechten,
und in Verzeichnissen wird die Gruppe vererbt.
17. Welche Aufgabe hat das Sticky-Bit?
Antwort anzeigen
Nur Eigentümer dürfen Dateien löschen oder umbenennen.
18. Wie werden Sonderrechte gesetzt?
Antwort anzeigen
SUID: chmod u+s
SGID: chmod g+s
Sticky: chmod +t
19. Welchen Vorteil hat das Sticky-Bit?
Antwort anzeigen
Es verhindert das Löschen fremder Dateien in gemeinsam genutzten Verzeichnissen.
Selbstbewertung
0–6 richtig → ❌ wiederholen
7–12 richtig → ⚠️ unsicher
13–17 richtig → ✅ gut vorbereitet
18–19 richtig → 🔥 prüfungsbereit
Linux Zusatz
A1_ssh
ssh - Secure Shell zur sicheren remote-Administration
Eine der bekanntesten Anwendungen für asymmetrische Schlüsselverfahren ist die Secure Shell, z.B. openssh.
Abb1. Zur Erinnerung: Bei symmetrischen Verfahren (oben) dient ein Key sowohl zum Ver- als auch zum Entschlüsseln. Die asymmetrische Varianten (unten) benutzen dafür zwei verschiedene Schlüssel, einen privaten und einen öffentlichen.
Jeder Host benötigt ein eigenes Schlüsselpaar aus privatem und öffentlichem Schlüssel, das meist schon bei der Installation der Software generiert wird. Bei dem einleitenden Handshake authentifiziert sich der Zielhost (ssh-Server) mit seinem privaten Schlüssel.
Der Client generiert anschließend einen Sitzungsschlüssel, verschlüsselt ihn mit dem öffentlichen Key des Servers und sendet ihn an den Server. Damit öffnet er einen sicheren Tunnel (siehe Abb.2), über den anschließend die Datenkommunikation abläuft. Die Benutzer-Authentifizierung erfolgt danach über einen Passwortdialog oder ebenfalls mittels asymmetrischer Kryptographie. Beide Versionen laufen über die gesicherte Verbindung des ssh-Tunnels und sind somit für Außenstehende nicht entzifferbar. Nach der Authentifizierung stellt der Server dem Client eine Shell zur Verfügung. Das ssh-Protokoll hat noch viele weitere nützliche Funktionen, z.b. scp zum sicheren Datentransport (siehe ganz unten).
Abb.2 Die Secure Shell verwendet asymmetrische Kryptographie, um den Server gegen den Client und den Benutzer gegen den Server zu authentifizieren. Beide Partner brauchen dazu ein eigenes Schlüsselpaar.
ssh - Secure Shell zur sicheren remote-Administration
Anmelden mit Benutzernamen und Passwort auf srvYZ
userXY@pcXY:~$ ssh [userYZ@]srvYZ
- Beachte ! Benutzerangabe [userYZ@] nur bei abweichendem
- Benutzer auf dem Server.
- Bei der erstmaligen Anmeldung wird ein 'fingerprint' des öffentlichen Schlüssels des Remote-PC/Servers errechnet und bei Bestätigung* (Authentizität) wird der Public-Key des Servers in die .ssh/known_hosts geschrieben.
Anmelden mittels Public-Key-Verfahren
1. Schlüssel erzeugen:
- Syntax: ssh-keygen [-f KEY_FILE] [-C COMMENT] [-t TYP (rsa|dsa)] [-b KEY_LENGTH (1024|2048)]
userXY@pcXY:~$ ssh-keygen
- Standard ist ein RSA-Schlüsselpaar mit 2048 bit Schlüssellänge
- Eine Passphrase (Passwortsatz) dient der Sicherheit, oft im Intranet aus Komfortgründen weggelassen (für automatisierte
- Jobs)
- Das Schlüsselpaar liegt in ~/.ssh.
- Der private Schlüssel in der Datei id_rsa/id_dsa (default) Der public-key in der Datei id_rsa.pub/id_dsa.pub (default)
2. öffentlichen Schlüssel auf remote-Server ablegen
userXY@pcXY:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub [userYZ]@srvYZ
- Kopieren des public-keys automatisch auf den remote-Server in die Datei 'authorized_keys' mit dem Befehl 'ssh-copy-id'
zwei kompliziertere Alternativen dazu:
userXY@pcXY :~$ scp .ssh/id_rsa.pub [userYZ@]srvYZ:.ssh/authorized_keys
- Kopieren des ersten public-keys auf den remote-Server und umbenennen in die Datei authorized_keys
userYZ@srvYZ:~/.ssh$ cat .../usbstick/id_rsa.pub >> authorized_keys
- public-key über einen sicheren Weg (usbstick) direkt auf dem Server an die Datei authorized_keys angehängen (neben anderen public-Keys)
3. Anmelden nun ohne Passwort möglich
userXY@pcXY:~$ ssh [userYZ@]srvYZ
Tip: bei Fehlermeldung 'Agent admitted failure to sign using the key' neuen privatkey mit dem Befehl 'ssh-add' hinzufügen!
ssh - Secure Shell zur sicheren remote-Administration
weitere Beispiel für die Secure Shell:
Kopieren eines Verzeichnisses: z.B. ~/linux nach srvYZ:
userXY@pcXY:~$ scp -rv ~/linux [userYZ@]srvYZ:
Synchronisieren von Daten mit rsync über eine ssh-Verbindung:
userXY@pcXY:~$ rsync -av /linux/ [userYZ@]srvYZ:/linux/
Absetzen eines remote-Kommandos:
userXY@pcXY:~$ ssh user@pcXY 'ls -l'
Port-Forwarding:
Port-Weiterleitung eines lokalen Ports an einen entfernten
Zielport durch eine verschlüsselte ssh-Verbindung (Tunnel)
ssh user@ssh-srv -L 1025:localhost:80
oder (Verbindung dauerhaft):
ssh -f -N -L 1025:localhost:80 user@ssh-srv
ftp via ssh → sftp:
userXY@pcXY:~$ sftp user@pcXY
Connected to pcXY
sftp>
für Konsolenpuristen!
userXY@pcXY:~$ cat .ssh/id_rsa.pub | ssh [userYZ@]srvYZ 'cat >> .ssh/authorized_keys'
Der Inhalt des public-keys ' id_rsa.pub ' wird in einen Puffer|Pipe gesteckt
und nach dem Anmelden auf dem Server ' ssh userYZ@srvYZ ' an das Schlüsselbund angehängt, mit dem übergebenen Befehl ' 'cat >> .ssh/authorized_keys''
- Fingerprint des ECDSA-pubkey auf dem Server anzeigen und zur Bestätigung vergleichen:
userYZ@srvYZ:~$ ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
Unterlagen:
Internet:
- http://wiki.ubuntuusers.de/SSH
- http://www.youtube.com/watch?v=Hxsl-jj2Bq0
- http://www.lug-ottobrunn.de/wiki/Remote_Desktop_mit_X2GO
Quellen
- Dokument: A1_ssh
- ID: 138