Appeler sudo de Jenkins

8

J'ai une machine de construction qui a un utilisateur abcqui a un accès sudo limité. Lorsque je vérifie le code source et exécute mon script de génération, cela fonctionne très bien. Le script de construction contient des sudoappels pour lesquels il ne dit pas "sudo: aucun tty présent et aucun programme askpass spécifié". Mais quand j'ai fait la même chose avec Jenkins sur une machine de construction ajoutée en tant qu'esclave, cela montre "sudo: aucun tty présent et aucun programme askpass spécifié".

J'ai trouvé une solution disant de commenter Default requirettydans le fichier /etc/sudoers. Mais je n'ai pas accès à ce fichier.

Comment puis-je surmonter ce problème?

Niraj
la source
Cette commande que vous essayez d'exécuter est-elle sudoautorisée à s'exécuter sans entrer de mot de passe? Si vous devez entrer un mot de passe, sudo va exiger un tty.
Patrick
Oui .. il fonctionne sans entrer de mot de passe
Niraj

Réponses:

3

Il y a deux options, commentez le Defaults requirettyparamètre de / etc / sudoers comme vous l'avez mentionné ou utilisez l' -targument pseudo-tty allocation ( ) pour ssh.

Essayez ce qui suit dans votre script jenkins:

ssh -t 127.0.0.1 "sudo command"

Bien que vous deviez avoir sshdes clés pré-partagées configurées pour vous-même et l'exécuter une fois manuellement pour ajouter une entrée à des hôtes connus, vous pouvez également ajouter l' -o StrictHostKeyChecking=noargument à sshpour ignorer cela.

geedoubleya
la source
2

Il échoue, car sudotente de demander le mot de passe root et aucun pseudo-tty n'est alloué.

Vous devez vous connecter en tant que root ou configurer les règles suivantes dans votre /etc/sudoers (ou:) sudo visudo:

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

Assurez-vous ensuite que votre utilisateur Jenkins appartient au admingroupe (ou wheel).

Idéalement (plus sûr), ce serait de limiter les privilèges root uniquement à des commandes spécifiques qui peuvent être spécifiées comme %admin ALL=(ALL) NOPASSWD:/path/to/program

kenorb
la source
2
Il nécessite toujours un ATS.
Courses de légèreté en orbite
0

Si vous exécutez des commandes via ssh, vous devez cocher l'option "Exec in pty". entrez la description de l'image ici

Sanny Patel
la source