Un autre avantage de l'utilisation de visudo -f
Comme mentionné dans certaines réponses, il y a une option correspondante. -c
o --check
qui vérifie que vous n'avez pas d'informations invalides dans un fichier sudoers.d ou dans tout autre fichier que vous pourriez vouloir mettre dans sudoers.d. C'est VRAIMENT pratique dans les cas mentionnés avec des outils automatisés, car vous pouvez lancer par ex.
sudo visudo -c -q -f /home/myuser/mysudoers && \
sudo chmod 600 /home/myuser/mysudoers && \
sudo cp /home/myuser/mysudoers /etc/sudoers.d/mysudoers
Ceci vérifie silencieusement le fichier (pas de sortie à cause de -q) et seulement si cela ne retourne PAS une erreur (exit 1 signifie un fichier sudoers invalide) alors il copiera le fichier dans sudoers.d, de cette façon vous pouvez créer le fichier et travailler dessus sans avoir à le faire correctement la première fois (en utilisant sudo visudo -f /etc/sudoers.d/myfile
doit réussir, sinon il rejette le contenu si vous ne le corrigez pas).
En outre, un un mot de prudence concernant ces déclarations à partir des autres réponses.
D'après mon expérience, les règles sur les fichiers de ce répertoire sont plus souples que pour /etc/sudoers. Cela inclut :
Les erreurs dans le fichier n'ont pas fait échouer sudo. Cependant, le fichier a été ignoré. Les règles de permission semblent moins strictes. J'autorise le groupe applicable à lire le fichier. Je ne pense pas que cela soit possible avec /etc/sudo.
Les fichiers du fichier /etc/sudoers.d doivent respecter la même syntaxe que le fichier /etc/sudoers, car sous couvert, le système concatène simplement tous les fichiers avec le dernier en "gagnant" s'il existe plusieurs entrées pour le même paramètre singulier.
Si les permissions sont terriblement incorrectes (accessible en écriture par le monde entier) sur les fichiers dans /etc/sudoers.d/, alors ils sont ignorés, cela peut être la cause de l'oubli des fichiers invalides, sinon vous pouvez sérieusement briser le programme sudo
en ayant un fichier sudoers.d invalide avec des permissions correctes.
Vous pouvez permettre aux fichiers sudoers d'être lisibles par le monde entier, si vous accordez accidentellement à 'other' le droit d'écriture, vous devez sudo en tant qu'autre utilisateur ou depuis un terminal root exécuter cette commande. Cela peut également se produire si le fichier appartient à quelqu'un d'autre que root:root.
sudo chmod 644 /etc/sudoers.d/mysudoers
sudo chown root:root /etc/sudoers.d/mysudoers
Je viens de confirmer que si je lance chmod o+w /etc/sudoers.d/vagrant
Je ne peux plus faire de sudo en tant qu'utilisateur de vagrant, il me demande mon mot de passe et échoue.
Quand j'ai couru sudo -l
pour afficher les autorisations de la commande appliquée en tant qu'autre utilisateur sudo valide, j'ai également reçu un avertissement concernant les autorisations du fichier. C'est la même commande que j'ai utilisée pour confirmer que l'utilisateur 'vagrant' a perdu sudo lorsque j'ai appliqué o+w
au fichier donnant à cet utilisateur les droits sudo.