Zum Inhalt springen
Offline-Dokument · M01 bis M12
Zur Dokumentübersicht
Darstellung

Technische Dokumentation

Linux-Systemadministration

Zwölf aufeinander aufbauende Module dokumentieren den Weg von der virtuellen Linux-Basis über Shell- und Systemverwaltung bis zu Remote-Administration, Diensten, Scripting und einer einfachen systemd-basierten Automatisierung.

Die beschriebenen Ergebnisse stammen aus einer Lern- und Laborumgebung und gelten für die jeweils gezeigten Arbeitsschritte; ein aktueller Produktivzustand ist daraus nicht ableitbar.

12 Module Debian und Rocky Linux Lern- und Laborumgebung

M01

VM-Basis, Debian/Rocky und SSH-Erstkontakt

1. Kurzfassung

In Modul M01 wurden die zwei Startsysteme des Linux-Kurses gemäß Kursmitschrift aufgebaut und validiert:

  • debian13 als schlanke Debian-CLI-/Server-VM ohne grafische Oberfläche.
  • rocky9 als Rocky-Linux-9.7-VM mit GUI und RHEL-naher Administrationslogik.

Beide Systeme wurden in Hyper-V bereitgestellt, mit Hostnamen versehen, mit Benutzerkontext geprüft, per Netzwerk validiert und über SSH erreichbar gemacht. Zusätzlich wurden SSH-Verbindungen vom Windows-/RemoteLab-Host zu beiden Systemen sowie von Debian13 zu Rocky9 getestet.

2. Ziel des Moduls

M01 schafft die technische Ausgangsbasis für die folgenden Linux-Module. Dokumentiert sind:

  • Installation und Rollenbildung zweier Linux-VMs.
  • Unterschied zwischen Debian- und Rocky-/RHEL-nahem Systemkontext.
  • Grundvalidierung über Hostname, Distribution, Kernel, Netzwerk, Speicher und Benutzer.
  • SSH-Bereitschaft auf beiden Systemen.
  • kontrollierte Verbindungstests als Grundlage für spätere Remote-Administration.

3. Kursbasis / Materialbezug

Führende Arbeitsgrundlage für den Einstieg ist die Kursmitschrift mitschrift_kurs.txt. Daraus ergeben sich am Kursanfang zwei relevante VMs:

System Kursrolle Umsetzung in M01
Debian 13.x CLI-/Serverbasis, SSH und Standardtools debian13, ohne GUI, SSH-Server aktiv
Rocky Linux 9.x GUI-/RHEL-Vergleichssystem rocky9, Server with GUI, sshd aktiv

cl01 wird in M01 nicht verwendet und ist kein Bestandteil des dokumentierten Debian-/Rocky-Basiszustands.

4. Umgebung und Ausgangszustand

Ebene Beschreibung
Plattform Hyper-V im RemoteLab-/Kurskontext
VM 1 debian13 – Debian GNU/Linux 13.x, CLI/Server
VM 2 rocky9 – Rocky Linux 9.7, GUI/RHEL-Vergleich
Netzwerk Kursnetzwerk mit DHCP, beide Systeme erhalten IP-Adressen
Zugriff Lokale VM-Konsole und SSH-Verbindungen

5. Durchführung

5.1 Debian13

Die Debian-VM wurde als Generation-2-VM mit Kursnetzwerk, 16-GB-VHDX und Debian-Netinst-ISO vorbereitet. Im Installer wurde bewusst keine Desktopumgebung ausgewählt. Aktiviert wurden nur SSH-Server und Standard-Systemwerkzeuge.

Nach der Installation wurde der Hostname auf debian13 gesetzt. Die Baseline wurde über Standardbefehle geprüft. Der SSH-Dienst wurde über systemctl validiert und Port 22 über ss geprüft.

5.2 Rocky9

Rocky9 wurde als zweite Kurs-VM installiert. Abweichend von Debian wurde hier eine GUI-basierte Installation gewählt, passend zur Kursmitschrift und zur RHEL-/Rocky-Vergleichsrolle. Der Hostname wurde im Installer auf rocky9 gesetzt. Der Benutzer student wurde als administrativer Benutzer angelegt und später über die Gruppe wheel validiert.

Der SSH-Dienst heißt unter Rocky sshd. Er wurde als aktiv und enabled geprüft; Port 22 lauscht auf IPv4 und IPv6.

5.3 SSH-Verbindungstests

Zusätzlich zur Dienstprüfung wurden SSH-Verbindungen getestet:

  • Windows-/PowerShell-Client → Debian13
  • Windows-/PowerShell-Client → Rocky9
  • Debian13 → Rocky9

Die Verbindung Debian13 → Rocky9 wurde mit hostname und whoami auf dem Zielsystem validiert. Zusätzlich zeigten who und w -i auf Rocky9 aktive Remote-Sitzungen und Pseudoterminals.

6. Relevante Befehle / Konfigurationen

hostnamectl
cat /etc/os-release
uname -r
ip -brief a
ip route
df -h /
free -h
lsblk
id
groups

Debian SSH:

systemctl status ssh --no-pager
ss -tulpn | grep :22

Rocky SSH:

systemctl status sshd --no-pager
ss -tulpn | grep :22

Verbindungstest:

ssh student@<debian-ip>
ssh student@<rocky-ip>

Linux-zu-Linux-Test:

ssh student@<rocky-ip>
hostname
whoami
who
w -i

M01 verbindet die folgenden Arbeitsschritte zu einer gemeinsamen Systembasis:

  • Systeme werden nicht nur installiert, sondern mit Rollen versehen.
  • Hostnamen, Benutzerkontext und Netzwerkstatus werden geprüft.
  • Dienste werden mit systemctl validiert.
  • Netzwerkdienste werden nicht nur als Dienststatus, sondern auch über Ports geprüft.
  • SSH wird als zentrale Remote-Administrationsschnittstelle vorbereitet.
  • Unterschiede zwischen Debian und Rocky werden früh sichtbar: ssh vs. sshd, sudo-/wheel-Kontext, CLI- vs. GUI-Installation.

8. Fehler, Abweichungen oder Entscheidungen

Hostname Debian

Nach der Debian-Installation war der interne Hostname zunächst nicht konsistent mit dem VM-Namen. Der Hostname wurde auf debian13 gesetzt, damit Kursmitschrift, Prompt und Dokumentation sauber zusammenpassen.

grep-Tippfehler

Bei der Prüfung von Port 22 wurde zunächst grep:22 statt grep :22 eingegeben. Der Fehler wurde direkt erkannt und korrigiert. Das ist ein kleiner, aber dokumentierbarer Praxispunkt: Shell-Befehle interpretieren fehlende Leerzeichen als anderen Befehl.

SSH-Validierung mit erneutem Login

Nach einem Verbindungstest wurde die SSH-Sitzung mit exit beendet. Anschließend wurde erneut zu Rocky9 verbunden, um hostname und whoami auf dem Zielsystem auszuführen.

Checkpoint-Logik

Es wurden keine unnötigen Checkpoints erstellt. Ein Checkpoint wurde nur dann gesetzt, wenn ein echter persistenter VM-Zustand erreicht war.

9. Validierung / Ergebnisprüfung

Prüfpunkte Ergebnis
Debian13 installiert erfüllt
Debian13 ohne GUI und mit SSH-Server erfüllt
Debian13 Hostname gesetzt erfüllt
Debian13 SSH aktiv und Port 22 offen erfüllt
Rocky9 installiert erfüllt
Rocky9 GUI-/Server-with-GUI-Kontext erfüllt
Rocky9 Hostname gesetzt erfüllt
Rocky9 Benutzer student in wheel erfüllt
Rocky9 sshd aktiv und Port 22 offen erfüllt
SSH vom Host zu Debian/Rocky erfüllt
SSH von Debian zu Rocky erfüllt
Checkpoints nach echten Zustandsständen erfüllt

11. Erkenntnisse

  • VM-Name und Linux-Hostname sind unterschiedliche Ebenen und müssen getrennt geprüft werden.
  • Debian und Rocky unterscheiden sich bei Dienstnamen und Administrationsgruppen: ssh vs. sshd, sudo vs. wheel.
  • Dienstzustand und Portprüfung mit ss werden gemeinsam ausgewertet.
  • Verbindungstests sind Nachweise, aber keine Checkpoint-Gründe.

12. Ergebnis und fachliche Grenze

Die dokumentierten Arbeitsschritte zeigen die VM-Basis sowie die damalige SSH-Erreichbarkeit von Debian und Rocky. Ein aktueller Live-Zustand der Systeme wird daraus nicht abgeleitet.

Architektur und Rollen

Nachweis 1M01
Architekturdiagramm M01
Architekturdiagramm M01

Arbeitsschritte und Nachweise

Nachweis 2M01
Arbeitsablauf M01
Arbeitsablauf M01

Nachweise

Nachweis 3M01
Provisioning Debian13 – Hyper-V-VM-Konfiguration Die VM debian13 wurde in Hyper-V mit Generation 2, 1024 MB RAM, Kursnetzwerk, 16-GB-VHDX und Debian-Netinst-ISO vorbereitet.
Provisioning Debian13 – Hyper-V-VM-Konfiguration Die VM debian13 wurde in Hyper-V mit Generation 2, 1024 MB RAM, Kursnetzwerk, 16-GB-VHDX und Debian-Netinst-ISO vorbereitet.
Nachweis 4M01
Installation Debian13 – Installation ohne GUI Die Paketauswahl zeigt eine schlanke Debian-Installation ohne Desktopumgebung, aber mit SSH-Server und Standard-Systemwerkzeugen.
Installation Debian13 – Installation ohne GUI Die Paketauswahl zeigt eine schlanke Debian-Installation ohne Desktopumgebung, aber mit SSH-Server und Standard-Systemwerkzeugen.
Nachweis 5M01
Baseline Debian13 – Systembasis hostnamectl, /etc/os-release, Kernel, Netzwerk, Speicher und Benutzerkontext belegen die installierte Debian-13-Basis.
Baseline Debian13 – Systembasis hostnamectl, /etc/os-release, Kernel, Netzwerk, Speicher und Benutzerkontext belegen die installierte Debian-13-Basis.
Nachweis 6M01
SSH Debian13 – SSH-Dienst aktiv systemctl status ssh zeigt, dass der OpenSSH-Server aktiv und für den Systemstart aktiviert ist.
SSH Debian13 – SSH-Dienst aktiv systemctl status ssh zeigt, dass der OpenSSH-Server aktiv und für den Systemstart aktiviert ist.
Nachweis 7M01
SSH Debian13 – Port 22 lauscht ss -tulpn | grep :22 belegt, dass SSH auf IPv4 und IPv6 auf Port 22 lauscht. Der vorherige grep-Tippfehler ist als kleiner Lernpunkt erkennbar.
SSH Debian13 – Port 22 lauscht ss -tulpn | grep :22 belegt, dass SSH auf IPv4 und IPv6 auf Port 22 lauscht. Der vorherige grep-Tippfehler ist als kleiner Lernpunkt erkennbar.
Nachweis 8M01
Installation Rocky9 – Installationsübersicht Die Rocky-Installationsübersicht zeigt Server with GUI, Benutzer student, Root-Passwort, Netzwerk und automatisches Partitionsziel.
Installation Rocky9 – Installationsübersicht Die Rocky-Installationsübersicht zeigt Server with GUI, Benutzer student, Root-Passwort, Netzwerk und automatisches Partitionsziel.
Nachweis 9M01
Baseline Rocky9 – Netzwerk und Hostname Netzwerk ist aktiv, IP/Gateway/DNS sind gesetzt und der Hostname rocky9 wurde angewendet.
Baseline Rocky9 – Netzwerk und Hostname Netzwerk ist aktiv, IP/Gateway/DNS sind gesetzt und der Hostname rocky9 wurde angewendet.
Nachweis 10M01
Baseline Rocky9 – Systembasis Rocky Linux 9.7, Hostname, VM-Kontext, Netzwerk und Speicher werden über Standardbefehle belegt.
Baseline Rocky9 – Systembasis Rocky Linux 9.7, Hostname, VM-Kontext, Netzwerk und Speicher werden über Standardbefehle belegt.
Nachweis 11M01
Benutzer Rocky9 – Benutzer und wheel-Gruppe id und groups zeigen student als administrativen Benutzer in der Gruppe wheel; das ist der relevante Rocky/RHEL-Admin-Kontext.
Benutzer Rocky9 – Benutzer und wheel-Gruppe id und groups zeigen student als administrativen Benutzer in der Gruppe wheel; das ist der relevante Rocky/RHEL-Admin-Kontext.
Nachweis 12M01
SSH Rocky9 – sshd aktiv und Port 22 systemctl status sshd und ss zeigen, dass der SSH-Dienst aktiv, enabled und auf Port 22 erreichbar ist.
SSH Rocky9 – sshd aktiv und Port 22 systemctl status sshd und ss zeigen, dass der SSH-Dienst aktiv, enabled und auf Port 22 erreichbar ist.
Nachweis 13M01
Remote-Zugriff PowerShell → Debian13 Der Windows-/RemoteLab-Client verbindet sich per SSH erfolgreich mit Debian13. Der Host-Key-Dialog bestätigt den ersten Verbindungsaufbau.
Remote-Zugriff PowerShell → Debian13 Der Windows-/RemoteLab-Client verbindet sich per SSH erfolgreich mit Debian13. Der Host-Key-Dialog bestätigt den ersten Verbindungsaufbau.
Nachweis 14M01
Remote-Zugriff PowerShell → Rocky9 Der Windows-/RemoteLab-Client verbindet sich erfolgreich per SSH mit Rocky9.
Remote-Zugriff PowerShell → Rocky9 Der Windows-/RemoteLab-Client verbindet sich erfolgreich per SSH mit Rocky9.
Nachweis 15M01
Remote-Zugriff Debian13 → Rocky9 – Zielvalidierung Innerhalb der SSH-Sitzung werden hostname=rocky9 und whoami=student geprüft; damit ist eindeutig, dass die Verbindung auf dem Zielsystem angekommen ist.
Remote-Zugriff Debian13 → Rocky9 – Zielvalidierung Innerhalb der SSH-Sitzung werden hostname=rocky9 und whoami=student geprüft; damit ist eindeutig, dass die Verbindung auf dem Zielsystem angekommen ist.
Nachweis 16M01
Validierung Rocky9 – aktive Remote-Sitzungen who und w -i zeigen lokale und per SSH geöffnete Sitzungen inklusive Pseudoterminals. Das belegt die aktive Remote-Administration.
Validierung Rocky9 – aktive Remote-Sitzungen who und w -i zeigen lokale und per SSH geöffnete Sitzungen inklusive Pseudoterminals. Das belegt die aktive Remote-Administration.
Nachweis 17M01
Checkpoint Debian13 – Checkpoint nach Basiszustand Der Checkpoint wurde nach Installation, Hostname-Korrektur und SSH-Bereitschaft erstellt.
Checkpoint Debian13 – Checkpoint nach Basiszustand Der Checkpoint wurde nach Installation, Hostname-Korrektur und SSH-Bereitschaft erstellt.
Nachweis 18M01
Checkpoint Rocky9 – Checkpoint nach Basiszustand Der Checkpoint wurde nach Rocky-Installation, GUI-Basis, Hostname und SSH-Bereitschaft erstellt.
Checkpoint Rocky9 – Checkpoint nach Basiszustand Der Checkpoint wurde nach Rocky-Installation, GUI-Basis, Hostname und SSH-Bereitschaft erstellt.

Zum Dokumentanfang

M02

Shell, Dateisystem und Hilfe zur Selbsthilfe

Modul: M02 – Shell, Hilfe, Editor, Dateisystem, Pfade, Links, Dateisuche und Bash-/Terminal-Konfiguration
System: debian13
Benutzer: student

Kurzfassung

M02 dokumentiert die grundlegende Arbeit im Linux-Terminal auf debian13. Im Mittelpunkt standen Benutzerkontext, Navigation im Dateisystem, strukturierte Dateiablage, Dateioperationen, relative und absolute Pfade, symbolische Links, Hilfesysteme, Editorarbeit mit nano und Validierung über cat. Ergänzend wurde die persönliche Bash-Umgebung kontrolliert angepasst: ein persistenter Alias ll='ls -lha' wurde eingerichtet und der Prompt zur besseren Lesbarkeit der Nachweise konfiguriert. Kleine Fehler wie ein falscher absoluter Pfad oder ein fehlendes Leerzeichen bei mkdir -p wurden fachlich als Lernpunkte eingeordnet.

1. Modulkontext und Ausgangslage nach M01

M02 baut auf M01 auf. In M01 wurden die Linux-VMs erstellt und debian13 als CLI-/Server-System per SSH erreichbar gemacht. M02 nutzt diese Basis, erweitert aber keine systemweiten Dienste und benötigt keine Root-Rechte. Der Fokus liegt auf sicherer Terminalarbeit im normalen Benutzerkontext.

Abgrenzung: Paketverwaltung, Rechteverwaltung, Archivierung, SSH-Key-Verwaltung, systemd, Logs und Shell-Scripting gehören bewusst nicht in M02, sondern in spätere Module.

2. Zielsetzung

M02 behandelt die Linux-Grundbedienung in den folgenden Arbeitsschritten:

  • Arbeiten als normaler Benutzer auf debian13
  • Orientierung im Dateisystem
  • strukturierte Ablage im Home-Verzeichnis
  • Dateien erstellen, kopieren und verschieben
  • relative und absolute Pfade unterscheiden
  • symbolische Links erstellen und validieren
  • Hilfesysteme und Befehlstypen verwenden
  • Dateien mit nano bearbeiten und mit cat validieren
  • Bash-Arbeitsumgebung benutzerspezifisch und nachvollziehbar anpassen

Arbeitsschritte und Nachweise

Kontext prüfen → Arbeitsstruktur erstellen → Dateien/Pfade bearbeiten → Symlink validieren → Editorarbeit prüfen → Hilfesysteme nutzen → Bash-Alias und Prompt konfigurieren
Nachweis 19M02
Ablauf von der Kontextprüfung über Datei-, Pfad- und Hilfefunktionen bis zur validierten Bash-Konfiguration.
Ablauf von der Kontextprüfung über Datei-, Pfad- und Hilfefunktionen bis zur validierten Bash-Konfiguration.

4. System- und Arbeitsumgebung

Merkmal Wert
VM debian13
Distribution Debian GNU/Linux 13.x, CLI-System
Benutzer student
Arbeitsordner ~/linux_m02
Zugriff SSH aus PowerShell / RemoteLab-Host
Root-Rechte nicht erforderlich
Relevante Konfigurationsdateien ~/.bash_aliases, ~/.bashrc, ~/.bashrc.d/bash_prompt

5. Benutzer- und Arbeitskontext

Ziel

Vor Beginn der Dateisystemübungen musste nachgewiesen werden, dass auf dem richtigen System und im richtigen Benutzerkontext gearbeitet wird.

Für M02 ist der normale Benutzerkontext ausreichend. Das vermeidet unnötige Systemänderungen und zeigt sauberes Arbeiten im Home-Verzeichnis.

Arbeitsschritte und Nachweise:

hostname
whoami
id
pwd

Nachweis

Nachweis 20M02
Benutzer- und Arbeitskontext
Benutzer- und Arbeitskontext

Nachweis: Der Nachweis zeigt debian13, den Benutzer student, die Gruppeninformationen und das Arbeitsverzeichnis /home/student. Damit ist die Ausgangsbasis von M02 belegt.

Ergebnis

Die Übungen wurden auf dem richtigen Zielsystem und ohne Root-Kontext durchgeführt.

6. Strukturierte Arbeitsumgebung im Home-Verzeichnis

Ziel:

Für M02 wurde eine eigene Arbeitsstruktur unter ~/linux_m02 angelegt.

Eine getrennte Übungsstruktur verhindert ungewollte Änderungen im Home-Verzeichnis und macht die Arbeit reproduzierbar. Die Nutzung von mkdir -p und Brace Expansion zeigt zugleich grundlegende Bash-Funktionalität.

Arbeitsschritte und Nachweise:

mkdir -p ~/linux_m02/{docs,configs,logs,archiv,links}
cd ~/linux_m02
pwd
find ~/linux_m02 -maxdepth 2 -type d

Nachweis:

Nachweis 21M02
Übungsstruktur linux_m02
Übungsstruktur linux_m02

Nachweis: Der Screenshot zeigt den Modulordner mit den Unterordnern docs, configs, logs, archiv und links.

Ergebnis:

Die strukturierte Arbeitsumgebung für M02 wurde erfolgreich erstellt und mit find validiert.

7. Dateioperationen und Pfadverständnis

Ziel:

Grundlegende Dateioperationen sollten praktisch nachgewiesen werden: Dateien erstellen, kopieren, verschieben und über Pfade adressieren.

Dateioperationen sind Grundlage fast aller späteren Linux-Administrationsaufgaben: Konfigurationsdateien bearbeiten, Logs prüfen, Dateien sichern oder Inhalte in Arbeitsverzeichnissen organisieren.

Arbeitsschritte und Nachweise:

touch docs/notizen.txt configs/beispiel.conf logs/m02_test.log
cp docs/notizen.txt archiv/notizen_backup.txt
mv logs/m02_test.log logs/m02_shell_dateisystem.log
find ~/linux_m02 -maxdepth 3 -type f

Nachweis:

Nachweis 22M02
Dateien erstellen kopieren verschieben
Dateien erstellen kopieren verschieben

Nachweis: Der Nachweis zeigt cp, mv und die abschließende Dateiliste. Damit sind Erstellen, Kopieren und Umbenennen/Verschieben belegt.

Ergebnis:

Die Dateien wurden kontrolliert im Modulordner erzeugt und organisiert. Die erzeugte Dateiliste zeigt den erwarteten Zustand.

Erkenntnisse und Hinweise

Ein fehlerhafter Zwischenstand mit find /linux_m02 wurde erkannt und korrigiert. Der Unterschied ist fachlich wichtig: /linux_m02 meint ein Verzeichnis direkt unter /; korrekt war ~/linux_m02 im Home-Verzeichnis.

Ziel:

Das Modul sollte zeigen, dass eine Datei sowohl relativ als auch absolut adressiert werden kann und dass symbolische Links korrekt verstanden werden.

Pfade und symbolische Links sind im Linux-Dateisystem zentral. Gerade Systemverzeichnisse wie /bin, /sbin oder /lib sind in modernen Distributionen häufig selbst symbolische Links.

Arbeitsschritte und Nachweise:

ls -l docs/notizen.txt
ls -l /home/student/linux_m02/docs/notizen.txt
ln -s ../docs/notizen.txt links/notizen_link.txt
ls -l links/

Nachweis:

Nachweis 23M02
Pfade und symbolischer Link
Pfade und symbolischer Link

Nachweis: Der Screenshot zeigt die Datei notizen.txt über relativen und absoluten Pfad sowie den korrigierten symbolischen Link notizen_link.txt -> ../docs/notizen.txt.

Ergebnis:

Der symbolische Link zeigt korrekt auf die Datei im Ordner docs. Das Linkziel wurde relativ zum Speicherort des Links interpretiert.

Erkenntnisse und Hinweise:

Beim Erzeugen symbolischer Links ist der Bezugspunkt entscheidend. Da der Link im Ordner links liegt, ist ../docs/notizen.txt das korrekte Ziel.

9. Editorarbeit und Validierung

Ziel:

Eine Textdatei sollte mit nano bearbeitet und anschließend über Originalpfad und symbolischen Link validiert werden.

Editorarbeit im Terminal ist Vorbereitung für spätere Module, in denen Konfigurationsdateien angepasst werden. Der reine Editor-Screenshot reicht nicht; die Änderung muss anschließend geprüft werden.

Arbeitsschritte und Nachweise:

nano docs/notizen.txt
cat docs/notizen.txt
cat links/notizen_link.txt

Nachweis:

Nachweis 24M02
nano cat Validierung
nano cat Validierung

Nachweis: Der Nachweis zeigt denselben Inhalt über docs/notizen.txt und über links/notizen_link.txt. Damit sind Editorarbeit, Speicherung und Symlink-Funktion validiert.

Ergebnis:

Die Datei wurde erfolgreich bearbeitet. Der symbolische Link zeigt funktional auf dieselbe Datei.

10. Hilfequellen und Befehlstypen

Ziel:

Das Modul sollte zeigen, dass Hilfesysteme und Befehlstypen zur eigenständigen Orientierung genutzt werden können.

In der Linux-Praxis ist es nicht realistisch, alle Optionen auswendig zu kennen. Entscheidend ist, Hilfen wie --help, Manpages und Bash-Builtin-Hilfen gezielt zu verwenden.

Arbeitsschritte und Nachweise:

ls --help | head
type cd
which ls
man ls

Nachweis:

Nachweis 25M02
Hilfequellen und Befehlstypen
Hilfequellen und Befehlstypen

Nachweis: Der Nachweis zeigt die Kurz-Hilfe von ls, identifiziert cd als Shell-Builtin und zeigt /usr/bin/ls als externes Programm.

Ergebnis:

Es wurde nachvollzogen, dass nicht jeder Befehl ein externes Programm ist. cd ist in die Bash integriert, während ls als Binärprogramm im Dateisystem liegt.

11. Bash-/Terminal-Konfiguration

Ziel:

Die persönliche Bash-Arbeitsumgebung sollte kontrolliert angepasst werden, ohne globale Systemdateien zu verändern.

Die Kursmitschrift behandelt Bash, Prompt, History, .bashrc, .bashrc.d und persistente Konfigurationen. Die Umsetzung in M02 orientierte sich daran, wurde aber bewusst begrenzt: Es wurden ein sinnvoller Alias und ein besser lesbarer Prompt eingerichtet. Eine dauerhafte PATH-Änderung oder umfangreiche History-Optimierung wurde nicht durchgeführt.

11.1 Alias ll='ls -lha'

nano ~/.bash_aliases
source ~/.bash_aliases
cat ~/.bash_aliases
type ll
ll ~/linux_m02
Nachweis 26M02
Bash Alias Datei und Validierung
Bash Alias Datei und Validierung

Nachweis: Der Nachweis zeigt die Alias-Datei ~/.bash_aliases, die Alias-Definition und die erfolgreiche Ausführung von ll ~/linux_m02.

11.2 Persistenztest des Alias

bash
type ll
ll ~/linux_m02
exit
Nachweis 27M02
Bash Alias Persistenztest
Bash Alias Persistenztest

Nachweis: Der Nachweis zeigt, dass der Alias auch in einer neu gestarteten Bash-Sitzung verfügbar ist.

11.3 Modulare Prompt-Konfiguration über .bashrc.d

Vor der Änderung wurde .bashrc gesichert. Danach wurde ~/.bashrc.d als modularer Konfigurationsordner eingebunden und eine eigene Prompt-Datei erstellt.

cp ~/.bashrc ~/.bashrc.bak_m02
mkdir -p ~/.bashrc.d
nano ~/.bashrc
nano ~/.bashrc.d/bash_prompt
source ~/.bashrc
Nachweis 28M02
bashrc.d Einbindung
bashrc.d Einbindung

Nachweis: Der Screenshot zeigt die Einbindung von ~/.bashrc.d/* in .bashrc.

Nachweis 29M02
Bash Prompt Datei
Bash Prompt Datei

Nachweis: Der Screenshot zeigt die Datei ~/.bashrc.d/bash_prompt mit der PS1-Definition.

Nachweis 30M02
Bash Prompt und Alias Validierung
Bash Prompt und Alias Validierung

Nachweis: Der Screenshot zeigt den neuen Prompt mit History-Nummer und weiterhin funktionierendem Alias ll.

Ergebnis:

Die Bash-Konfiguration wurde benutzerspezifisch, modular und nachvollziehbar angepasst. Der Prompt wurde lesbarer, ohne die Systemkonfiguration global zu verändern. Der Alias ll verbessert die praktische Arbeit mit Dateilisten und wurde persistent validiert.

Erkenntnisse und Hinweise:

  • Vor Änderungen an .bashrc ist ein Backup sinnvoll.
  • Prompt-Farben sind nicht nur optisch: In diesem Fall verbessern sie die Lesbarkeit der Screenshots.
  • Konfigurationen im Benutzerprofil sind für M02 angemessen; globale Dateien wie /etc/profile wären unnötig riskant.

12. Fehler, Korrekturen und Entscheidungen

Punkt Einordnung Entscheidung
find /linux_m02 statt find ~/linux_m02 Falscher absoluter Pfad Als Lernpunkt zu / vs. ~ dokumentieren
Symlink-Ziel zuerst ungünstig Typischer relativer-Pfad-Fehler Korrigiert auf ../docs/notizen.txt
PS1-Ausgabe/Copy-Paste-Problem Escape-Sequenzen sind fehleranfällig Nicht als Nachweis verwenden; die korrigierte Prompt-Datei zeigt die funktionsfähige Lösung.
mkdir -p~/.bashrc.d Fehlendes Leerzeichen Korrigiert mit mkdir -p ~/.bashrc.d
Prompt-Farbe angepasst Verbesserung der Lesbarkeit Fachlich begründet, weil blau auf blau schlecht sichtbar war

13. Zusammenfassung

Die dokumentierten Arbeitsschritte zeigen Terminalbedienung, Dateisystemorientierung, Hilfesystemnutzung, Editorarbeit und eine kontrollierte Bash-Konfiguration im Benutzerkontext.

14. Abgrenzung

M02 enthält bewusst nicht:

  • Paketverwaltung mit apt
  • Archivierung/Restore mit tar/gzip
  • Rechteverwaltung mit chmod, chown, umask
  • SSH-Key-Verwaltung, scp, sftp, rsync
  • Prozesse, systemd, Dienste oder Logs
  • Shell-Scripting und Scheduling
  • produktive Sicherheits- oder Härtungsmaßnahmen

Diese Themen sind nicht Bestandteil von M02. Alias und Prompt wurden als eigene dokumentierte Umsetzung erstellt; die Trainerdateien bash_prompt und bash_variables wurden nicht 1:1 übernommen.

Zum Dokumentanfang

M03

Textfilter, Pipes, Reports und Archivwiederherstellung

Modul: M03 – Textströme, Pipes, Filter, Redirects, Reports, Archivierung und Restore

1. Kurzfassung

In M03 wurde eine strukturierte Linux-Arbeitsumgebung aufgebaut, um kontrollierte Logdaten und echte Systeminformationen mit Shell-Werkzeugen auszuwerten. Die Auswertung nutzte grep, reguläre Ausdrücke, cut, sort, uniq, wc, Pipes, tee sowie stdout-/stderr-Redirects. Anschließend wurden die Ergebnisse in einem Modulreport zusammengeführt, mit tar.gz archiviert, wiederhergestellt und per diff_exit_code=0 validiert.

Die Arbeitsschritte bauen nachvollziehbar aufeinander auf: Arbeitsstruktur → Datenbasis → Filteranalyse → Pipelines → Report-Erstellung → Archivierung → Restore → Integritätsprüfung. Verwendet wurden kontrollierte Übungsdaten und ergänzende Systeminformationen der Debian-VM; eine Analyse produktiver Logdaten wird daraus nicht abgeleitet.

2. Rolle von M03 im Linuxkurs

M03 verbindet mehrere Linux-Werkzeuge zu einer gemeinsamen Admin-Auswertung: Textausgaben, Logausgaben und Dienststatus werden kombiniert gefiltert, gespeichert und ausgewertet.

Für den weiteren Kurs bildet M03 die Grundlage für spätere Module zu Benutzerverwaltung, Paketmanagement, systemd, Logs, Netzwerk/SSH, Troubleshooting und Automatisierung. Pipes, Redirects, Variablen und Reports sind Basistechniken, die dort wiederverwendet werden.

Arbeitsablauf

Arbeitsstruktur
→ kontrollierte Logdaten und echte Baseline-Daten
→ Filteranalyse mit grep/cut/sort/uniq/wc
→ Pipelines und tee-Reports
→ stdout/stderr-Redirects
→ Variablen, Globbing und Modulreport
→ tar.gz-Archivierung
→ Restore in separates Verzeichnis
→ diff-Integritätsprüfung

Die Ergebnisse wurden erzeugt, gespeichert, geprüft und interpretiert.

4. Arbeitsstruktur und Datenbasis

Ziel

Für M03 wurde unter ~/linux_m03 eine saubere Arbeitsstruktur mit getrennten Bereichen für Rohdaten, Reports, Archive, Restore-Tests und Notizen erstellt.

Die Trennung von daten, reports, archive, restore und notes ist keine reine Ordnungssache. Sie verhindert, dass Eingabedaten, erzeugte Ergebnisse und Restore-Daten vermischt werden. Gerade bei Dokumentations- und Troubleshooting-Aufgaben ist diese Trennung wichtig, weil später nachvollziehbar bleiben muss, welche Datei Ausgangsmaterial, Zwischenergebnis oder Validierungsnachweis ist.

Die Datei system_events.log wurde bewusst als kontrollierte Übungslogdatei erstellt. Das ist pädagogisch sinnvoll: Kontrollierte Eingaben führen zu erwartbaren Ausgaben. Dadurch lässt sich prüfen, ob Filter, reguläre Ausdrücke, Zählungen und Pipelines tatsächlich korrekt arbeiten. Gleichzeitig wurden echte Systemdaten der Debian-VM erfasst, damit M03 nicht nur aus synthetischen Daten besteht.

Arbeitsschritte und Nachweise

  • Verzeichnisstruktur unter ~/linux_m03 erstellt.
  • Kontrollierte Logdatei daten/system_events.log erzeugt.
  • System-Baseline mit hostnamectl, getent passwd und ip -brief addr erstellt.
  • hostnamectl-Warnungen getrennt nach stderr gespeichert.

Ergebnis

Die Arbeitsgrundlage war vorhanden. Die hostnamectl-Warnungen wurden als Berechtigungseffekt innerhalb der VM erkannt und separat gespeichert; stdout und stderr werden in einem späteren Arbeitsschritt getrennt ausgewertet.

Nachweise

5. Textfilter und Logauswertung

Ziel:

Aus den Logdaten sollten relevante Ereignisse, Benutzer und Quelladressen extrahiert und gezählt werden.

Linux-Administration findet häufig im Terminal und mit Textausgaben statt. Logdateien, Dienststatus, Prozesslisten und Konfigurationsfragmente sind typischerweise textbasiert. Werkzeuge wie grep, cut, sort, uniq und wc sind deshalb nicht nur Grundlagenbefehle, sondern Bausteine für Diagnose, Reporting und Fehlersuche.

Die kontrollierte Logdatei macht sichtbar, ob die Filterlogik stimmt. Beispiel: grep "sshd" findet nur Einträge, die exakt die Zeichenkette sshd enthalten. Ein Eintrag mit service=ssh hat zwar fachlich SSH-Bezug, wird aber von dieser exakten Suche nicht erfasst. Dieser Unterschied ist wichtig, weil Textsuche keine fachliche Interpretation ersetzt.

Arbeitsschritte und Nachweise:

  • WARN-, ERROR- und kombinierte WARN|ERROR-Filterung.
  • SSH-bezogene Suche über grep "sshd".
  • Zeilenzählung mit wc -l.
  • Benutzerextraktion mit grep -oE, cut, sort, uniq -c.
  • Quell-IP-Auswertung mit demselben Muster.

Ergebnis:

Die Logdatei enthielt 10 Einträge. Davon waren 5 als WARN oder ERROR klassifiziert. 4 Einträge enthielten direkt sshd. Die Benutzer root und student sowie die Quelladressen 192.168.1.50 und 192.168.1.77 wurden jeweils gezählt.

Nachweise:

6. Pipes als Admin-Auswertung

Ziel:

Einzelne Shell-Werkzeuge sollten zu zusammenhängenden Auswertungsketten kombiniert werden.

Pipes sind eines der zentralen Unix-/Linux-Prinzipien. Statt ein großes Spezialprogramm zu verwenden, werden kleine Werkzeuge kombiniert: ein Befehl liefert Daten, der nächste filtert, der nächste formatiert oder zählt. Diese Arbeitsweise ist sehr effizient und gut dokumentierbar, weil jeder Schritt im Datenfluss sichtbar bleibt.

tee hält die Ausgabe im Terminal sichtbar und schreibt sie gleichzeitig in eine Datei. So werden Diagnoseausgabe und persistiertes Ergebnis in einem Schritt erfasst.

Arbeitsschritte und Nachweise:

  • Sortierte WARN/ERROR-Auswertung.
  • Verschachtelte Filterung für sshd + WARN/ERROR.
  • Speicherung sicherheitsrelevanter Ereignisse mit tee.
  • Benutzer- und IP-Zählungen mit Pipeline grep → cut → sort → uniq → tee.
  • Ergänzende Systemauswertung mit ps aux und systemctl.

Ergebnis:

Die Pipelines erzeugten direkt nutzbare Report-Dateien wie security_relevant_events.txt, user_event_count.txt und source_ip_count.txt. Zusätzlich wurde der laufende SSH-Dienst mit systemctl sichtbar gemacht. Damit verbindet M03 kontrollierte Übungsdaten mit echtem Systemzustand.

Nachweise:

7. Redirects, stdout/stderr und Reports

Ziel:

Normale Ausgaben und Fehlerausgaben sollten bewusst getrennt, zusammengeführt und in Reportdateien gespeichert werden.

Für Administration und Troubleshooting reicht es nicht, nur eine Ausgabe zu sehen. Es muss klar sein, ob sie aus stdout oder stderr stammt. stdout enthält normalerweise reguläre Ergebnisse, stderr enthält Fehler- oder Warnmeldungen. Ohne diese Trennung können Fehler übersehen oder fälschlich als normale Ausgabe interpretiert werden.

Der absichtlich fehlerhafte Pfad does_not_exist war deshalb kein Fehler im Modul, sondern ein kontrollierter Testfall. Er erzeugte eine erwartete stderr-Ausgabe und machte sichtbar, wie 2> und 2>&1 funktionieren.

Arbeitsschritte und Nachweise:

  • > zum Neuschreiben einer Report-Datei.
  • >> zum Anhängen weiterer Ergebnisse.
  • 2> zum getrennten Speichern von stderr.
  • 2>&1 zum Zusammenführen von stdout und stderr.
  • Vergleich der erzeugten Reportdateien und Zeilenzahlen.

Ergebnis:

Die erzeugten Dateien zeigen kontrollierte Ausgabeumleitung. Das ist ein praktischer Nachweis für reproduzierbare Diagnosearbeit, weil sowohl erfolgreiche Ausgaben als auch Fehlerausgaben dauerhaft nachvollziehbar gespeichert wurden.

Nachweis

8. Variablen, Globbing und Modulreport

Ziel:

Die bisherigen Ergebnisse sollten über Variablen und Dateimuster reproduzierbar zusammengeführt werden.

Variablen wie BASIS, LOG und REPORT reduzieren Tippfehler und machen Befehle wartbarer. Globbing wie *.log ermöglicht es, Dateimuster gezielt zu verarbeiten. Der Modulreport ist der Übergang von Einzelbefehlen zu einer zusammenhängenden Ergebnisdatei.

Die nicht gesetzte $REPORT-Variable führte zu einer fehlerhaften Ausgabeumleitung. Der Korrekturlauf definiert die Variable explizit und prüft die Zieldatei.

Arbeitsschritte und Nachweise:

  • Variablen MODUL, BASIS, LOG und REPORT definiert.
  • Existenz von Logdatei und reports-Verzeichnis geprüft.
  • Logdatei per Globbing gefunden und kopiert.
  • Modulreport m03_summary.txt erzeugt.
  • Reportinhalt mit Host, Benutzer, Kennzahlen, Benutzer-/IP-Auswertung und Reportdateien angezeigt.

Ergebnis:

Der Modulreport bündelt die wichtigsten Ergebnisse aus M03 in einer zusammenhängenden Ergebnisdatei.

Nachweise:

9. Archivierung mit tar/gzip

Ziel:

Daten, Reports und Notizen sollten in einem komprimierten Archiv gesichert und der Archivinhalt geprüft werden.

tar.gz ist ein klassisches Linux-Format zur Bündelung und Kompression von Dateien. Für Administration und Dokumentation ist entscheidend, dass nicht nur ein Archiv erstellt wird, sondern auch der Inhalt geprüft wird. Die Prüfung mit tar -tzf verhindert, dass man sich auf eine Datei verlässt, deren Inhalt nicht kontrolliert wurde.

Für den Restore wurde linux_m03_20260531_0649.tar.gz gewählt, weil dieses Archiv die vollständige Datenbasis enthält. Das 45-Byte-Zwischenarchiv enthält diese Datenbasis nicht und wurde deshalb nicht für die Wiederherstellung verwendet.

Arbeitsschritte und Nachweise:

  • Archivvariable gesetzt.
  • Archiv mit tar -czf erstellt.
  • Archivdatei mit ls -lh geprüft.
  • Archivinhalt mit tar -tzf angezeigt.
  • Archivliste als archive_content.txt gespeichert.

Ergebnis:

Für den Restore wurde das größere Archiv von 06:49 verwendet; das kleinere Archiv blieb als unvollständiger Zwischenstand unberücksichtigt.

Nachweise:

10. Restore-Test und Integritätsprüfung

Ziel:

Das Archiv sollte in ein separates Restore-Verzeichnis wiederhergestellt und mit den Originaldateien verglichen werden.

Die Wiederherstellbarkeit wurde durch den Restore-Test geprüft. diff -q und diff_exit_code=0 zeigen, dass Modulreport und Logdatei nach dem Restore mit den Originaldateien übereinstimmen.

Arbeitsschritte und Nachweise:

  • Aktuelles Hauptarchiv automatisch ausgewählt.
  • Restore-Verzeichnis bereinigt und neu erstellt.
  • Archiv nach restore/test_restore entpackt.
  • Wiederhergestellte Dateien angezeigt.
  • Modulreport und Logdatei mit diff -q verglichen.
  • diff_exit_code=0 dokumentiert.

Ergebnis:

Modulreport und Logdatei waren nach dem Restore identisch mit den Originaldateien. Damit sind Wiederherstellbarkeit und Integrität für diese Dateien geprüft.

Nachweise:

11. Zusammenfassung

Ziel:

Die relevanten Arbeitsergebnisse wurden in einer kompakten technischen Übersicht zusammengeführt.

Die Ergebnisübersicht führt vorhandene Ergebnisdateien, Archive und Restore-Prüfungen zusammen.

Arbeitsschritte und Nachweise:

  • Arbeitsverzeichnis geprüft.
  • Hauptbereiche angezeigt.
  • Wichtige Ergebnisdateien und Archive gelistet.
  • Restore-Nachweise mit test -f geprüft.
  • Modulreport als Kurzansicht ausgegeben.

Ergebnis:

Die Arbeitsschritte umfassen Arbeitsstruktur, Datenbasis, Filteranalyse, Pipes, Redirects, Modulreport, Archiv, Restore und Integritätsprüfung.

Nachweise:

12. Troubleshooting, Abweichungen und Erkenntnisse

hostnamectl-Warnung

hostnamectl konnte als normaler Benutzer einzelne VM-Hardwareinformationen wie Product UUID und Hardware Serial nicht auslesen. Die eigentliche System-Baseline wurde trotzdem erzeugt. Die Warnung wurde separat als stderr gespeichert und fachlich eingeordnet.

Nicht gesetzte $REPORT-Variable

Beim ersten Modulreport-Versuch war die Zielvariable nicht gesetzt. Dadurch konnte Bash die Ausgabeumleitung nicht korrekt durchführen. Der Korrekturlauf definierte die Variablen explizit und prüfte Logdatei sowie Zielverzeichnis vor der Report-Erstellung.

Kontrollierte Logdaten

Die Logdaten wurden kontrolliert erzeugt, sodass Eingaben und erwartete Ausgaben nachvollziehbar bleiben. Eine Analyse produktiver Logdaten wurde nicht durchgeführt.

Kleines Zwischenarchiv

Das 45-Byte-Zwischenarchiv wurde nicht für den Restore verwendet. Die Wiederherstellung erfolgte mit dem größeren Archiv von 06:49, das die vollständigen Inhalte enthält.

13. Fachliche Abgrenzungen

Nicht Bestandteil Einordnung
Produktivlog-Analyse Nicht durchgeführt; es wurden kontrollierte Übungsdaten genutzt.
Vertiefte systemd-/journalctl-Analyse Nicht Bestandteil von M03.
Shell-Scripting mit Bedingungen und Exit-Codes Nicht Bestandteil von M03.
Nachweis 31M03
Der fachliche Aufbau folgt einer klaren Entwicklung: Datenbasis schaffen, Textdaten analysieren, Auswertungen speichern, Ergebnisse zusammenfassen, Archiv erzeugen und Wiederherstellbarkeit prüfen.
Der fachliche Aufbau folgt einer klaren Entwicklung: Datenbasis schaffen, Textdaten analysieren, Auswertungen speichern, Ergebnisse zusammenfassen, Archiv erzeugen und Wiederherstellbarkeit prüfen.
Nachweis 32M03
Arbeitsverzeichnis, erzeugte Dateien und Zeilenzahlen der kontrollierten Datenbasis.
Arbeitsverzeichnis, erzeugte Dateien und Zeilenzahlen der kontrollierten Datenbasis.
Nachweis 33M03
hostnamectl stdout/stderr Belegt, dass System-Baseline und Hardware-Warnungen getrennt gespeichert wurden.
hostnamectl stdout/stderr Belegt, dass System-Baseline und Hardware-Warnungen getrennt gespeichert wurden.
Nachweis 34M03
WARN/ERROR- und SSH-Filter Zeigt zielgerichtete Textfilter mit grep und grep -E.
WARN/ERROR- und SSH-Filter Zeigt zielgerichtete Textfilter mit grep und grep -E.
Nachweis 35M03
Benutzer- und IP-Zählung Belegt Extraktion und Zählung mit grep -oE, cut, sort und uniq -c.
Benutzer- und IP-Zählung Belegt Extraktion und Zählung mit grep -oE, cut, sort und uniq -c.
Nachweis 36M03
Pipes und Reports Zeigt Auswertungsketten und Speicherung per tee.
Pipes und Reports Zeigt Auswertungsketten und Speicherung per tee.
Nachweis 37M03
Systemauswertung und SSH-Dienst Verbindet Shell-Pipelines mit echtem Systemzustand: Prozessübersicht und laufender ssh.service.
Systemauswertung und SSH-Dienst Verbindet Shell-Pipelines mit echtem Systemzustand: Prozessübersicht und laufender ssh.service.
Nachweis 38M03
Redirects, stdout und stderr Belegt >, >>, 2> und 2>&1 anhand kontrollierter Ausgaben und Fehlerausgaben.
Redirects, stdout und stderr Belegt >, >>, 2> und 2>&1 anhand kontrollierter Ausgaben und Fehlerausgaben.
Nachweis 39M03
$REPORT-Variablenfehler Zeigt den ersten Fehler bei nicht gesetzter Zielvariable als echten Shell-Lernpunkt.
$REPORT-Variablenfehler Zeigt den ersten Fehler bei nicht gesetzter Zielvariable als echten Shell-Lernpunkt.
Nachweis 40M03
Variablen und Existenzprüfung Belegt Korrekturlauf mit gesetzten Variablen, Pfadprüfung und Globbing.
Variablen und Existenzprüfung Belegt Korrekturlauf mit gesetzten Variablen, Pfadprüfung und Globbing.
Nachweis 41M03
Modulreport Zeigt den fertigen Modulreport mit Kennzahlen, Benutzern, IPs und Report-Dateien.
Modulreport Zeigt den fertigen Modulreport mit Kennzahlen, Benutzern, IPs und Report-Dateien.
Nachweis 42M03
Archivierung mit tar/gzip Belegt Archiv-Erstellung und Inhaltsprüfung per tar -tzf.
Archivierung mit tar/gzip Belegt Archiv-Erstellung und Inhaltsprüfung per tar -tzf.
Nachweis 43M03
Archivliste und Reportprüfung Zeigt archive_content.txt, vorhandene Archive und Zeilenzahl der Archivliste.
Archivliste und Reportprüfung Zeigt archive_content.txt, vorhandene Archive und Zeilenzahl der Archivliste.
Nachweis 44M03
Restore-Dateien Zeigt Restore-Verzeichnis und wiederhergestellte Dateien.
Restore-Dateien Zeigt Restore-Verzeichnis und wiederhergestellte Dateien.
Nachweis 45M03
diff-Integritätsprüfung Belegt diff_exit_code=0 für Modulreport und Logdatei.
diff-Integritätsprüfung Belegt diff_exit_code=0 für Modulreport und Logdatei.
Nachweis 46M03
Arbeitsstruktur mit Hauptbereichen, Ergebnisdateien und Archiven.
Arbeitsstruktur mit Hauptbereichen, Ergebnisdateien und Archiven.
Nachweis 47M03
Ergebnisübersicht mit Restore-Prüfung und Kurzansicht des Modulreports.
Ergebnisübersicht mit Restore-Prüfung und Kurzansicht des Modulreports.

Zum Dokumentanfang

M04

Paketverwaltung mit APT/dpkg und DNF/rpm

Kurzfassung

In M04 wurde Paketverwaltung als administrativer Prozess dokumentiert. Auf Debian wurde das Paket jq recherchiert, installiert, validiert, über Paketlogs nachvollzogen und anschließend wieder entfernt. Auf Rocky Linux wurde die DNF/RPM-Welt als Vergleichssystem genutzt; dabei entstand ein realistischer Transaktionsfall, weil dnf remove -y jq mehr Pakete entfernte als erwartet. Die Nebenwirkung wurde über dnf history analysiert, ein automatischer Undo-Versuch geprüft und der Zustand anschließend kontrolliert manuell wiederhergestellt.

Arbeitsablauf

Paketstatus prüfen
→ Paketmetadaten auswerten
→ Installation durchführen
→ Installation validieren
→ Logs/History prüfen
→ Paket entfernen
→ Nebenwirkung erkennen
→ Wiederherstellung vorbereiten
→ Wiederherstellung validieren
→ Debian/Rocky vergleichen

Ausgangslage

M04 ist ein Lern-/Kursmodul mit Sysadmin-Bezug. Debian bleibt die Hauptlinie, Rocky dient als Vergleichssystem für die RHEL-/RPM-Welt. Auf Debian war jq vor M04 nicht installiert. Außerdem war sudo auf dem Debian-Minimalsystem nicht vorhanden, weshalb administrative Paketoperationen über su -c ausgeführt wurden.

Debian: Paketlebenszyklus mit APT/dpkg

Ziel war ein vollständiger Paketlebenszyklus. apt wurde für Repository-basierte Paketoperationen genutzt, dpkg zur lokalen Paketstatus- und Dateiprüfung. Die Installation wurde über jq --version, which jq, dpkg -l und dpkg -L jq validiert. Dadurch wurde nicht nur die Installation, sondern auch Programmverfügbarkeit, PATH-Eintrag, Paketstatus und Dateiliste belegt.

Debian: Paketlogs und Audit-Spur

Die Paketoperation wurde über /var/log/dpkg.log, /var/log/apt/history.log und /var/log/apt/term.log nachvollzogen. Der Zugriff auf apt/term.log erforderte Root-Kontext. Das wurde als Berechtigungsthema dokumentiert, nicht als Paketverwaltungsfehler.

Debian: Entfernung

jq wurde wieder entfernt. Danach war das Paket nicht mehr als installiert sichtbar und das Binary war nicht mehr im PATH. Die APT-History belegte die Install- und Remove-Transaktion. Die automatisch installierten Abhängigkeiten libjq1 und libonig5 blieben als automatisch entfernbar sichtbar. apt autoremove wurde bewusst nicht ausgeführt, um die Änderung auf das Zielpaket zu begrenzen.

Rocky: DNF/RPM-Vergleich

Rocky wurde als Vergleichssystem genutzt. dnf übernahm die Rolle des höheren Paketwerkzeugs, rpm die Rolle der lokalen Paketdatenbank. Auf Rocky war jq bereits vorhanden. Der DNF-Vorgang aktualisierte das Paket und wurde über jq --version, which jq, rpm -q, rpm -qi, rpm -ql und dnf history validiert.

Rocky: DNF-Remove, Undo-Grenze und manuelle Wiederherstellung

Beim Entfernen von jq über dnf remove -y jq wurden mehrere weitere Pakete entfernt. Die DNF-History machte die Nebenwirkung nachvollziehbar. Ein automatischer Rollback über dnf history undo scheiterte, weil exakte RPM-/NEVRA-Versionen nicht gefunden wurden. Die Wiederherstellung wurde deshalb zuerst mit --assumeno als Vorschau geprüft und anschließend manuell über Paketnamen durchgeführt. Danach wurden die wiederhergestellten Pakete und jq validiert. Die Abbildungen zeigen diese Rocky-Troubleshooting-Schritte in derselben fachlichen Reihenfolge.

Korrigierte Nachweislogik des Rocky-Troubleshooting-Blocks

Tatsächliche technische Aussage
Fehlgeschlagener dnf history undo 3 --assumeno-Versuch.
Manuelle Wiederherstellung als --assumeno-Vorschau.
Abgeschlossene manuelle Wiederherstellung.
Validierung der wiederhergestellten Pakete und von jq.
DNF-History-Information zu Transaktion 5.
Notiz zum Rocky-DNF-Fall.

Vergleich APT/dpkg vs. DNF/rpm

Ebene Debian Rocky Bedeutung
Repository-/Transaktionswerkzeug apt dnf Pakete suchen, installieren, entfernen, Abhängigkeiten verwalten.
Lokale Paketdatenbank dpkg rpm Installierte Pakete und Paketdateien prüfen.
Nachvollziehbarkeit dpkg.log, apt/history.log, apt/term.log dnf history, dnf history info Änderungen auditierbar machen.
Korrekturpfad begrenzte Entfernung mit apt remove History-Analyse und manuelle Wiederherstellung Nebenwirkungen erkennen und korrigieren.

Erkenntnisse

  • Paketverwaltung ist ein Lebenszyklus, nicht nur Installation.
  • sudo ist nicht auf jedem Debian-Minimalsystem vorhanden.
  • apt/dpkg und dnf/rpm erfüllen vergleichbare Rollen auf unterschiedlichen Distributionsfamilien.
  • Logs und History sind zentrale Admin-Werkzeuge.
  • dnf remove -y kann unerwartet mehrere Pakete entfernen.
  • dnf history undo ist nützlich, aber nicht garantiert erfolgreich.
  • Eine manuelle Wiederherstellung über Paketnamen kann im Lab ein kontrollierter Korrekturweg sein.

Abgrenzung

M04 ist keine produktive Paketstrategie. Nicht behandelt wurden Repository-Deep-Dives, GPG-Key-Management, Backports, Testing/Unstable, Mischrepositories oder produktive Rollback-Strategien.

Nachweis 48M04
Ablauf von Paketstatus und Installation über Logs und History bis zur kontrollierten Entfernung und manuellen Wiederherstellung.
Ablauf von Paketstatus und Installation über Logs und History bis zur kontrollierten Entfernung und manuellen Wiederherstellung.
Nachweis 49M04
Zeigt die vorbereitete Arbeitsumgebung und belegt, dass jq auf Debian vor M04 nicht installiert war. Debian-Ausgangszustand und Arbeitsstruktur für M04.
Zeigt die vorbereitete Arbeitsumgebung und belegt, dass jq auf Debian vor M04 nicht installiert war. Debian-Ausgangszustand und Arbeitsstruktur für M04.
Nachweis 50M04
Belegt, warum administrative Paketbefehle auf Debian über su -c ausgeführt wurden. Debian-Minimalsystem ohne sudo, su vorhanden.
Belegt, warum administrative Paketbefehle auf Debian über su -c ausgeführt wurden. Debian-Minimalsystem ohne sudo, su vorhanden.
Nachweis 51M04
Belegt die bewusste Paketbewertung vor Installation. jq verfügbar, Kandidat sichtbar, Metadaten geprüft, nicht installiert.
Belegt die bewusste Paketbewertung vor Installation. jq verfügbar, Kandidat sichtbar, Metadaten geprüft, nicht installiert.
Nachweis 52M04
Belegt die APT-Installation mit Abhängigkeiten. jq wurde auf Debian installiert.
Belegt die APT-Installation mit Abhängigkeiten. jq wurde auf Debian installiert.
Nachweis 53M04
Belegt mehrstufige Validierung statt bloßer Installation. Installation wurde über Programmversion, PATH, Paketstatus und Dateiliste validiert.
Belegt mehrstufige Validierung statt bloßer Installation. Installation wurde über Programmversion, PATH, Paketstatus und Dateiliste validiert.
Nachweis 54M04
Belegt die Audit-Spur der jq-Installation. Paketoperation ist in den relevanten Debian-Logs nachvollziehbar.
Belegt die Audit-Spur der jq-Installation. Paketoperation ist in den relevanten Debian-Logs nachvollziehbar.

Ziel

Nachweis 55M04
Belegt die kontrollierte Entfernung des Zielpakets. jq wurde auf Debian entfernt und ist nicht mehr im PATH.
Belegt die kontrollierte Entfernung des Zielpakets. jq wurde auf Debian entfernt und ist nicht mehr im PATH.
Nachweis 56M04
Belegt die APT-Transaktionshistorie des Debian-Paketlebenszyklus. APT-History belegt Installation und spätere Entfernung.
Belegt die APT-Transaktionshistorie des Debian-Paketlebenszyklus. APT-History belegt Installation und spätere Entfernung.
Nachweis 57M04
Belegt den abweichenden Rocky-Ausgangszustand. Rocky hat sudo und Benutzer ist in wheel; jq war bereits vorhanden.
Belegt den abweichenden Rocky-Ausgangszustand. Rocky hat sudo und Benutzer ist in wheel; jq war bereits vorhanden.
Nachweis 58M04
Belegt DNF-Paketrecherche und Statusinformationen. Paketmetadaten auf Rocky wurden mit dnf geprüft.
Belegt DNF-Paketrecherche und Statusinformationen. Paketmetadaten auf Rocky wurden mit dnf geprüft.
Nachweis 59M04
Belegt Rocky-Transaktion und Abweichung vom Debian-Ausgangszustand. dnf install erkannte vorhandenes jq und aktualisierte es.
Belegt Rocky-Transaktion und Abweichung vom Debian-Ausgangszustand. dnf install erkannte vorhandenes jq und aktualisierte es.
Nachweis 60M04
DNF-History zeigt die Remove-Transaktion mit mehreren entfernten Paketen. Belegt, dass `dnf remove -y jq` mehr Pakete entfernte als erwartet.
DNF-History zeigt die Remove-Transaktion mit mehreren entfernten Paketen. Belegt, dass `dnf remove -y jq` mehr Pakete entfernte als erwartet.
Nachweis 61M04
DNF-History-Detail der jq-Reinstallation. Belegt Transaktion 4 mit `install -y jq` und den Paketen `jq`/`oniguruma`.
DNF-History-Detail der jq-Reinstallation. Belegt Transaktion 4 mit `install -y jq` und den Paketen `jq`/`oniguruma`.
Nachweis 62M04
Gescheiterte Undo-Vorschau für die Remove-Transaktion. Belegt, dass `dnf history undo 3 --assumeno` wegen nicht auffindbarer exakter NEVRA-Versionen nicht automatisch möglich war.
Gescheiterte Undo-Vorschau für die Remove-Transaktion. Belegt, dass `dnf history undo 3 --assumeno` wegen nicht auffindbarer exakter NEVRA-Versionen nicht automatisch möglich war.
Nachweis 63M04
Manuelle Wiederherstellung wurde vor Ausführung mit `--assumeno` geprüft. Belegt die geplante Installation der betroffenen Paketnamen sowie zusätzliche Aktualisierungen ohne tatsächliche Ausführung.
Manuelle Wiederherstellung wurde vor Ausführung mit `--assumeno` geprüft. Belegt die geplante Installation der betroffenen Paketnamen sowie zusätzliche Aktualisierungen ohne tatsächliche Ausführung.
Nachweis 64M04
Start der tatsächlichen manuellen Wiederherstellung. Zeigt `sudo dnf install -y $RESTORE_PKGS` beim Beginn der Installation.
Start der tatsächlichen manuellen Wiederherstellung. Zeigt `sudo dnf install -y $RESTORE_PKGS` beim Beginn der Installation.
Nachweis 65M04
Manuelle Wiederherstellung abgeschlossen. Belegt die abgeschlossene Installation der betroffenen Pakete mit „Fertig!“.
Manuelle Wiederherstellung abgeschlossen. Belegt die abgeschlossene Installation der betroffenen Pakete mit „Fertig!“.
Nachweis 66M04
Wiederhergestellte Pakete und jq wurden validiert. Belegt `rpm -q` für die betroffenen Pakete, `jq --version`, `which jq` und die DNF-History mit Transaktion 5.
Wiederhergestellte Pakete und jq wurden validiert. Belegt `rpm -q` für die betroffenen Pakete, `jq --version`, `which jq` und die DNF-History mit Transaktion 5.
Nachweis 67M04
DNF-History-Detail der manuellen Wiederherstellung. Belegt Transaktion 5 mit der Wiederinstallation der betroffenen Pakete und Updates.
DNF-History-Detail der manuellen Wiederherstellung. Belegt Transaktion 5 mit der Wiederinstallation der betroffenen Pakete und Updates.
Nachweis 68M04
Vergleichsreport zu sudo/su, der DNF-Nebenwirkung und der manuellen Wiederherstellung.
Vergleichsreport zu sudo/su, der DNF-Nebenwirkung und der manuellen Wiederherstellung.

Ergebnis und Erkenntnisse

Nachweis 69M04
Notiz zum DNF-Remove-/Undo-/Restore-Fall mit Paketnebenwirkung, nicht garantiertem Undo und manueller Wiederherstellung.
Notiz zum DNF-Remove-/Undo-/Restore-Fall mit Paketnebenwirkung, nicht garantiertem Undo und manueller Wiederherstellung.

Ergebnis

Nachweis 70M04
Arbeitsstruktur des Moduls, Debian-Zustand und Reportdateien.
Arbeitsstruktur des Moduls, Debian-Zustand und Reportdateien.
Nachweis 71M04
Ergebnisübersicht mit dem Vergleich von APT/dpkg und DNF/rpm sowie dem zugehörigen Report.
Ergebnisübersicht mit dem Vergleich von APT/dpkg und DNF/rpm sowie dem zugehörigen Report.

Zum Dokumentanfang

M05

Benutzer, Gruppen und lokale Rechte

Modul: M05 – Benutzer, Gruppen, Rechte, su, sudo, umask und visudo
Hauptsystem: Debian debian13

Kurzfassung

In M05 wurde auf Debian ein lokales Benutzer- und Rechtekonzept aufgebaut. Die Benutzer m05alice und m05bob wurden erstellt, der Gruppe m05team zugeordnet und über das Projektverzeichnis /srv/m05-projekt mit root:m05team und Modus 2770 praktisch eingesetzt. Zugriffstests zeigten, dass Gruppenmitglieder Dateien erstellen konnten, während student außerhalb der Projektgruppe keinen direkten Zugriff erhielt. Zusätzlich wurden chmod, chown, umask, su, sudo und visudo -c behandelt, inklusive realer Lernpunkte zum /usr/sbin-PATH und zur Aktivierung von Gruppenmitgliedschaften erst nach neuer Login-Sitzung.

Arbeitsablauf

Ausgangslage → Benutzer/Gruppe → Projektverzeichnis → Zugriffstest → chmod/chown → umask → su/sudo/visudo → Ergebnis

1. Ausgangslage und Admin-Kontext

Ziel

Der Ausgangszustand sollte nachvollziehbar erfasst werden, bevor Benutzer, Gruppen oder Rechte verändert werden.

Lokale Benutzer- und Rechteverwaltung verändert sicherheitsrelevante Systemzustände. Deshalb ist der Startzustand wichtig: Wer arbeitet auf welchem System, welche Admin-Werkzeuge sind vorhanden und welche Testobjekte existieren bereits?

Umsetzung und Ergebnis

Auf debian13 wurde im Arbeitsverzeichnis ~/linux_m05 gearbeitet. su war vorhanden, sudo zunächst nicht installiert. Die Testobjekte m05alice, m05bob, m05gast, m05team und /srv/m05-projekt waren zu Beginn nicht vorhanden.

Nachweise:

2. Benutzer und Gruppen

Ziel:

Zwei lokale Testbenutzer sollten erstellt und einer gemeinsamen Projektgruppe zugeordnet werden.

Benutzer und Gruppen bilden die Grundlage klassischer Unix-Dateirechte. Wichtig ist nicht nur das Erstellen, sondern auch die Validierung über getent und id.

Umsetzung und Ergebnis:

Die Gruppe m05team sowie die Benutzer m05alice und m05bob wurden angelegt. Beide Benutzer wurden mit usermod -aG ergänzend zur Gruppe m05team hinzugefügt. -aG ist bewusst relevant, weil -G ohne -a bestehende Zusatzgruppen ersetzen kann.

Während der Umsetzung zeigte sich ein PATH-Thema: groupadd, useradd und usermod lagen unter /usr/sbin und wurden über absolute Pfade ausgeführt.

Nachweise:

3. Projektverzeichnis mit Gruppenrechten und setgid

Ziel:

Ein gemeinsames Projektverzeichnis sollte so eingerichtet werden, dass nur root und Mitglieder der Gruppe m05team Zugriff erhalten.

Ein sauberer Gruppenbereich ist besser als pauschal offene Rechte. Der Modus 2770 kombiniert Gruppenberechtigungen mit setgid. Dadurch erben neue Dateien im Verzeichnis die Gruppe des Verzeichnisses.

Umsetzung und Ergebnis:

/srv/m05-projekt wurde mit Besitz root:m05team und Modus 2770 erstellt. ls und stat zeigten drwxrws--- und bestätigten das setgid-Bit.

Nachweis:

4. Zugriffstests aus Benutzersicht

Ziel:

Die gesetzten Rechte sollten aus Sicht der Benutzer geprüft werden.

Die konfigurierten Rechte wurden mit praktischen Zugriffstests geprüft; ls -l zeigt ergänzend Eigentümer, Gruppe und Modus.

Umsetzung und Ergebnis:

m05alice und m05bob erstellten Dateien im Projektverzeichnis. Beide Dateien erhielten durch setgid die Gruppe m05team. Der direkte Zugriff von student auf das Projektverzeichnis wurde verweigert. Das war erwartetes Verhalten, weil student nicht Mitglied von m05team war.

Nachweise:

5. chmod und chown

Ziel:

Rechte und Besitz sollten gezielt an einer Datei verändert und validiert werden.

chown und chmod steuern unterschiedliche Aspekte: Besitzverhältnisse einerseits, Modusbits andererseits. Beide Ebenen müssen für Dateizugriff zusammengedacht werden.

Umsetzung und Ergebnis:

alice.txt wurde von 664 auf 640 gesetzt und explizit auf m05alice:m05team geprüft. Damit darf der Eigentümer lesen und schreiben, die Gruppe lesen, und andere Benutzer erhalten keinen Zugriff.

Nachweis:

6. umask

Ziel:

Der Einfluss verschiedener umask-Werte auf neu erstellte Dateien und Verzeichnisse sollte sichtbar gemacht werden.

Rechte entstehen nicht erst durch chmod. Bereits beim Erstellen beeinflusst die aktuelle umask, welche Rechte neue Dateien und Verzeichnisse erhalten.

Umsetzung und Ergebnis:

Die Werte 022, 027 und 002 wurden getestet. Die Ergebnisse zeigten typische Rechte wie 644/755, 640/750 und 664/775. Die aktuelle Shell hatte zuvor 0002, was als gruppenfreundliche Voreinstellung eingeordnet wurde.

Nachweis:

7. su, sudo und visudo

Ziel:

Der Admin-Kontext sollte sauber eingeordnet und sudo kontrolliert eingeführt werden.

su und sudo sind unterschiedliche Modelle. su nutzt den Ziel- bzw. Root-Kontext direkt. sudo delegiert Rechte über die sudoers-Policy. visudo ist der sichere Weg, sudoers-Konfigurationen zu prüfen oder zu bearbeiten.

Umsetzung und Ergebnis:

Zu Beginn war sudo nicht installiert. Es wurde über su -c installiert. Danach wurde student der Gruppe sudo hinzugefügt. Nach einer neuen SSH-Sitzung war die Gruppenmitgliedschaft aktiv. sudo id zeigte Root-Kontext, und sudo visudo -c meldete eine erfolgreiche Syntaxprüfung. Die sudoers-Datei wurde nicht direkt mit einem Editor verändert.

Nachweise:

8. Troubleshooting und Abweichungen

PATH bei su -c

Mehrere Admin-Befehle wurden über su -c zunächst nicht gefunden, obwohl Root-Kontext genutzt wurde. Ursache war nicht fehlende Berechtigung, sondern die Suchpfad-Umgebung. Die Korrektur erfolgte über absolute Pfade wie /usr/sbin/groupadd und /usr/sbin/runuser.

Teilweise fehlgeschlagene Benutzeranlage

m05alice wurde zunächst erstellt, während m05bob fehlte. Der Zustand wurde erkannt und gezielt korrigiert.

Zugriffsbeschränkung für student

student konnte /srv/m05-projekt nicht direkt lesen. Dies war kein Fehler, sondern bestätigte das Rechtekonzept: Zugriff war nur für root und m05team vorgesehen.

Ergebnis

Die Arbeitsschritte zeigen ein lokales Rechtekonzept mit Benutzern, Gruppen, Projektverzeichnis, setgid, Zugriffstest, chmod, chown, umask, su, sudo und visudo. Die Grenze zur produktiven Härtung bleibt bestehen: ACLs, PAM-Konfigurationen und riskante sudoers-Regeln wurden nicht umgesetzt.

10. Fachliche Abgrenzung

  • Kein Cleanup der Testbenutzer wurde dokumentiert; die Testobjekte bleiben für eventuelle Nachprüfungen bestehen.
  • Keine ACLs wurden behandelt.
  • Keine PAM- oder sudoers-Deep-Dives wurden durchgeführt.
  • Produktive Sicherheitshärtung wurde nicht umgesetzt.
Nachweis 72M05
In M05 wurde auf Debian ein lokales Rechte- und Benutzerkonzept aufgebaut. Die Benutzer m05alice und m05bob wurden erstellt, der Gruppe m05team zugeordnet und über ein gemeinsames Projektverzeichnis mit root:m05team und Modus 2770 eingesetzt. Zugriffstests bestätigten, dass Gruppenmitglieder Dateien erstellen konnten, während student außerhalb der Projektgruppe keinen direkten Zugriff erhielt. Zusätzlich wurden chmod , chown , umask , su , sudo und visudo -c behandelt.
In M05 wurde auf Debian ein lokales Rechte- und Benutzerkonzept aufgebaut. Die Benutzer m05alice und m05bob wurden erstellt, der Gruppe m05team zugeordnet und über ein gemeinsames Projektverzeichnis mit root:m05team und Modus 2770 eingesetzt. Zugriffstests bestätigten, dass Gruppenmitglieder Dateien erstellen konnten, während student außerhalb der Projektgruppe keinen direkten Zugriff erhielt. Zusätzlich wurden chmod , chown , umask , su , sudo und visudo -c behandelt.
Nachweis 73M05
Zeigt Login, Arbeitsordner, Host, Benutzer, Pfad, Datum und den Ausgangskontext des Benutzers student.
Zeigt Login, Arbeitsordner, Host, Benutzer, Pfad, Datum und den Ausgangskontext des Benutzers student.
Nachweis 74M05
Zeigt su vorhanden, sudo zunächst nicht installiert, keine sudo-/wheel-Gruppe und fehlende M05-Testobjekte.
Zeigt su vorhanden, sudo zunächst nicht installiert, keine sudo-/wheel-Gruppe und fehlende M05-Testobjekte.
Nachweis 75M05
Belegt, dass groupadd, useradd und usermod unter /usr/sbin vorhanden sind und absolute Pfade nötig wurden.
Belegt, dass groupadd, useradd und usermod unter /usr/sbin vorhanden sind und absolute Pfade nötig wurden.
Nachweis 76M05
Belegt m05team, m05alice, m05bob und die Gruppenmitgliedschaft beider Benutzer in m05team.
Belegt m05team, m05alice, m05bob und die Gruppenmitgliedschaft beider Benutzer in m05team.

Projektverzeichnis mit Gruppenrechten

Nachweis 77M05
Belegt /srv/m05-projekt mit root:m05team, Modus 2770 und sichtbarem setgid-Bit.
Belegt /srv/m05-projekt mit root:m05team, Modus 2770 und sichtbarem setgid-Bit.

Zugriffstests

Nachweis 78M05
Belegt Zugriffstests mit m05alice und m05bob sowie erwartete Zugriffsbeschränkung für student.
Belegt Zugriffstests mit m05alice und m05bob sowie erwartete Zugriffsbeschränkung für student.
Nachweis 79M05
Belegt Dateien alice.txt und bob.txt mit Gruppe m05team sowie Verzeichnisrecht 2770.
Belegt Dateien alice.txt und bob.txt mit Gruppe m05team sowie Verzeichnisrecht 2770.
Nachweis 80M05
Zeigt Änderung von alice.txt von 664 auf 640, Besitz m05alice:m05team und Kurzreport.
Zeigt Änderung von alice.txt von 664 auf 640, Besitz m05alice:m05team und Kurzreport.
Nachweis 81M05
Belegt umask 022, 027 und 002 mit resultierenden Datei- und Verzeichnisrechten.
Belegt umask 022, 027 und 002 mit resultierenden Datei- und Verzeichnisrechten.
Nachweis 82M05
Belegt, dass sudo zunächst fehlte und über su -c installiert wurde.
Belegt, dass sudo zunächst fehlte und über su -c installiert wurde.
Nachweis 83M05
Belegt die sudo-Gruppenmitgliedschaft von student nach usermod -aG sudo student.
Belegt die sudo-Gruppenmitgliedschaft von student nach usermod -aG sudo student.
Nachweis 84M05
Belegt command -v sudo und sudo visudo -c mit Analyse OK.
Belegt command -v sudo und sudo visudo -c mit Analyse OK.
Nachweis 85M05
Belegt sudo id mit Root-Kontext und reflektiert su, sudo, Gruppenmitgliedschaft und visudo.
Belegt sudo id mit Root-Kontext und reflektiert su, sudo, Gruppenmitgliedschaft und visudo.
Nachweis 86M05
Benutzer, Gruppen, sudo-Zuordnung und das Projektverzeichnis /srv/m05-projekt im Ergebniszustand.
Benutzer, Gruppen, sudo-Zuordnung und das Projektverzeichnis /srv/m05-projekt im Ergebniszustand.
Nachweis 87M05
Belegt umask-Testdateien und wichtige Reports/Notizen im M05-Arbeitsordner.
Belegt umask-Testdateien und wichtige Reports/Notizen im M05-Arbeitsordner.

Zum Dokumentanfang

M06

Prozesse, Jobs und Basismonitoring

Kurzfassung

In M06 wurde der laufende Systemzustand einer Debian-VM mit klassischen Linux-Werkzeugen untersucht. Prozesse wurden mit ps und top -b -n 1 ausgewertet, aktive Sitzungen und Laufzeit mit who, w und uptime geprüft sowie Speicher-, Swap-, Dateisystem- und Inode-Nutzung mit free und df erfasst. Anschließend wurde ein kontrollierter sleep-Hintergrundprozess gestartet, über PID, jobs, ps und pgrep nachvollzogen und mit kill -TERM beendet. Ein Systemstatusreport bündelt die Ergebnisse als wiederverwendbares Admin-Artefakt.

Arbeitsablauf

Toolcheck → ps-Snapshot → top-Batch → Sessions/Load → Ressourcen → Hintergrundjob → kill -TERM → Systemstatusreport

Rolle im Kurs

M06 folgt auf die bisherigen Module zu Shell, Paketverwaltung und Rechten. Der Schwerpunkt liegt nun auf dem laufenden System: Prozesse, Jobs, Sessions, Laufzeit, Load Average, Speicher, Swap, Dateisysteme und Inodes. Es wurde bewusst kein Performance-Tuning, keine Serviceverwaltung und keine journalctl-Analyse durchgeführt; diese Themen gehören in spätere Module.

Wichtige Abschnitte

1. Ausgangszustand und Toolcheck

Arbeitsstruktur und Werkzeugverfügbarkeit wurden in ~/linux_m06 geprüft. Die aktuelle Bash-Shell wurde zusätzlich über ps -p $$ als Prozess sichtbar gemacht.

2. Prozess-Snapshot mit ps

ps wurde zur Momentaufnahme genutzt. Sortiert wurde nach CPU- und RAM-Nutzung. Zusätzlich wurden SSH- und Bash-Prozesse gefiltert. Ein Quoting-/Pattern-Fehler bei grep -E wurde korrigiert; die Abbildung zeigt Fehler, Korrektur und erfolgreiche Filterung.

3. top im Batch-Modus

top -b -n 1 wurde genutzt, weil die Ausgabe für Dokumentation und Screenshots stabiler ist als interaktives top.

4. Sessions, Uptime und Ressourcen

who, w, uptime, free -h, df -h, df -ih und df -hT zeigen aktive Sitzung, Laufzeit, Load, Speicher, Swap, Dateisysteme, Inodes und Dateisystemtypen.

5. Hintergrundjob und Prozesssteuerung

Ein Testprozess sleep 300 & wurde gestartet, seine PID über $! gesichert, mit jobs, ps und pgrep geprüft und anschließend mit kill -TERM beendet. Die Beendigung wurde mit ps, pgrep und jobs validiert.

6. Systemstatusreport

Die Einzelprüfungen wurden in reports/m06_systemstatus_report.txt zusammengeführt. Dadurch entsteht ein kleines Admin-Artefakt und nicht nur eine Screenshotfolge.

Ergebnis

M06 umfasst Systemzustand, Prozessauswertung, Ressourcenprüfung, die kontrollierte Steuerung eines Testprozesses und einen zusammenfassenden Report. Optimierung und Lasttests waren nicht Bestandteil.

Abgrenzung

Nicht durchgeführt wurden:

  • Performance-Tuning,
  • Lasttest,
  • Serviceverwaltung,
  • journalctl-Analyse,
  • kill -9 als Standardlösung,
  • Paketinstallation für zusätzliche Monitoring-Tools.

Erkenntnisse

Siehe 50_Lessons_Learned/lessons_learned_m06.md.

Nachweise

Nachweis 88M06
Ausgangszustand / Toolcheck Zeigt Arbeitsstruktur, Systemkontext und Verfügbarkeit der Basismonitoring-Werkzeuge.
Ausgangszustand / Toolcheck Zeigt Arbeitsstruktur, Systemkontext und Verfügbarkeit der Basismonitoring-Werkzeuge.
Nachweis 89M06
Ausgangszustand / Shell-Kontext Belegt, dass die aktuelle Bash-Shell selbst ein Prozess ist und mit ps ausgewertet werden kann.
Ausgangszustand / Shell-Kontext Belegt, dass die aktuelle Bash-Shell selbst ein Prozess ist und mit ps ausgewertet werden kann.
Nachweis 90M06
Prozess-Snapshot mit ps Zeigt Prozess-Snapshots nach CPU- und RAM-Nutzung.
Prozess-Snapshot mit ps Zeigt Prozess-Snapshots nach CPU- und RAM-Nutzung.
Nachweis 91M06
Prozess-Snapshot / Quoting-Lernpunkt Belegt die Korrektur eines grep-Quoting-/Pattern-Fehlers und die Filterung von SSH-/Bash-Prozessen.
Prozess-Snapshot / Quoting-Lernpunkt Belegt die Korrektur eines grep-Quoting-/Pattern-Fehlers und die Filterung von SSH-/Bash-Prozessen.
Nachweis 92M06
top Batch-Systemzustand Zeigt einen nicht-interaktiven Systemzustandssnapshot mit top -b -n 1.
top Batch-Systemzustand Zeigt einen nicht-interaktiven Systemzustandssnapshot mit top -b -n 1.
Nachweis 93M06
Sessions, Uptime, Load Belegt aktive SSH-Sitzung, Systemlaufzeit, Bootzeitpunkt und Load-Kontext.
Sessions, Uptime, Load Belegt aktive SSH-Sitzung, Systemlaufzeit, Bootzeitpunkt und Load-Kontext.
Nachweis 94M06
Ressourcenstatus / Dateisystemtypen Belegt Dateisystemtypen und Belegung mit df -hT.
Ressourcenstatus / Dateisystemtypen Belegt Dateisystemtypen und Belegung mit df -hT.
Nachweis 95M06
Hintergrundjob / PID / jobs Belegt sleep-Testprozess, gespeicherte PID, Shell-Job, ps und pgrep.
Hintergrundjob / PID / jobs Belegt sleep-Testprozess, gespeicherte PID, Shell-Job, ps und pgrep.
Nachweis 96M06
Prozesssuche und Beenden Belegt gezieltes Beenden mit kill -TERM und Validierung über ps, pgrep und jobs.
Prozesssuche und Beenden Belegt gezieltes Beenden mit kill -TERM und Validierung über ps, pgrep und jobs.
Nachweis 97M06
Systemstatusreport Belegt den erzeugten Systemstatusreport mit Uptime, Sessions, Speicher und Dateisystemdaten.
Systemstatusreport Belegt den erzeugten Systemstatusreport mit Uptime, Sessions, Speicher und Dateisystemdaten.
Nachweis 98M06
Systemstatusreport Belegt Prozess-Snapshots nach CPU und RAM im Report.
Systemstatusreport Belegt Prozess-Snapshots nach CPU und RAM im Report.
Nachweis 99M06
Erkenntnisse aus der Arbeit mit ps, top, jobs, pgrep, kill, free und df.
Erkenntnisse aus der Arbeit mit ps, top, jobs, pgrep, kill, free und df.
Nachweis 100M06
Ergebniszustand mit Reports und Notizen; kein sleep-Testprozess ist aktiv.
Ergebniszustand mit Reports und Notizen; kein sleep-Testprozess ist aktiv.

Zum Dokumentanfang

M07

Dienste mit systemd und Fehleranalyse

Modul: M07
Hauptsystem: Debian debian13

Kurzfassung

In M07 wurde auf Debian ein eigener systemd-oneshot-Dienst erstellt, erfolgreich ausgeführt und über systemctl sowie journalctl validiert. Anschließend wurde ein kontrollierter Fehlzustand erzeugt, indem ExecStart absichtlich auf ein nicht vorhandenes Skript gesetzt wurde. Der Fehler wurde über systemctl status, systemctl --failed, journalctl -u und journalctl -xeu analysiert; die Ursache war ein fehlender ausführbarer Pfad mit status=203/EXEC. Danach wurde die funktionierende Unit aus dem Backup wiederhergestellt, systemd neu eingelesen, der failed-State bereinigt und der erfolgreiche Dienstlauf erneut validiert.

Technische Übersicht

Arbeitsfeld Nachweis
systemd-Kontext prüfen systemctl --version, is-system-running, --failed
bestehenden Dienst lesen systemctl status ssh, is-active, is-enabled, systemctl cat ssh
Unit-Logs auswerten journalctl -u ssh, journalctl -u m07-demo.service, journalctl -xeu
eigene Unit erstellen m07-demo.service, daemon-reload, systemctl cat
Dienstlauf validieren systemctl start, Status, Journal-Ausgabe
Autostart verstehen enable, disable, is-enabled
Fehler triagieren status=203/EXEC, systemctl --failed, Journal-Ursache
Korrektur validieren Backup-Restore, daemon-reload, reset-failed, Result=success

Strukturelle Übersicht

m07-demo.sh
   │
   ▼
m07-demo.service (Type=oneshot)
   │
   ├── erfolgreicher Lauf → journalctl → finished successfully
   │
   ├── geänderter ExecStart → missing script → failed 203/EXEC
   │
   └── Backup restore → daemon-reload → reset-failed → successful validation

1. Ausgangslage und systemd-Toolcheck

Ziel

Der systemd-Startzustand sollte vor allen Änderungen geprüft werden, damit spätere Fehler eindeutig dem M07-Demo-Dienst zugeordnet werden können.

Vor einer Service-Triage ist der Ausgangszustand entscheidend. Wenn bereits vorher fehlgeschlagene Units vorhanden wären, dürften sie später nicht fälschlich M07 zugeschrieben werden.

Arbeitsschritte und Nachweise

Es wurden Arbeitsordner erstellt, Host und Benutzer geprüft, systemctl und journalctl validiert, die systemd-Version angezeigt und systemctl --failed vor dem Fehlerfall ausgeführt.

Nachweise

Ergebnis

Das System war running; vor M07 waren keine failed Units vorhanden. Ein kleiner dateecho-Tippfehler wurde direkt korrigiert und hat keine fachliche Relevanz.

2. SSH-Dienst als reales Leseobjekt

Ziel:

Ein bestehender systemd-Dienst sollte realistisch betrachtet werden, ohne eine aktive SSH-Sitzung zu gefährden.

SSH ist ein kritischer Verbindungsdienst. Daher wurde er ausdrücklich nur gelesen und nicht gestoppt, neu gestartet oder verändert.

Arbeitsschritte und Nachweise:

ssh.service wurde mit systemctl status, is-active, is-enabled, systemctl cat und sudo journalctl -u ssh analysiert.

Nachweise:

Ergebnis:

ssh.service war aktiv und enabled. Die Journal-Ausgabe bestätigte Dienststart und SSH-Sitzungen.

3. Demo-Skript und eigene systemd-Unit

Ziel:

Ein ungefährliches Übungsobjekt sollte erstellt werden, um Start, Logs, Fehlzustand und Korrektur risikofrei zu demonstrieren.

Ein eigener Demo-Dienst ist für Lab-Dokumentation sicherer als das absichtliche Beschädigen produktiver Dienste. Das Skript schreibt einfache Ausgaben, die systemd im Journal erfasst.

Arbeitsschritte und Nachweise:

Es wurde m07-demo.sh erstellt, ausführbar gemacht und anschließend als m07-demo.service mit Type=oneshot eingebunden. Nach daemon-reload war die Unit systemd bekannt.

Nachweise:

Ergebnis:

Die Unit war initial inactive (dead), was vor dem ersten Start erwartbar ist. daemon-reload wurde korrekt eingesetzt, um systemd die neue Unit-Datei bekannt zu machen.

4. Erfolgreicher oneshot-Dienstlauf

Ziel:

Der eigene Dienst sollte gestartet und über Status sowie Journal validiert werden.

Bei einem Type=oneshot-Dienst ist inactive (dead) nach erfolgreicher Ausführung normal. Der Erfolg wird über Status, Exit-Status und Journal-Ausgabe interpretiert, nicht allein über dauerhaftes active.

Arbeitsschritte und Nachweise:

Der Dienst wurde mit sudo systemctl start m07-demo.service gestartet. Danach wurden systemctl status und sudo journalctl -u m07-demo.service geprüft.

Nachweis

Ergebnis:

Das Journal zeigt started, Host: debian13, User: root, finished successfully, Deactivated successfully und Finished. Die Ausführung erfolgte als Root, weil keine abweichende User=-Direktive gesetzt wurde.

5. Restart, Enable, Disable und is-enabled

Ziel:

Der Unterschied zwischen aktuellem Dienstlauf und Autostart sollte praktisch gezeigt werden.

start und restart betreffen den aktuellen Lauf. enable und disable steuern systemd-Install-Links für den Autostart und starten den Dienst nicht zwingend sofort.

Arbeitsschritte und Nachweise:

Der Dienst wurde neu gestartet, der Journal-Verlauf geprüft, der Autostart aktiviert, mit is-enabled validiert und anschließend wieder deaktiviert.

Nachweise:

Ergebnis:

Der Restart erzeugte einen weiteren erfolgreichen Lauf. enable erstellte einen Symlink unter multi-user.target.wants; disable entfernte ihn wieder. Der Endzustand war disabled.

6. Kontrollierter Fehlzustand

Ziel:

Ein reversibler Fehlerfall sollte erzeugt werden, um Service-Triage realistisch zu üben.

Der Fehler wurde bewusst nur am eigenen Demo-Dienst erzeugt. Ein falscher ExecStart-Pfad ist ein typischer, klar analysierbarer systemd-Fehler.

Arbeitsschritte und Nachweise:

Die funktionierende Unit wurde gesichert. Danach wurde ExecStart per sed auf /home/student/linux_m07/units/m07-demo_missing.sh geändert. Nach daemon-reload schlug der Start erwartungsgemäß fehl.

Nachweis:

Ergebnis:

systemctl status zeigte failed, Result: exit-code und status=203/EXEC. Die Unit war geladen, aber der Prozess konnte nicht ausgeführt werden.

7. Fehleranalyse mit systemctl und journalctl

Ziel:

Die Ursache sollte über systemd-Werkzeuge nachvollziehbar eingegrenzt werden.

Zur Service-Triage wurden die Liste fehlgeschlagener Units und das Unit-spezifische Journal gemeinsam ausgewertet.

Arbeitsschritte und Nachweise:

systemctl --failed zeigte m07-demo.service als failed. journalctl -u und journalctl -xeu zeigten Unable to locate executable, No such file or directory und Failed at step EXEC.

Nachweis:

Ergebnis:

Die Ursache war der absichtlich falsche ExecStart-Pfad. Die Fehlermeldung war eindeutig und konnte direkt auf die Unit-Datei zurückgeführt werden.

8. Korrektur, reset-failed und Validierung

Ziel:

Der Dienst sollte wieder in einen funktionierenden Zustand gebracht und der Endzustand sauber validiert werden.

reset-failed behebt nicht die Ursache. Die Ursache wird durch Korrektur der Unit-Datei behoben; reset-failed bereinigt anschließend den systemd-Fehlerstatus.

Arbeitsschritte und Nachweise:

Die funktionierende Unit wurde aus dem Backup wiederhergestellt, systemd neu eingelesen, der failed-State bereinigt und der Dienst erneut gestartet. Anschließend wurden failed Units, kompakter Unit-Zustand und ein gefiltertes Journal nach Korrektur geprüft.

Nachweise:

Ergebnis:

systemctl --failed zeigte wieder 0 loaded units listed, Result=success, ExecMainStatus=0, ActiveState=inactive, SubState=dead. Das gefilterte Journal zeigte nur den erfolgreichen Lauf nach der Korrektur.

9. Service-Triage-Report

Ziel:

Die Fehleranalyse sollte als reproduzierbares Admin-Artefakt dokumentiert werden.

Der Report bündelt die einzelnen Terminalausgaben zu einer Triage-Kette aus Status, Fehler, Ursache, Maßnahme und erneuter Prüfung.

Arbeitsschritte und Nachweise:

Der Report m07_service_triage_report.md dokumentiert Dienst, Zweck, Ausgangszustand, Fehlerfall, Triage-Kette, Maßnahme, Validierung und Erkenntnisse.

Nachweis:

Ergebnis:

Die Triage-Kette umfasst Status, fehlgeschlagene Units, Logs, Ursache, Maßnahme, daemon-reload, reset-failed und die anschließende Prüfung.

10. Ergebnis:

Ziel:

Der korrigierte Dienstzustand sollte anschließend geprüft werden.

Nach einer Fehlersimulation darf kein unerklärter Failed-State zurückbleiben. Der Demo-Dienst soll vorhanden, aber nicht dauerhaft aktiv oder enabled sein.

Arbeitsschritte und Nachweise:

Die Ergebnisübersicht zeigt Systemkontext, vorhandene M07-Dateien, Demo-Service-Status, Autostartstatus, failed Units und Report-Kurzansicht.

Nachweise:

Ergebnis:

Der Demo-Dienst ist inactive (dead) und disabled; systemctl --failed zeigt keine fehlgeschlagenen Units. Dies ist der erwartete Ergebniszustand.

Zusammenfassung

M07 dokumentiert die Kette aus Dienstlauf, kontrolliertem Fehler, Analyse, Korrektur und erneuter Prüfung.

Troubleshooting und Abweichungen

Punkt Einordnung
dateecho in Block 1 kleiner Tippfehler, direkt korrigiert, keine fachliche Auswirkung
unvollständiger Here-Doc beim Skript abgebrochen und korrigiert; der korrigierte Skriptstand ist in der Folgeansicht sichtbar
journalctl ohne sudo zeigte zunächst keine Einträge Berechtigungsthema; mit sudo journalctl korrekt gelöst
rote alte Fehlerzeilen nach Korrektur historischer Journalverlauf; für Endvalidierung wurde ein gefilterter Screenshot verwendet

Abgrenzung

Nicht umgesetzt:

  • SSH wurde nicht gestoppt, verändert oder repariert.
  • Es wurde kein Produktivdienst absichtlich beschädigt.
  • Es wurde kein Timer erstellt; Timer gehören später zu M11.
  • Es wurden keine komplexen systemd-Optionen oder Härtungsmaßnahmen umgesetzt.
  • inactive (dead) bei Type=oneshot wurde nicht als Fehler interpretiert.

Ausgangszustand und systemd-Toolcheck

Nachweis 101M07
Belegt systemd-Werkzeuge, Version und running-Status.
Belegt systemd-Werkzeuge, Version und running-Status.
Nachweis 102M07
Belegt, dass vor M07 keine failed Units vorhanden waren.
Belegt, dass vor M07 keine failed Units vorhanden waren.

SSH-Dienst nur lesend analysieren

Nachweis 103M07
Zeigt ssh.service active/running und enabled; SSH wurde nicht verändert.
Zeigt ssh.service active/running und enabled; SSH wurde nicht verändert.
Nachweis 104M07
Belegt journalctl-Auswertung an einem realen Dienst.
Belegt journalctl-Auswertung an einem realen Dienst.
Nachweis 105M07
Belegt ausführbares m07-demo.sh als ungefährliche Dienstgrundlage.
Belegt ausführbares m07-demo.sh als ungefährliche Dienstgrundlage.
Nachweis 106M07
Belegt eigene systemd-Unit und daemon-reload.
Belegt eigene systemd-Unit und daemon-reload.

Erfolgreicher oneshot-Lauf

Nachweis 107M07
Belegt erfolgreichen oneshot-Lauf und Journal-Ausgabe.
Belegt erfolgreichen oneshot-Lauf und Journal-Ausgabe.

Restart, Enable und Disable

Nachweis 108M07
Belegt Restart und Autostart-Aktivierung.
Belegt Restart und Autostart-Aktivierung.
Nachweis 109M07
Belegt Rücknahme des Autostarts.
Belegt Rücknahme des Autostarts.

Kontrollierter Fehlzustand und Analyse

Nachweis 110M07
Belegt kontrollierten Fehler mit status=203/EXEC.
Belegt kontrollierten Fehler mit status=203/EXEC.
Nachweis 111M07
Belegt systemctl --failed und Journal-Ursache.
Belegt systemctl --failed und Journal-Ursache.

Korrektur und Prüfung

Nachweis 112M07
Belegt Wiederherstellung der Unit, reset-failed und Neustart.
Belegt Wiederherstellung der Unit, reset-failed und Neustart.
Nachweis 113M07
Belegt Result=success, keine failed Units und erfolgreichen Lauf nach Korrektur.
Belegt Result=success, keine failed Units und erfolgreichen Lauf nach Korrektur.

Triage-Report und Ergebnis

Nachweis 114M07
Belegt den strukturierten Analyse- und Korrekturbericht.
Belegt den strukturierten Analyse- und Korrekturbericht.
Nachweis 115M07
Service- und Autostartzustand nach Korrektur und erneuter Prüfung.
Service- und Autostartzustand nach Korrektur und erneuter Prüfung.
Nachweis 116M07
Belegt keine failed Units und Report-Kurzansicht.
Belegt keine failed Units und Report-Kurzansicht.

Zum Dokumentanfang

M08

Netzwerkdiagnose, SSH-Key, scp und rsync

Modul: M08
Systeme: Debian debian13 als Quelle, Rocky rocky9 als Ziel, Windows/RemoteLab als Client-Kontext

Kurzfassung

In M08 wurde eine zusammenhängende Remote-Admin-Kette aufgebaut: Zuerst wurden Netzwerkbasis, Routing, Erreichbarkeit, Namensauflösung und SSH-Sockets geprüft. Danach wurde ein ED25519-SSH-Key erzeugt, der Public Key auf Rocky in authorized_keys eingebunden und ein SSH-Aufruf mit expliziter Schlüsseldatei sowie deaktivierter Passwortauthentifizierung erfolgreich ausgeführt. Der Nachweis bestimmt die tatsächlich akzeptierte Authentifizierungsmethode nicht eindeutig. Anschließend wurden eine Datei per scp übertragen und eine rsync-Synchronisation zuerst mit --dry-run, danach real durchgeführt und remote validiert. rsync war auf Debian zunächst nicht vorhanden und wurde kontrolliert per apt nachinstalliert.

Arbeitsablauf

Netzwerkbasis prüfen
→ Erreichbarkeit testen
→ Namensauflösung einordnen
→ SSH-Port und aktive Verbindung prüfen
→ SSH-Key erzeugen
→ Public Key auf Rocky einrichten
→ SSH-Aufruf mit deaktivierter Passwortauthentifizierung prüfen
→ Datei per scp übertragen
→ rsync-Verfügbarkeit prüfen und Debian nachrüsten
→ rsync Dry-Run
→ echter rsync
→ Remote-Validierung
→ Technischer Report

Abgrenzung

Nicht umgesetzt wurden DNS-Server-Aufbau, SSH-Härtung, Firewall-Konfiguration, ein produktives Backup-Konzept und rsync --delete. Dokumentiert sind Netzwerkdiagnose, der SSH-Aufruf sowie kontrollierte Dateiübertragung und Synchronisation im Labor.

1. Ausgangszustand und Toolcheck

Ziel und Einordnung. Ziel war, Quelle/Ziel-Kontext und verfügbare Werkzeuge vor den Netzwerk- und SSH-Tests festzuhalten. Dabei wurde sichtbar, dass rsync auf Debian zunächst nicht installiert war. Das wurde nicht als Fehler gewertet, sondern als sauberer Ausgangszustand für die spätere kontrollierte Nachinstallation.

Nachweis 117M08
Arbeitsordner, Systemkontext, Netzwerk-/SSH-Tools; rsync auf Debian zunächst nicht installiert.
Arbeitsordner, Systemkontext, Netzwerk-/SSH-Tools; rsync auf Debian zunächst nicht installiert.
Nachweis 118M08
Erwartete Zielsysteme/IPs: Debian, Rocky und Windows/RemoteLab-Kontext.
Erwartete Zielsysteme/IPs: Debian, Rocky und Windows/RemoteLab-Kontext.

2. IP-Adresse, Interface und Routing

Ziel und Einordnung. Debian nutzte eth0 mit 10.100.20.43/24; die Default Route führte über 10.100.20.254. In diesem Abschnitt wurde ausschließlich ausgelesen, nicht konfiguriert.

Nachweis 119M08
Debian-IP 10.100.20.43/24, eth0 und Default Route über 10.100.20.254.
Debian-IP 10.100.20.43/24, eth0 und Default Route über 10.100.20.254.

3. Erreichbarkeit und Namensauflösung

Ziel und Einordnung. Rocky war per IP erreichbar, Debian über die eigene IP ebenfalls. Der Windows-/RemoteLab-Client antwortete nicht auf ICMP; das wurde nicht als Linux-Fehler bewertet. rocky9 war über getent hosts nicht auflösbar, weil kein entsprechender Eintrag über die systemweite Namensauflösung sichtbar war; daher wurde im weiteren Verlauf die IP-Adresse 10.100.20.36 genutzt.

Nachweis 120M08
Rocky und Debian per ICMP erreichbar; Windows/RemoteLab antwortet nicht auf ICMP.
Rocky und Debian per ICMP erreichbar; Windows/RemoteLab antwortet nicht auf ICMP.
Nachweis 121M08
localhost/debian13 auflösbar; rocky9 nicht über getent; Resolver lab.local/10.100.0.1.
localhost/debian13 auflösbar; rocky9 nicht über getent; Resolver lab.local/10.100.0.1.

4. SSH-Port, Socketebene und Dienststatus

Ziel und Einordnung. ss zeigte SSH auf Port 22 und eine aktive Verbindung zwischen Windows/RemoteLab und Debian. Ergänzend bestätigte systemctl, dass der SSH-Dienst aktiv und aktiviert ist. Socketebene und Dienstebene wurden damit getrennt betrachtet.

Nachweis 122M08
SSH lauscht auf Port 22; aktive SSH-Verbindung und SSH-Dienst active/enabled sichtbar.
SSH lauscht auf Port 22; aktive SSH-Verbindung und SSH-Dienst active/enabled sichtbar.

5. SSH-Key-Erzeugung

Ziel und Einordnung. Ein ED25519-Key wurde für M08 erzeugt. Die Rechte zeigen den privaten Schlüssel restriktiv und den Public Key lesbar. Der Inhalt des privaten Schlüssels wurde nicht angezeigt und ist nicht Bestandteil der Dokumentation.

Nachweis 123M08
ED25519-Key erzeugt; Private/Public-Key-Dateien, Rechte und Fingerprint sichtbar.
ED25519-Key erzeugt; Private/Public-Key-Dateien, Rechte und Fingerprint sichtbar.

6. Public-Key-Verteilung und Rechte auf Rocky

Ziel und Einordnung. Der Public Key wurde manuell auf Rocky in authorized_keys eingetragen. Die Rechte 700 für .ssh und 600 für authorized_keys wurden geprüft.

Nachweis 124M08
Public Key auf Rocky in authorized_keys; .ssh mit 700 und authorized_keys mit 600.
Public Key auf Rocky in authorized_keys; .ssh mit 700 und authorized_keys mit 600.

7. SSH-Aufruf mit deaktivierter Passwortauthentifizierung

Ziel und Einordnung. Der SSH-Aufruf mit expliziter Schlüsseldatei und PasswordAuthentication=no war erfolgreich. Damit war Passwortauthentifizierung für diesen Aufruf deaktiviert. Der Nachweis identifiziert jedoch weder den tatsächlich akzeptierten Schlüssel noch die konkrete alternative Authentifizierungsmethode eindeutig; ein gebundener SSH-Debug- oder Serverlogbeleg liegt nicht vor.

Nachweis 125M08
Erfolgreicher SSH-Aufruf mit expliziter Schlüsseldatei und deaktivierter Passwortauthentifizierung; die tatsächlich akzeptierte Authentifizierungsmethode ist aus diesem Nachweis nicht eindeutig bestimmbar.
Erfolgreicher SSH-Aufruf mit expliziter Schlüsseldatei und deaktivierter Passwortauthentifizierung; die tatsächlich akzeptierte Authentifizierungsmethode ist aus diesem Nachweis nicht eindeutig bestimmbar.

8. Dateiübertragung mit scp

Ziel und Einordnung. Eine lokale Testdatei wurde von Debian per scp nach Rocky übertragen und anschließend remote mit ls und cat validiert. Das belegt eine einfache SSH-basierte Dateiübertragung, aber kein vollständiges Backup-Konzept.

Nachweis 126M08
Testdatei auf Debian erstellt, per scp nach Rocky übertragen und remote validiert.
Testdatei auf Debian erstellt, per scp nach Rocky übertragen und remote validiert.

9. rsync-Verfügbarkeit, Dry-Run und echter Sync

Ziel und Einordnung. Rocky hatte rsync, Debian zunächst nicht. Debian wurde kontrolliert per apt ergänzt. Danach wurden zwei Testdateien zuerst per rsync --dry-run geprüft und anschließend real synchronisiert. Die Zielinhalte wurden auf Rocky validiert.

Nachweis 127M08
rsync fehlt auf Debian, ist auf Rocky vorhanden; Teststruktur und Remote-Zielordner vorbereitet.
rsync fehlt auf Debian, ist auf Rocky vorhanden; Teststruktur und Remote-Zielordner vorbereitet.
Nachweis 128M08
rsync auf Debian per apt installiert und Version 3.4.1 validiert.
rsync auf Debian per apt installiert und Version 3.4.1 validiert.
Nachweis 129M08
rsync --dry-run, echter Sync und Remote-Validierung von file1.txt/file2.txt.
rsync --dry-run, echter Sync und Remote-Validierung von file1.txt/file2.txt.

10. Netzwerk- und Transferreport

Ziel und Einordnung. Der Report bündelt die Diagnosekette und Ergebnisse. Er ersetzt nicht die Screenshots, macht den Ablauf aber nachvollziehbar und wiederverwendbar.

Nachweis 130M08
Netzwerk-/Transferreport wird per Here-Doc erstellt.
Netzwerk-/Transferreport wird per Here-Doc erstellt.
Nachweis 131M08
Report mit Diagnosekette, Ergebnissen und technischen Grenzen.
Report mit Diagnosekette, Ergebnissen und technischen Grenzen.

11. Ergebnisübersicht

Ziel und Einordnung. Die Ergebnisübersicht zeigt lokale Artefakte, SSH-Key-Dateien als Dateinamen, Remote-Dateien auf Rocky und die lokale rsync-Version. Der private Key-Inhalt wurde nicht angezeigt.

Nachweis 132M08
Lokale Dateien, SSH-Key-Dateien und Remote-Zielstatus auf Rocky sichtbar.
Lokale Dateien, SSH-Key-Dateien und Remote-Zielstatus auf Rocky sichtbar.
Nachweis 133M08
Lokale rsync-Version und Report-Kurzansicht sichtbar.
Lokale rsync-Version und Report-Kurzansicht sichtbar.

Ergebnis

M08 verbindet Netzwerkdiagnose, Socket- und Dienstprüfung, einen erfolgreichen SSH-Aufruf mit expliziter Schlüsseldatei und deaktivierter Passwortauthentifizierung, Dateiübertragung sowie kontrollierte Synchronisation. Die tatsächlich akzeptierte Authentifizierungsmethode und der konkret akzeptierte Schlüssel sind aus dem vorhandenen Nachweis nicht bestimmbar.

SSH-Authentifizierung und Schlüsselgrenze

Die Passwortauthentifizierung war für den SSH-Aufruf deaktiviert, und der Aufruf war erfolgreich. Die tatsächlich akzeptierte Authentifizierungsmethode und der konkret akzeptierte Schlüssel sind aus dem vorhandenen Nachweis nicht eindeutig bestimmbar. Die private Key-Datei ist nicht enthalten.

Nicht dokumentierter Endzustand

Ein Cleanup der Testdateien und SSH-Key-Artefakte ist nicht dokumentiert. Ihr späterer Zustand ist daher nicht bestimmt.

Nachweis 134M08
Remote Admin Kette
Remote Admin Kette

Zum Dokumentanfang

M09

Shell-Scripting und Scheduling-Einordnung

Modul: M09
Hauptsystem: Debian debian13
Arbeitsverzeichnis: /home/student/linux_m09

Kurzfassung

In M09 wurde ein kleines Bash-Skript m09_basic_check.sh erstellt, das ein Zielverzeichnis als Argument erwartet, Fehlerfälle sauber über Exit-Codes behandelt, Statuswerte ausgibt und eine Logdatei schreibt. Das Skript wurde ausführbar gemacht, mit Fehler- und Erfolgsfällen getestet, über bash -n syntaktisch geprüft und mit einer einfachen Schleife mehrfach ausgeführt. Zusätzlich wurde cron gegenüber systemd.timer eingeordnet, ohne bereits M11 vorwegzunehmen.

Technische Übersicht

Arbeitsfeld Nachweis
Bash-Grundstruktur Shebang, Variablen, Argument $1
Fehlerbehandlung Exit-Codes 2 und 1
Erfolgsvalidierung Exit-Code 0, Logdatei, Statusausgabe
Schleifenlogik for-Schleife über mehrere Zielverzeichnisse
Syntax- und Ausführungsprüfung bash -n, test -x, direkter Bash-Aufruf
Scheduling-Einordnung cron vs. systemd.timer, Abgrenzung zu M11

Ablaufübersicht

Nachweis 135M09
Ablauf von Argumentprüfung und Zielvalidierung über Verarbeitung und Logausgabe bis zum differenzierten Exit-Code.
Ablauf von Argumentprüfung und Zielvalidierung über Verarbeitung und Logausgabe bis zum differenzierten Exit-Code.

1. Ausgangszustand und Toolcheck

Ziel: System-, Shell- und Werkzeugkontext dokumentieren.
Skripte sind nur bewertbar, wenn Shell, Arbeitsverzeichnis und verfügbare Werkzeuge bekannt sind.

Nachweis 136M09
Arbeitsordner, Debian-Kontext und verfügbare Scripting-Werkzeuge vor Beginn.
Arbeitsordner, Debian-Kontext und verfügbare Scripting-Werkzeuge vor Beginn.

Nachweis: Belegt den reproduzierbaren Startzustand für M09.

Ergebnis: Debian debian13, Benutzer student, Bash und relevante Werkzeuge waren verfügbar.

2. Skriptstruktur

Ziel: Wiederverwendbares Bash-Skript als Artefakt erstellen.
M09 zeigt Grundlagen für spätere Automatisierung: Shebang, Variablen, Argumente, if, Logausgabe, Schleife und Exit-Codes.

Nachweis 137M09
Bash-Skript mit Shebang, Variablen, Argumentprüfung, Schleife und Logausgabe.
Bash-Skript mit Shebang, Variablen, Argumentprüfung, Schleife und Logausgabe.

Nachweis: Belegt Shebang, Variablen, Argument $1, if-Prüfung, Logausgabe, Schleife und Exit-Codes im Skript.

Ergebnis: Das Skript bildet einen kleinen, kontrollierten Bash-Grundlagen-Nachweis.

3. Fehlerfälle und Exit-Codes

Ziel: Fehlerarten unterscheidbar behandeln.
Fehlende Argumente und ungültige Zielverzeichnisse sind unterschiedliche Fehler und sollten differenzierte Exit-Codes liefern.

Nachweis 138M09
Aufruf ohne Argument endet kontrolliert mit dem dafür vorgesehenen Exit-Code.
Aufruf ohne Argument endet kontrolliert mit dem dafür vorgesehenen Exit-Code.

Nachweis: Belegt Eingabeprüfung und differenzierten Exit-Code für fehlende Parameter.

Nachweis 139M09
Ein ungültiges Zielverzeichnis wird als eigener Fehlerfall mit separatem Exit-Code behandelt.
Ein ungültiges Zielverzeichnis wird als eigener Fehlerfall mit separatem Exit-Code behandelt.

Nachweis: Belegt Vorbedingungsprüfung über Verzeichnisexistenz.

Ergebnis: Fehlendes Argument führt zu Exit-Code=2; nicht vorhandenes Zielverzeichnis führt zu Exit-Code=1.

4. Erfolgsfall, Logdatei und Schleife

Ziel: Regulären Lauf und Wiederholungslogik belegen.
Ein erfolgreicher Skriptlauf wird durch zusammenpassende Ausgabe, Logdatei und Exit-Code bestätigt.

Nachweis 140M09
Erfolgreicher Skriptlauf schreibt die erwartete Logausgabe und endet mit Exit-Code 0.
Erfolgreicher Skriptlauf schreibt die erwartete Logausgabe und endet mit Exit-Code 0.

Nachweis: Belegt funktionierenden Erfolgsfall und Nachvollziehbarkeit über Logs.

Nachweis 141M09
Die Schleife verarbeitet mehrere Zielverzeichnisse in einem Lauf.
Die Schleife verarbeitet mehrere Zielverzeichnisse in einem Lauf.

Nachweis: Belegt einfache Wiederholungslogik und sichere Mehrfachprüfung.

Ergebnis: Der Erfolgsfall endet mit Exit-Code=0; Schleifenläufe für alpha und beta sind sichtbar.

5. Syntax- und Ausführungsprüfung

Ziel: Syntax und Ausführbarkeit prüfen. bash -n prüft Syntax, aber nicht fachliche Logik; daher ergänzt es die Testfälle.

Nachweis 142M09
Syntaxprüfung mit bash -n und Ausführbarkeitsprüfung; die fachliche Logik wird durch die separaten Testfälle belegt.
Syntaxprüfung mit bash -n und Ausführbarkeitsprüfung; die fachliche Logik wird durch die separaten Testfälle belegt.

Nachweis: Belegt technische Mindestprüfung und Ausführbarkeit des Skripts.

Ergebnis: Syntax und Ausführbarkeit sind nachgewiesen.

6. Scheduling-Einordnung

Ziel: cron und systemd.timer fachlich einordnen, ohne M11 vorwegzunehmen.
Cron ist verbreitet und einfach; systemd.timer ist enger in systemctl und journalctl integriert.

Nachweis 143M09
Gegenüberstellung von cron und systemd-Timer; in M09 wurde keine Zeitsteuerung eingerichtet.
Gegenüberstellung von cron und systemd-Timer; in M09 wurde keine Zeitsteuerung eingerichtet.

Nachweis: Belegt, dass M09 Scheduling einordnet, aber die praktische Timer-Umsetzung auf M11 verschiebt.

Ergebnis: Scheduling wurde eingeordnet, aber kein Cronjob und kein systemd.timer aktiviert.

7. Report und Ergebnis

Ziel: Ergebnis und Artefaktbasis zusammenführen.

Nachweis 144M09
Scripting-Report fasst Aufbau, Testfälle, Exit-Codes und Grenzen zusammen.
Scripting-Report fasst Aufbau, Testfälle, Exit-Codes und Grenzen zusammen.

Nachweis: Belegt die fachliche Zusammenfassung des Moduls.

Nachweis 145M09
Ergebnisübersicht mit Debian-Kontext, Skript und erfolgreichem Testlauf.
Ergebnisübersicht mit Debian-Kontext, Skript und erfolgreichem Testlauf.

Nachweis: Belegt, dass M09 mit funktionsfähigem Skript abgeschlossen wurde.

Nachweis 146M09
Ergebnisübersicht mit Reports, Notizen und Logdateien des Moduls.
Ergebnisübersicht mit Reports, Notizen und Logdateien des Moduls.

Nachweis: Belegt Reports, Notizen und Logdateien des Moduls.

Ergebnis: Skript, Logdatei, Scheduling-Notiz und Report sind vorhanden und durch die beschriebenen Testfälle eingeordnet.

Ergebnis

Es wurde ein Bash-Skript mit Eingabeprüfung, Fehlerbehandlung, Logausgabe, Schleife und Exit-Codes erstellt und validiert. M11 führt diese Grundlagen mit einem systemd-Service und einem systemd-Timer fort.

Troubleshooting und Abweichungen

Punkt Einordnung
Logdatei enthält mehrere Einträge Die Einträge stammen aus wiederholten Testläufen.
Here-Document-Erstellungsframes Die Folgeansichten zeigen Skript und Testergebnisse; die Erstellungsframes bleiben im Archiv.
cron und systemd.timer nur eingeordnet Die praktische Timer-Umsetzung folgt in M11.
kein ShellCheck ShellCheck wurde nicht eingesetzt und war laut Kursplanung nicht vorausgesetzt.

Abgrenzung

Nicht umgesetzt:

  • kein produktiver Healthcheck,
  • kein aktivierter Cronjob,
  • kein praktisch umgesetzter systemd.timer,
  • keine ShellCheck-/Unit-Test-Suite,
  • keine Root-/sudo-Automatisierung.

Nicht umgesetzte Erweiterungen

  • In M09 wurden weder ein systemd-Service noch ein systemd-Timer umgesetzt.
  • ShellCheck wurde nicht eingesetzt.

Zum Dokumentanfang

M10

Mosquitto und MQTT-Funktionsprüfung

Kurzfassung

In M10 wurde Mosquitto auf Debian installiert und als lokaler MQTT-Broker untersucht. Paketstatus, systemd-Dienststatus, Listener, Baseline-Konfiguration und Logs wurden geprüft. Der erste manuelle Pub/Sub-Test endete mit timeout/Exit-Code 124 und zeigte keinen Nachrichtenempfang. Ein gekoppelter Pub/Sub-Test und ein zusätzlicher Retained-Message-Test zeigten anschließend den lokalen Nachrichtenempfang. Der Broker wurde nicht extern geöffnet; ein falscher Client-Port wurde als Client-/Zielportfehler eingeordnet.

Technische Übersicht

Bereich Ergebnis
Paketverwaltung Mosquitto und mosquitto-clients kontrolliert installiert
systemd mosquitto.service mit ActiveState=active und SubState=running geprüft
Netzwerk/Ports Listener auf 127.0.0.1:1883 und ::1:1883 geprüft
Konfiguration Baseline-Konfiguration gesichtet und gesichert
MQTT-Test Gekoppelter Pub/Sub-Test und Retained Message mit sichtbarem Nachrichtenempfang
Troubleshooting Timeout-Erstversuch und falscher Port fachlich eingeordnet
Sicherheit Loopback-Bindung beibehalten; keine Authentifizierung, ACL oder TLS umgesetzt

Strukturelle Übersicht

Mosquitto auf debian13
  ├─ systemd-Dienst: mosquitto.service
  ├─ Listener: 127.0.0.1:1883 / ::1:1883
  ├─ Pub/Sub-Test
  │   ├─ Erstversuch: kein Empfang, timeout 124
  │   ├─ gekoppelter Versuch: Publish + Subscribe erfolgreich
  │   └─ Retained-Test: Nachricht vor Subscriber-Start publiziert, später empfangen
  └─ kontrollierter Clientfehler: Port 1884 → Connection refused

Ausgangszustand und Toolcheck

Vor Beginn wurde geprüft, dass Mosquitto und die Clients noch nicht installiert waren. Dadurch ist der spätere Installationsnachweis eindeutig und nicht nur eine Bestätigung eines bereits vorhandenen Zustands.

Nachweise

  • Vor M10 sind mosquitto, mosquitto_pub und mosquitto_sub nicht vorhanden; systemctl, journalctl und ss sind verfügbar.

Installation, Dienststatus und Listener

Die Installation stellt Broker und CLI-Clients bereit. Direkt danach wurden Paketstatus, systemd-Status, Autostart und Listener geprüft, weil eine reine Paketinstallation noch keine funktionsfähige MQTT-Validierung beweist.

Nachweise:

  • Mosquitto und mosquitto-clients werden installiert; mosquitto.service wird eingerichtet.
  • Paketstatus, mosquitto active/enabled und lokale Listener 127.0.0.1:1883 sowie ::1:1883.

Baseline-Konfiguration und Logs

Vor weiteren Tests wurden Mosquitto-Konfigurationspfade, Hauptkonfiguration, Logs und Baseline-Kopien geprüft. Das entspricht einer sauberen Admin-Reihenfolge: erst Ist-Zustand sichern, dann interpretieren oder ändern.

Nachweise:

  • Mosquitto-Konfigurationspfade, conf.d und mosquitto.conf mit include_dir.
  • journalctl zeigt Dienststart; mosquitto.conf und conf.d werden als Baseline gesichert.

Pub/Sub-Erstversuch: Timing ohne Empfangsnachweis

Der erste manuelle Pub/Sub-Test lieferte keinen Nachrichtenempfang. Der Subscriber wurde durch timeout mit Exit-Code 124 beendet; die Ausgabedatei blieb leer. Daraus folgt kein Mosquitto-Broker-Ausfall: Bei Standard-QoS 0 und nicht-retained Nachrichten zeigt ein erfolgreicher Publish allein nicht, dass ein konkreter Subscriber die Nachricht erhalten hat.

Nachweise:

  • Manueller Pub/Sub-Test: Subscriber endet mit timeout 124, Publish selbst ist erfolgreich, aber keine Nachricht wurde empfangen.

Erfolgreicher gekoppelter Pub/Sub-Test

Der Test wurde anschließend automatisch gekoppelt: Subscriber starten, kurz warten, Publisher senden, Subscriber abwarten. Dadurch wurden Publish-Exit-Code=0, Subscribe-Exit-Code=0 und die empfangene Nachricht nachgewiesen. Der Test zeigt die lokale Brokerfunktion; manuelle Timing-Tests bleiben dennoch anfällig.

Nachweise:

  • Automatisch gekoppelter Pub/Sub-Test: Publish/Subscribe Exit-Code 0 und empfangene Nachricht.

Robuste MQTT-Validierung mit retained Message

Für einen vom manuellen Startzeitpunkt unabhängigen Test wurde zusätzlich eine Retained Message verwendet. Sie wurde vor dem Subscriber-Start auf ein Testtopic veröffentlicht und anschließend erfolgreich empfangen.

Nachweise:

  • Retained Message wird veröffentlicht, späterer Subscriber empfängt m10/retained-clean M10 retained clean validation message, Exit-Codes 0, Fehlerausgabe leer.

Labor- und Sicherheitsentscheidung

Da der lokale Listener funktionierte, wurde Mosquitto nicht auf externe Interfaces geöffnet. Es wurde keine zusätzliche allow_anonymous true-Konfiguration geschrieben. Präzise einzuordnen ist: Der erfolgreiche lokale Test lief ohne produktive Authentifizierung; die Schutzwirkung im Lab besteht in der Loopback-Bindung, nicht in einer Authentifizierungslösung.

Nachweise:

  • Dokumentierte Entscheidung: keine externe Öffnung, keine zusätzliche allow_anonymous-Konfiguration, Sicherheitsabgrenzung.
  • Listener bleibt localhost; conf.d enthält nur README.

Kontrollierter Fehlerfall: falscher Port

Port 1884 wurde absichtlich als falscher Client-Zielport verwendet. Connection refused und Exit-Code 1 wurden gegen den aktiven Listener auf Port 1883 geprüft. Damit ist klar: Fehlerursache ist der Zielport, nicht der Broker.

Nachweise:

  • Port 1883 aktiv, Port 1884 nicht; mosquitto_pub/sub melden Connection refused und Exit-Code 1.

Triage-Report

Der Report fasst Ausgangszustand, Tests, Fehleranalyse, Laborentscheidung, Sicherheitsabgrenzung und Erkenntnisse zusammen. Er ist ein eigenes Admin-Artefakt und keine bloße Screenshot-Galerie.

Nachweise:

  • Report mit Ziel, Ausgangszustand, Schritten, Ergebnis und Fehleranalyse.
  • Report mit Fehleranalyse, Sicherheitsabgrenzung und Erkenntnisse.

Ergebnis

Ein zusätzlicher Check zeigt ActiveState=active, SubState=running, Result=success, MainPID, Listener und Pub/Sub-Ergebnis.

Nachweise:

  • M10-Dateien, Pub/Sub-Nachweis und Laborentscheidung sichtbar.
  • ActiveState=active, SubState=running, Result=success, MainPID, Listener und Pub/Sub-Ergebnis sind gemeinsam sichtbar.

Zusammenfassung

M10 dokumentiert Installation, Dienststatus, Listener, Baseline-Sicherung, Pub/Sub-Validierung, Fehleranalyse und Sicherheitsabgrenzung. Der manuelle Erstversuch endete ohne Empfang; der Retained-Message-Test zeigt den Nachrichtenempfang unabhängig vom manuellen Startzeitpunkt des Subscribers.

Abgrenzungen

Nicht umgesetzt: externe Brokerbereitstellung, produktive MQTT-Härtung, TLS, ACLs, Authentifizierung, Firewall-Freigaben oder ein Rocky-/Remote-Client-Test gegen Mosquitto.

Erkenntnisse

Erkenntnisse M10

  • Vor einer Konfigurationsänderung sollte der tatsächliche Ausgangszustand geprüft werden: Paketstatus, Dienststatus, Listener und Baseline-Konfiguration.
  • systemctl beantwortet die Frage, ob der Dienst läuft; ss beantwortet, auf welchen Interfaces und Ports der Dienst lauscht.
  • Ein MQTT-Pub/Sub-Test ist nur aussagekräftig, wenn der Empfang wirklich nachgewiesen wird.
  • Ein Exit-Code 124 stammt vom timeout-Kommando und zeigt, dass das Zeitfenster abgelaufen ist.
  • Standard-Pub/Sub mit QoS 0 und nicht-retained Nachricht ist als manueller Timing-Nachweis anfällig.
  • Eine retained Message ist für einen robusteren Lab-Nachweis geeignet, weil ein später gestarteter Subscriber die zuletzt gespeicherte Nachricht erhalten kann.
  • Das Nicht-Setzen von allow_anonymous true ist keine Authentifizierungsmaßnahme. Die eigentliche Begrenzung im M10-Lab ist die Loopback-Bindung.
  • Ein Fehler auf Port 1884 bei aktivem Listener auf Port 1883 ist ein Client-/Zielportfehler, kein Broker-Ausfall.
  • Authentifizierung, ACLs, TLS, Netzfreigabe und Firewall wurden nicht umgesetzt; der Broker blieb auf die Loopback-Schnittstelle begrenzt.
Nachweis 147M10
Vor M10 sind mosquitto, mosquitto_pub und mosquitto_sub nicht vorhanden; systemctl, journalctl und ss sind verfügbar.
Vor M10 sind mosquitto, mosquitto_pub und mosquitto_sub nicht vorhanden; systemctl, journalctl und ss sind verfügbar.
Nachweis 148M10
Mosquitto und mosquitto-clients werden installiert; mosquitto.service wird eingerichtet.
Mosquitto und mosquitto-clients werden installiert; mosquitto.service wird eingerichtet.
Nachweis 149M10
Paketstatus, mosquitto active/enabled und lokale Listener 127.0.0.1:1883 sowie ::1:1883.
Paketstatus, mosquitto active/enabled und lokale Listener 127.0.0.1:1883 sowie ::1:1883.
Nachweis 150M10
Mosquitto-Konfigurationspfade, conf.d und mosquitto.conf mit include_dir.
Mosquitto-Konfigurationspfade, conf.d und mosquitto.conf mit include_dir.
Nachweis 151M10
journalctl zeigt Dienststart; mosquitto.conf und conf.d werden als Baseline gesichert.
journalctl zeigt Dienststart; mosquitto.conf und conf.d werden als Baseline gesichert.

Pub/Sub-Erstversuch: Timingfehler

Nachweis 152M10
Manueller Pub/Sub-Test: Subscriber endet mit timeout 124; keine empfangene Nachricht; nicht als Broker-Ausfall bewertet.
Manueller Pub/Sub-Test: Subscriber endet mit timeout 124; keine empfangene Nachricht; nicht als Broker-Ausfall bewertet.
Nachweis 153M10
Automatisch gekoppelter Pub/Sub-Test: Publish/Subscribe Exit-Code 0 und empfangene Nachricht.
Automatisch gekoppelter Pub/Sub-Test: Publish/Subscribe Exit-Code 0 und empfangene Nachricht.

MQTT-Validierung mit Retained Message

Nachweis 154M10
Retained Message wird vor Subscriber-Start veröffentlicht und anschließend erfolgreich empfangen.
Retained Message wird vor Subscriber-Start veröffentlicht und anschließend erfolgreich empfangen.
Nachweis 155M10
Dokumentierte Entscheidung: keine externe Öffnung und keine zusätzliche allow_anonymous-Konfiguration.
Dokumentierte Entscheidung: keine externe Öffnung und keine zusätzliche allow_anonymous-Konfiguration.
Nachweis 156M10
Listener bleibt localhost; conf.d enthält nur README.
Listener bleibt localhost; conf.d enthält nur README.
Nachweis 157M10
Port 1883 aktiv, Port 1884 nicht; mosquitto_pub/sub melden Connection refused und Exit-Code 1.
Port 1883 aktiv, Port 1884 nicht; mosquitto_pub/sub melden Connection refused und Exit-Code 1.
Nachweis 158M10
Report mit Ziel, Ausgangszustand, Schritten, Ergebnis und Fehleranalyse.
Report mit Ziel, Ausgangszustand, Schritten, Ergebnis und Fehleranalyse.
Nachweis 159M10
Report mit Fehleranalyse und Sicherheitsabgrenzung.
Report mit Fehleranalyse und Sicherheitsabgrenzung.
Nachweis 160M10
Ergebnisübersicht mit Moduldateien, Pub/Sub-Ergebnis und der Entscheidung für einen lokalen Listener.
Ergebnisübersicht mit Moduldateien, Pub/Sub-Ergebnis und der Entscheidung für einen lokalen Listener.
Nachweis 161M10
Geprüfter Dienstzustand mit ActiveState=active, SubState=running, Result=success, MainPID, Listener und Pub/Sub-Ergebnis.
Geprüfter Dienstzustand mit ActiveState=active, SubState=running, Result=success, MainPID, Listener und Pub/Sub-Ergebnis.

Zum Dokumentanfang

M11

Healthcheck mit systemd-Service und Timer

System: Debian debian13
Benutzerkontext: student
Arbeitsordner: /home/student/linux_m11

Kurzfassung

In M11 wurde ein Bash-basiertes Healthcheck-Skript erstellt, das Dateisystembelegung, Speicherstatus, Load/Uptime und fehlgeschlagene systemd-Units protokolliert. Das Skript wurde manuell geprüft, als systemd-oneshot-Service eingebunden, über einen systemd.timer automatisiert ausgeführt und über list-timers, Journal sowie Logdatei validiert. Eine fehlerhafte Documentation=-Freitextzeile in der Service-Unit wurde erkannt und korrigiert. Nach dem Lab-Test wurde der Timer kontrolliert deaktiviert. M11 ist kein produktives Monitoring-System, sondern ein nachvollziehbarer systemd-basierter Automatisierungsnachweis.

Strukturelle Übersicht

Nachweis 162M11
systemd Timer Flow
systemd Timer Flow

Technische Übersicht

Arbeitsfeld Nachweis in M11
Bash-Scripting eigenes Healthcheck-Skript mit Messwerten und Logausgabe
Systemdiagnose df, free, uptime, systemctl --failed
systemd-Service Type=oneshot, User=student, ExecStart
systemd-Timer OnBootSec, OnUnitActiveSec, enable --now, list-timers
Validierung Journal, Logdatei, Exit-/Statuswerte
Betriebssorgfalt Timer nach Lab-Test kontrolliert deaktiviert

1. Ausgangszustand und Toolcheck

Ziel: Reproduzierbaren Startzustand für die Automatisierung erfassen.

Ein systemd-Timer ist nur sinnvoll dokumentierbar, wenn vorher klar ist, auf welchem System, mit welchen Werkzeugen und mit welchem Ausgangszustand gearbeitet wurde.

Arbeitsschritte und Nachweise: Im Arbeitsordner /home/student/linux_m11 wurden Host, Benutzer, Pfad, Datum, Toolverfügbarkeit und fehlgeschlagene Units geprüft.

Nachweise:

  • Startzustand von M11: Toolbasis vorhanden und keine failed Units.

Ergebnis: Die Werkzeugbasis war vollständig vorhanden; systemctl --failed zeigte keine fehlgeschlagenen Units.

Erkenntnisse / Hinweise: Vor einer Automatisierung erst den Systemzustand prüfen, damit spätere Timer-/Service-Fehler nicht mit Altproblemen verwechselt werden.

Nachweis 163M11
Startzustand von M11: Toolbasis vorhanden und keine failed Units.
Startzustand von M11: Toolbasis vorhanden und keine failed Units.

2. Healthcheck-Skript mit festem Projektpfad

Ziel: Ein wiederverwendbares Bash-Skript erstellen, das relevante Systemwerte protokolliert.

Das Skript ist die fachliche Nutzlast des Moduls. Die systemd-Units automatisieren nur dessen Ausführung. Der Logpfad wurde bewusst fest auf /home/student/linux_m11 gesetzt, weil $HOME im systemd-Kontext je nach Benutzerkontext uneindeutig sein kann.

Arbeitsschritte und Nachweise: Das korrigierte Skript nutzt df -h /, free -h, uptime und systemctl --failed --no-pager. Die Ausgabe wird mit tee -a parallel im Terminal und in der Projektlogdatei gespeichert.

Nachweise:

  • Korrigiertes Healthcheck-Skript mit festem Projektpfad und relevanten Systemprüfungen.

Ergebnis: Das Skript ist ausführbar, enthält die relevanten Healthcheck-Bausteine und schreibt konsistent in die Projektlogdatei.

Erkenntnisse / Hinweise: Feste Pfade sind bei systemd-Services robuster als implizite Umgebungsvariablen.

Nachweis 164M11
Korrigiertes Healthcheck-Skript mit festem Projektpfad und den vorgesehenen Systemprüfungen.
Korrigiertes Healthcheck-Skript mit festem Projektpfad und den vorgesehenen Systemprüfungen.

m11_healthcheck.sh

Das Skript verwendet /home/student/linux_m11 als Projektpfad, legt das Logverzeichnis an, protokolliert Dateisystem, Speicher, Uptime/Load und fehlgeschlagene systemd-Units und hängt die Ausgabe mit tee -a an die Logdatei an.

#!/bin/bash

PROJECT_DIR="/home/student/linux_m11"
LOG_FILE="$PROJECT_DIR/logs/m11_healthcheck.log"

mkdir -p "$(dirname "$LOG_FILE")"

{
  echo "===== M11 Healthcheck ====="
  echo "Zeitpunkt: $(date)"
  echo "Host: $(hostname)"
  echo "Ausgeführt als: $(whoami)"
  echo

  echo "=== Dateisystem / ==="
  df -h /
  echo

  echo "=== Speicherstatus ==="
  free -h
  echo

  echo "=== Load Average / Uptime ==="
  uptime
  echo

  echo "=== Fehlgeschlagene systemd-Units ==="
  systemctl --failed --no-pager || true
  echo

  echo "=== Ende Healthcheck ==="
  echo
} | tee -a "$LOG_FILE"

exit 0

m11_healthcheck.sh lokal herunterladen

Ausführungsgrenze: Das Skript nutzt weder set -e noch pipefail. systemctl --failed wird ausdrücklich mit || true maskiert, die Pipeline liefert regulär den Status von tee und das abschließende exit 0 erzwingt den Wrapper-Erfolg. Einzelne Teilchecks müssen deshalb über ihre Ausgabe beurteilt werden.

3. Manuelle Validierung vor systemd

Ziel: Skriptfehler vor der Integration in systemd ausschließen.

Wenn ein Skript bereits manuell fehlschlägt, ist systemd nicht die Ursache. Die manuelle Prüfung trennt Skriptlogik von Unit- und Timerlogik.

Arbeitsschritte und Nachweise: Das Skript wurde mit bash -n geprüft, anschließend manuell ausgeführt und die erzeugte Logdatei kontrolliert.

Nachweise:

  • Manueller Healthcheck-Lauf vor systemd-Einbindung erfolgreich.
  • Logdatei wurde erzeugt und enthält den manuellen Healthcheck-Lauf.

Ergebnis: bash -n bestätigte die Syntax. Der manuelle Wrapperlauf endete mit Exit-Code 0; die sichtbaren Ausgaben und die Logdatei zeigen Dateisystem, Speicher, Load/Uptime und failed Units. Wegen des abschließenden exit 0 ist der Exit-Code allein kein Beleg für jeden Teilcheck.

Erkenntnisse / Hinweise: Automatisierung erst nach erfolgreichem manuellen Test aktivieren.

Nachweis 165M11
Manueller Healthcheck-Lauf vor systemd-Einbindung erfolgreich.
Manueller Healthcheck-Lauf vor systemd-Einbindung erfolgreich.
Nachweis 166M11
Logdatei wurde erzeugt und enthält den manuellen Healthcheck-Lauf.
Logdatei wurde erzeugt und enthält den manuellen Healthcheck-Lauf.

4. systemd-Service als oneshot

Ziel: Das Healthcheck-Skript als systemd-Service ausführbar machen.

Type=oneshot passt für kurz laufende Admin-Aufgaben. Der Dienst startet das Skript, wartet auf dessen Ende und ist danach wieder inactive (dead). Dieser Zustand ist nach erfolgreichem Lauf kein Fehler.

Arbeitsschritte und Nachweise: Die Service-Datei wurde unter /etc/systemd/system/m11-healthcheck.service erstellt, per daemon-reload eingelesen und nach der Korrektur erfolgreich gestartet.

Nachweise:

  • Korrigierte Service-Datei wurde neu geladen und erfolgreich gestartet.
  • Service lief nach Bereinigung erfolgreich; Journal enthält Healthcheck-Ausgaben.
  • Service-Ausführung ist in der Projektlogdatei nachvollziehbar.

Ergebnis: Der Service-Wrapper endete mit Result=success und ExecMainStatus=0; Journal und Logdatei enthalten Healthcheck-Ausgaben. Wegen der Skriptlogik beschreiben diese Statuswerte nur das Ende der Wrapper-Ausführung, nicht den Erfolg jedes einzelnen Systemchecks.

Erkenntnisse / Hinweise: Bei einem oneshot-Service ist inactive (dead) nach dem Lauf normal. Result und ExecMainStatus müssen zusammen mit Skriptlogik, Journal und Loginhalt gelesen werden; hier maskieren || true, die Pipeline ohne pipefail und das abschließende exit 0 mögliche Teilfehler.

Nachweis 167M11
Korrigierte Service-Datei ohne fehlerhafte Documentation-Direktive; systemd wurde neu geladen und der Dienst gestartet.
Korrigierte Service-Datei ohne fehlerhafte Documentation-Direktive; systemd wurde neu geladen und der Dienst gestartet.
Nachweis 168M11
Service lief nach Bereinigung erfolgreich; Journal enthält Healthcheck-Ausgaben.
Service lief nach Bereinigung erfolgreich; Journal enthält Healthcheck-Ausgaben.

m11-healthcheck.service

Die oneshot-Unit läuft als Benutzer student, verwendet /home/student/linux_m11 als Arbeitsverzeichnis und startet exakt /home/student/linux_m11/scripts/m11_healthcheck.sh.

[Unit]
Description=M11 Healthcheck Service

[Service]
Type=oneshot
User=student
WorkingDirectory=/home/student/linux_m11
ExecStart=/home/student/linux_m11/scripts/m11_healthcheck.sh

m11-healthcheck.service lokal herunterladen

Ausführungsgrenze: Die Unit enthält keinen Install-Abschnitt und keine zusätzlichen Hardening-Direktiven. Result=success und ExecMainStatus=0 zeigen eine beendete Skript-Wrapper-Ausführung; wegen dessen Fehlerbehandlung belegen sie nicht den Erfolg jedes internen Healthchecks.

5. Korrektur der Documentation-Zeile

Ziel: Unit-Warnungen erkennen und bereinigen.

Die ursprüngliche Documentation=-Zeile enthielt Freitext, obwohl systemd dort gültige Dokumentations-URIs erwartet. systemd meldete deshalb eine Warnung; der Healthcheck selbst lief weiter.

Arbeitsschritte und Nachweise: Die Freitextzeile wurde entfernt, die Unit neu geschrieben, per daemon-reload eingelesen und der Service erneut gestartet.

Nachweise:

  • Korrigierte Service-Datei wurde neu geladen und erfolgreich gestartet.

Ergebnis: Die korrigierte Service-Datei enthält keine fehlerhafte Documentation=-Direktive mehr.

Erkenntnisse / Hinweise: Journal-Ausgaben sollten nicht nur auf harte Fehler, sondern auch auf Warnungen geprüft werden.

Ergänzende Einordnung zum bereits gezeigten Bildnachweis.

6. systemd-Timer erstellen

Ziel: Die Ausführung des Healthchecks über einen Timer planen.

Ein systemd-Timer ist für wiederkehrende Aufgaben direkt in systemctl und journalctl eingebunden. Für den Lab-Nachweis wurden kurze Intervalle verwendet, damit der automatische Lauf sichtbar geprüft werden konnte.

Arbeitsschritte und Nachweise: Die Timer-Unit definiert OnBootSec=1min, OnUnitActiveSec=2min und triggert m11-healthcheck.service.

Nachweise:

  • systemd-Timer ist definiert und aktiviert später den Healthcheck-Service.
  • Timer-Definition ist vorhanden; Aktivierung erfolgt erst im nächsten Schritt.

Ergebnis: Der Timer war korrekt geladen, aber vor der Aktivierung noch disabled/inactive.

Erkenntnisse / Hinweise: Timer-Erstellung und Timer-Aktivierung sind getrennte Schritte.

Nachweis 169M11
systemd-Timer ist definiert und aktiviert später den Healthcheck-Service.
systemd-Timer ist definiert und aktiviert später den Healthcheck-Service.
Nachweis 170M11
Timer-Definition ist vorhanden; Aktivierung erfolgt erst im nächsten Schritt.
Timer-Definition ist vorhanden; Aktivierung erfolgt erst im nächsten Schritt.

7. Timer aktivieren und geplante Ausführung prüfen

Ziel: Timer aktivieren und dessen geplante Ausführung sichtbar machen.

Erst enable --now macht aus der definierten Timer-Datei eine aktive Automatisierung. list-timers zeigt, welche Unit aktiviert wird und wann die nächste oder letzte Ausführung liegt.

Arbeitsschritte und Nachweise: Der Timer wurde mit systemctl enable --now aktiviert, danach mit status, is-enabled, list-timers und einem kompakten Service-Status geprüft.

Nachweise:

  • Timer wurde aktiviert und wartet auf geplante Ausführung.
  • Service bleibt als oneshot nach Lauf erfolgreich inactive/dead.

Ergebnis: Der Timer war active (waiting), enabled und als Trigger für m11-healthcheck.service sichtbar.

Erkenntnisse / Hinweise: enable --now ist ein präziser Lab-Befehl, weil Aktivierung und Start im selben Schritt nachweisbar sind.

Nachweis 171M11
Timer wurde aktiviert und wartet auf geplante Ausführung.
Timer wurde aktiviert und wartet auf geplante Ausführung.
Nachweis 172M11
Service bleibt als oneshot nach Lauf erfolgreich inactive/dead.
Service bleibt als oneshot nach Lauf erfolgreich inactive/dead.

8. Timerlauf über list-timers, Journal und Log einordnen

Ziel: Belegen, dass der Timer den Healthcheck tatsächlich automatisiert ausgelöst hat.

Eine Timer-Datei allein beweist keine Automatisierung. Den eigentlichen Timer-Trigger belegt hier systemctl list-timers mit LAST, NEXT und der aktivierten Service-Unit. Journal und Logdatei belegen ergänzend, dass der Service erfolgreich ausgeführt wurde und Healthcheck-Ausgaben erzeugt hat; sie zeigen für sich allein jedoch nicht eindeutig den Auslöser eines einzelnen Service-Starts.

Arbeitsschritte und Nachweise: Nach Wartezeit wurden list-timers, systemctl show, journalctl -u m11-healthcheck.service und die Logdatei geprüft.

Nachweise:

  • Timer hat den Healthcheck-Service tatsächlich ausgelöst.
  • Journal belegt mehrere erfolgreiche Healthcheck-Service-Läufe; die Timer-Auslösung selbst ist in S08a über list-timers belegt.
  • Logdatei bestätigt Healthcheck-Ausgaben aus Service-Läufen; der konkrete Timer-Trigger wird über S08a belegt.
  • Mehrere Healthcheck-Läufe wurden in der Logdatei protokolliert; spätere Einträge passen zur Timer-Validierung aus S08a.

Ergebnis: Mehrere Healthcheck-Läufe sind im Journal und in der Logdatei sichtbar. Result=success und ExecMainStatus=0 zeigen eine beendete Wrapper-Ausführung; welche Teilchecks verwertbare Ergebnisse lieferten, ergibt sich aus den protokollierten Ausgaben.

Erkenntnisse / Hinweise: Automatisierung muss mit Ausführungsnachweisen validiert werden, nicht nur mit Konfigurationsdateien.

Nachweis 173M11
Timer hat den Healthcheck-Service tatsächlich ausgelöst.
Timer hat den Healthcheck-Service tatsächlich ausgelöst.
Nachweis 174M11
Journal belegt mehrere erfolgreiche Healthcheck-Service-Läufe; die Timer-Auslösung selbst ist in S08a über list-timers belegt.
Journal belegt mehrere erfolgreiche Healthcheck-Service-Läufe; die Timer-Auslösung selbst ist in S08a über list-timers belegt.

9. Timer kontrolliert deaktivieren

Ziel: Den Lab-Endzustand sauber herstellen.

Ein Test-Timer sollte im Lernsystem nicht unkontrolliert weiterlaufen. Das Deaktivieren ist Teil verantwortlicher Administration.

Arbeitsschritte und Nachweise: Der Timer wurde mit disable --now deaktiviert. Danach wurden Enabled-Status, Active-Status und list-timers geprüft.

Nachweise:

  • Lab-Timer wurde kontrolliert beendet.

Ergebnis: Der Timer steht auf disabled und inactive; in list-timers erscheint kein aktiver M11-Timer mehr.

Erkenntnisse / Hinweise: Automatisierung sauber zurücknehmen ist ein eigener Betriebsnachweis.

Nachweis 175M11
Lab-Timer wurde kontrolliert beendet.
Lab-Timer wurde kontrolliert beendet.

10. Technischer Report und Endzustand

Ziel: Umsetzung, Ergebnis und Abgrenzung in einem Admin-Report zusammenfassen.

Ein Report bündelt Durchführung, beobachtete Ergebnisse und Grenzen. M11 bleibt ein systemd-basierter Automatisierungsnachweis und kein produktives Monitoring.

Arbeitsschritte und Nachweise: Der Report dokumentiert Komponenten, Healthcheck-Inhalte, Umsetzung, Ergebnis, Abgrenzung und Erkenntnisse. Die Ergebnisübersicht zeigt Dateien, Skriptstatus, Units, Timer-Endzustand, Journal und Log.

Nachweise:

  • Technischer Report fasst Komponenten und Umsetzung nachvollziehbar zusammen.
  • Report grenzt M11 klar von produktivem Monitoring ab.
  • Die Übersicht zeigt lokale Artefakte und die korrigierte Service-Datei.
  • Timerzustand, Journal und letzte Service-Ausgaben sind gemeinsam sichtbar.
  • Logausgabe belegt wiederholte Healthcheck-Ausgaben.

Ergebnis: M11 dokumentiert die Kette aus Skript, Service, Timer, Journal- und Logbeobachtung sowie kontrollierter Deaktivierung. Der technische Beleg bleibt auf diese Laborabläufe und die jeweils sichtbaren Ausgaben begrenzt.

Erkenntnisse und Hinweise: Aktivierung, Timerlauf und kontrollierte Deaktivierung werden getrennt gezeigt.

Nachweis 176M11
Technischer Report zu Komponenten und Umsetzung.
Technischer Report zu Komponenten und Umsetzung.
Nachweis 177M11
Report grenzt M11 klar von produktivem Monitoring ab.
Report grenzt M11 klar von produktivem Monitoring ab.

Abgrenzung

Nicht umgesetzt wurden produktives Monitoring, Alerting, E-Mail-Benachrichtigung, Schwellwertlogik, Prometheus/Grafana und ein vollständiger Monitoring-Stack.

Erkenntnisse und Hinweise

Nachweis 178M11
Service-Ausführung ist in der Projektlogdatei nachvollziehbar.
Service-Ausführung ist in der Projektlogdatei nachvollziehbar.
Nachweis 179M11
Logdatei bestätigt Healthcheck-Ausgaben aus Service-Läufen; der konkrete Timer-Trigger wird über S08a belegt.
Logdatei bestätigt Healthcheck-Ausgaben aus Service-Läufen; der konkrete Timer-Trigger wird über S08a belegt.
Nachweis 180M11
Lokale M11-Dateien, Healthcheck-Skript und korrigierte Service-Datei.
Lokale M11-Dateien, Healthcheck-Skript und korrigierte Service-Datei.

Timerlauf: Journal (Teil 2)

Nachweis 181M11
Ergänzender Journalnachweis Teil 2 zum Timerlauf
Ergänzender Journalnachweis Teil 2 zum Timerlauf

Timerlauf: Logausgaben (Teil 3)

Nachweis 182M11
Mehrere Healthcheck-Ausgaben in der Logdatei, Teil 3; Timer, Journal und Log bleiben getrennte Beobachtungsebenen.
Mehrere Healthcheck-Ausgaben in der Logdatei, Teil 3; Timer, Journal und Log bleiben getrennte Beobachtungsebenen.

Timer- und Journalzustand

Nachweis 183M11
Timerzustand nach dem Lab-Lauf und letzte Service-Ausgaben im Journal.
Timerzustand nach dem Lab-Lauf und letzte Service-Ausgaben im Journal.

Logausgaben

Nachweis 184M11
Wiederholte Healthcheck-Ausgaben in der Logdatei.
Wiederholte Healthcheck-Ausgaben in der Logdatei.

Zum Dokumentanfang

M12

Kursüberblick, Arbeitsfelder und fachliche Grenzen


Überblick

M01 bis M11 dokumentieren einen aufeinander aufbauenden Arbeitsweg von Lab-Grundlagen über Shell, Paketverwaltung, Rechte, Monitoring, systemd, Remote-Administration und Scripting bis zu lokaler MQTT-Funktionsprüfung und systemd-basierter Healthcheck-Automatisierung.

M01 bis M03 behandeln Systembasis, Shell und Textauswertung; M04 bis M06 Paketverwaltung, Rechte und Systemzustand; M07 und M08 Dienste sowie Remote-Administration; M09 bis M11 Scripting, MQTT und systemd-Automatisierung.



3. Entwicklungslinie des Kurses

M01 Lab-Basis und SSH-Erstkontakt
→ M02 Shell, Dateisystem und Hilfesysteme
→ M03 Textströme, Filter, Reports, Archiv/Restore
→ M04 Paketverwaltung Debian/Rocky
→ M05 Benutzer, Gruppen und Rechte
→ M06 Prozesse, Jobs und Basismonitoring
→ M07 systemd-Service-Triage
→ M08 Netzwerkdiagnose, SSH-Key, scp und rsync
→ M09 Bash-Scripting-Grundlagen
→ M10 lokale Mosquitto/MQTT-Funktionsvalidierung
→ M11 Healthcheck mit systemd-Service und systemd-Timer
→ M12 Kursüberblick, Arbeitsfelder und fachliche Grenzen

Die Module bauen fachlich aufeinander auf und verbinden die einzelnen Werkzeuge zu zusammenhängenden Arbeitsabläufen.


Arbeitsfelder und technische Inhalte

Arbeitsfeld Im Schwerpunkt behandelt Ergänzend behandelt Technische Inhalte
Lab- und Systembasis M01 M08 VM-/Lab-Aufbau, Debian/Rocky-Basis, SSH-Erstkontakt
Linux-Grundbedienung M02 M03, M09 Shell, Pfade, Hilfesysteme, Dateien, Textströme
Shell-Auswertung und Admin-Artefakte M03 M06, M09 Pipes, Reports, Redirects, Statusreports, Bash-Logs
Paketverwaltung M04 M10 APT/dpkg und DNF/rpm in M04; Paketinstallation als Dienstvoraussetzung in M10
Benutzer, Gruppen und Rechte M05 M08 lokale Accounts, Gruppen, setgid, chmod/chown, umask, sudo/visudo
Betrieb und Basismonitoring M06, M11 M07 Prozesse, Sessions, RAM/Disk/Inodes, Healthcheck-Ausgaben
systemd und Logs M07, M11 M10 Services, Timer, failed Units, journalctl, oneshot-Verhalten
Netzwerk und Remote-Administration M08 M01 SSH, IP/Route, getent, ss, SSH-Key, scp, rsync
Scripting und Automatisierung M09, M11 M03 Argumente, Exit-Codes, Logs, systemd-Service und Timer
Troubleshooting M07, M11 M04, M10, M06 Service- und Healthcheck-Triage, Pakettransaktion, Port- und Timingfehler sowie Prozessanalyse

5. Zusammenhängende Arbeitsabläufe

Arbeitsablauf Modul Technologien Umsetzung und Grenze
Healthcheck-Automatisierung M11 Bash, systemd-Service und systemd-Timer Skript, oneshot-Service, Timer, Journal und Log sowie kontrollierte Deaktivierung; Wrapper-Erfolg beweist nicht jeden Teilcheck.
Remote-Administration M08 SSH, scp und rsync Netzwerkdiagnose, erfolgreicher SSH-Aufruf mit deaktivierter Passwortauthentifizierung, rsync-Dry-Run und Synchronisation; die akzeptierte Authentifizierungsmethode bleibt unbestimmt.
Service-Triage M07 systemd und journalctl Kontrollierter Dienstfehler, Journalanalyse, Korrektur, reset-failed und anschließende Prüfung.
Rechte und Zugriff M05 Benutzer, Gruppen, chmod/chown, setgid, umask und sudo Lokales Rechtekonzept und Zugriffstests; ACL, PAM und zusätzliche Härtung wurden nicht umgesetzt.
Pakettransaktion M04 APT/dpkg und DNF/rpm Paketlogs, History, Nebenwirkung eines DNF-Remove und manuelle Wiederherstellung.
Lokale MQTT-Funktion M10 Mosquitto und MQTT Lokaler Broker, Pub/Sub, Retained Message und Portfehler; kein externer Listener, keine Authentifizierung, ACL oder TLS.

6. Fachliche Grenzen

Nicht Bestandteil der dokumentierten Arbeiten sind:

Security-Hardening-Maßnahmen
Monitoring mit Alerting
Prometheus/Grafana oder ein Monitoring-Stack
komplexe Netzwerkarchitekturen
Cloud-, Container- oder DevOps-Umsetzungen
vollständige LPIC-1-Prüfungsvorbereitung
Aufgaben außerhalb der dokumentierten Laborabläufe

Die dokumentierten Arbeiten umfassen Linux-Grundlagen, Remote-Administration, Paket- und Rechteverwaltung, systemd, Troubleshooting, Bash-Scripting und eine einfache systemd-basierte Automatisierung in einer Lern- und Laborumgebung.


7. Erkenntnisse über den gesamten Kurs

  1. Ausgangszustand, Durchführung und Ergebnis wurden getrennt erfasst. Dadurch bleiben Änderungen und Prüfungen nachvollziehbar.
  2. Analysierte Fehlerfälle zeigen Ursache, Maßnahme und Ergebnis. Beispiele stehen in M04, M07, M10 und M11.
  3. Werkzeuge werden entsprechend ihrer Funktion eingesetzt. ps liefert eine Momentaufnahme, top eine Live-/Batch-Ansicht, systemctl den Dienstzustand, journalctl Logs und ss die Socketebene.
  4. SSH, MQTT, sudo, systemd und Monitoring bleiben auf die tatsächlich umgesetzten Laborfunktionen begrenzt.
  5. Die Automatisierung zeigt Aktivierung, Timerlauf und kontrollierte Deaktivierung.


8. Zusammenfassung

M01 bis M11 bilden zusammen den Arbeitsweg von der Linux-Systembasis über Administration und Fehleranalyse bis zu Scripting und systemd-Automatisierung ab.

Zum Dokumentanfang