====== Übungen Tag 3: Benutzer, Rechte und Prozesse ====== Diese Übungen vertiefen die Themen von Tag 3 des Linux Expert Workshops. [[agenda:agenda-expert_2|← Zurück zur Agenda]] ===== Übung 3.1: Benutzerverwaltung ===== **Ziel:** Benutzer und Gruppen professionell verwalten **Aufgaben:** - Erstellen Sie folgende Benutzer: * alice (UID 2001, Gruppe: developers) * bob (UID 2002, Gruppe: developers) * charlie (UID 2003, Gruppe: admins) - Erstellen Sie die Gruppen developers und admins - Fügen Sie alice als Mitglied zur Gruppe admins hinzu - Setzen Sie Passwörter für alle Benutzer - Setzen Sie für bob ein Passwort-Ablaufdatum (90 Tage) **Lösung:** # Gruppen erstellen sudo groupadd developers sudo groupadd admins # Benutzer erstellen sudo useradd -u 2001 -g developers -m -s /bin/bash alice sudo useradd -u 2002 -g developers -m -s /bin/bash bob sudo useradd -u 2003 -g admins -m -s /bin/bash charlie # Passwörter setzen sudo passwd alice sudo passwd bob sudo passwd charlie # Sekundäre Gruppe sudo usermod -aG admins alice # Passwort-Ablauf sudo chage -M 90 bob # Überprüfen id alice groups alice sudo chage -l bob # Benutzer-Informationen getent passwd alice finger alice # falls installiert \\ ===== Übung 3.2: Dateiberechtigungen ===== **Ziel:** Komplexe Berechtigungsszenarien verstehen **Aufgaben:** - Erstellen Sie folgende Struktur: /srv/projects/ ├── dev/ ├── test/ └── prod/ - Setzen Sie Rechte: * dev/: Gruppe developers, rwxrwxr-x * test/: Gruppe developers, rwxr-xr-x * prod/: Gruppe admins, rwxr-x--- - Setzen Sie Sticky Bit auf dev/ - Erstellen Sie Test-Dateien und prüfen Sie Zugriffe **Lösung:** sudo mkdir -p /srv/projects/{dev,test,prod} # Besitzer und Rechte sudo chown -R root:developers /srv/projects/dev sudo chmod 775 /srv/projects/dev sudo chmod +t /srv/projects/dev # Sticky Bit sudo chown -R root:developers /srv/projects/test sudo chmod 755 /srv/projects/test sudo chown -R root:admins /srv/projects/prod sudo chmod 750 /srv/projects/prod # Rechte prüfen ls -la /srv/projects/ # Testen sudo -u alice touch /srv/projects/dev/alice_file.txt sudo -u bob touch /srv/projects/dev/bob_file.txt # Sticky Bit Test (sollte fehlschlagen) sudo -u alice rm /srv/projects/dev/bob_file.txt # Fehler: Operation not permitted # bob kann eigene Datei löschen sudo -u bob rm /srv/projects/dev/bob_file.txt \\ ===== Übung 3.3: ACLs (Optional) ===== **Ziel:** Erweiterte Zugriffsrechte mit ACLs **Aufgaben:** - Erstellen Sie /srv/shared/ - Geben Sie alice Lese- und Schreibrechte - Geben Sie bob nur Leserechte - Geben Sie charlie volle Rechte - Setzen Sie Default-ACLs für neue Dateien **Lösung:** sudo mkdir /srv/shared # ACLs setzen sudo setfacl -m u:alice:rw /srv/shared sudo setfacl -m u:bob:r /srv/shared sudo setfacl -m u:charlie:rwx /srv/shared # Default-ACLs für neue Dateien sudo setfacl -d -m u:alice:rw /srv/shared sudo setfacl -d -m u:bob:r /srv/shared # Anzeigen getfacl /srv/shared # Testen sudo -u alice touch /srv/shared/test.txt getfacl /srv/shared/test.txt sudo -u alice echo "test" > /srv/shared/test.txt sudo -u bob cat /srv/shared/test.txt # Lesen OK sudo -u bob echo "more" >> /srv/shared/test.txt # Schreiben Fehler # ACLs entfernen sudo setfacl -b /srv/shared \\ ===== Übung 3.4: Prozessverwaltung ===== **Ziel:** Prozesse überwachen und verwalten **Aufgaben:** - Starten Sie einen langen Prozess im Hintergrund: sleep 1000 & - Finden Sie die PID mit ps und pgrep - Überwachen Sie mit top/htop - Ändern Sie die Priorität mit renice - Beenden Sie den Prozess mit kill **Erweiterte Aufgaben:** - Starten Sie 5 Prozesse mit verschiedenen Prioritäten - Überwachen Sie CPU-Auslastung mit top - Finden Sie den speicherhungrigsten Prozess - Erstellen Sie ein Skript, das Prozesse über 80% CPU beendet **Lösung:** # Prozess starten sleep 1000 & PID=$! echo "PID: $PID" # Finden ps aux | grep sleep pgrep sleep pgrep -l sleep # mit Name # Monitoring top -p $PID htop -p $PID # falls installiert # Priorität ändern nice -n 10 sleep 2000 & # Neuer Prozess mit Priorität sudo renice -n 10 -p $PID # Bestehenden ändern # Process-Informationen cat /proc/$PID/status cat /proc/$PID/cmdline # Beenden kill $PID kill -15 $PID # SIGTERM (Standard) kill -9 $PID # SIGKILL (erzwingen) # Monitoring-Skript #!/bin/bash while true; do ps aux | awk '$3 > 80 { print "High CPU:", $2, $11, $3"%" system("kill "$2) }' sleep 5 done \\ ===== Übung 3.5: Performance-Monitoring ===== **Ziel:** System-Performance überwachen **Aufgaben:** - Prüfen Sie RAM-Auslastung mit free - Überwachen Sie Disk-I/O mit iostat - Zeigen Sie Netzwerk-Verbindungen mit netstat/ss - Erstellen Sie einen Performance-Report **Lösung:** # RAM free -h watch -n 2 free -h cat /proc/meminfo | grep -E "MemTotal|MemAvailable" # Disk I/O iostat -x 1 5 iostat -h -d 2 # Netzwerk netstat -tuln ss -tuln ss -s # Statistiken # Performance-Report erstellen #!/bin/bash REPORT="perf_report_$(date +%Y%m%d_%H%M%S).txt" { echo "=== System Performance Report ===" echo "Date: $(date)" echo "" echo "=== CPU Load ===" uptime echo "" echo "=== Memory ===" free -h echo "" echo "=== Disk Usage ===" df -h echo "" echo "=== Top CPU Processes ===" ps aux --sort=-%cpu | head -10 echo "" echo "=== Top Memory Processes ===" ps aux --sort=-%mem | head -10 echo "" echo "=== Network Connections ===" ss -s echo "" echo "=== Disk I/O ===" iostat -x 1 1 } > $REPORT cat $REPORT \\ ===== Zusatz-Challenge: Multi-User-Projekt-Setup ===== **Erstellen Sie eine komplette Multi-User-Umgebung:** - 3 Entwickler-Benutzer - 2 Admin-Benutzer - Projekt-Verzeichnisse mit korrekten Rechten - Shared-Verzeichnis mit ACLs - Automatisches Cleanup-Skript für alte Dateien #!/bin/bash # Multi-User Project Setup # Gruppen erstellen sudo groupadd developers sudo groupadd admins sudo groupadd project_users # Benutzer erstellen for i in {1..3}; do sudo useradd -m -g developers -G project_users -s /bin/bash dev$i echo "dev$i:password123" | sudo chpasswd done for i in {1..2}; do sudo useradd -m -g admins -G project_users -s /bin/bash admin$i echo "admin$i:password123" | sudo chpasswd done # Projekt-Struktur sudo mkdir -p /projects/{dev,staging,prod,shared} # Rechte setzen sudo chown -R root:developers /projects/dev sudo chmod 2775 /projects/dev # SGID sudo chown -R root:project_users /projects/staging sudo chmod 2770 /projects/staging sudo chown -R root:admins /projects/prod sudo chmod 2750 /projects/prod # Shared mit ACLs sudo mkdir /projects/shared sudo setfacl -m g:developers:rwx /projects/shared sudo setfacl -m g:admins:rwx /projects/shared sudo setfacl -d -m g:developers:rwx /projects/shared sudo setfacl -d -m g:admins:rwx /projects/shared # Cleanup-Skript cat << 'EOF' | sudo tee /usr/local/bin/project_cleanup.sh #!/bin/bash find /projects/dev -type f -mtime +30 -delete find /projects/staging -type f -mtime +14 -delete echo "$(date): Cleanup completed" >> /var/log/project_cleanup.log EOF sudo chmod +x /usr/local/bin/project_cleanup.sh # Cronjob für Cleanup echo "0 2 * * * /usr/local/bin/project_cleanup.sh" | sudo crontab - echo "Setup completed!" \\ ===== Siehe auch ===== * [[sammlung:Benutzerverwaltung|Benutzerverwaltung]] * [[sammlung:dateirechte_uebersicht|Dateiberechtigungen]] * [[sammlung:acl|ACLs]] * [[sammlung:top|Prozess-Monitoring]] {{tag>übung workshop benutzer rechte prozesse}}