From 9f0fa7ae31ff90ef45f292274ca33ad36d59724b Mon Sep 17 00:00:00 2001 From: librelad Date: Sun, 24 May 2026 19:56:09 +0100 Subject: [PATCH] fix(uninstall): fully remove both users' homes (terminate session + rm backstop) The validation teardown left /home/libreportal orphaned: userdel -r skips the home when the user still has a live session/processes, and the manager only got a pkill (not a loginctl terminate) before userdel. Now both users get disable-linger + terminate-user + pkill before userdel -r, plus an explicit rm -rf /home/ backstop. Signed-off-by: librelad --- init.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/init.sh b/init.sh index 2991dc2..d51b873 100755 --- a/init.sh +++ b/init.sh @@ -1339,12 +1339,20 @@ runFullUninstall() rm -rf /docker isSuccessful "Removed /docker" - # 5. Remove the LibrePortal users + their subuid/subgid ranges. - pkill -9 -u "$mgr" >/dev/null 2>&1 || true - userdel -r "$mgr" >/dev/null 2>&1 || true - userdel -r "$iuser" >/dev/null 2>&1 || true + # 5. Remove the LibrePortal users + their subuid/subgid ranges + home dirs. + # Terminate each user's session/linger and kill its processes first, or + # `userdel -r` leaves the home behind ("user currently used"); rm -rf the + # home afterwards as a backstop. + local u + for u in "$mgr" "$iuser"; do + loginctl disable-linger "$u" >/dev/null 2>&1 || true + loginctl terminate-user "$u" >/dev/null 2>&1 || true + pkill -9 -u "$u" >/dev/null 2>&1 || true + userdel -r "$u" >/dev/null 2>&1 || true + [[ -n "$u" ]] && rm -rf "/home/$u" + done sed -i "/^${mgr}:/d;/^${iuser}:/d" /etc/subuid /etc/subgid 2>/dev/null || true - isSuccessful "Removed users '$mgr' + '$iuser'" + isSuccessful "Removed users '$mgr' + '$iuser' (+ home dirs)" isHeader "LibrePortal uninstalled" isNotice "Left in place: docker engine, docker-compose, apt deps, SSH config."