Préface
C'est une question assez complexe liée au fichier Sudoers et à la commande sudo en général.
REMARQUE: j'ai apporté 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 de sécurité énorme.
Question
Initialement, mon seul changement au fichier sudoers (/ etc / sudoers) était une ligne, une spécification utilisateur qui aurait dû permettre à 'nicholsonjf' d'exécuter toutes les commandes avec sudo sans avoir à entrer un 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 mon mot de passe m'a toujours été demandé chaque fois que j'exécutais une commande sous le nom 'nicholsonjf'. Je n'ai pu commencer à exécuter les commandes sudo en tant que "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éritait des droits sudo des spécifications de deux administrateurs de 'admin' et 'sudo' (voir ci-dessous dans le fichier sudoers), qui surchargeaient la spécification d'utilisateur 'nicholsonjf' car ils étaient plus bas dans le fichier de configuration?
Réponses:
La ligne que vous avez ajoutée a été remplacée. De
man sudoers
:Dans votre cas,
nicholsonjf
était un membre du groupe,sudo
donc pour lui cette ligne s'appliquait:Si vous souhaitez remplacer les entrées,
/etc/sudoers
placez les nouvelles entrées après elles.La nouvelle entrée devrait ressembler à
myuser ALL=(ALL) NOPASSWD: ALL
pour un utilisateur unique, ou%sudo ALL=(ALL) NOPASSWD: ALL
pour un groupe.la source
NOPASSWD
de cette réponse ...%sudo ALL=(ALL) NOPASSWD:ALL
nicholsonjf ALL=NOPASSWD: ALL
est correcte. C'était juste au mauvais endroit, comme je l'expliquais dans la réponse. ------ LaRunas
spécification - dans votre cas(ALL)
- est optionnelle. Si vous omettez la spécification, vous pouvez exécuter les commandes en tant queroot
et vous ne pouvez pas utiliser-u
et les-g
options desudo
.Pour un utilisateur unique, ajoutez cette ligne à la fin de votre
sudoers
fichier en utilisantsudo visudo
Pour un groupe
la source
%sudo ALL=NOPASSWD: ALL
et ça marche. Suis-je le seul à trouver que Extended Backus-Naur Form est vraiment difficile à comprendre?sudo
sans mot de passe en tant qu'utilisateur sans privilèges sudo. Par exemple,sudo -u root -i
fonctionne, maissudo -u git -i
ne fonctionne pas.Pour ne jamais demander à l'utilisateur actuel d'un mot de passe lorsque l'utilisateur utilise le
sudo
fairecela créera un fichier appelé
/etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password
et signifiera que l'utilisateur avec lequel vous avez exécuté cette commande ne sera pas invité à entrer son mot de passe lors de l'exécution de lasudo
commande. Vous serez toujours invité à entrer le mot de passe dans d'autres contextes, tels que l'installation d'éléments à partir de l' application graphique Ubuntu Software .Les avantages de le faire de la sorte par rapport à l’ajout de la ligne dans la
echo
commande à/etc/sudoers
utilisersudo visudo
(comme suggéré par les autres réponses) sont les suivants:/etc/sudoers
est parfois modifié par les mises à jour du système, alors que les fichiers/etc/sudoers.d
ne le sont passudo visudo
méthode est sujette aux erreurs (comme en témoigne cette question même), alors que copier / coller une commande est beaucoup plus difficile à gâcherSelon
sudo cat /etc/sudoers.d/README
cette fonctionnalité (l'insertion de fichiers sudoer supplémentaires/etc/sudoers.d
) a été activée par défaut depuis la version 1.7.2p1-1 de Debian, parue à la fin des années 1990 (Ubuntu est basée sur Debian ).la source
Comme Vince l’ a mentionné dans un commentaire , vous pouvez utiliser cette ligne:
(Ceci est différent des lignes montrées dans ces réponses , et cela a résolu le problème pour moi.)
la source
supergroup
dans la réponse de Fedirsudo
. Et ensuite, un autre utilisateur pour le groupewheel
? Ou tout autre groupe que l'utilisateur utilise?supergroup
dans la réponse de Fedirsudo
." Quelle? Remplacersupergroup
parsudo
des%supergroup ALL=(ALL) NOPASSWD:ALL
rendements en ligne%sudo ALL=(ALL) NOPASSWD:ALL
, pas%sudo ALL=NOPASSWD: ALL
.supergroup
avecsudo
. C'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 que cela ne soit voulu , cela ne sera pas aussi bon pour la plupart des utilisateurs que les méthodes des autres réponses. (Mais, surtout si l'on considère que la question dit "toutes les commandes", pas "tous les utilisateurs cibles", je ne pense pas que cela n'a même pas pour but de répondre à la question posée.)