Entonces quería saber qué proceso está creando un directorio ']' en mi raíz. Supuse que se trata de algún error tipográfico en algún guión. Entonces configuré una auditoría para ese directorio, de manera muy similar a como se muestra enEsta pregunta.
Al día siguiente revisé mis registros y descubrí que el directorio se había creado nuevamente y que se había registrado mediante auditoría. Pero todo lo que puedo decir de este resultado es queraízlo creó.
producción:
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 en líneas:
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
Me gustaría saber qué script emite este comando como root. ¿Es eso posible? El proceso que utiliza ese PPID ya no se está ejecutando.
Respuesta1
Suponiendo que esto se debe a un script iniciado por cron, podría rastrear todos los elementos secundarios de crond:
strace -p $CRONPID -f -o /path/to/cron-strace.log -e trace=mkdir
Esto debería conducir a un resultado como este:
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 ralentiza la ejecución del script, por supuesto, pero normalmente eso no debería ser un problema.
Respuesta2
Sólo a partir de este resultado, no se puede determinar qué programa llamó el mkdir
comando.
Si usted tienecontabilidad de procesos BSD, el siguiente comando muestra qué programa tenía PID 24114:
dump-acct /var/log/account/pacct | awk -F '|' '$10 ~ / 24114 / {print}'
Esto es probable sh
. La columna 10 (como |
separador) contiene el PID del proceso registrado seguido de su PPID, así que repita la búsqueda con el PPID para ver qué programa invocó sh
y así sucesivamente. También podrá saber a qué hora comenzó el proceso, lo que puede ayudar a determinar qué trabajo cron fue.
Solo con auditd, necesita registrar no solo la mkdir
llamada sino todos los accesos a ese directorio, para registrar los comandos que cambian al directorio o acceden a los archivos en él. Si se crea el directorio pero nada más accede a él, no creo que auditd por sí solo sea suficiente para resolver esto.