Benutzer-Werkzeuge

Webseiten-Werkzeuge


nextcloud:administration:user-anlegen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
nextcloud:administration:user-anlegen [2026/07/01 05:29] – gelöscht - Externe Bearbeitung (Datum unbekannt) 127.0.0.1nextcloud:administration:user-anlegen [2026/07/05 07:11] (aktuell) – ↷ Seite von nextcloud:administration:administration:user-anlegen nach nextcloud:administration:user-anlegen verschoben jrberndt
Zeile 1: Zeile 1:
 +====== Skript: neuen-benutzer-anlegen-DCB.sh ======
  
 +===== Funtion =====
 +Das Skript **neuen-benutzer-anlegen-DCB.sh** dient zum einfachen Anlegen eines neuen Benutzers in einer Nextcloud-Installation.\\ Nur der root (der System-Admin) darf es verwenden 
 +
 +==== Parameter ====
 +* Das Skript fragt interaktiv nach den Benutzerdaten:
 +  * Vollständiger Name (Display-Name)
 +  * E-Mail-Adresse
 +  * Benutzername
 +  * (Optional) Gruppe – falls nicht angegeben, wird eine Standardgruppe verwendet
 +==== Prüfungen ====
 +  * Es prüft, ob der Benutzername oder die E-Mail-Adresse bereits existieren.\\ Es sollen keine doppelten E-MAil-Adressen in der ganzen Nextcloud auftreten.
 +  * Falls die angegebene Gruppe nicht existiert, wird die Standardgruppe verwendet.
 +  * Über dieses Skript darf **die Admin - Gruppe NICHT** vergeben werden!\\ Sollte jemand Admin-Berechtigungen benötigen , dann muß ein bestehender Admin dass im Webinterface eintragen. 
 +  * Der neue Benutzer erhält eine E-Mail von Nextcloud, um ein eigenes Passwort zu setzen.
 +
 +
 +===== Code =====
 +++++ neuen-benutzer-anlegen-DCB.sh |
 +<code bash>
 +#!/bin/bash
 +usage=$(cat << HEREDOC
 +  -----------------------------------------------------------------------
 +   J.Berndt
 +   2026-05-25
 +   https://jbwiki.fred25.de/doku.php
 +   
 +   https://chat.deepseek.com/a/chat/s/c17ac438-707d-4258-95ab-b07cbdd8ff64
 +   
 +  update:check                           Check for server and app updates
 + user
 +  user:add                               adds an account
 +  user:auth-tokens:add                   [user:add-app-password] Add app password for the named account
 +  user:auth-tokens:delete                Deletes an authentication token
 +  user:auth-tokens:list                  List authentication tokens of an user
 +  user:clear-avatar-cache                clear avatar cache
 +  user:delete                            deletes the specified user
 +  user:disable                           disables the specified user
 +  user:enable                            enables the specified user
 +  user:info                              show user info
 +  user:keys:verify                       Verify if the stored public key matches the stored private key
 +  user:lastseen                          shows when the user was logged in last time
 +  user:list                              list configured users
 +  user:profile                           Read and modify user profile properties
 +  user:report                            shows how many users have access
 +  user:resetpassword                     Resets the password of the named user
 +  user:setting                           Read and modify user settings
 +  user:sync-account-data                 sync user backend data to accounts table for configured users
 +  user:welcome                           Sends the welcome email
 + 
 + ## funktionierender Weg um den User anzulegen ################
 + sudo -u www-data php occ user:add --generate-password --display-name "Reinhold Berndt" --group web_admins --email juergen-berndt@gmx.net reinhold
 + 
 + 1. Es soll kein Passwort vorgegeben werden
 + 
 +  -----------------------------------------------------------------------
 +HEREDOC
 +)
 +debug=0
 +
 +
 +#### nur root darf diese Skript ausführen #####
 +[[ $(id -u) -ne 0 ]] && { echo -e "root Privilegien erforderlich!\n --> ${BASH_SOURCE##*/}:$LINENO\n\n"; exit; }
 +
 +
 +# Konfiguration – BITTE ANPASSEN!
 +NEXTCLOUD_PATH="/var/www/html/nc.dcb-charlot.de"        # Pfad zur Nextcloud-Installation
 +OCC="sudo -u www-data php ${NEXTCLOUD_PATH}/occ"
 +NEXTCLOUD_URL="https://nc.dcb-charlot.de"               # Deine Nextcloud-URL
 +JSON_CONFIG="config.json"
 +
 +STANDARD_GRUPPE="Mitglieder"
 +
 +aROT="\033[31m"
 +eROT="\033[0m"
 +
 +
 +## wenn beim letzen Mal etwas schief gegangen war dann 
 +## gibt es noch die config.json um nicht alles wieder eingeben zu müssen
 +## 
 +if [[ -e $JSON_CONFIG ]];then
 +    [[ $debug -ne 0 ]] && echo -e "JSON_CONFIG gefunden\n";
 +    # Werte aus config.json auslesen und in Variablen speichern
 +    FULLNAME=$(jq -r '.FULLNAME' config.json)
 +    EMAIL=$(jq -r '.EMAIL' config.json)
 +    USERNAME=$(jq -r '.USERNAME' config.json)
 +    GROUP=$(jq -r '.GROUP' config.json)
 +
 +fi
 +
 +# Benutzerdaten interaktiv abfragen
 +echo "=== Neuen Nextcloud-Benutzer anlegen ==="
 +read -p "Vollständiger Name [Standard: $FULLNAME]: " input
 +[[ -n $input ]] && FULLNAME=$input
 +
 +read -p "E-Mail-Adresse [Standard: $EMAIL]: " input
 +[[ -n $input ]] && EMAIL=$input
 +
 +read -p "Benutzername [Standard: $USERNAME]: " input
 +[[ -n $input ]] && USERNAME=$input
 +
 +read -p "Gruppe [Standard: $STANDARD_GRUPPE]: " input
 +[[ -n $input ]] && GROUP=$input || GROUP=$STANDARD_GRUPPE
 +
 +## Gruppe soll nicht leer sein
 +if [[ -z $GROUP ]];then
 +    GROUP="$STANDARD_GRUPPE"
 +fi
 +
 +if [[ $GROUP == "admin" ]] || [[ $GROUP == "Admin" ]];then
 +    echo -e "\n${aROT}Die admin.Gruppe darf nur im Webinterface vergeben werden!${eROT}\nersetzt durch die Gruppe $STANDARD_GRUPPE\n"
 +    GROUP=$STANDARD_GRUPPE
 +fi
 +
 +## in die config schreiben falls etwas nicht klappt 
 +jq -n \
 +   --arg fullname "$FULLNAME" \
 +   --arg email "$EMAIL" \
 +   --arg username "$USERNAME" \
 +   '{FULLNAME: $fullname, EMAIL: $email, USERNAME: $username}' \
 +   > $JSON_CONFIG
 +
 +
 +
 +## prüfen ob die gewünchte Gruppe existiert
 +if [[ -z $($OCC group:list |grep "${GROUP}:") ]];then
 +    echo -e "${aROT}Eine Gruppe mit dem Namen $GROUP gibt es nicht${eROT}\nStandardgruppe ($STANDARD_GRUPPE) gesetzt.\n\n"
 +    GROUP=$STANDARD_GRUPPE
 +fi
 +
 +
 +# Optional: Ausgabe zur Kontrolle
 +if [[ $debug -ne 0 ]];then
 +    echo -e ""
 +    echo -e "FULLNAME: $FULLNAME"
 +    echo -e "EMAIL: $EMAIL"
 +    echo -e "USERNAME: $USERNAME"
 +    echo -e "GROUP: $GROUP"
 +fi   
 +
 +
 +
 +## die vorhandenen Emails auslesen 
 +usernamen=$($OCC user:list |sed 's/ \+//g; s/^-//g' |cut -d: -f1 )
 +[[ $debug -ne 0 ]] && echo -e "\nalle usernamen\n=$usernamen";
 +
 +declare -i fehler=0
 +for user in $usernamen;
 +do
 +
 +    [[ $debug -ne 0 ]] && echo -e "user='$user'";
 +    user_json=$(echo "$($OCC user:info $user --output=json)")
 +    [[ $debug -ne 0 ]] && echo -e "user_json=$user_json";
 +    if [[ $user == $USERNAME ]];then
 +        echo -e "${aROT}der USERNAME:$USERNAME ist schon vohanden${eROT}"
 +        ((fehler++))
 +    fi
 +    
 +    if [[ $(echo "$user_json" | jq -r '.email') == $EMAIL ]];then
 +        echo -e "${aROT}die Emailadresse:$EMAIL ist schon vorhanden${eROT}"
 +        ((fehler++))
 +    fi
 +    echo
 +done
 +
 +
 +if [[ $fehler -ne 0 ]];then
 +   echo -e "\n${aROT}mit Fehlern beendet${eROT}\n\n" 
 +   exit
 +fi
 +
 +
 +if ! $OCC user:add --generate-password --display-name="$FULLNAME" --email "$EMAIL" --group="$GROUP" "$USERNAME"; then
 +    echo "Fehler: Benutzer '$USERNAME' konnte nicht angelegt werden." >&2
 +    exit 1
 +else
 +    x=x
 +    [[ -e $JSON_CONFIG ]] && rm $JSON_CONFIG
 +fi
 +
 +echo -e ""
 +$OCC user:info $USERNAME --output json_pretty
 +echo -e "\n"
 +
 +</code>
 +++++