~/handbuch/linux-admin

root@server:~#Linux Admin Handbuch

Eine durchsuchbare Referenz der wichtigsten Linux-Befehle für die tägliche Systemadministration — Dateien, Verzeichnisse, Cronjobs, Webserver, Firewall und Sicherheit.

Alle Befehle werden angezeigt Tipp: / zum Fokussieren der Suche

Navigation

durch das Dateisystem bewegen
cd — Verzeichnis wechseln basics

Wechselt das aktuelle Arbeitsverzeichnis (change directory).

$cd /var/log
$cd ~ # Home-Verzeichnis $cd .. # eine Ebene höher $cd - # zurück zum letzten Verzeichnis
pwd — aktuellen Pfad anzeigen basics

Zeigt den vollständigen Pfad des aktuellen Verzeichnisses an.

$pwd /home/steffen
ls — Verzeichnisinhalt anzeigen basics

Listet Dateien und Unterverzeichnisse auf.

$ls -lah # detailliert, alle, menschenlesbar $ls -ltr # nach Zeit sortiert

Dateien & Verzeichnisse

erstellen, kopieren, löschen
mkdir — Verzeichnis erstellen basics

Legt neue Verzeichnisse an.

$mkdir projekte $mkdir -p pfad/zu/tiefem/ordner # mit Eltern
rmdir — leeres Verzeichnis löschen vorsicht

Entfernt nur leere Verzeichnisse.

$rmdir altes_verzeichnis
Funktioniert nur bei leeren Ordnern. Für gefüllte Verzeichnisse rm -r verwenden.
rm -r — Verzeichnis rekursiv löschen gefährlich

Löscht ein Verzeichnis samt allem Inhalt — unwiderruflich.

$rm -r projekte/ $rm -rf /tmp/cache # ohne Rückfrage
NIEMALS rm -rf / ausführen! Doppelt prüfen, in welchem Pfad du stehst.
touch — Datei erzeugen basics

Erstellt eine leere Datei oder aktualisiert deren Zeitstempel.

$touch notiz.txt $touch datei1 datei2 datei3 # mehrere
rm — Datei löschen vorsicht

Entfernt eine oder mehrere Dateien.

$rm datei.txt $rm -i *.log # mit Rückfrage $rm -v alt.bak # mit Ausgabe
Gelöschte Dateien landen nicht im Papierkorb. Lieber -i verwenden.
cp — Datei/Ordner kopieren basics

Kopiert Dateien oder Verzeichnisse.

$cp quelle.txt ziel.txt $cp -r ordner/ backup/ # rekursiv $cp -a src/ dst/ # Rechte beibehalten
mv — verschieben / umbenennen basics

Verschiebt oder benennt Dateien und Verzeichnisse um.

$mv alt.txt neu.txt # umbenennen $mv datei.txt /var/backups/ # verschieben
chmod — Rechte setzen rechte

Ändert die Zugriffsrechte einer Datei.

$chmod 755 script.sh $chmod +x install.sh # ausführbar $chmod -R 644 /var/www/html

Editor

Dateien bearbeiten im Terminal
nano — einfacher Editor empfohlen

Anfängerfreundlicher Texteditor mit Tastenkombinationen unten im Fenster.

$nano /etc/hosts $sudo nano -w /etc/nginx/nginx.conf # ohne Zeilenumbruch
Wichtigste Tasten: Strg+O speichern, Strg+X verlassen, Strg+W suchen, Strg+K Zeile löschen, Strg+_ zu Zeile springen.
vim — Profi-Editor advanced

Mächtiger modaler Editor — steile Lernkurve, dafür extrem effizient.

$vim config.yml
Überleben in Vim: i = Insert-Modus, Esc = Normal-Modus, :w speichern, :q verlassen, :wq speichern und verlassen, :q! ohne Speichern raus.
cat / less — Datei anzeigen basics

Inhalt einer Datei ausgeben oder seitenweise blättern.

$cat /etc/os-release $less /var/log/syslog # q zum Beenden $tail -f /var/log/auth.log # live mitlesen

Cron — geplante Aufgaben

automatisierte Jobs zeitgesteuert
crontab -e — Cronjobs bearbeiten standard

Öffnet die persönliche Crontab des aktuellen Benutzers im Standard-Editor.

$crontab -e # eigene Cronjobs $sudo crontab -e -u www-data # für anderen User
crontab -l — Cronjobs anzeigen basics

Zeigt alle aktiven Cronjobs des aktuellen Benutzers.

$crontab -l $crontab -r # ALLE Jobs löschen!
Cron-Syntax verstehen referenz

Aufbau einer Crontab-Zeile: Minute, Stunde, Tag, Monat, Wochentag, Befehl.

# ┌──── Minute (0-59) # │ ┌── Stunde (0-23) # │ │ ┌── Tag (1-31) # │ │ │ ┌── Monat (1-12) # │ │ │ │ ┌── Wochentag (0-7, 0=So) # │ │ │ │ │ 0 3 * * * /usr/local/bin/backup.sh */15 * * * * /opt/check.sh # alle 15 Min 0 2 * * 0 /opt/weekly.sh # sonntags 02:00
Cron-Dienst-Status service

Prüfen, ob der Cron-Daemon läuft.

$systemctl status cron # Debian/Ubuntu $systemctl status crond # RHEL/CentOS $sudo systemctl restart cron

Apache verwalten

httpd / apache2 Webserver
Apache starten/stoppen service

Dienst über systemd steuern.

$sudo systemctl start apache2 $sudo systemctl stop apache2 $sudo systemctl restart apache2 $sudo systemctl reload apache2 # ohne Verbindungsabbruch $sudo systemctl status apache2
Unter RHEL/CentOS heißt der Dienst httpd statt apache2.
Apache-Konfiguration testen wichtig

Syntax prüfen bevor du neu lädst — sonst gibt's Downtime.

$sudo apache2ctl configtest $sudo apachectl -t Syntax OK
Module & Sites aktivieren debian

Auf Debian/Ubuntu mit den a2-Helfern.

$sudo a2enmod ssl rewrite headers $sudo a2dismod autoindex $sudo a2ensite meinedomain.conf $sudo a2dissite 000-default.conf $sudo systemctl reload apache2
Apache-Logs einsehen logs

Fehler und Zugriffe live mitverfolgen.

$sudo tail -f /var/log/apache2/error.log $sudo tail -f /var/log/apache2/access.log $sudo journalctl -u apache2 -f

Nginx verwalten

moderner Reverse-Proxy & Webserver
Nginx starten/stoppen service

Dienst über systemd steuern.

$sudo systemctl start nginx $sudo systemctl stop nginx $sudo systemctl restart nginx $sudo systemctl reload nginx # Config neu laden, keine Downtime $sudo systemctl status nginx
Nginx-Konfiguration testen wichtig

Immer vor dem Reload prüfen!

$sudo nginx -t nginx: configuration file /etc/nginx/nginx.conf test is successful
Sites aktivieren (Symlink) debian

Nginx aktiviert Sites über Symlinks von sites-available nach sites-enabled.

$sudo ln -s /etc/nginx/sites-available/meinsite \ /etc/nginx/sites-enabled/ $sudo rm /etc/nginx/sites-enabled/default $sudo nginx -t && sudo systemctl reload nginx
Nginx-Logs einsehen logs

Standard-Logs in /var/log/nginx/.

$sudo tail -f /var/log/nginx/error.log $sudo tail -f /var/log/nginx/access.log $sudo journalctl -u nginx -f

Fail2ban

Brute-Force-Schutz für SSH & mehr
Fail2ban-Status service

Allgemeinen Dienststatus prüfen.

$sudo systemctl status fail2ban $sudo systemctl restart fail2ban
Aktive Jails anzeigen übersicht

Welche Schutzregeln laufen und wie viele IPs sind gesperrt?

$sudo fail2ban-client status $sudo fail2ban-client status sshd # Details zu einer Jail
IP entsperren / sperren manuell

IPs manuell aus dem Bann nehmen oder hinzufügen.

$sudo fail2ban-client set sshd unbanip 192.168.1.50 $sudo fail2ban-client set sshd banip 203.0.113.42 $sudo fail2ban-client unban --all # alle entsperren
Praktisch, wenn du dich selbst ausgesperrt hast — vorher per Konsole/IPMI einloggen.
jail.local — Konfiguration config

Eigene Einstellungen kommen in jail.local, nicht in jail.conf (wird bei Updates überschrieben).

$sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local $sudo nano /etc/fail2ban/jail.local # Beispiel-Eintrag: [sshd] enabled = true maxretry = 3 bantime = 3600 findtime = 600
Fail2ban-Log lesen logs

Aktivitäten und gebannte IPs verfolgen.

$sudo tail -f /var/log/fail2ban.log $sudo grep "Ban" /var/log/fail2ban.log

Firewall

ufw, firewalld & iptables
ufw — die "vergessene" Firewall ubuntu/debian

Uncomplicated Firewall — die einfache Frontend-Firewall für iptables. Standard auf Ubuntu/Debian.

$sudo ufw status verbose $sudo ufw enable $sudo ufw disable
Das könnte die Firewall sein, deren Namen du vergessen hattest — sie heißt schlicht ufw.
ufw — Regeln setzen rules

Ports öffnen, schließen, einschränken.

$sudo ufw allow 22/tcp # SSH $sudo ufw allow http # Service-Name $sudo ufw allow 443 $sudo ufw deny 23 $sudo ufw allow from 192.168.1.0/24 to any port 22 $sudo ufw delete allow 8080
ufw — Regeln anzeigen & löschen übersicht

Mit Nummerierung lassen sich Regeln gezielt entfernen.

$sudo ufw status numbered [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere $sudo ufw delete 2
firewalld — RHEL/CentOS redhat

Zonen-basierte Firewall auf RHEL-Derivaten.

$sudo firewall-cmd --state $sudo firewall-cmd --list-all $sudo firewall-cmd --permanent --add-service=https $sudo firewall-cmd --permanent --add-port=8080/tcp $sudo firewall-cmd --reload
Ohne --permanent sind Änderungen nach Reboot weg. Nach --permanent immer --reload.
iptables — der Klassiker low-level

Die ursprüngliche Linux-Firewall — ufw und firewalld sind eigentlich nur Wrapper drumherum.

$sudo iptables -L -n -v # alle Regeln $sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT $sudo iptables -D INPUT 3 # Regel 3 löschen $sudo iptables -F # alle Regeln löschen
Vorsicht: iptables -F kann dich aussperren. Vorher Backup mit iptables-save > backup.rules.
Offene Ports prüfen diagnose

Welche Dienste lauschen tatsächlich auf welchen Ports?

$sudo ss -tulpn # moderner, schneller $sudo netstat -tulpn # klassisch $sudo lsof -i :443 # wer hört auf Port 443?

Keine Treffer

Versuche einen anderen Suchbegriff oder setze die Filter zurück.