我注意到 /tmp 中有很多空文件,它们的名称类似于“/tmp/tmp.tMIHx17730”。我运行审计规则,我发现 mktemp 正在创建它,这不是很有帮助。
如何找出哪个脚本调用 mktemp 来创建这些文件?我可以使用 auditd 捕获父进程 ID/命令行吗?
更新:我相信我有父进程 ID (ppid=17729),但脚本很快退出,我找不到脚本。我也可以设置 auditd 来获取父进程命令行吗?
更新 2:这是我如何设置 auditd 以显示写入 tmp 的内容:
auditctl -w /tmp -k tmpfiles
Run Code Online (Sandbox Code Playgroud)
然后:
ausearch -k tmpfiles|grep "tmp."
Run Code Online (Sandbox Code Playgroud)
然后我选择一个文件然后我做
ausearch -k tmpfiles -f /tmp/tmp.tMIHx17730
Run Code Online (Sandbox Code Playgroud)
这向我展示了创建文件和父进程 pid 的进程。我需要设置某种进程启动侦听器来捕获该 pid 的最新进程
好的。我发现它是这样的:
设置auditd:
auditctl -w /tmp -k tmpfiles
auditctl -a task,always
Run Code Online (Sandbox Code Playgroud)
然后搜索
ausearch -k tmpfiles|grep "/tmp/tmp."
Run Code Online (Sandbox Code Playgroud)
我得到这样的东西:
然后我得到 ppid=5807 并搜索或过程:
ausearch -p 5807
Run Code Online (Sandbox Code Playgroud)
我得到了类似的东西
time->Thu Nov 12 12:14:34 2015
type=SYSCALL msg=audit(1447323274.234:2547064): arch=c000003e syscall=231 a0=1 a1=3c a2=1 a3=0 items=0 ppid=5772 pid=5807 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=84330 comm="bitdefender-wra" exe="/bin/bash" key=(null)
Run Code Online (Sandbox Code Playgroud)
其中 exe="/bin/bash" 是可执行文件,comm="bitdefender-wra" 是(截断的)命令行。
所以我只是运行:
# locate bitdefender-wra
/usr/lib/MailScanner/bitdefender-wrapper
Run Code Online (Sandbox Code Playgroud)
就是这样:
LogFile=$(mktemp) || { echo "$0: Cannot create temporary file" >&2; exit 1; }
Run Code Online (Sandbox Code Playgroud)
我将其更改为:
LogFile=$(mktemp /tmp/bitdefender.XXXXXXXXXXXX) || { echo "$0: Cannot create temporary file" >&2; exit 1; }
Run Code Online (Sandbox Code Playgroud)
为了验证这是不会删除其临时文件的脚本。下面有rm -f $LogFile
,但之前也有出口。
请记住,可能有更好的方法。因此,我将等待有人给出使用正在创建 tmp 文件的进程的命令行查找父级的最佳方法。我的方式没有太多过滤器并且创建了太大的日志。
归档时间: |
|
查看次数: |
3621 次 |
最近记录: |