Я заметил много пустых файлов в / 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. Мой способ не имеет большого количества фильтров и создает слишком большие журналы.