#!/bin/bash source ./data_utils.sh remove_user_from_group() { initialize_user_list # Benutzer auswählen users=$(read_users | grep ":aktiv$" | awk -F':' '{print $1 " " $1}') if [[ -z "$users" ]]; then dialog --msgbox "Keine aktiven Benutzer verfügbar." 10 40 return fi username=$(dialog --menu "Benutzer auswählen, um ihn aus einer Gruppe zu entfernen:" 20 50 10 $users 3>&1 1>&2 2>&3) if [[ -z "$username" ]]; then dialog --msgbox "Kein Benutzer ausgewählt." 10 40 return fi # Aktuelle Gruppenzugehörigkeiten des Benutzers abrufen existing_user=$(grep "^$username:" <(read_users)) current_groups=$(echo "$existing_user" | cut -d':' -f4) # Prüfen, ob der Benutzer nur in "fileserver" ist if [[ "$current_groups" == "fileserver" ]]; then dialog --msgbox "Benutzer $username kann nicht aus der Gruppe 'fileserver' entfernt werden." 10 40 return fi # Gruppenliste anzeigen, ohne "fileserver" selectable_groups=$(echo "$current_groups" | tr ',' '\n' | grep -v "fileserver" | awk '{print $1 " " $1}') if [[ -z "$selectable_groups" ]]; then dialog --msgbox "Benutzer $username ist nur in der Gruppe 'fileserver'." 10 40 return fi group_to_remove=$(dialog --menu "Gruppe auswählen, aus der $username entfernt werden soll:" 20 50 10 $selectable_groups 3>&1 1>&2 2>&3) if [[ -z "$group_to_remove" ]]; then dialog --msgbox "Keine Gruppe ausgewählt." 10 40 return fi # Gruppe aus der Liste entfernen updated_groups=$(echo "$current_groups" | tr ',' '\n' | grep -v "^$group_to_remove$" | tr '\n' ',' | sed 's/,$//') # Daten in der Datei aktualisieren sed -i "s|^$username:.*|$username:$(echo "$existing_user" | cut -d':' -f2-3):$updated_groups:aktiv|" "$USER_LIST" dialog --msgbox "Benutzer $username wurde erfolgreich aus der Gruppe $group_to_remove entfernt." 10 40 } remove_user_from_group