#!/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 " 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)..." [ -d "/sys/fs/cgroup/users/${USERNAME}" ] && 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."