Estou usando o auditd para monitorar meu sistema em busca de mortes. Normalmente vejo o seguinte par de linhas. Como um exemplo de um shell bash eu executei um kill -9 em um comando sleep com pid 16207. Pelo que entendi, a0 = 3f4f no SYSCALL é a representação hex do pid a ser morto, a saber opid = 16207 no OBJ_PID.
type=SYSCALL msg=audit(1484657892.027:5580849): arch=c000003e syscall=62 success=yes exit=0 a0=3f4f a1=9 a2=0 a3=7ffe782998e0 items=0 ppid=16209 pid=16212 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=2282 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="log_kill"
type=OBJ_PID msg=audit(1484657892.027:5580849): opid=16207 oauid=0 ouid=0 oses=2275 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="sleep"
Está tudo ok e acho que entendo o que está sendo registrado. Em nosso sistema ao vivo, onde temos muitos processos em execução, ocasionalmente tenho um processo que é morto. Quando eu examino os sinais de kill no log de auditoria, recebo o seguinte:
type=SYSCALL msg=audit(1484742595.249:7657673): arch=c000003e syscall=62 success=yes exit=0 a0=9640 a1=f a2=0 a3=7ffec4d845f0 items=0 ppid=1 pid=38430 auid=1158 uid=1158 gid=1173 euid=1158 suid=1158 fsuid=1158 egid=1173 sgid=1173 fsgid=1173 tty=(none) ses=1730 comm="startkde" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="log_kill"
type=OBJ_PID msg=audit(1484742595.249:7657673): opid=38373 oauid=1158 ouid=1158 oses=1730 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="java"
Aqui a0 = 9640 dá um pid decimal de 38464, que não é opid = 38373. Alguém pode explicar por que isso deveria ser o caso?
Ou, para reformular a pergunta, por que uma mensagem SYSCALL kill enviada para processar com pid 0x9640 (ou seja, 38464) será recebida por OBJ_PID 38373?
Tags linux-audit