first
This commit is contained in:
49
del_user.sh
Executable file
49
del_user.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user