====== Ü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}}