Назад | Перейти на главную страницу

Как узнать, что создает временные файлы

Я заметил много пустых файлов в / tmp с именами, похожими на "/tmp/tmp.tMIHx17730". Я запустил правило аудита и обнаружил, что mktemp создает его, что не очень помогает.

Как мне узнать, какой сценарий вызывает mktemp для создания этих файлов? Могу ли я записать идентификатор родительского процесса / командную строку с помощью auditd?

Обновление: я считаю, что у меня есть идентификатор родительского процесса (ppid = 17729), но сценарий быстро завершается, и я не могу найти сценарий. Могу ли я настроить auditd для получения командной строки родительского процесса?

Обновление 2: вот как я настроил auditd, чтобы показать, что записывается в tmp:

auditctl -w /tmp -k tmpfiles

Затем:

ausearch  -k tmpfiles|grep "tmp."

Затем я выбираю файл и делаю

ausearch  -k tmpfiles -f /tmp/tmp.tMIHx17730

Это показывает мне процесс, который создал файл и родительский идентификатор процесса. Мне нужно настроить какой-то процесс, запускающий слушатель, чтобы поймать, какой самый последний процесс с этим pid

хорошо. Я нашел это так:

настроить auditd:

auditctl -w /tmp -k tmpfiles
auditctl -a task,always

Тогда ищите

ausearch  -k tmpfiles|grep "/tmp/tmp."

Получаю примерно так:

Затем я получаю ppid = 5807 и выполняю поиск или процесс:

ausearch -p 5807

У меня есть что-то вроде

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)

Где exe = "/ bin / bash" - исполняемый файл, а comm = "bitdefender-wra" - (усеченная) командная строка.

Поэтому я просто бегу:

# locate bitdefender-wra
/usr/lib/MailScanner/bitdefender-wrapper

И вот оно:

LogFile=$(mktemp) || { echo "$0: Cannot create temporary file" >&2; exit 1; }

Я меняю это на:

LogFile=$(mktemp /tmp/bitdefender.XXXXXXXXXXXX) || { echo "$0: Cannot create temporary file" >&2; exit 1; }

Чтобы убедиться, что этот сценарий не удаляет временные файлы. Там есть rm -f $LogFile ниже, но до этого тоже есть выход.

Имейте в виду, что может быть способ получше. Так что я буду ждать, пока кто-нибудь предоставит лучший способ найти родителя с помощью командной строки процесса, создающего файлы tmp. Мой способ не имеет большого количества фильтров и создает слишком большие журналы.