diff --git a/etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh b/etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh new file mode 100755 index 00000000..ca481b1b --- /dev/null +++ b/etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + +# Check user exists, and if so, send sigkill to processes that the user owns + +RUNNING=`ps -eo user | grep -Fx "$SUBJECT" | wc -l` + +# if the user does not exist, RUNNING will be 0 + +if [ "${RUNNING}x" = "0x" ]; then + exit 0 +fi + +ls -1 /proc | while IFS= read -r PROC; do + echo "$PROC" | grep -E '^[0-9]+$' >/dev/null + if [ $? -ne 0 ]; then + continue + fi + if [ -d "/proc/${PROC}" ]; then + USR=`stat -c "%U" /proc/${PROC}` + if [ "${USR}" = "${SUBJECT}" ]; then + echo "Killing ${SUBJECT} owned ${PROC}" + kill -9 "${PROC}" + fi + fi +done +