Aller au contenu

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:

  1. Créer un nouveau processus: fork() et terminer le processus parent: exit()
  2. Créer une nouvelle session pour le nouveau processus: setsid()
  3. Créer le processus démon: fork() et terminer le processus parent: exit()
  4. Capturer les signaux souhaités: sigaction ()
  5. Mettre à jour le masque pour la création de fichiers: umask()
  6. Mettre à jour le masque pour la création de fichiers: chdir()
  7. Fermer tous les descripteurs de fichiers: close()
  8. Rediriger stdin, stdout et stderr vers /dev/null: open() et dup2()
  9. Option: ouvrir un fichier de logging, par exemple sous syslog: openlog()
  10. Option: chercher l’ID de l’utilisateur et du groupe avec moins de privilèges
  11. Option: changer le répertoire root vers un avec moins de visibilité: chroot()
  12. Option: changer l’ID de l’utilisateur et du groupe: seteuid() et setegid()
  13. 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)