有什么方法可以让我获得哪个 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
如果有人sudo
在sudo su
会话中运行某个进程,则输出会被排序并且双行会被删除。