J'ai un service sous la forme d'une application node.js configurée avec Systemd sur Raspbian Jessie et il utilise son propre compte utilisateur. Cependant, je constate que le service ne fonctionne pas correctement car il ne dispose pas des autorisations nécessaires. L'un des modules de nœuds que j'ai installés nécessite un accès root. Si j'exécute l'application manuellement avec sudo, tout fonctionne bien.
Existe-t-il un moyen de dire à systemd d'exécuter le service avec sudo?
systemd
les fichiers d'unité avec les droits root.Réponses:
sudo
n'a rien à voir avec ça.En règle générale, vous demandez à systemd d'exécuter un service en tant qu'utilisateur / groupe spécifique avec une directive
User=
etGroup=
dans la[Service]
section du fichier d'unité.Définissez-les sur root (ou supprimez-les, car l'exécution en tant que root est la valeur par défaut).
la source
User=root
. Voir ma réponse.Pour effacer, les
systemd
services système s'exécutent en tant que root par défaut, mais il existe toujours une différence entre le comportement par défaut et l'exécution d'un service système avecUser=root
.Comme indiqué dans Variables d'environnement dans les processus générés , ces variables ne sont définies que si elles
User=
sont définies:J'ai testé pour confirmer cette conclusion. Donc, si vous souhaitez exécuter un service systemd en tant que root qui nécessite l'une des variables ci-dessus, vous devez définir
User=root
.la source
une solution temporaire, mais l'a fait fonctionner en un rien de temps:
Peut fonctionner avec un utilisateur qui a les privilèges sudo dans un fichier d'unité systemd comme ceci:
la source
sudo
ralentira un peu le démarrage. Et c'est inutile.Exécutez-le en tant qu'utilisateur système dans ce cas, par défaut, le service s'exécute en tant que root.
la source