Inhaltsverzeichnis

Übungen Tag 3: Benutzer, Rechte und Prozesse

Diese Übungen vertiefen die Themen von Tag 3 des Linux Expert Workshops.

← Zurück zur Agenda

Übung 3.1: Benutzerverwaltung

Ziel: Benutzer und Gruppen professionell verwalten

Aufgaben:

  1. Erstellen Sie folgende Benutzer:
    • alice (UID 2001, Gruppe: developers)
    • bob (UID 2002, Gruppe: developers)
    • charlie (UID 2003, Gruppe: admins)
  2. Erstellen Sie die Gruppen developers und admins
  3. Fügen Sie alice als Mitglied zur Gruppe admins hinzu
  4. Setzen Sie Passwörter für alle Benutzer
  5. Setzen Sie für bob ein Passwort-Ablaufdatum (90 Tage)

Lösung:

Lösung

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:

  1. Erstellen Sie folgende Struktur:
/srv/projects/
├── dev/
├── test/
└── prod/
  1. Setzen Sie Rechte:
    • dev/: Gruppe developers, rwxrwxr-x
    • test/: Gruppe developers, rwxr-xr-x
    • prod/: Gruppe admins, rwxr-x—
  2. Setzen Sie Sticky Bit auf dev/
  3. Erstellen Sie Test-Dateien und prüfen Sie Zugriffe

Lösung:

Lösung

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:

  1. Erstellen Sie /srv/shared/
  2. Geben Sie alice Lese- und Schreibrechte
  3. Geben Sie bob nur Leserechte
  4. Geben Sie charlie volle Rechte
  5. Setzen Sie Default-ACLs für neue Dateien

Lösung:

Lösung

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:

  1. Starten Sie einen langen Prozess im Hintergrund:
sleep 1000 &
  1. Finden Sie die PID mit ps und pgrep
  2. Überwachen Sie mit top/htop
  3. Ändern Sie die Priorität mit renice
  4. Beenden Sie den Prozess mit kill

Erweiterte Aufgaben:

  1. Starten Sie 5 Prozesse mit verschiedenen Prioritäten
  2. Überwachen Sie CPU-Auslastung mit top
  3. Finden Sie den speicherhungrigsten Prozess
  4. Erstellen Sie ein Skript, das Prozesse über 80% CPU beendet

Lösung:

Lösung

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:

  1. Prüfen Sie RAM-Auslastung mit free
  2. Überwachen Sie Disk-I/O mit iostat
  3. Zeigen Sie Netzwerk-Verbindungen mit netstat/ss
  4. Erstellen Sie einen Performance-Report

Lösung:

Lösung

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:

  1. 3 Entwickler-Benutzer
  2. 2 Admin-Benutzer
  3. Projekt-Verzeichnisse mit korrekten Rechten
  4. Shared-Verzeichnis mit ACLs
  5. Automatisches Cleanup-Skript für alte Dateien

Komplettlösung

Komplettlösung

#!/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