web-dev-qa-db-fra.com

La directive Sudo dans /etc/sudoers.d ne fonctionne pas (mais c'est bien si elle se trouve dans / etc / sudoers)

Je souhaite ajouter un fichier au /etc/sudoers.d dossier contenant une directive autorisant www-data pour exécuter un script spécifique sans mot de passe root.

La directive est

www-data ALL=(ALL) NOPASSWD: /path/to/script.sh

Si je visudo et l'ajoute à /etc/sudoers, Il n'y a pas de problème.

Si je mets cette ligne dans un fichier et la copie dans /etc/sudoers.d, puis visudo, cela m'indique que le fichier a une 'erreur de syntaxe près de la ligne 1'.

Y a-t-il autre chose que je dois mettre dans le fichier, ou autre chose que je dois faire pour le faire fonctionner?

J'utilise Ubuntu 18.

Merci!

15
Ben Holness

J'ai découvert le problème - pour les fichiers dans /etc/sudoers.d, le fichier ne doit pas se terminer à la directive, mais sur une nouvelle ligne. Ceci est plus facilement montré avec cat -A.

Fichier non valide:

root@server:/etc/sudoers.d# cat -A /etc/sudoers.d/testfile
www-data ALL=(ALL) NOPASSWD: /path/to/script.shroot@server:/etc/sudoers.d#

Fichier valide:

root@server:/etc/sudoers.d# cat -A /etc/sudoers.d/testfile
www-data ALL=(ALL) NOPASSWD: /path/to/script.sh$
root@server:/etc/sudoers.d#
19
Ben Holness