LINUX

Linux Commands

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:

--

Linux Prompt (Befehlszeile) – komplett kompakt

Grundaufbau
user@hostname:pfad$
oder als Admin:
root@hostname:pfad#

Bestandteile

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

Typische Prüfungsfallen

Merksatz

user@host = WER und WO
pfad = an welcher Stelle im System
$ / # = wie viele Rechte du hast

1. Linux-Grundlagen

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. 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.

Ein symbolischer Link ist ein Verweis auf eine andere Datei oder ein anderes Verzeichnis.

Beispiel:

/bin kann auf /usr/bin zeigen
->

Beispiel:

bin -> usr/bin

Nutzen:

Kompatibilität

Abkürzungen

flexible Pfade

Verweise auf gemeinsame Orte

Merksatz:


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. 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

Navigation in less:

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. 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. 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. 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. 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:

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:


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.

authorized_keys

Ö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. 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. 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. 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. 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. 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. 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. 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. 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

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.

Linux Tests

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:

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:

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.

Linux Tests

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

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

Anmelden mittels Public-Key-Verfahren

1. Schlüssel erzeugen:

userXY@pcXY:~$ ssh-keygen

2. öffentlichen Schlüssel auf remote-Server ablegen

userXY@pcXY:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub [userYZ]@srvYZ

zwei kompliziertere Alternativen dazu:

userXY@pcXY :~$ scp .ssh/id_rsa.pub [userYZ@]srvYZ:.ssh/authorized_keys

userYZ@srvYZ:~/.ssh$ cat .../usbstick/id_rsa.pub >> authorized_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''

userYZ@srvYZ:~$ ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub

Unterlagen:

Internet:


Quellen