]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
shadow userdel: add the adaptation to the busybox ps in 01-kill_user_procs.sh
authorxiongshenglan <xiongshenglan@huawei.com>
Wed, 19 Jul 2023 07:13:06 +0000 (15:13 +0800)
committerSerge Hallyn <serge@hallyn.com>
Sat, 29 Jul 2023 02:24:36 +0000 (21:24 -0500)
In some embedded systems, users only use the ps
provided by the busybox. But the ps provided by
the busybox does not support the -eo option by
default. As a result, an error is reported when
the userdel is used. So add a judgment on ps.
If there is no ps -eo, traverse the process directly.

The error information is as follows:
 # userdel xsl
ps: invalid option -- 'e'

Signed-off-by: xiongshenglan <xiongshenglan@huawei.com>
etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh

index ca481b1ba3fb6cf49b85adbc5d062bcf27fc752a..d2d7ef26a94c9816fbb48668510884a8fd63b0b1 100755 (executable)
@@ -4,14 +4,17 @@ 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
+ps -eo user >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+    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
 fi
 
+# If there is no ps -eo, traverse the process directly.
+
 ls -1 /proc | while IFS= read -r PROC; do
   echo "$PROC" | grep -E '^[0-9]+$' >/dev/null
   if [ $? -ne 0 ]; then