218 votes

Comment configurer un `sudo` sans mot de passe sous Linux ?

Comment l'absence de mot de passe sudo peut être installé sur les distributions RHEL (Fedora, CentOS, etc.) ou Ubuntu ? (Si c'est le même pour toutes les distros, c'est encore mieux !)

Contexte : équipement personnel et/ou de laboratoire/de formation ne faisant l'objet d'aucun accès non autorisé (c'est-à-dire que les dispositifs sont sur des réseaux non publics, que tous les utilisateurs sont entièrement fiables et que le contenu des dispositifs est " simple ").

2 votes

La réponse de @Richipal est actuellement celle qui fonctionne le mieux avec le moins d'effort : il semble que les règles sudoers s'appliquent dans l'ordre inverse.

3 votes

Les règles @a1an sont appliquées dans le même ordre que celui indiqué dans le fichier sudoers, et au fur et à mesure qu'elles sont appliquées, elles se substituent les unes aux autres. Par conséquent, si je ne veux pas qu'une règle change du tout au tout, je la mettrai vers la fin du fichier afin qu'elle soit appliquée en dernier et qu'elle ne puisse pas être remplacée.

234voto

mcqwerty Points 2106

EDIT grâce au commentaire de medina : D'après la page de manuel, vous devriez être capable d'écrire

ALL            ALL = (ALL) NOPASSWD: ALL

pour permettre à tous les utilisateurs d'exécuter toutes les commandes sans mot de passe.


Pour référence, je laisse ma réponse précédente :

Si vous ajoutez une ligne de la forme

%wheel         ALL = (ALL) NOPASSWD: ALL

à /etc/sudoers (en utilisant le visudo bien sûr), il laissera tout le monde dans le groupe wheel exécuter des commandes sans fournir de mot de passe. Je pense donc que la meilleure solution est de mettre tous vos utilisateurs dans un groupe et de mettre une ligne comme celle-ci dans le fichier sudoers - il est évident que vous devez remplacer wheel avec le groupe que vous utilisez.

Vous pouvez également définir un alias d'utilisateur,

User_Alias     EVERYONE = user1, user2, user3, ...

et l'utiliser :

EVERYONE       ALL = (ALL) NOPASSWD: ALL

bien que vous deviez mettre à jour /etc/sudoers chaque fois que vous ajoutez ou supprimez un utilisateur.

2 votes

Non. ALL plutôt que de * pour spécifier tous les utilisateurs ? Voir l'exemple dans sudoers(5) .

1 votes

@medina : c'est vrai, j'ai manqué ça quand j'ai lu la page de manuel. Je vais l'éditer.

7 votes

Sous Ubuntu, en créant un fichier sous /etc/sudoers.d et en y mettant ces entrées, vous n'aurez plus à modifier sudoers

157voto

Richipal Points 1411

J'ai essayé les solutions ci-dessus, sans succès. La solution suivante a fonctionné pour moi Modifiez le fichier /etc/sudoers et ajoutez la ligne suivante

username ALL=(ALL) NOPASSWD: ALL

El clé est de l'ajouter après la dernière ligne qui dit

#includedir /etc/sudoers.d

1 votes

// , Cela semble être la meilleure façon de faire, surtout lorsque certaines applications ajouteront leurs propres règles pour les utilisateurs du système, Richipal. Plus d'infos sur sudoers.d : sudo.ws/man/1.8.13/sudoers.man.html

1 votes

// Pourriez-vous ajouter certains des diagnostics de Gearoid Murphy à votre réponse ?

1 votes

Merci pour cette clarification. L'ajouter après la ligne #includedir /etc/sudoers.d semble important dans CentOS 7 alors que cela semble fonctionner correctement d'avoir la ligne plus tôt dans le fichier dans CentOS 6.

32voto

Gearoid Murphy Points 398

J'ai essayé toutes les réponses de cette page, sans résultat utile. Finalement, j'ai trouvé la solution, utilisez cette commande pour lister vos droits sudo :

sudo -l

Cela devrait vous donner un résultat comme celui-ci :

User gmurphy may run the following commands on this host:
    (root) NOPASSWD: ALL
    (ALL) ALL

Il montre que je suis configuré avec les privilèges root mais que je fais toujours partie d'un groupe (admin) correspondant à une règle sudo qui attend le mot de passe ("(ALL) ALL"). Cela obligeait sudo à m'inviter. La règle en question concernait les utilisateurs admin :

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Une fois que je l'ai commenté, j'ai pu faire un sudo sans mot de passe. J'espère que cela sera utile à quelqu'un d'autre.

1 votes

Ahhh, merci ! Cela me rendait fou... dans mon cas, mon utilisateur faisait partie du groupe "sudo" ainsi que de "admin" (que j'ai créé), et les permissions de chacun étaient mal assorties, comme dans votre cas. Maintenant ce truc fonctionne ! :)

16 votes

Commenter une ligne est un instrument contondant. Vous serez peut-être intéressé d'apprendre que "sudo lit le fichier sudoers et applique les permissions dans l'ordre, de haut en bas. Ainsi, la dernière ligne du fichier écrasera tout conflit précédent" selon ubuntuforums.org/showthread.php?t=1132821 -- et ça a marché pour moi.

12voto

David Points 344

Sur /etc/sudoers il y a un exemple de cela vers le bas du fichier :

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

2 votes

Cet échantillon n'était pas dans le mien - mais merci !

1 votes

J'aime votre réponse succincte

6voto

topdog Points 3490

Il existe un autre moyen de le faire sans toucher au fichier sudoers.

  • Modifier /etc/pam.d/su et décommentez la ligne ci-dessous :

    auth           sufficient      pam_wheel.so trust use_uid
  • Ajoutez l'utilisateur à la wheel groupe.

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