Activer sudo sans mot de passe en tant qu'utilisateur spécifique

26

J'ai deux utilisateurs sur mon système: itsadokmon utilisateur principal et elasticsearchun utilisateur avec un ulimit différent pour exécuter ElasticSearch.

Je voudrais pouvoir exécuter des choses en tant qu'utilisateur secondaire sans être invité à chaque fois à saisir mon mot de passe.

J'ai ajouté la ligne suivante à /etc/sudoers:

itsadok ALL=(elasticsearch:elasticsearch) NOPASSWD: ALL

D'après ce que je comprends, cela devrait permettre à l'utilisateur itsadok, sur n'importe quel hôte, d'exécuter n'importe quelle commande en tant qu'utilisateur (ou groupe) elasticsearch sans mot de passe. Cependant, essayer quelque chose comme

itsadok@dev001$ sudo -u elasticsearch ls

me demande un mot de passe. Le redémarrage de la machine n'a pas aidé.

Qu'est-ce que je fais mal?

MISE À JOUR :

Il s'avère que l'ordre des lignes sudoersest significatif. J'ai placé la ligne sous "Spécification de privilège utilisateur" qui sonnait comme le bon endroit, mais la ligne pour le %admingroupe qui vient plus tard remplaçait le paramètre.

Mettre la même ligne à la fin du fichier sudoers a résolu le problème.

itsadok
la source

Réponses:

12

Réponse révisée des commentaires: Si vous placez des directives ci #includedir- dessous , elles sont ignorées. Déplacer la ligne suivante aux sudoou admindéfinitions groupe, ou le placer dans un fichier séparé dans /etc/sudoers.d/.

Tuminoïde
la source
Ça n'a pas marché. De plus, le fichier avait déjà un root ALL=(ALL:ALL) ALLsans espace autour des deux points, donc cela ne semble pas correct. Juste pour être en sécurité, j'ai essayé juste (elasticsearch). Ça ne marche pas.
itsadok
Vous avez raison, cela fonctionne sans espace en 12.10 au moins. Quel Ubuntu vous utilisez et où exactement sudoersvous placez cette ligne? Je me souviens très bien que si sur les anciens systèmes vous aviez placé la ligne après la première #includedir, elle était ignorée. S'il se trouve à la fin du fichier, essayez de l'insérer au-dessus du répertoire inclus.
Tuminoïde
1
Votre commentaire m'a mis sur la bonne voie: l'ordre des entrées est important. Les paramètres ultérieurs remplacent les paramètres antérieurs.
itsadok
16

Suivez ces étapes:

  1. Modifier le fichier sudoers (il peut être présent dans /etc/sudoers.d/file_name)
sudo visudo -f /etc/sudoers
  1. Ajouter une ligne à la fin du fichier
usernameusedforlogin ALL=(ALL) NOPASSWD:ALL
  1. Enregistrer le fichier
esc :wq!
jatashankar shukla
la source
Cela permet à l'utilisateur d'exécuter toutes les commandes sur tous les hôtes sans mot de passe comme n'importe quel utilisateur, mais cela n'accorde aucun privilège de groupe, ce qui faisait partie de la question d'origine. Généralement, c'est un mauvais conseil car vous accordez à l'utilisateur des privilèges très larges.
d4nyll