
🌐 Auch auf: English · Français · Español
Du betreibst also eine Nextcloud-Instanz und willst Benutzer im Stapel anlegen wie ein richtiger Sysadmin? Hier kommt eine reine Shell-Lösung, die Benutzer aus einer CSV-Datei anlegt, sie Gruppen zuweist (auch mehreren) – und du fühlst dich dabei wie der Boss.
📦 Voraussetzungen
- SSH-Zugriff auf deinen Nextcloud-Server
- Kommandozeilenzugriff auf
occ(liegt im Wurzelverzeichnis deiner Nextcloud-Installation, z. B./var/www/html/nextcloud) - Deine CSV-Datei, startklar
📄 Format der CSV-Datei
Keine Kopfzeile, nur pure Daten. Format:
username,password,Display Name,Group1;Group2;Group3Beispiel:
next001,secret123,Max Mustermann,Vorstand;Mitglieder
next002,test456,Lisa Beispiel,Trainer
next003,pass789,Peter Test,Trainer;Mitglieder🛠️ Das Bash-Skript: create_users_with_groups.sh
<#!/bin/bash
CSV_FILE="benutzer.csv" # Path to your CSV file
cd /var/www/html/nextcloud || exit 1
# Read file line by line
while IFS=',' read -r username password displayname groups_raw; do
# Skip empty or malformed lines
if [[ -z "$username" || -z "$password" || -z "$displayname" ]]; then
echo "⚠️ Skipping invalid or empty line: $username, $displayname"
continue
fi
echo "▶️ Creating user: $username ($displayname)"
# Export password into environment
export OC_PASS="$password"
# Use -E to preserve environment for www-data
sudo -E -u www-data php occ user:add --password-from-env "$username" --display-name "$displayname"
USER_EXISTS=$?
if [ $USER_EXISTS -ne 0 ]; then
echo "❌ Failed to create user '$username'. Skipping group assignment."
continue
fi
# Split group list on semicolon (;) and trim whitespace
IFS=';' read -ra groups <<< "$groups_raw" for group in "${groups[@]}"; do group=$(echo "$group" | xargs) # Trim spaces if [ -n "$group" ]; then echo " ➕ Adding $username to group '$group'" # Create group if not already existing (ignore stderr) sudo -u www-data php occ group:add "$group" 2>/dev/null
# Add user to group
sudo -u www-data php occ group:adduser "$group" "$username"
fi
done
done < "$CSV_FILE"/code>⚙️ Verwendung
chmod +x create_users_with_groups.sh
./create_users_with_groups.shAchte darauf, dass deine benutzer.csv im selben Verzeichnis liegt, oder passe den Pfad entsprechend an.
🔐 Hinweise
- Passwörter werden sicher über Umgebungsvariablen übergeben – nicht über die Kommandozeile oder stdin
- Gruppen werden automatisch angelegt, falls es sie noch nicht gibt
- Ein Semikolon (
;) trennt mehrere Gruppen pro Benutzer
🧠 Bonus-Tipp
Du willst in den vollen Automatisierungsmodus schalten? Bau das in deine Onboarding-Skripte ein oder provisioniere deine Benutzer per LDAP und nutze das Skript nur noch für Sonder- oder Temporärkonten.
🫡 Sysadmin-Ruhm freigeschaltet
Das war’s – deine Benutzer sind jetzt live, in Gruppen sortiert und bereit, wie die Profis zu nextcloudisieren. Du willst Group Folders einrichten und Berechtigungsregeln anwenden? Meld dich – auch da nerde ich mich gern rein.






