Sudo échoue lors de l'exécution en tant que service

1

J'ai un programme qui s'exécute en tant qu'utilisateur normal, mais qui doit parfois exécuter une commande nécessitant des privilèges root. J'ai donc créé un script shell et donné à l'utilisateur la permission de l'exécuter avec sudo.

Le script est exécuté avec succès lorsque j'exécute le programme à partir du shell mais échoue lors de l'exécution en tant que service. Sudo se ferme avec cette erreur:

sudo: effective uid is not 0, is /usr/bin/sudo on a file system with
the 'nosuid' option set or an NFS file system without root privileges?0

Ce est le fichier unité du service, ce est le script et sudoers J'ai ajouté

user ALL = (root) NOPASSWD: /path/to/script

Je ne sais pas pourquoi. Sudo fonctionne bien et les autorisations pour /usr/bin et /usr/bin/sudo sont corrects.

Rnhmjoj
la source

Réponses:

2

Vous avez mis NoNewPrivileges=true dans le fichier unité

De la documentation:

Si true, garantit que le processus de service et tous ses enfants ne pourront jamais obtenir de nouveaux privilèges. Cette option est plus puissante que les indicateurs de bits sécurisés respectifs (voir ci-dessus), car elle interdit également les modifications d’ID utilisateur de toutes sortes. Il s'agit du moyen le plus simple et le plus efficace de garantir qu'un processus et ses enfants ne peuvent plus jamais élever leurs privilèges.

Sudo ne recevra donc pas les privilèges root même si le fichier suid est défini sur l'exécutable

Dan
la source
Je n’ai pas écrit le fichier unité et je n’étais donc pas sûr de la signification des options. Je vous remercie.
Rnhmjoj