J'écris une application C qui appelle fork()
pour créer des processus fils. L'application s'exécute en tant que root. Dans le processus parent, j'utilise wait()
pour attendre les processus fils terminés. Dans les processus enfants, j'utilise prctl()
avec l'option PR_SET_PDEATHSIG
pour détecter la mort du parent. Ça fonctionne bien. Pour réduire le risque de problèmes de sécurité, les processus enfants appellent setuid()
pour modifier l'UID. Le problème est: les processus enfants ne peuvent plus détecter la mort du parent.Détection de la mort du processus parent à partir du processus `setuid`
J'ai cherché pour trouver la réponse et a trouvé quelques liens utiles, mais il ne permet pas:
- Detect death of parent process
- Enforcing process hierarchies (
prctl
related): bien que ce lien contient une réponse claire, il n'y a pas de solution.
Comment faire cela correctement?
S'il vous plaît ajouter un MCVE très minime pour que les gens puissent jouer avec lui –
voulez-vous dire que les enfants ne reçoivent plus le signal après l'appel setuid? – mbieren