나는 시스템 종료를 모니터링하기 위해 auditd를 사용하고 있습니다. 일반적으로 다음 줄이 표시됩니다. Bash 쉘 예로, pid 16207의 sleep 명령에서 kill -9를 실행했습니다. 내가 아는 한, SYSCALL의 a0=3f4f는 종료할 pid의 16진수 표현인 opid=16207 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"
이것은 모두 좋으며 녹음되는 내용을 이해한다고 생각합니다. 많은 프로세스를 실행하는 실시간 시스템에서는 프로세스가 종료되는 경우가 있습니다. 종료 신호에 대한 감사 로그를 확인하면 다음과 같은 결과가 나타납니다.
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"
여기서 a0=9640은 opid=38373이 아닌 십진수 pid 38464를 제공합니다. 왜 이런 일이 일어나는지 설명할 수 있는 사람이 있나요?
또는 달리 말하면, PID가 0x9640(38464)인 프로세스로 전송된 SYSCALL Kill을 OBJ_PID 38373이 수신해야 하는 이유는 무엇입니까?