Grundlagen
Einsteiger
Was ist Linux? Distributionen erklärt
Ubuntu, Mint, Fedora oder Arch? Welche Distribution passt zu dir — ein Überblick für Einsteiger.
Mehr lesen
Linux ist kein einzelnes Betriebssystem
Linux ist ein Kernel — der Kern eines Betriebssystems. Distributionen (kurz: Distros) packen diesen Kern mit Software, Desktop-Oberfläche und Paketmanager zusammen.
Die wichtigsten Distributionen
| Distribution | Basis | Zielgruppe | Desktop |
| Ubuntu | Debian | Einsteiger, Server | GNOME |
| Linux Mint | Ubuntu | Windows-Umsteiger | Cinnamon |
| Fedora | Red Hat | Entwickler | GNOME |
| Arch Linux | Eigenständig | Fortgeschrittene | Frei wählbar |
| Debian | Eigenständig | Server, Stabilität | Verschiedene |
| openSUSE | SUSE | Unternehmen | KDE/GNOME |
Desktop-Umgebungen
- GNOME — Modern, minimalistisch, Touch-freundlich
- KDE Plasma — Anpassbar, Windows-ähnlich, feature-reich
- Cinnamon — Klassisch, intuitiv (Linux Mint Standard)
- XFCE — Leichtgewichtig, ideal für ältere Hardware
Empfehlung für Einsteiger
Linux Mint mit Cinnamon-Desktop: Sieht aus wie Windows, funktioniert sofort, riesige Community.
Tipp: Teste Linux zuerst als Live-USB — ohne Installation direkt vom Stick booten und ausprobieren.
Terminal
Einsteiger
Terminal-Grundlagen
Die wichtigsten Befehle für den Einstieg: Dateien anzeigen, navigieren, kopieren und löschen.
Mehr lesen
Navigation & Dateien
| Befehl | Funktion | Beispiel |
pwd | Aktuelles Verzeichnis anzeigen | pwd → /home/user |
ls | Dateien auflisten | ls -la (mit Details + versteckte) |
cd | Verzeichnis wechseln | cd /var/log |
mkdir | Verzeichnis erstellen | mkdir projekte |
cp | Kopieren | cp datei.txt kopie.txt |
mv | Verschieben/Umbenennen | mv alt.txt neu.txt |
rm | Löschen | rm datei.txt |
cat | Dateiinhalt anzeigen | cat config.txt |
Wichtige Abkürzungen
~ — Home-Verzeichnis (cd ~)
.. — Ein Verzeichnis nach oben (cd ..)
. — Aktuelles Verzeichnis
- Tab — Autovervollständigung (spart enorm Zeit!)
- Strg + C — Laufenden Befehl abbrechen
- Strg + R — In der Befehlshistorie suchen
Ordner mit Inhalt löschen
rm -r ordnername/
Vorsicht mit rm -rf! Löscht alles ohne Rückfrage. Nie als root auf / anwenden.
System
Einsteiger
Paketmanagement: apt, snap & flatpak
Software installieren, aktualisieren und entfernen — die drei Wege unter Linux.
Mehr lesen
APT (Debian/Ubuntu)
Der klassische Paketmanager für Debian-basierte Systeme:
| Aktion | Befehl |
| Paketlisten aktualisieren | sudo apt update |
| Alle Pakete aktualisieren | sudo apt upgrade |
| Programm installieren | sudo apt install programmname |
| Programm entfernen | sudo apt remove programmname |
| Programm suchen | apt search suchbegriff |
| Unnötige Pakete entfernen | sudo apt autoremove |
Snap vs. Flatpak
- Snap (Canonical):
sudo snap install firefox — automatische Updates, sandboxed
- Flatpak (Community):
flatpak install flathub org.gimp.GIMP — distro-unabhängig
Immer zuerst sudo apt update vor sudo apt install — sonst werden veraltete Paketversionen installiert.
System
Einsteiger
Dateiberechtigungen: chmod & chown
Wer darf lesen, schreiben und ausführen? Das rwx-System einfach erklärt.
Mehr lesen
rwx verstehen
Jede Datei hat Berechtigungen für drei Gruppen: Besitzer, Gruppe, Andere.
| Buchstabe | Bedeutung | Zahlenwert |
r | Lesen (read) | 4 |
w | Schreiben (write) | 2 |
x | Ausführen (execute) | 1 |
Beispiel: -rwxr-xr-- = Besitzer: rwx (7), Gruppe: r-x (5), Andere: r-- (4) → 754
Berechtigungen ändern
# Datei für alle ausführbar machen
chmod +x script.sh
# Numerisch: Besitzer alles, Gruppe lesen+ausführen, Andere lesen+ausführen
chmod 755 script.sh
# Rekursiv für Ordner
chmod -R 644 /var/www/html/
Besitzer ändern
# Besitzer ändern
sudo chown benutzer datei.txt
# Besitzer und Gruppe ändern
sudo chown benutzer:gruppe datei.txt
# Rekursiv
sudo chown -R www-data:www-data /var/www/
Typische Werte: 755 für Ordner und Skripte, 644 für normale Dateien, 600 für private Dateien wie SSH-Keys.
Editor
Einsteiger
Textdateien: nano & vim
Konfigurationsdateien direkt im Terminal bearbeiten — nano für Einsteiger, vim für Profis.
Mehr lesen
nano (empfohlen für Einsteiger)
nano /etc/hostname
| Shortcut | Funktion |
| Strg + O | Speichern |
| Strg + X | Beenden |
| Strg + K | Zeile ausschneiden |
| Strg + U | Zeile einfügen |
| Strg + W | Suchen |
| Strg + G | Hilfe anzeigen |
vim (Kurzeinführung)
vim datei.txt
- i — Einfügemodus (Text schreiben)
- Esc — Zurück zum Normalmodus
:w — Speichern
:q — Beenden
:wq — Speichern und beenden
:q! — Beenden ohne Speichern
Tipp: vimtutor im Terminal startet ein interaktives vim-Tutorial (ca. 30 Minuten).
Netzwerk
Einsteiger
Netzwerk-Grundbefehle
IP-Adresse anzeigen, Verbindung testen, DNS abfragen — die Netzwerk-Basics im Terminal.
Mehr lesen
| Befehl | Funktion | Beispiel |
ip a | IP-Adressen aller Interfaces | ip a |
ping | Verbindung testen | ping -c 4 google.de |
curl | URL abrufen / API testen | curl -I https://example.com |
ss | Offene Ports anzeigen | ss -tulnp |
dig | DNS-Abfrage | dig google.de |
traceroute | Route verfolgen | traceroute google.de |
hostname -I | Eigene IP-Adresse | hostname -I |
nmcli | Netzwerkverbindungen verwalten | nmcli device status |
Externe IP-Adresse herausfinden
curl ifconfig.me
ifconfig ist veraltet — verwende stattdessen ip a. Bei manchen Systemen muss traceroute erst installiert werden: sudo apt install traceroute.
Referenz
Fortgeschritten
Alle Linux-Tastenkürzel
Desktop, Terminal und Fensterverwaltung — die wichtigsten Shortcuts für Ubuntu, Mint & Co.
Mehr lesen
Desktop-Umgebung (GNOME / Ubuntu)
| Kürzel | Funktion |
| Super (Win) | Aktivitäten-Übersicht / Suche |
| Super + A | Anwendungsmenü öffnen |
| Super + D | Desktop anzeigen / alle Fenster minimieren |
| Super + L | Bildschirm sperren |
| Super + E | Dateimanager öffnen (Nautilus) |
| Super + Pfeil ↑ | Fenster maximieren |
| Super + Pfeil ↓ | Fenster wiederherstellen |
| Super + Pfeil ←/→ | Fenster links/rechts andocken |
| Super + H | Fenster minimieren |
| Super + Shift + Pfeil ←/→ | Fenster auf anderen Monitor verschieben |
| Alt + Tab | Zwischen Programmen wechseln |
| Alt + F2 | Befehl ausführen (Run-Dialog) |
| Alt + F4 | Fenster schließen |
| Druck | Screenshot (gesamter Bildschirm) |
| Shift + Druck | Screenshot (Bereich auswählen) |
| Alt + Druck | Screenshot (aktives Fenster) |
Arbeitsbereiche (Workspaces)
| Kürzel | Funktion |
| Super + Bild ↑/↓ | Workspace wechseln |
| Super + Shift + Bild ↑/↓ | Fenster auf anderen Workspace verschieben |
| Strg + Alt + Pfeil ↑/↓ | Workspace wechseln (alternativ) |
Terminal
| Kürzel | Funktion |
| Strg + Alt + T | Terminal öffnen |
| Strg + Shift + C | Kopieren (im Terminal) |
| Strg + Shift + V | Einfügen (im Terminal) |
| Strg + Shift + T | Neuer Tab im Terminal |
| Strg + Shift + N | Neues Terminal-Fenster |
| Strg + D | Terminal/Shell beenden (logout) |
| Strg + C | Laufenden Befehl abbrechen |
| Strg + Z | Prozess in Hintergrund stoppen |
| Strg + L | Bildschirm leeren (wie clear) |
| Strg + R | Befehlshistorie durchsuchen |
| Strg + A | Cursor an Zeilenanfang |
| Strg + E | Cursor an Zeilenende |
| Strg + U | Zeile vor dem Cursor löschen |
| Strg + K | Zeile nach dem Cursor löschen |
| Strg + W | Wort vor dem Cursor löschen |
| Tab | Autovervollständigung (Befehle, Pfade) |
| Tab Tab | Alle Möglichkeiten anzeigen |
| ↑ / ↓ | Durch Befehlshistorie blättern |
| !! | Letzten Befehl wiederholen |
| sudo !! | Letzten Befehl als root wiederholen |
Allgemein (in allen Linux-Desktops)
| Kürzel | Funktion |
| Strg + C / X / V | Kopieren / Ausschneiden / Einfügen (GUI-Apps) |
| Strg + Z | Rückgängig |
| Strg + S | Speichern |
| Strg + Q | Anwendung beenden |
| Strg + Alt + L | Bildschirm sperren (KDE/XFCE) |
| Strg + Alt + Entf | Abmelden-Dialog (GNOME) |
Hinweis: Tastenkürzel variieren je nach Desktop-Umgebung (GNOME, KDE Plasma, XFCE, Cinnamon). Diese Liste bezieht sich hauptsächlich auf GNOME (Ubuntu-Standard). Im Terminal gilt: Strg + C bricht Befehle ab — zum Kopieren Strg + Shift + C verwenden. Alle Shortcuts können unter Einstellungen → Tastaturkürzel angepasst werden.
Scripting
Fortgeschritten
Shell-Scripting: Grundlagen
Variablen, Schleifen, Bedingungen — wiederkehrende Aufgaben automatisieren mit Bash.
Mehr lesen
Erstes Skript
#!/bin/bash
# Mein erstes Skript
echo "Hallo, $(whoami)!"
echo "Heute ist $(date +%d.%m.%Y)"
Ausführbar machen: chmod +x meinskript.sh → ./meinskript.sh
Variablen
NAME="Linux"
echo "Hallo $NAME"
DATUM=$(date +%Y-%m-%d) # Befehlsausgabe speichern
Bedingungen
if [ -f "/etc/hostname" ]; then
echo "Datei existiert"
else
echo "Datei nicht gefunden"
fi
Schleifen
# For-Schleife
for datei in *.log; do
echo "Verarbeite: $datei"
done
# While-Schleife
while read zeile; do
echo "$zeile"
done < datei.txt
Praxis: Backup-Skript
#!/bin/bash
QUELLE="/home/$USER/dokumente"
ZIEL="/backup/$(date +%Y-%m-%d)"
mkdir -p "$ZIEL"
cp -r "$QUELLE" "$ZIEL"
echo "Backup erstellt: $ZIEL"
Skripte immer mit #!/bin/bash beginnen (Shebang). Mit set -e bricht das Skript bei Fehlern ab.
System
Fortgeschritten
Systemd & Services
Dienste starten, stoppen, aktivieren und eigene Service-Dateien erstellen.
Mehr lesen
systemctl — Dienste verwalten
| Aktion | Befehl |
| Status prüfen | systemctl status nginx |
| Dienst starten | sudo systemctl start nginx |
| Dienst stoppen | sudo systemctl stop nginx |
| Dienst neustarten | sudo systemctl restart nginx |
| Beim Boot starten | sudo systemctl enable nginx |
| Autostart deaktivieren | sudo systemctl disable nginx |
| Alle Dienste auflisten | systemctl list-units --type=service |
journalctl — Logs lesen
# Logs eines Dienstes
journalctl -u nginx
# Logs live verfolgen
journalctl -u nginx -f
# Nur heutige Logs
journalctl --since today
Eigene Service-Datei erstellen
# /etc/systemd/system/mein-dienst.service
[Unit]
Description=Mein eigener Dienst
After=network.target
[Service]
ExecStart=/usr/local/bin/mein-programm
Restart=always
User=meinuser
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mein-dienst
Nach Änderungen an Service-Dateien immer daemon-reload ausführen!
Netzwerk
Fortgeschritten
SSH Konfiguration & Hardening
SSH-Keys einrichten, ~/.ssh/config nutzen und den SSH-Server härten.
Mehr lesen
SSH-Key erstellen
ssh-keygen -t ed25519 -C "mein@email.de"
Erzeugt zwei Dateien: ~/.ssh/id_ed25519 (privat) und ~/.ssh/id_ed25519.pub (öffentlich).
Key auf Server kopieren
ssh-copy-id user@server
~/.ssh/config nutzen
Host meinserver
HostName 192.168.1.100
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519
Danach reicht: ssh meinserver
SSH-Server härten (/etc/ssh/sshd_config)
# Passwort-Login deaktivieren (nur Keys)
PasswordAuthentication no
# Root-Login verbieten
PermitRootLogin no
# Port ändern (optional)
Port 2222
# Nur bestimmte User erlauben
AllowUsers admin
sudo systemctl restart sshd
Wichtig: Vor dem Deaktivieren von Passwort-Login sicherstellen, dass der SSH-Key funktioniert! Sonst sperrst du dich aus.
Automatisierung
Fortgeschritten
Cron Jobs & Automatisierung
Aufgaben zeitgesteuert ausführen — Backups, Bereinigungen, Reports automatisch.
Mehr lesen
Crontab bearbeiten
crontab -e # Eigene Cron-Jobs bearbeiten
crontab -l # Eigene Cron-Jobs anzeigen
Crontab-Syntax
# Min Std Tag Mon Wtag Befehl
0 6 * * * /home/user/backup.sh
*/5 * * * * /usr/bin/check-health.sh
0 0 1 * * /usr/local/bin/monatsreport.sh
| Ausdruck | Bedeutung |
* * * * * | Jede Minute |
0 * * * * | Jede volle Stunde |
0 6 * * * | Täglich um 6:00 Uhr |
0 6 * * 1 | Jeden Montag um 6:00 Uhr |
*/15 * * * * | Alle 15 Minuten |
0 0 1 * * | Am 1. jeden Monats |
Häufige Fallstricke
- Pfade: In Cron immer absolute Pfade verwenden!
- Umgebungsvariablen: Cron hat ein minimales Environment —
PATH explizit setzen
- Ausgabe: Ohne Umleitung geht die Ausgabe als Mail an den User
# Ausgabe in Logdatei umleiten
0 6 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
Tipp: crontab.guru hilft beim Erstellen von Cron-Ausdrücken.
Terminal
Fortgeschritten
Fensterposition & Größe festlegen
Terminal-Fenster mit exakter Position und Größe öffnen.
Mehr lesen
Klassisch: --geometry (X11 / ältere Systeme)
gnome-terminal --geometry=60x20+1090+10
60x20 — Breite x Höhe in Zeichen
+1090+10 — X-Position + Y-Position in Pixeln
Hinweis: --geometry funktioniert nur unter X11. Unter Wayland (Standard bei neueren Distros) wird dieser Parameter ignoriert.
Modern: wmctrl (funktioniert überall)
# wmctrl installieren
sudo apt install wmctrl
# Fenster verschieben und skalieren: x, y, breite, höhe
wmctrl -r :ACTIVE: -e 0,1090,10,800,600
Alternative: xdotool
sudo apt install xdotool
# Aktives Fenster verschieben
xdotool getactivewindow windowmove 1090 10
xdotool getactivewindow windowsize 800 600
Container
Profi
Docker Grundlagen
Container verstehen, Images verwalten und mit Docker Compose mehrere Services orchestrieren.
Mehr lesen
Docker installieren
sudo apt update
sudo apt install docker.io docker-compose -y
sudo usermod -aG docker $USER
# Abmelden und neu einloggen!
Wichtige Befehle
| Befehl | Funktion |
docker run -d nginx | Container im Hintergrund starten |
docker ps | Laufende Container anzeigen |
docker ps -a | Alle Container (auch gestoppte) |
docker images | Heruntergeladene Images auflisten |
docker stop CONTAINER | Container stoppen |
docker rm CONTAINER | Container löschen |
docker logs CONTAINER | Container-Logs anzeigen |
docker exec -it CONTAINER bash | Shell im Container öffnen |
Docker Compose Beispiel
# docker-compose.yml
version: "3"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: geheim
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
docker-compose up -d # Starten
docker-compose down # Stoppen und aufräumen
docker-compose logs -f # Logs verfolgen
Docker-Daten wachsen schnell! Regelmäßig aufräumen: docker system prune -a entfernt ungenutzte Images und Container.
System
Profi
Performance & Monitoring
Systemüberwachung mit htop, iotop, vmstat — Engpässe erkennen und beheben.
Mehr lesen
Wichtige Monitoring-Tools
| Tool | Zweck | Installation |
htop | Interaktiver Prozess-Monitor | sudo apt install htop |
iotop | Festplatten-I/O pro Prozess | sudo apt install iotop |
vmstat | Speicher, CPU, I/O Übersicht | Vorinstalliert |
free -h | RAM-Auslastung | Vorinstalliert |
df -h | Festplattenplatz | Vorinstalliert |
du -sh * | Ordnergrößen anzeigen | Vorinstalliert |
Load Average verstehen
uptime
# 14:30 up 5 days, load average: 1.20, 0.85, 0.65
Drei Werte: Last der letzten 1, 5 und 15 Minuten. Wert ≤ Anzahl CPU-Kerne = System nicht überlastet.
# Anzahl CPU-Kerne anzeigen
nproc
Live-Überwachung
# vmstat alle 2 Sekunden
vmstat 2
# Top 10 Speicherfresser
ps aux --sort=-%mem | head -11
Tipp: htop ist der beste Freund jedes Linux-Admins. Mit F6 sortieren, F9 Prozess beenden, F5 Baumansicht.
Sicherheit
Profi
Firewall: ufw & iptables
Ports freigeben, Regeln erstellen und den Server vor unerwünschtem Traffic schützen.
Mehr lesen
ufw — Uncomplicated Firewall
Die einfache Firewall für Ubuntu/Debian:
| Aktion | Befehl |
| Status anzeigen | sudo ufw status verbose |
| Firewall aktivieren | sudo ufw enable |
| SSH erlauben | sudo ufw allow ssh |
| Port 80 öffnen | sudo ufw allow 80/tcp |
| Port-Range öffnen | sudo ufw allow 3000:3100/tcp |
| IP erlauben | sudo ufw allow from 192.168.1.0/24 |
| Regel löschen | sudo ufw delete allow 80/tcp |
| Alles blockieren | sudo ufw default deny incoming |
iptables — Fortgeschritten
# Alle Regeln anzeigen
sudo iptables -L -n -v
# Port 443 (HTTPS) erlauben
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Bestimmte IP blockieren
sudo iptables -A INPUT -s 10.0.0.50 -j DROP
# Regeln dauerhaft speichern
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
Wichtig: Immer zuerst SSH erlauben bevor du die Firewall aktivierst! Sonst sperrst du dich bei Remote-Servern aus.
System
Profi
Disk Management: lsblk, mount & fstab
Festplatten anzeigen, formatieren, einhängen und dauerhaft in fstab konfigurieren.
Mehr lesen
Festplatten & Partitionen anzeigen
lsblk # Blockgeräte als Baum
lsblk -f # Mit Dateisystem und UUID
fdisk -l # Detaillierte Partition-Infos
blkid # UUIDs aller Partitionen
Partition formatieren
⚠ ACHTUNG: Formatieren löscht alle Daten auf der Partition unwiderruflich! Vorher mit lsblk -f sicherstellen, dass du die richtige Partition gewählt hast. Nutzung auf eigene Gefahr.
# Als ext4 formatieren
sudo mkfs.ext4 /dev/sdb1
# Als NTFS (für Windows-Kompatibilität)
sudo mkfs.ntfs /dev/sdb1
Manuell mounten
sudo mkdir -p /mnt/daten
sudo mount /dev/sdb1 /mnt/daten
# Aushängen
sudo umount /mnt/daten
Dauerhaft in /etc/fstab
# UUID herausfinden
blkid /dev/sdb1
# Zeile in /etc/fstab hinzufügen:
UUID=abc12345-... /mnt/daten ext4 defaults 0 2
# fstab testen (ohne Neustart)
sudo mount -a
Immer UUID statt Gerätenamen (sda, sdb) in fstab verwenden — Gerätenamen können sich nach einem Neustart ändern!