Поэтому я хотел узнать, какой процесс создает каталог ']' в моем корне. Я предполагал, что это какая-то опечатка в каком-то скрипте. Поэтому я настроил аудит для этого каталога, очень похоже на то, что показано наЭтот вопрос.
На следующий день я проверил свои логи и обнаружил, что каталог был создан снова, и он был зарегистрирован аудитом. Но все, что я могу сказать из этого вывода, это то, чтокореньсоздал его.
выход:
type=SYSCALL msg=audit(26.04.2013 06:25:20.275:85) : arch=i386 syscall=mkdir success=yes exit=0 a0=bfd02ea5 a1=1ed a2=bfd02ea5 a3=bfd025b8 items=2 ppid=24114 pid=24115 auid=unset uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none) ses=4294967295 comm=mkdir exe=/bin/mkdir key=weird
Разбито на строки:
type=SYSCALL
msg=audit(26.04.2013 06:25:20.275:85) :
arch=i386
syscall=mkdir
success=yes
exit=0 a0=bfd02ea5
a1=1ed a2=bfd02ea5 a3=bfd025b8
items=2 ppid=24114 pid=24115
auid=unset
uid=root
gid=root
euid=root
suid=root
fsuid=root
egid=root
sgid=root
fsgid=root
tty=(none)
ses=4294967295
comm=mkdir
exe=/bin/mkdir
key=weird
Я хотел бы узнать, какой скрипт выдает эту команду как root. Это возможно? Процесс, использующий этот PPID, больше не запущен.
решение1
Предположив, что это вызвано скриптом, запущенным cron, вы можете отследить все дочерние процессы crond:
strace -p $CRONPID -f -o /path/to/cron-strace.log -e trace=mkdir
Это должно привести к такому выводу:
Process 3584 attached
Process 18227 attached
[pid 18227] execve("./testscript", ["./testscript"], [/* 100 vars */]) = 0
Process 18228 attached
[pid 18228] execve("/usr/bin/mkdir", ["mkdir", "/home/hl/tmp/strace-testdir"], ...) = 0
[pid 18228] mkdir("/home/hl/tmp/strace-testdir", 0777) = 0
Конечно, strace замедляет выполнение скрипта, но обычно это не должно быть проблемой.
решение2
По одному этому выводу невозможно определить, какая программа вызвала mkdir
команду.
Если у вас естьУчет процесса BSD, следующая команда показывает, какая программа имела PID 24114:
dump-acct /var/log/account/pacct | awk -F '|' '$10 ~ / 24114 / {print}'
Вероятно, это sh
. Столбец 10 (с |
разделителем) содержит PID записанного процесса, за которым следует его PPID, поэтому повторите поиск с PPID, чтобы увидеть, какая программа была вызвана sh
и т. д. Вы также узнаете, в какое время был запущен процесс, что может помочь выяснить, какое это было задание cron.
С помощью только Auditd вам нужно записывать не только вызов, mkdir
но и все обращения к этому каталогу, чтобы записывать команды, которые изменяют каталог или обращаются к файлам в нем. Если каталог создан, но больше ничего к нему не обращается, я не думаю, что одного Auditd достаточно, чтобы разобраться с этим.