Les modifications apportées aux fichiers en place /etc/sudoers.d
restent en place si vous mettez à niveau le système. Cela peut empêcher les verrouillages d’utilisateur lors de la mise à niveau du système. Ubuntu a tendance à aimer ce comportement. D'autres distributions utilisent également cette disposition.
D'après mon expérience, les règles sur les fichiers de ce répertoire sont plus souples que pour /etc/sudoers
. Cela a inclus:
- Les erreurs dans le fichier n'ont pas causé
sudo
d'échec. Cependant, le fichier a été ignoré.
- Les règles de permission semblent moins strictes. Cela permet au groupe concerné ou autre de lire le fichier. Je ne crois pas que c'était possible avec
/etc/sudoers
. Les autorisations d'écriture doivent être limitées à root
pour maintenir la sécurité. La version actuelle de sudo pour Ubuntu autorise les autorisations de lecture pour les groupes ou autres. (Cette fonctionnalité permet d’auditer l’accès sudo sans audit root).
La visudo
commande ne prend par défaut que la valeur /etc/sudoers
. Il éditera et vérifiera n'importe quel fichier que vous spécifiez avec l' -f
option. J'utilise cette fonctionnalité pour éditer des fichiers qui seront automatiquement installés en tant que /etc/sudoers
ou dans /etc/sudoders.d
. Cependant, les définitions d'autres fichiers peuvent ne pas être trouvées. Il est préférable de rendre le fichier indépendant.
La possibilité de disposer de fichiers autonomes permet à une application d'activer sudo
facilement les fonctionnalités d'installation et de les supprimer lorsqu'elles sont désinstallées. Les outils de configuration automatisés peuvent également utiliser cette fonctionnalité.
J'ai utilisé cette fonctionnalité pour isoler les modifications requises pour accorder l'accès à des groupes d'utilisateurs spécifiques sur des systèmes spécifiques.
sudo
échec». J'ai cassé sudo sur RHEL avec une syntaxe incorrecte dans un fichier de /etc/sudoers.d. Cela a pris un effort considérable pour rectifier et je pense que la recommandation devrait être de toujours utiliservisudo -f
pour éditer ces fichiers.Oui, vous pouvez utiliser
visudo
pour éditer ces fichiers. Tout ce que vous avez à faire est de spécifier le nom du fichier que vous souhaitez modifier avec l'-f
option. Par exemple:Ou, si nécessaire:
Documentation
De
man visudo
:En résumé:
Syntaxe: Les deux
visudo
etvisudo -f
effectuer la même vérification de syntaxe .Autorisations / Propriété: en tant que fonctionnalité ajoutée pour faciliter l'administration des systèmes volumineux , les fichiers édités sous
visudo -f
ne sont pas contrôlés en termes de propriété ou d'autorisations: cela permet de vérifier la syntaxe d'un fichier hors ligne ou dans le cadre d'un système de contrôle de révision.Pourquoi utiliser
/etc/sudoers.d/
/etc/sudoers
Est généralement sous le contrôle du gestionnaire de paquets de votre distribution. Si vous avez apporté des modifications à ce fichier et que le gestionnaire de packages souhaite le mettre à niveau, vous devrez examiner manuellement les modifications et approuver leur fusion dans la nouvelle version. En plaçant vos modifications locales dans un fichier du/etc/sudoers.d/
répertoire, vous évitez cette étape manuelle et les mises à niveau peuvent être effectuées automatiquement.Quand
sudo
ignore un fichier dans/etc/sudoers
?Si votre
/etc/sudoers
fichier contient la ligne:puis
sudo
va lire les fichiers dans le répertoire/etc/sudoers.d
.Les exceptions sont:
~
.
caractèreCeci est fait (a) pour la commodité des gestionnaires de paquets et aussi (b) pour que les fichiers de sauvegarde des éditeurs soient ignorés.
la source
visudo -f
sécuritaire?visudo -f
modifications sont sécurisées comme d'habitudevisudo
. C'est pourquoi nous avonsvisudo
et pourquoi il fournit l'-f
option.-f
car cela pourrait octroyer quelqu'un qui le copie ensuite dans /etc/sudoers.d/ sans les vérifier deux fois./etc/sudoers.d/mysudorules.sudo
et je ne pouvais pas comprendre pourquoi les règles internes n'étaient pas appliquées avant de lire votre réponse./sudoers.d/mysite.co.uk
ne fonctionnait pas et après avoir été renommé,mysite
cela fonctionne! :)Parce qu'il est plus facile pour les outils automatisés (tels que Chef ou Puppet) de déposer des fichiers individuels dans ce répertoire, plutôt que d'apporter des modifications à
/etc/sudoers
ce qui pourrait être fragile.Les fichiers
/etc/sudoers.d
sont concaténés (en fait). Vous verrez plusieurs autres instances de ce modèle/etc
, telles que/etc/cron.d
et/etc/logrotate.d
.la source
Un autre avantage de l’utilisation
visudo -f
mentionnée dans certaines réponses est qu’il existe une option correspondante-c
ou--check
qui vérifie que vous n’avez pas d’informations non valides dans un fichier sudoers.d ou dans tout autre fichier que vous pourriez vouloir mettre dans sudoers.d. C’est vraiment utile dans les cas mentionnés avec des outils automatisés, comme par exempleCeci vérifie le fichier de manière silencieuse (pas de sortie à cause de -q) et seulement si cela ne renvoie PAS une erreur (exit 1 signifie un fichier sudoers invalide), puis il copiera le fichier dans sudoers.d. De cette façon, vous pourrez créer le fichier et travaillez dessus sans avoir à
sudo visudo -f /etc/sudoers.d/myfile
corriger le problème du premier coup (utiliser doit réussir ou rejette le contenu si vous ne le corrigez pas).En outre, une mise en garde concernant ces déclarations des autres réponses.
Les fichiers de /etc/sudoers.d doivent respecter la même syntaxe que / etc / sudoers car, sous le capot, le système concatène simplement tous les fichiers dont le dernier est "gagnant" s'il existe plusieurs entrées pour le même fichier. cadre singulier.
Si les autorisations sont horriblement incorrectes (écriture sur le monde entier) sur les fichiers de /etc/sudoers.d/, ils sont alors ignorés. Cela peut être la cause de l'ignorance des fichiers non valides, sinon vous pouvez sérieusement briser la
sudo
commande en ayant un sudoers non valide. fichier d avec les autorisations appropriées.Vous pouvez autoriser les fichiers sudoers à être lisibles par tout le monde. Si vous autorisez accidentellement l'autorisation d'accès en écriture à "autre", vous devez utiliser sudo lorsqu'un autre utilisateur ou depuis un terminal racine exécutez cette commande. Cela peut également échouer si le fichier appartient à quelqu'un d'autre que root: root.
Je viens de confirmer que si je me lance,
chmod o+w /etc/sudoers.d/vagrant
je ne pourrai plus faire sudo en tant qu'utilisateur vagrant, il me demandera mon mot de passe et échouera.Lorsque j'ai réussi
sudo -l
à afficher les autorisations de commande appliquées en tant qu'autre utilisateur sudo valide, j'ai également reçu un avertissement concernant les autorisations de fichier. C'est la même commande que j'ai utilisée pour confirmer que l'utilisateur 'vagabond' a perdu sudo lorsque j'ai appliqué deso+w
autorisations au fichier lui donnant des autorisations sudo.la source
Juste un petit ajout à une réponse générale ... aucune des autres réponses n'a résolu mon problème, à savoir que l'ordre est important.
Si vos lignes fonctionnent dans sudoers mais pas dans sudoers.d, essayez de déplacer le #include ou de changer l'ordre de vos fichiers sudoers.d (en ajoutant un numéro avec le préfixe). Il semble que l'élément le plus spécifique devrait figurer en premier dans le fichier.
J'ai eu quelque chose comme:
Et le second n'a aucun effet car le premier correspond déjà. NOPASSWD n'est pas une condition, mais un moyen de modifier l'action.
Et ce n'était pas évident car ce n'était pas dans un seul fichier, à cause du répertoire sudoers.d.
la source