Lors de l’exécution d’une nouvelle installation du serveur Ubuntu 16.04.1, j’ai essayé d’ajouter un fichier dans /etc/sudoers.d/
afin de donner les privilèges d’un utilisateur à la racine d’une commande donnée.
J'ai ajouté le fichier /etc/sudoers.d/servicetest
avec le contenu suivant:
servicetest ALL = (root) NOPASSWD: /bin/systemctl status *
Le fichier /etc/sudoers
n'est pas modifié. Il contient #includedir /etc/sudoers.d
en dernière ligne. Cette configuration ne fonctionne malheureusement pas. Lorsque vous exécutez une commande appropriée avec Sudo sous le nom d'utilisateur servicetest
name__, le mot de passe me est toujours demandé. Toutefois, si je déplace le contenu du fichier /etc/sudoers.d/servicetest
à la fin de /etc/sudoers
, tout fonctionne comme prévu.
Quelle pourrait être la cause de ce problème? Comment puis-je obtenir des fichiers dans /etc/sudoers.d/
?
Le problème n’était pas, comme l’a répondu IanC, causé par les autorisations de fichier (Sudo
accepte heureusement un fichier appartenant à root:root 0644
, comme je peux le confirmer maintenant, bien que cela devrait bien sûr être root:root 0440
pour des raisons de sécurité!), Mais par une nouvelle ligne à la fin du fichier qui était précédée par une ligne de style Windows se terminant (\r\n
).
Sudo
accepte uniquement \n
en fin de ligne.
Apparemment, les fichiers inclus dans le fichier /etc/sudoers
doivent disposer des autorisations 0440 pour des raisons de sécurité. De cette manière, seul le propriétaire root peut éditer le fichier et seul le propriétaire et les membres du groupe de propriétaires peuvent le lire, ce qui diminue le risque que le fichier soit utilisé pour tenter d’élever les privilèges.
Vous pouvez vérifier la configuration requise pour le fichier inclus à /etc/sudoers.d/README
, mais deux autres conditions stipulent que le nom de fichier ne doit pas commencer par un .
(fichiers cachés) ni se terminer par un ~
(convention des fichiers de sauvegarde).
Crédits à @steeldriver pour avoir confirmé la théorie et trouvé le fichier /etc/sudoers.d/README
!