Então eu queria saber qual processo está criando um diretório ']' na minha raiz. Eu estava assumindo que isso era algum erro de digitação em algum script. Então configurei uma auditoria para esse diretório, de forma muito semelhante à mostrada emEssa questão.
No dia seguinte, verifiquei meus logs e descobri que o diretório foi criado novamente e registrado por auditoria. Mas tudo o que posso dizer a partir desta saída é queraizcriou.
saída:
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
Dividido em linhas:
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
Gostaria de saber qual script emite este comando como root. Isso é possível? O processo que usa esse PPID não está mais em execução.
Responder1
Supondo que isso seja causado por um script iniciado pelo cron, você poderá rastrear todos os filhos do crond:
strace -p $CRONPID -f -o /path/to/cron-strace.log -e trace=mkdir
Isso deve levar a uma saída como esta:
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 retarda a execução do script, é claro, mas isso normalmente não deve ser um problema.
Responder2
Somente com essa saída, você não pode determinar qual programa chamou o mkdir
comando.
Se você temContabilidade de processos BSD, o seguinte comando mostra qual programa tinha PID 24114:
dump-acct /var/log/account/pacct | awk -F '|' '$10 ~ / 24114 / {print}'
Isto é provavelmente sh
. A coluna 10 (com |
o separador) contém o PID do processo registrado seguido de seu PPID, então repita a pesquisa com o PPID para ver qual programa foi invocado sh
e assim por diante. Você também saberá a que horas o processo foi iniciado, o que pode ajudar a descobrir qual foi o cron job.
Somente com auditd, você precisa registrar não apenas a mkdir
chamada, mas todos os acessos a esse diretório, para registrar os comandos que mudam para o diretório ou acessam arquivos nele. Se o diretório for criado, mas nada mais o acessar, não acho que auditd por si só seja suficiente para descobrir isso.