52 votes

L'ajout de NOPASSWD dans /etc/sudoers ne fonctionne pas

Sur 14.04 ici. Je me suis connecté en SSH à ma machine, j'ai ajouté la ligne suivante à /etc/sudoers :

myuser   ALL=NOPASSWD: ALL

Puis j'ai essayé de courir :

sudo mkdir /etc/blah

... et on me demande mon mot de passe. Pourquoi ?

Je le fais pas Je souhaite que mon mot de passe me soit demandé lors de cette opération. Veuillez noter que lorsque j'exécute ls -ltr / Je reçois :

drwxr-xr-x 94 root root  4096 Jul 30 13:28 etc

Mais je ne pense pas que cela soit important car je me suis configuré en tant que "sudoer", n'est-ce pas ?

Plus important encore, que dois-je faire pour que je puisse fonctionner sudo mkdir /etc/blah en tant qu'utilisateur actuel ( myuser ) sans qu'on lui demande son mot de passe ?

Voici l'ensemble de mon /etc/sudoers fichier :

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root      ALL=(ALL:ALL) ALL
fizzbuzz  ALL=NOPASSWD: ALL
chadmin   ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

81voto

Bvandorp Points 11

C'est la séquence/ordre des règles qui en est la cause. La dernière règle a la préférence.

Pour résoudre le problème, il suffit de déplacer les lignes,

fizzbuzz  ALL=NOPASSWD: ALL
chadmin   ALL=NOPASSWD: ALL

de la sudoers à l'adresse

sudo visudo -f /etc/sudoers.d/myOverrides 

Cette approche est préférable à celle qui consiste à modifier le sudoers à l'aide d'un éditeur de texte. Si vous insérez accidentellement des erreurs dans le fichier, il se peut que vous ne puissiez plus exécuter le programme sudo . Toujours utiliser visudo La syntaxe est ainsi vérifiée et vous recevez des avertissements en cas d'erreurs !

Votre directive ne fonctionne pas car elle est remplacée par :

%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

Si vous exécutez le groups vous devriez voir que votre utilisateur appartient à ces groupes.

24voto

Kostyantyn Points 556

Si mon utilisateur est dans la sudo cet ordre des lignes ne permettra pas un accès sans mot de passe (comme l'a fait remarquer Florian Diesch), car la troisième ligne est prioritaire sur la première.

myuser    ALL=(www-data:www-data) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Il suffit donc de placer les lignes dans cet ordre :

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
myuser    ALL=(www-data:www-data) NOPASSWD: ALL

Sous mon utilisateur utilisation du compte sudo -l pour vérifier les autorisations mon utilisateur a.

12voto

Fabiano Soriani Points 543

Si plusieurs entrées correspondent pour un utilisateur, le dernier est utilisé. Ainsi, si fizzbuzz y chadmin sont membres des groupes admin o sudo un mot de passe leur sera encore demandé.

Placez les deux lignes à la fin du sudoers après le fichier #includedir ligne.

1voto

dragon788 Points 1216

Idéalement, si vous personnalisez les commandes qui peuvent être exécutées par l'intermédiaire de sudo vous devez effectuer ces modifications dans un fichier séparé sous /etc/sudoers.d/ au lieu d'éditer le sudoers directement. Vous devez également toujours utiliser visudo pour modifier le(s) fichier(s). Vous ne devez JAMAIS accorder NOPASSWD en ALL commandes.

Exemple : sudo visudo -f /etc/sudoers.d/mynotriskycommand

Insérez votre ligne accordant la permission : myuser ALL= NOPASSWD: /bin/mkdir

Ensuite, enregistrez et quittez, puis visudo vous avertira en cas d'erreur de syntaxe.

Vous pouvez exécuter sudo -l pour voir les autorisations accordées à l'utilisateur, si l'une des autorisations spécifiques à l'utilisateur a été accordée. NOPASSWD Les commandes apparaissent AVANT toute %groupyouarein ALL=(ALL) ALL dans la sortie, on vous demandera votre mot de passe.

Si vous avez l'habitude de créer de nombreux fichiers sudoers.d, vous voudrez peut-être les nommer par utilisateur afin qu'ils soient plus faciles à visualiser. Gardez à l'esprit que l'ordre des NOMS DE FICHIERS et des RÈGLES à l'intérieur du fichier est très important, le DERNIER chargé l'emporte, qu'il soit PLUS ou MOINS permissif que les entrées précédentes.

Vous pouvez contrôler l'ordre des noms de fichiers en utilisant un préfixe de 00-99 ou aa/bb/cc, mais gardez à l'esprit que si vous avez des fichiers qui n'ont pas de préfixe numérique, ils se chargeront après les fichiers numérotés, ce qui annulera les réglages. Ceci est dû au fait que, selon les paramètres de votre langue, le "tri lexical" utilisé par Shell trie d'abord les nombres et peut ensuite intercaler les majuscules et les minuscules lors du tri dans l'ordre "ascendant".

Essayez de courir printf '%s\n' {{0..99},{A-Z},{a-z}} | sort y printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort pour savoir si votre langue actuelle imprime AaBbCc etc ou ABC puis abc pour déterminer le meilleur préfixe de la "dernière" lettre à utiliser.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X