Isso soa como um trabalho perfeito para o auditd. Depois de ter auditado em execução, um serviço padrão em modernos sistemas baseados em RedHat, você pode criar uma regra que faça exatamente o que você quer executando
auditctl -a task,always -F uid=0
Quebrando essa regra de comando, fazendo uso excessivo da man page, descobrimos que:
-a list,action task Add a rule to the per task list. This rule list is used only at the time a task is created -- when fork() or clone() are called by the parent task. When using this list, you should only use fields that are known at task creation time, such as the uid, gid, etc. always Allocate an audit context, always fill it in at syscall entry time, and always write out a record at syscall exit time.
Portanto, sempre escreva um registro para essa ação sempre que uma chamada de sistema bifurcado ou clone sair.
A opção final pode ser considerada como uma string de filtro, em nosso uso -F uid=0
simplesmente nos restringe a casos em que o uid do proprietário do processo é 0.
Observe que essa regra pode ser executada em tempo de execução, certificando-se de que o auditd esteja configurado corretamente e de adicionar a regra
-a task,always -F uid=0
no arquivo relevante para sua distribuição, provavelmente /etc/audit/audit.rules
Tenha em mente que isso vai ser muito barulhento e quem quer que esteja fazendo suas análises de registros precisará estar preparado para isso.