Dateien nach "benutzer_anlegen" hochladen
This commit is contained in:
parent
7142de7260
commit
7451d52f59
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cat >encrypted_users.list <<EOF
|
||||||
|
[users]
|
||||||
|
[groups]
|
||||||
|
fileserver:500:aktiv
|
||||||
|
EOF
|
||||||
|
|
||||||
|
dialog --msgbox "Datendatei wurde initialisiert." 10 40
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
0~#!/bin/bash
|
||||||
|
source ./data_utils.sh
|
||||||
|
|
||||||
|
list_groups() {
|
||||||
|
initialize_user_list
|
||||||
|
|
||||||
|
# Gruppenliste abrufen
|
||||||
|
group_list=$(read_groups | awk -F':' '{printf "Gruppe: %-20s Status: %s\n", $1, $2}')
|
||||||
|
|
||||||
|
if [[ -z "$group_list" ]]; then
|
||||||
|
dialog --msgbox "Keine Gruppen gefunden." 10 30
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Gruppenliste anzeigen
|
||||||
|
dialog --msgbox "$group_list" 20 70
|
||||||
|
}
|
||||||
|
|
||||||
|
list_groups
|
||||||
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
source ./data_utils.sh
|
||||||
|
|
||||||
|
list_users() {
|
||||||
|
initialize_user_list
|
||||||
|
|
||||||
|
# Benutzerliste filtern und formatieren
|
||||||
|
user_list=$(read_users | grep ":aktiv$" | awk -F':' '{
|
||||||
|
printf "Benutzer: %-20s UID: %-5s Gruppen: %-20s Status: %s\n", $1, $2, $4, $5
|
||||||
|
}')
|
||||||
|
|
||||||
|
# Überprüfen, ob die Liste leer ist
|
||||||
|
if [[ -z "$user_list" ]]; then
|
||||||
|
dialog --msgbox "Keine aktiven Benutzer gefunden." 10 30
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Benutzerliste anzeigen
|
||||||
|
dialog --msgbox "$user_list" 20 70
|
||||||
|
}
|
||||||
|
|
||||||
|
list_users
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
USER_LIST="/tmp/encrypted_users.list"
|
||||||
|
DECRYPTION_KEY="IhrGeheimerSchlüssel"
|
||||||
|
|
||||||
|
# Funktion: Datei prüfen
|
||||||
|
check_user_list_file() {
|
||||||
|
if [[ ! -f "$USER_LIST" ]]; then
|
||||||
|
echo "Benutzerliste $USER_LIST existiert nicht. Abbruch."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
apply_group_changes() {
|
||||||
|
echo "Beginne Gruppenänderungen..."
|
||||||
|
while read -r group_entry; do
|
||||||
|
group_name=$(echo "$group_entry" | cut -d: -f1)
|
||||||
|
group_gid=$(echo "$group_entry" | cut -d: -f2)
|
||||||
|
group_status=$(echo "$group_entry" | cut -d: -f3)
|
||||||
|
|
||||||
|
if [[ "$group_status" == "aktiv" ]]; then
|
||||||
|
if ! getent group "$group_name" &>/dev/null; then
|
||||||
|
echo "Erstelle Gruppe: $group_name mit GID $group_gid"
|
||||||
|
groupadd --gid "$group_gid" "$group_name"
|
||||||
|
fi
|
||||||
|
elif [[ "$group_status" == "geloescht" ]]; then
|
||||||
|
if getent group "$group_name" &>/dev/null; then
|
||||||
|
echo "Lösche Gruppe: $group_name"
|
||||||
|
groupdel "$group_name"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done < <(awk '/^\[groups\]/ {skip=1; next} skip {print}' "$USER_LIST")
|
||||||
|
}
|
||||||
|
|
||||||
|
apply_user_changes() {
|
||||||
|
echo "Beginne Benutzeränderungen..."
|
||||||
|
while read -r user_entry; do
|
||||||
|
username=$(echo "$user_entry" | cut -d: -f1)
|
||||||
|
uid=$(echo "$user_entry" | cut -d: -f2)
|
||||||
|
password=$(echo "$user_entry" | cut -d: -f3)
|
||||||
|
groups=$(echo "$user_entry" | cut -d: -f4)
|
||||||
|
status=$(echo "$user_entry" | cut -d: -f5)
|
||||||
|
|
||||||
|
if [[ "$status" == "aktiv" ]]; then
|
||||||
|
primary_group="fileserver"
|
||||||
|
additional_groups=$(echo "$groups" | tr ',' '\n' | grep -v "$primary_group" | tr '\n' ',' | sed 's/,$//')
|
||||||
|
|
||||||
|
if ! id "$username" &>/dev/null; then
|
||||||
|
echo "Erstelle Benutzer: $username"
|
||||||
|
useradd --uid "$uid" --gid "$primary_group" --groups "$additional_groups" "$username"
|
||||||
|
|
||||||
|
# Passwort setzen mit chpasswd
|
||||||
|
echo "$username:$(echo "$password" | openssl enc -d -aes-256-cbc -base64 -pass pass:"$DECRYPTION_KEY")" | chpasswd
|
||||||
|
else
|
||||||
|
echo "Benutzer $username existiert bereits. Aktualisiere Gruppen und Passwort..."
|
||||||
|
usermod -g "$primary_group" -G "$additional_groups" "$username"
|
||||||
|
|
||||||
|
# Passwort aktualisieren
|
||||||
|
echo "$username:$(echo "$password" | openssl enc -d -aes-256-cbc -base64 -pass pass:"$DECRYPTION_KEY")" | chpasswd
|
||||||
|
fi
|
||||||
|
elif [[ "$status" == "geloescht" ]]; then
|
||||||
|
if id "$username" &>/dev/null; then
|
||||||
|
echo "Lösche Benutzer: $username"
|
||||||
|
userdel -r "$username"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done < <(awk '/^\[users\]/ {skip=1; next} skip {print}' "$USER_LIST")
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Beginne Änderungen auf dem Server..."
|
||||||
|
check_user_list_file
|
||||||
|
apply_group_changes
|
||||||
|
apply_user_changes
|
||||||
|
echo "Änderungen abgeschlossen."
|
||||||
|
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/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
|
||||||
Loading…
Reference in New Issue