helpers/del_user.sh
2025-09-18 13:29:43 +02:00

50 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
set -e
# === CONFIG ===
POOL="tank"
HOMES_DATASET="${POOL}/ROOT/homes"
MOUNTROOT="/home"
# === ARGUMENT ===
USERNAME="$1"
if [ -z "$USERNAME" ]; then
echo "Użycie: $0 <username>"
exit 1
fi
# === CONFIRM ===
echo "Na pewno chcesz usunąć użytkownika $USERNAME? [y/N]"
read -r CONFIRM
[ "$CONFIRM" != "y" ] && echo "Anulowano." && exit 1
echo "[i] Zabijam wszystkie procesy użytkownika $USERNAME..."
pkill -KILL -u "$USERNAME" 2>/dev/null || true
sleep 1 # Dajmy kernelowi chwilę na posprzątanie
# === REMOVE FROM CGROUPS ===
echo "[i] Odłączam procesy z cgroup (jeśli coś zostało)..."
rmdir "/sys/fs/cgroup/users/${USERNAME}"
# === UNMOUNT HOME DIR ===
ZFS_DATASET="${HOMES_DATASET}/${USERNAME}"
if mountpoint -q "${MOUNTROOT}/${USERNAME}"; then
echo "[i] Odmontowuję katalog ${MOUNTROOT}/${USERNAME}..."
umount "${MOUNTROOT}/${USERNAME}" || umount -l "${MOUNTROOT}/${USERNAME}" || true
fi
# === DESTROY ZFS DATASET ===
echo "[i] Usuwam dataset ZFS: $ZFS_DATASET"
zfs destroy "$ZFS_DATASET"
# === REMOVE USER FROM SYSTEM ===
echo "[i] Usuwam użytkownika systemowego..."
deluser --remove-home "$USERNAME" 2>/dev/null || true
rm -rf "${MOUNTROOT:?}/${USERNAME}"
echo "[+] Użytkownik $USERNAME został w pełni usunięty."