web-dev-qa-db-fra.com

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

Le 14.04 ici. Je suis entré dans ma machine en ajoutant la ligne suivante à /etc/sudoers:

myuser   ALL=NOPASSWD: ALL

Et puis essayé de courir:

Sudo mkdir /etc/blah

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

Je ne veux pas demander mon mot de passe lors de cette opération. Veuillez noter que lorsque je lance ls -ltr /, je reçois:

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

Mais je ne pense pas que cela compte parce que je me suis érigé en "sudoer", non?

Plus important encore, que dois-je faire pour pouvoir exécuter Sudo mkdir /etc/blah en tant qu'utilisateur actuel (myuser) sans que le mot de passe ne soit demandé?

Voici tout mon fichier /etc/sudoers:

#
# 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
40
Zac

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

Pour résoudre votre problème, déplacez simplement vos lignes,

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

du fichier sudoers à

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

Cette approche est préférable à la modification du fichier sudoers avec un éditeur de texte brut. Si vous insérez accidentellement des erreurs dans le fichier, vous ne pourrez peut-être plus exécuter Sudo. Utilisez toujours visudo pour vérifier la syntaxe et recevoir des avertissements concernant les 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 la commande groups, vous devriez voir que votre utilisateur appartient à ces groupes.

64
Lety

Si myuser est dans le groupe Sudo, alors cet ordre de lignes ne fournira pas d'accès sans mot de passe (comme l'a noté Florian Diesch), car la troisième ligne remplace 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 mettre 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 compte myuser, utilisez Sudo -l pour vérifier les autorisations dont dispose myuser.

20
Kostyantyn

Si plusieurs entrées correspondent pour un utilisateur, last one est utilisé. Ainsi, si fizzbuzzet chadminsont membres des groupes adminou Sudoname__, il leur sera toujours demandé un mot de passe.

Placez les deux lignes à la fin du fichier sudoersaprès la ligne #includedir.

10
Florian Diesch

Idéalement, si vous personnalisez les commandes pouvant être exécutées via Sudoname__, vous devez apporter ces modifications dans un fichier séparé sous /etc/sudoers.d/ au lieu de modifier directement le fichier sudoersname__. Vous devez également toujours utiliser visudopour éditer le (s) fichier (s). Vous ne devez JAMAIS accorder NOPASSWDsur les commandes ALLname__.

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

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

Ensuite, enregistrez et quittez et visudovous avertira en cas d'erreur de syntaxe.

Vous pouvez exécuter Sudo -l pour voir les autorisations accordées à votre utilisateur. Si l'une des commandes NOPASSWDspécifiques à l'utilisateur apparaît AVANT toute commande %groupyouarein ALL=(ALL) ALL dans la sortie, vous serez invité à entrer votre mot de passe.

Si vous créez beaucoup de ces fichiers sudoers.d, vous voudrez peut-être les créer, nommés par utilisateur, pour faciliter leur visualisation. Gardez à l'esprit que l'ordre des NOMS DE FICHIERS et des règles dans le fichier est très important, le DERNIER chargé gagne gagne, 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 00-99 ou aa/bb/cc, mais n'oubliez pas que si vous avez des fichiers sans préfixe numérique, ils se chargeront après les fichiers numérotés. les paramètres. Cela s'explique par le fait que, selon vos paramètres de langue, le "tri lexical" utilisé par le shell trie les nombres en premier, puis peut entrelacer les majuscules et les minuscules lors d'un tri "croissant".

Essayez d'exécuter printf '%s\n' {{0..99},{A-Z},{a-z}} | sort et printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort pour voir si votre langue actuelle imprime AaBbCcetc ou ABCpuis abcpour déterminer quel serait le meilleur préfixe de lettre "dernier" à utiliser.

0
dragon788