非特权用户在 Shell 脚本中执行特权命令

非特权用户在 Shell 脚本中执行特权命令
a=$(df -h | grep ^/dev | awk '{print $6}')

for i in $(find $a -xdev \( -perm -4000 -o -perm -2000 \) -type f | awk '{print "-a always,exit -F path=" $1 " -F perm=x -F auid>='"$(awk '/^\s*UID_MIN/{print $2}' /etc/login.defs)"' -F auid!=4294967295 -k privileged" }' | grep -o privileged | uniq | wc -l ); do
   if [ "$i" != '1' ]; then
      echo "{\"privilegecmd_4111_audit\":\"FAILED\"}"
   else
      echo "{\"privilegecmd_4111_audit\":\"PASSED\"}"
   fi
done

对于我的输入 a 是 / 和 /boot,这里我的疑问是,在我的 /boot 分区中,我删除了特权,在我运行 shell 脚本之后它通过了,我需要每个分区都具有特权意味着它应该通过,否则如果任何文件不具有特权,它应该处于失败状态。

有谁能帮忙解决这个问题。

答案1

关于如何设计循环的建议。

#!/bin/bash

while read -r; do
   (($REPLY > 0)) \
   && echo "condition passed" \
   || echo "condition failed"
done < <( \
   find . -mindepth 1 -perm -644 -user bac0n -group bac0n -printf 1\\n -o -printf 0\\n \
)

相关内容