Question Fichier de Sudoers, activez NOPASSWD pour l'utilisateur, toutes les commandes


Préface

C'est une question assez complexe liée au fichier Sudoers et à la commande sudo en général.

REMARQUE: J'ai effectué ces modifications sur une machine dédiée exécutant Ubuntu Desktop 13.04, que j'utilise uniquement à des fins d'apprentissage. Je comprends que l'activation de NOPASSWD sudo représente un risque énorme pour la sécurité.

Question

Au début, mon seul changement au fichier sudoers (/ etc / sudoers) était une ligne, une spécification utilisateur qui aurait permis à "nicholsonjf" d'exécuter toutes les commandes avec sudo sans avoir à entrer de mot de passe (voir la ligne commençant par 'nicholsonjf '):

# 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
nicholsonjf    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

Cependant, cela n'a pas fonctionné, et on m'a toujours demandé mon mot de passe à chaque fois que je passais une commande en tant que "nicholsonjf". Je n'ai pu lancer des commandes sudo que sous le nom 'nicholsonjf' une fois que j'ai supprimé 'nicholsonjf' des groupes sudo et admin.

Quelqu'un peut-il expliquer pourquoi cela a fonctionné?

Est-ce parce que l'utilisateur "nicholsonjf" hérite des droits sudo des deux spécifications de groupe "admin" et "sudo" (voir ci-dessous dans le fichier sudoers), qui remplacent la spécification utilisateur "nicholsonjf" fichier de configuration?


105
2017-08-19 00:45


origine


note: ALL = NOPASSWD: ALL doit être ALL = (ALL) NOPASSWD: ALL ou sinon cela ne fonctionne pas ... - André Verwijs
voir aussi cette réponse: askubuntu.com/questions/139723/sudo-does-not-ask-for-password/ - JB.
Duplicata possible de Pourquoi l'option sudoers NOPASSWD ne fonctionne pas? - Anwar
@ AndréVerwijs merci, ça marche pour moi - netawater


Réponses:


Votre ligne ajoutée a été remplacée. De man sudoers:

Lorsque plusieurs entrées correspondent à un utilisateur, elles sont appliquées dans l'ordre.   Lorsqu'il y a plusieurs correspondances, la dernière correspondance est utilisée (ce qui n'est pas le cas).   nécessairement le match le plus spécifique).

Dans ton cas nicholsonjf était membre du groupe sudo alors pour lui cette ligne s’applique:

%sudo   ALL=(ALL:ALL) ALL

Si vous voulez remplacer des entrées dans /etc/sudoers Il suffit de mettre les nouvelles entrées après eux.

La nouvelle entrée devrait ressembler à

myuser ALL=(ALL) NOPASSWD:ALL pour un seul utilisateur, ou

%sudo ALL=(ALL) NOPASSWD:ALL pour un groupe.


102
2017-09-03 00:55



Pour une solution complète, j'aimerais voir quelque chose à propos de NOPASSWD dans cette réponse ... - Daniel Alder
Je pense que la solution devrait être: %sudo ALL=(ALL) NOPASSWD:ALL - Daniel Alder
@DanielAlder: la ligne de spécification de la question nicholsonjf ALL=NOPASSWD: ALL est correct. C'était juste au mauvais endroit, comme je l'expliquais dans la réponse. ------ Le Runas spécification - dans votre cas (ALL) - est optionnel Si vous omettez la spécification, vous pouvez exécuter les commandes en tant que root et vous ne pouvez pas utiliser -u et -g options de sudo. - pabouk
Ceci est un risque de sécurité pire car il donne accès à plusieurs utilisateurs sans mot de passe. Si c'est votre PC personnel, ce n'est pas important - peut-être. Je voudrais juste déplacer la ligne personnelle, pour durer. - Mark Williams
Un ajout, plutôt qu'une correction, si vous utilisez quelque chose basé sur debian / ubuntu (peut être généralement appliqué, pas vu ailleurs) Votre meilleur pari absolu consiste à ajouter des commandes personnalisées à un fichier dans /etc/sudoers.d/ et à quitter lui-même devant être géré par le gestionnaire de paquets. - Aquarion


Pour un seul utilisateur:

superuser ALL=(ALL) NOPASSWD:ALL

Pour un groupe:

%supergroup  ALL=(ALL) NOPASSWD:ALL

109
2018-01-16 15:28



Avant de lire cette réponse, j'ai fait %sudo ALL=NOPASSWD: ALL et il fonctionne. Suis-je le seul à trouver la forme étendue de Backus-Naur difficile à comprendre? - Vince
@Vince Lorsque vous avez utilisé votre commande, je ne peux pas sudo sans mot de passe en tant qu'utilisateur sans privilèges sudo. Par exemple. sudo -u root -i fonctionne, mais sudo -u git -i n'est pas - NeverEndingQueue
C'est une réponse beaucoup plus utile que celle acceptée, qui, bien qu'elle réponde à la question du PO, n'est probablement pas ce que la plupart des gens accèdent à cette page via Google. - Mahmoud Al-Qudsi


Comme Vince a mentionné dans un commentaire, vous pouvez utiliser cette ligne:

%sudo ALL=NOPASSWD: ALL

(Ceci est différent des lignes montrées dans ceux  réponses, et cela a résolu le problème pour moi.)


-1
2017-10-04 09:53



@Eliah ce n'est pas si différent des autres réponses. Tout ce qu'il fait est de remplacer l'espace réservé supergroup dans la réponse de Fedir avec sudo. Et ensuite, un autre utilisateur pour le groupe wheel? Ou tout autre groupe que l'utilisateur utilise? - muru
@muru "Tout ce qu’il fait est de remplacer l’espace réservé supergroup dans la réponse de Fedir avec sudo. "  Quelle? Remplacer supergroup avec sudo dans la ligne %supergroup ALL=(ALL) NOPASSWD:ALL les rendements %sudo ALL=(ALL) NOPASSWD:ALL, ne pas %sudo ALL=NOPASSWD: ALL. - Eliah Kagan
Ce qui est sans doute pire, puisque maintenant, NOPASSWD est uniquement destiné à root en tant qu'utilisateur cible. Donc, il ne répond même pas correctement à la question! - muru
@muru Qu'est-ce que c'est pas même sans doute, cependant, est une substitution de supergroup avec sudo. Ceci est sa propre réponse, pas un message de remerciement ou une copie d'une autre réponse. Mais oui, je suis d'accord: à moins qu'ils aient l'intention de, ce ne sera pas aussi bon pour la plupart des utilisateurs que les méthodes dans les autres réponses. (Mais, surtout si l'on considère la question "toutes les commandes", et non "tous les utilisateurs cibles", je ne pense pas que cela tente même de répondre à la question posée.) - Eliah Kagan
Cela a fonctionné pour moi et je voulais partager avec d'autres utilisateurs :) (supprimer mon commentaire si désiré). - E. Fortes