GNU/Linux >> Tutoriels Linux >  >> Linux

Upstart :exécuter le service en tant qu'utilisateur non privilégié et pré-démarrer le script en tant que root

upstart n'a pas de facilité équivalente à systemd est PermissionsStartOnly paramètre. Tous les processus du travail s'exécutent en tant qu'utilisateur défini via le setuid strophe, comme le dit le livre de recettes.

Alors faites les choses à la manière de daemontools.

Utilisez setuidgid , setuidgid , s6-setuidgid , chpst , runuid , ou setuidgid dans le exec strophe :

exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1

C'est un mécanisme de journalisation terrible, soit dit en passant. La méthode daemontools aurait un journal approprié, cyclé automatiquement, rotatif à la demande, limité en taille, en utilisant multilog , multilog , s6-log , svlogd , tinylog , ou cyclog . upstart est cependant difficile à intégrer avec ceux-ci, compte tenu de son expect mécanisme.

expect fork
exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production 2>&1 | \
/usr/local/bin/chdir /var/log/ \
setuidgid log \
cyclog posty/unicorn/

(Le chdir voici celui à chargement en chaîne du nosh package, et n'est pas strictement nécessaire. Mais cela rend les choses un peu plus ordonnées.)


Linux
  1. La différence entre compte utilisateur et compte de service ?

  2. Est-il possible d'exécuter 'unshare -n [program]' en tant qu'utilisateur non privilégié ?

  3. Différence entre l'utilisateur Sudo et l'utilisateur root ?

  4. Le script Init.d n'est pas exécuté au démarrage ?

  5. Comment exécuter rétroactivement un script en tant que root ?

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment faire en sorte qu'un script shell s'exécute toujours en tant que root ?

Exécuter le script avec des arguments en tant qu'utilisateur ?

Comment créer et exécuter un script shell dans Ubuntu 22.04

Comment exécuter une commande en tant qu'utilisateur spécifique dans un script d'initialisation ?

shell différent pour les utilisateurs root et non root