Daemons - Introduction
Les démons (daemons) sont des processus qui fonctionnent en arrière-plan.
Les démons ont comme processus parent le processus init. Ils sont
généralement lancés au démarrage de la machine et s’exécutent avec les
privilèges root ou tout autre utilisateur spécial.
Marche à suivre pour qu’un processus se transforme en daemon:
- Créer un nouveau processus:
fork()et terminer le processus parent:exit() - Créer une nouvelle session pour le nouveau processus:
setsid() - Créer le processus démon:
fork()et terminer le processus parent:exit() - Capturer les signaux souhaités:
sigaction () - Mettre à jour le masque pour la création de fichiers:
umask() - Mettre à jour le masque pour la création de fichiers:
chdir() - Fermer tous les descripteurs de fichiers:
close() - Rediriger
stdin,stdoutetstderrvers/dev/null:open()etdup2() - Option: ouvrir un fichier de logging, par exemple sous syslog:
openlog() - Option: chercher l’ID de l’utilisateur et du groupe avec moins de privilèges
- Option: changer le répertoire root vers un avec moins de visibilité:
chroot() - Option: changer l’ID de l’utilisateur et du groupe:
seteuid()etsetegid() - Implémenter le corps du démon…
Alternatives
Sous Unix System V, les systèmes s’initialisent grâce au daemon init. Ce
programme est chargé de lire le fichier /etc/inittab et de lancer les
différentes applications sous forme de daemon.
Ce système a été tout naturellement repris sous Linux. Cependant il existe tout une série d’alternatives:
- busybox-init: version simplifiée d’init de Unix System V
- systemd: le remplaçant d’init de Unix System V
- upstart: version Ubuntu (obsolète)
- …