From 93e8d2cc76196a28b044838619674d08896a45f9 Mon Sep 17 00:00:00 2001 From: "sebastian.zell" Date: Mon, 30 Dec 2024 01:48:39 +0000 Subject: [PATCH] Dateien nach "benutzer_anlegen" hochladen --- benutzer_anlegen/add_group.sh | 22 +++++++++++ benutzer_anlegen/add_user.sh | 51 ++++++++++++++++++++++++ benutzer_anlegen/add_user_to_group.sh | 56 +++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 benutzer_anlegen/add_group.sh create mode 100644 benutzer_anlegen/add_user.sh create mode 100644 benutzer_anlegen/add_user_to_group.sh diff --git a/benutzer_anlegen/add_group.sh b/benutzer_anlegen/add_group.sh new file mode 100644 index 0000000..52355e2 --- /dev/null +++ b/benutzer_anlegen/add_group.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +source ./data_utils.sh + +group_name=$(dialog --inputbox "Geben Sie den Namen der neuen Gruppe ein:" 10 40 3>&1 1>&2 2>&3) +[[ -z "$group_name" ]] && exit 1 + +# Prüfen, ob die Gruppe bereits existiert +if grep -q "^$group_name:" <(awk '/^\[groups\]/ {flag=1; next} /^\[users\]/ {flag=0} flag' encrypted_users.list); then + # Wenn die Gruppe gelöscht ist, reaktivieren + sed -i "/^\[groups\]/,/^\[users\]/s/^$group_name:.*:geloescht$/$group_name:$gid:aktiv/" encrypted_users.list + dialog --msgbox "Die Gruppe '$group_name' wurde reaktiviert." 10 40 + exit 0 +fi + +# Berechnung der nächsten GID (beginnend ab 501) +max_gid=$(awk '/^\[groups\]/ {flag=1; next} /^\[users\]/ {flag=0} flag' encrypted_users.list | awk -F: '{print $2}' | sort -n | tail -n1) +next_gid=$((max_gid > 500 ? max_gid + 1 : 501)) + +# Gruppe in der Datendatei speichern +echo "$group_name:$next_gid:aktiv" >>encrypted_users.list +dialog --msgbox "Gruppe '$group_name' mit GID '$next_gid' hinzugefügt." 10 40 diff --git a/benutzer_anlegen/add_user.sh b/benutzer_anlegen/add_user.sh new file mode 100644 index 0000000..105d8f7 --- /dev/null +++ b/benutzer_anlegen/add_user.sh @@ -0,0 +1,51 @@ +#!/bin/bash +source ./data_utils.sh + +add_user() { + initialize_user_list + + # Benutzername abfragen + username=$(dialog --inputbox "Benutzernamen eingeben:" 10 50 3>&1 1>&2 2>&3) + if [[ -z "$username" ]]; then + dialog --msgbox "Der Benutzername darf nicht leer sein." 10 30 + return + fi + + # Überprüfen, ob der Benutzer existiert + existing_user=$(grep "^$username:" <(read_users)) + if [[ -n "$existing_user" ]]; then + if echo "$existing_user" | grep -q ":aktiv$"; then + dialog --msgbox "Benutzer $username existiert bereits." 10 30 + return + fi + + # Benutzer ist gelöscht, wird wieder aktiviert + uid=$(echo "$existing_user" | cut -d':' -f2) + dialog --msgbox "Benutzer $username war gelöscht und wird wiederhergestellt." 10 30 + else + # Nächste verfügbare UID berechnen + uid=$(($(read_users | cut -d':' -f2 | sort -n | tail -1) + 1)) + if [[ -z "$uid" || "$uid" -lt 2000 ]]; then + uid=2000 + fi + fi + + # Passwort abfragen + password=$(dialog --insecure --passwordbox "Passwort eingeben:" 10 50 3>&1 1>&2 2>&3) + password_confirm=$(dialog --insecure --passwordbox "Passwort erneut eingeben:" 10 50 3>&1 1>&2 2>&3) + + if [[ "$password" != "$password_confirm" ]]; then + dialog --msgbox "Passwörter stimmen nicht überein." 10 30 + return + fi + + # Passwort verschlüsseln + encrypted_password=$(echo "$password" | openssl enc -aes-256-cbc -salt -base64 -pass pass:my_secret_key) + + # Benutzer hinzufügen oder wiederherstellen + add_user_to_file "$username" "$uid" "$encrypted_password" "fileserver" "aktiv" + + dialog --msgbox "Benutzer $username wurde erfolgreich hinzugefügt." 10 30 +} + +add_user diff --git a/benutzer_anlegen/add_user_to_group.sh b/benutzer_anlegen/add_user_to_group.sh new file mode 100644 index 0000000..16516a6 --- /dev/null +++ b/benutzer_anlegen/add_user_to_group.sh @@ -0,0 +1,56 @@ +#!/bin/bash +source ./data_utils.sh + +add_user_to_group() { + initialize_user_list + + # Benutzerliste abrufen (nur aktive Benutzer) + users=$(read_users | grep ":aktiv$" | awk -F':' '{print $1 " " $1}') + if [[ -z "$users" ]]; then + dialog --msgbox "Keine aktiven Benutzer verfügbar." 10 30 + return + fi + + # Benutzer grafisch auswählen + username=$(dialog --menu "Benutzer auswählen:" 20 50 10 $users 3>&1 1>&2 2>&3) + if [[ -z "$username" ]]; then + dialog --msgbox "Kein Benutzer ausgewählt." 10 30 + return + fi + + # Gruppenliste abrufen (nur aktive Gruppen) + groups=$(read_groups | grep ":aktiv$" | awk -F':' '{print $1 " " $1}') + if [[ -z "$groups" ]]; then + dialog --msgbox "Keine aktiven Gruppen verfügbar." 10 30 + return + fi + + # Gruppe grafisch auswählen + groupname=$(dialog --menu "Gruppe auswählen, zu der $username hinzugefügt werden soll:" 20 50 10 $groups 3>&1 1>&2 2>&3) + if [[ -z "$groupname" ]]; then + dialog --msgbox "Keine Gruppe ausgewählt." 10 30 + return + fi + + # Benutzer zur Gruppe hinzufügen + existing_user=$(grep "^$username:" <(read_users)) + current_groups=$(echo "$existing_user" | cut -d':' -f4) + + # Überprüfen, ob Benutzer bereits in der Gruppe ist + if [[ "$current_groups" == *"$groupname"* ]]; then + dialog --msgbox "Benutzer $username ist bereits in der Gruppe $groupname." 10 30 + return + fi + + # GID der Gruppe abrufen + group_entry=$(grep "^$groupname:" <(read_groups)) + group_gid=$(echo "$group_entry" | cut -d':' -f2) + + # Aktualisieren der Gruppenzugehörigkeit + updated_groups="${current_groups},${groupname}" + sed -i "s|^$username:.*|$username:$(echo "$existing_user" | cut -d':' -f2-3):$updated_groups:aktiv|" "$USER_LIST" + + dialog --msgbox "Benutzer $username wurde erfolgreich zur Gruppe $groupname hinzugefügt." 10 30 +} + +add_user_to_group