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
,stdout
etstderr
vers/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)
- …