Exécution d'un démon en tant qu'user non privilégié

J'essaye de mettre en place un server d'applications Thin Ruby sur mon VPS Ubuntu. J'ai créé un count spécifique, installé rbenv sous elle avec tous les joyaux.

Je cherche un moyen pratique d'get les objectives suivants:

  1. Exécutez mon application Thin Rack sous mon count d'user non privilégié.
  2. Faire fonctionner l'application en tant que démon
  3. Faire exécuter le démon automatiquement chaque fois que le système démarre
  4. Rendre le démon réinitialisable
  5. Rendez l'application accessible à Nginx via une socket de domaine unix.

L'objective deux et trois sont les plus difficiles. Est-il possible de définir des scripts pour qu'un user soit exécuté en tant qu'user à chaque démarrage du système?

Pour commencer au moment du démarrage, ajoutez une ligne au file crontab de vos users (en utilisant crontab -e ):

@reboot / path / to / votre / script avec les parameters

Le contenu réel de ce script varie selon vos besoins. Il pourrait simplement démarrer le démon, ou il pourrait démarrer un agent un peu plus intelligent que vous passez une configuration. De cette façon, vous pouvez redémarrer automatiquement votre service si, pour une raison quelconque, il meurt inopinément.

Vous avez juste besoin d'adapter le model de script de démarrage de votre dissortingbution. Je suis sûr que tout le monde a de tels templates.

Si vous utilisez systemd, vous pouvez donner l'user à utiliser dans le file unité.

Si vous utilisez les anciens scripts init, le script utilise probablement startproc ou start_daemon . Vous pouvez append des parameters à ces wrappers pour configurer l'ID user.

Ou vous faites le programme SUID (pas pour la racine mais l'user prévu) et limiter les droits d'exécution aux users de confiance (ou root seulement).