Ajouter NOPASSWD dans / etc / sudoers ne fonctionne pas

37

Le 14.04 ici. J'ai SSHed dans ma machine, a ajouté la ligne suivante à /etc/sudoers :

myuser   ALL=NOPASSWD: ALL

Et ensuite essayé de courir:

sudo mkdir /etc/blah

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

Je ne veux pas être invité à saisir mon mot de passe lors de cette opération. Veuillez noter que lorsque j'exécute ls -ltr / , j'obtiens:

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 érigé en "sudoer", non?

Plus important encore, que dois-je faire pour que je puisse exécuter sudo mkdir /etc/blah en tant qu'utilisateur actuel ( myuser ) sans être invité à saisir le mot de passe?

Voici mon fichier /etc/sudoers entier:

#
# 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
    
posée Zac 30.07.2014 - 19:31
la source

4 réponses

58

C'est la séquence / ordre des règles qui a provoqué cela. La dernière règle a sa 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 à l'édition du fichier sudoers avec un éditeur de texte brut. Si vous insérez accidentellement des erreurs dans le fichier, vous risquez de ne plus pouvoir exécuter sudo . Utilisez toujours visudo pour vérifier la syntaxe et recevoir des avertissements sur 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.

    
réponse donnée Lety 30.07.2014 - 19:56
la source
19

Si myuser se trouve dans le groupe sudo , cet ordre de lignes ne fournit pas d’accès sans mot de passe (comme indiqué par Florian Diesch), car la troisième ligne remplace le 1er.

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 myuser , utilisez sudo -l pour vérifier les autorisations myuser .

    
réponse donnée Kostyantyn 07.05.2015 - 11:45
la source
10

Si plusieurs entrées correspondent à un utilisateur, la dernière dernière est utilisée. Ainsi, si fizzbuzz et chadmin sont membres des groupes admin ou sudo , ils se verront toujours demander un mot de passe.

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

    
réponse donnée Florian Diesch 30.07.2014 - 19:56
la source
0

Idéalement, si vous personnalisez les commandes pouvant être exécutées via sudo , vous devez effectuer ces modifications dans un fichier distinct sous /etc/sudoers.d/ au lieu de modifier directement le fichier sudoers . Vous devez également toujours utiliser visudo pour modifier le ou les fichiers. Vous ne devez JAMAIS accorder NOPASSWD aux commandes ALL .

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

Insérez votre ligne autorisant: myuser ALL= NOPASSWD: /bin/mkdir

Ensuite, enregistrez et quittez et visudo vous avertira en cas d’erreurs de syntaxe.

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

Si vous créez beaucoup de ces fichiers sudoers.d, vous souhaiterez peut-être les nommer par utilisateur pour faciliter leur visualisation. Gardez à l’esprit que le classement des NOMS DE FICHIERS et des règles dans le fichier est très important, le DERNIER chargé 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 le préfixe 00-99 ou aa / bb / cc, mais gardez à l’esprit que si vous avez des fichiers ANS sans préfixe numérique, ils se chargeront après le numéroté. fichiers, en remplaçant les paramètres. En effet, en fonction des paramètres de votre langue, le "tri lexical" du shell utilise d'abord les nombres triés et peut ensuite entrelacer les majuscules et les minuscules lors du tri dans l'ordre "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 affiche AaBbCc etc ou ABC alors abc pour déterminer quel serait le "dernier" préfixe de lettre à utiliser.

    
réponse donnée dragon788 22.05.2017 - 23:05
la source

Lire d'autres questions sur les étiquettes