50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 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)..."
 | 
						|
 | 
						|
[ -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."
 |