如果我是 root 用户,如何知道 sudo 用户在哪个目录中工作

如果我是 root 用户,如何知道 sudo 用户在哪个目录中工作

有什么方法可以让我获得哪个 sudo 用户在哪个目录下哪个文件上工作。

是否有任何文件显示所有 sudo 用户当前工作目录的详细信息。

答案1

您可以使用pgrep sudo它来获取所有 sudo 进程,然后ps h --ppid $THEPID -o pid获取其子进程,最后pwdx $SUBPID获取这些子进程的工作目录。

最后,您可以使用两个 for 循环将其总结出来,如下所示:

for sudo in `pgrep sudo`; do
 sudo pwdx $sudo;
 for subsudo in `ps h --ppid $sudo -o pid`; do
   sudo pwdx $subsudo
 done
done

由于每次调用 只能获得一代子进程ps,因此必须递归获取子进程的进程号。以下脚本执行此操作:

#!/bin/bash

function getchildren()
{
  echo $1
  children=`ps h --ppid $1 -o pid`
  if [[ -n $children ]]; then
   for child in $children; do
     getchildren $child
   done
  fi
}


for sudo in `pgrep sudo`; do
 for subsudo in `getchildren $sudo`; do
   sudo pwdx $subsudo
 done
done | sort | uniq

如果有人sudosudo su会话中运行某个进程,则输出会被排序并且双行会被删除。

相关内容