# Tutorial 2: Linux Basics ASE WS 2023/24 Dieses Dokument ist kein eigenständiges Tutorial sondern unterstützt die Übung. Die grundlegenden Konzepte werden vorgestellt, hilfreiche Links erleichtern die selbständige Vertiefung. Ziele: - Ihr kennt wichtige Unix/Linux-Konzepte (Prozesse, Umgebungsvariablen, File Descriptors, Berechtigungen) - Ihr kennt grundlegende Netzwerk-Tools - Ihr kennt Werkzeuge und Methoden, um Probleme auf Linux-Servern zu finden und zu beheben. Dieses Tutorial baut auf den Kenntnissen aus dem [Shell-Tutorial](shell_tutorial) auf. ## Vorbereitung: wir brauchen eine Shell Wir brauchen heute für die Beispiele eine simple Linux-Shell und ein paar Linux-Programme. Option 1: Shell auf dem lokalen Rechner öffnen Option 2: SSH nach Segfault.net Anmelden über [SSH](https://www.hostinger.com/tutorials/ssh-tutorial-how-does-ssh-work) als Nutzer `root` auf einem 'disposable root server' [via segfault.net](https://blog.thc.org/disposable-root-servers). Entweder über Putty oder über das `ssh`-Programm ([seit kurzem auch unter Windows verfügbar](https://learn.microsoft.com/en-us/windows/terminal/tutorials/ssh)). ssh root@segfault.net # Password is 'segfault' Hinweis: wenn man das Passwort eingibt, werden keine Zeichen angezeigt. **Achtung:** Der Server ist nicht sicher - keine vertraulichen Infos/Passwörter dort eintippen Erster Schritt auf dem Server: Informationen zu Netzwerk-Schnittstellen prophylaktisch in einen Text-Editor kopieren Zweiter Schritt: `tmate` ausführen. ## Paketmanagement unter Debian/Ubuntu - `apt show ` - `apt search ` - `apt install ` - `apt update` (Paketliste aktualisieren) - `apt upgrade` (alle Pakete aktualisieren) Weiterführende Methoden: - andere Repos hinzufügen (siehe `/etc/apt/sources.list` und `/etc/apt/sources.list.d/`) - aus bestimmten Repos installieren (`apt install -t unstable youtube-dl`) - Pakete manuell installieren (`dpkg -i `) - fehlgeschlagene Installation/Konfiguration neu starten (`apt install -f` / `dpkg --configure -a`) - mit `apt-file` (separates Paket) kann man herausfinden, in welchem Paket eine bestimmte Datei steckt ## Pfade und Umgebungsvariablen (live) ## Troubleshooting, Debugging, Logging **Tipp:** Terminal zerschossen - willkürliche Zeilenumbrüche, komische Zeichen, etc.? -> sicherheitshalber Ctrl-C drücken um einen leeren Prompt zu haben (oder `q` drücken, wenn gerade less/top/... läuft). Dann `stty sane` eintippen, um das Terminal auf Standardwerte zurückzusetzen. ### System-Werkzeuge - uptime - which - top / htop / btop - du - df - fuser / lsof - strace (-p) ## Netzwerk-Tools - ip / ifconfig / iwconfig - route - ping - traceroute / mtr / tcptraceroute - tcpdump - ngrep - netcat / nc - netstat - nmap ## Logs (live) - `cat /var/log/...` - `journalctl -xe` ## Aufgaben Wir beschäftigen uns mit verschiedenen Problemen auf https://sadservers.com/ - Löst - zu zweit - die vier einfachen Probleme unter https://sadservers.com/scenarios - dokumentiert die Lösungsschritte in einer Datei "sadserver-01.txt" usw. (Tipp: der Befehl `history` zeigt die bisher eingegebenen Befehle an Beispiel: # Problem: Webserver geht nicht uptime # Auslastung anschauen netstat -pan | grep 80 # Lauscht überhaupt ein Server auf Port 80? ... ## Best Practices - Ein Protokoll `/root/admin.log` o.ä. pflegen, in der man alle Änderungen an einem System und Probleme dokumentiert - ...