J'ai besoin de sudo sans invite de mot de passe, pour les scripts. Où me suis-je trompé?


9

Je suis bien dans le groupe sudo:

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

Dans mes sudores je semble avoir le réglage approprié:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

et c'est la dernière ligne non commentée là.

Mais quand j'essaie de git pull, Je suis prêt à retaper mon mot de passe:

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

Ce n’est pas un problème lorsque je suis connecté à la console, mais c’est inacceptable dans les scripts. Alors, comment puis-je permettre à n'importe quel membre du groupe sudo de générer un compte www-data sans retaper le mot de passe?

Quand je mets directement mon nom:

molot ALL=(ALL) NOPASSWD: ALL

ça marche pour moi. Mais, évidemment, pas pour les utilisateurs marian ou autres du groupe sudo. Pour ce que j'ai compris Manuel , les noms d’utilisateur et les noms de groupe doivent fonctionner dans le premier fichier.


Ne peux-tu pas sudo -u www-data ./your_script.sh? Quel est le but du script?
— jimbobmcgee

@jimbobmcgee c'est un git hook, donc non, je ne peux rien y ajouter. Il est appelé par l'utilisateur qui a poussé les modifications de git et je n'ai trouvé aucun moyen de le contourner.
— Mołot

Le premier champ (si ma compréhension rapide du sudoers format de fichier correct) correspond au nom d'utilisateur de l'utilisateur qui appelle. Avez-vous essayé de le remplacer par le caractère générique *, ou quel que soit l'utilisateur sous lequel gg hook s'exécute?
— a CVn

@ MichaelKjörling comme indiqué ici il devrait être possible d'écrire les utilisateurs et les groupes dans le premier champ. * ne marche pas. Mettre mon nom directement fonctionne pour moi ... mais pas pour les autres utilisateurs du groupe sudo, évidemment.
— Mołot

@ MichaelKjörling merci, votre commentaire m'a fait rechercher des caractères spéciaux et m'a permis de trouver une réponse: D Edit: suppression de la réponse automatique et acceptation de la réponse d'un tiers à partir du même moment.
— Mołot

Réponses:


19

Il semble que votre sudoers manque la ligne correspondante:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

correspond à un utilisateur nommé 'sudo'. Pour 'tous les utilisateurs du groupe sudo', cela devrait être:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

(notez le signe% au début).


1
Ah c'est ce que le % dans %wheel signifiait.
— nikhil

1

sudo visudo

Puis, en supposant molot est votre nom d'utilisateur, allez à la fin du fichier et:

molot ALL=(ALL) NOPASSWD: ALL

Cela devrait fonctionner, mais sinon, tenez-nous au courant.


Cela marche. Pour moi. Mais, évidemment, pas pour marian ou tout autre utilisateur du groupe sudo.
— Mołot

Créez ensuite des alias d’utilisateurs ( User_Alias ), et donne la permission d'exécuter des commandes spécifiques en tant que root ( Runas_Alias ). Je ne sais pas comment votre groupe est mis en place, vous pouvez consulter le wiki de Sudoers help.ubuntu.com/community/Sudoers C'est vraiment concis. Consultez la section "Spécifications de l'utilisateur", cela devrait vous aider.
— Jugurtha Hadjar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.