====== Aufgabe: Multi-User Projekt-Setup ====== Diese Aufgabe simuliert ein reales Multi-User-Szenario mit überlappenden Gruppenmitgliedschaften und Dateiberechtigungen. [[agenda:agenda-expert_2|← Zurück zur Agenda]] ===== Aufgabenstellung ===== Sie sollen eine Projekt-Umgebung für ein Software-Entwicklungsteam einrichten mit folgenden Anforderungen: ==== Benutzer und Gruppen ==== **Benutzer erstellen:** - user1 (UID 3001) - user2 (UID 3002) - user3 (UID 3003) **Gruppen erstellen:** - gruppe1 (Backend-Team) - gruppe2 (Frontend-Team) - gruppe3 (DevOps-Team) **Gruppenzuordnung:** - user1 → gruppe1, gruppe3 - user2 → gruppe1, gruppe2, gruppe3 - user3 → gruppe2, gruppe3 ==== Verzeichnisstruktur unter /srv/ ==== Erstellen Sie folgende Struktur: /srv/ ├── projekt/ │ ├── backend/ (Gruppe: gruppe1, Rechte: 770) │ ├── frontend/ (Gruppe: gruppe2, Rechte: 770) │ ├── devops/ (Gruppe: gruppe3, Rechte: 770) │ └── shared/ (Gruppe: gruppe3, Rechte: 775, Sticky Bit) ==== Anforderungen an die Dateien ==== **In /srv/projekt/backend/:** - README.md (Besitzer: user1) - backend-config.json (Besitzer: user2) **In /srv/projekt/frontend/:** - index.html (Besitzer: user2) - styles.css (Besitzer: user3) **In /srv/projekt/devops/:** - deploy.sh (Besitzer: user1, ausführbar) - monitoring.conf (Besitzer: user2) **In /srv/projekt/shared/:** - Sticky Bit gesetzt - Test-Dateien von allen Benutzern ===== Detaillierte Anforderungen ===== **1. Benutzerrechte:** - user1 kann nur backend/ und devops/ ändern - user2 kann alle Ordner ändern - user3 kann nur frontend/ und devops/ ändern **2. Shared-Verzeichnis:** - Alle Benutzer können Dateien erstellen - Nur der Besitzer kann seine eigenen Dateien löschen (Sticky Bit) **3. Sicherheit:** - Nur Gruppenmitglieder haben Zugriff - Andere haben keine Rechte ===== Schritt-für-Schritt Anleitung ===== **Schritt 1: Gruppen erstellen** sudo groupadd gruppe1 sudo groupadd gruppe2 sudo groupadd gruppe3 **Schritt 2: Benutzer erstellen** sudo useradd -u 3001 -m -s /bin/bash user1 sudo useradd -u 3002 -m -s /bin/bash user2 sudo useradd -u 3003 -m -s /bin/bash user3 **Schritt 3: Passwörter setzen** sudo passwd user1 sudo passwd user2 sudo passwd user3 **Schritt 4: Gruppenzuordnungen** # user1 → gruppe1, gruppe3 sudo usermod -g gruppe1 user1 sudo usermod -aG gruppe3 user1 # user2 → gruppe1, gruppe2, gruppe3 sudo usermod -g gruppe1 user2 sudo usermod -aG gruppe2,gruppe3 user2 # user3 → gruppe2, gruppe3 sudo usermod -g gruppe2 user3 sudo usermod -aG gruppe3 user3 **Schritt 5: Verzeichnisstruktur** sudo mkdir -p /srv/projekt/{backend,frontend,devops,shared} **Schritt 6: Rechte setzen** # backend/ für gruppe1 sudo chown root:gruppe1 /srv/projekt/backend sudo chmod 770 /srv/projekt/backend # frontend/ für gruppe2 sudo chown root:gruppe2 /srv/projekt/frontend sudo chmod 770 /srv/projekt/frontend # devops/ für gruppe3 sudo chown root:gruppe3 /srv/projekt/devops sudo chmod 770 /srv/projekt/devops # shared/ für gruppe3 mit Sticky Bit sudo chown root:gruppe3 /srv/projekt/shared sudo chmod 1775 /srv/projekt/shared **Schritt 7: Dateien erstellen** # Backend-Dateien sudo -u user1 touch /srv/projekt/backend/README.md sudo -u user2 touch /srv/projekt/backend/backend-config.json # Frontend-Dateien sudo -u user2 touch /srv/projekt/frontend/index.html sudo -u user3 touch /srv/projekt/frontend/styles.css # DevOps-Dateien sudo -u user1 touch /srv/projekt/devops/deploy.sh sudo chmod +x /srv/projekt/devops/deploy.sh sudo -u user2 touch /srv/projekt/devops/monitoring.conf \\ ===== Komplettlösung ===== #!/bin/bash # Multi-User Projekt Setup set -e # Bei Fehler abbrechen echo "=== Multi-User Projekt Setup ===" # Gruppen erstellen echo "Erstelle Gruppen..." sudo groupadd gruppe1 sudo groupadd gruppe2 sudo groupadd gruppe3 # Benutzer erstellen echo "Erstelle Benutzer..." sudo useradd -u 3001 -m -s /bin/bash user1 sudo useradd -u 3002 -m -s /bin/bash user2 sudo useradd -u 3003 -m -s /bin/bash user3 # Passwörter setzen (alle: 'password123') echo "Setze Passwörter..." echo "user1:password123" | sudo chpasswd echo "user2:password123" | sudo chpasswd echo "user3:password123" | sudo chpasswd # Gruppenzuordnungen echo "Ordne Benutzer zu Gruppen..." # user1 → gruppe1 (primär), gruppe3 sudo usermod -g gruppe1 user1 sudo usermod -aG gruppe3 user1 # user2 → gruppe1 (primär), gruppe2, gruppe3 sudo usermod -g gruppe1 user2 sudo usermod -aG gruppe2,gruppe3 user2 # user3 → gruppe2 (primär), gruppe3 sudo usermod -g gruppe2 user3 sudo usermod -aG gruppe3 user3 # Verzeichnisstruktur echo "Erstelle Verzeichnisstruktur..." sudo mkdir -p /srv/projekt/{backend,frontend,devops,shared} # Rechte setzen echo "Setze Berechtigungen..." sudo chown root:gruppe1 /srv/projekt/backend sudo chmod 770 /srv/projekt/backend sudo chown root:gruppe2 /srv/projekt/frontend sudo chmod 770 /srv/projekt/frontend sudo chown root:gruppe3 /srv/projekt/devops sudo chmod 770 /srv/projekt/devops sudo chown root:gruppe3 /srv/projekt/shared sudo chmod 1775 /srv/projekt/shared # Mit Sticky Bit # Dateien erstellen echo "Erstelle Projekt-Dateien..." # Backend sudo -u user1 bash -c 'cat > /srv/projekt/backend/README.md << EOF # Backend Project Entwickelt von user1 und user2 EOF' sudo -u user2 bash -c 'cat > /srv/projekt/backend/backend-config.json << EOF { "database": "postgresql", "port": 5432 } EOF' # Frontend sudo -u user2 bash -c 'cat > /srv/projekt/frontend/index.html << EOF Projekt

Frontend Projekt

EOF' sudo -u user3 bash -c 'cat > /srv/projekt/frontend/styles.css << EOF body { font-family: Arial, sans-serif; margin: 20px; } EOF' # DevOps sudo -u user1 bash -c 'cat > /srv/projekt/devops/deploy.sh << EOF #!/bin/bash echo "Deploying application..." EOF' sudo chmod +x /srv/projekt/devops/deploy.sh sudo -u user2 bash -c 'cat > /srv/projekt/devops/monitoring.conf << EOF [monitoring] enabled=true interval=60 EOF' echo "" echo "=== Setup abgeschlossen! ===" echo "" echo "Benutzer und Gruppen:" echo " user1: gruppe1 (primär), gruppe3" echo " user2: gruppe1 (primär), gruppe2, gruppe3" echo " user3: gruppe2 (primär), gruppe3" echo "" echo "Passwort für alle: password123" echo "" echo "Verzeichnisse unter /srv/projekt/:" ls -la /srv/projekt/
\\ ===== Verifikation ===== **Testen Sie das Setup mit folgenden Befehlen:** # Benutzer-Gruppen prüfen id user1 id user2 id user3 # Verzeichnisstruktur prüfen tree /srv/projekt/ ls -la /srv/projekt/ # Zugriffsrechte testen sudo -u user1 ls -la /srv/projekt/backend/ # Sollte funktionieren sudo -u user1 ls -la /srv/projekt/frontend/ # Sollte fehlschlagen sudo -u user2 ls -la /srv/projekt/backend/ # Sollte funktionieren sudo -u user2 ls -la /srv/projekt/frontend/ # Sollte funktionieren sudo -u user3 ls -la /srv/projekt/backend/ # Sollte fehlschlagen sudo -u user3 ls -la /srv/projekt/frontend/ # Sollte funktionieren # Sticky Bit testen sudo -u user1 touch /srv/projekt/shared/user1_file.txt sudo -u user2 touch /srv/projekt/shared/user2_file.txt sudo -u user2 rm /srv/projekt/shared/user1_file.txt # Sollte fehlschlagen! ===== Erweiterte Aufgaben ===== **1. ACLs hinzufügen:** - Geben Sie user3 Lesezugriff auf backend/ **2. Quota einrichten:** - Limitieren Sie user1 auf 100MB in /srv/projekt **3. Automatisierung:** - Erstellen Sie ein Skript für Cleanup alter Dateien - Automatischer Report wer welche Dateien erstellt hat ===== Siehe auch ===== * [[sammlung:Benutzerverwaltung|Benutzerverwaltung]] * [[sammlung:dateirechte_uebersicht|Dateiberechtigungen]] * [[sammlung:acl|ACLs]] * [[uebungen:tag3_benutzer_rechte|Tag 3 Übungen]] {{tag>aufgabe benutzer gruppen rechte praxis}}