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.

Mołot
la source
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).

rafalmp
la source
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.

Jugurtha Hadjar
la source
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