J'ai une machine de construction qui a un utilisateur abc
qui 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 sudo
appels 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 requiretty
dans le fichier /etc/sudoers
. Mais je n'ai pas accès à ce fichier.
Comment puis-je surmonter ce problème?
sudo
tty
not-root-user
jenkins
Niraj
la source
la source
sudo
autorisée à s'exécuter sans entrer de mot de passe? Si vous devez entrer un mot de passe, sudo va exiger un tty.Réponses:
Il y a deux options, commentez le
Defaults requiretty
paramètre de / etc / sudoers comme vous l'avez mentionné ou utilisez l'-t
argument pseudo-tty allocation ( ) pourssh
.Essayez ce qui suit dans votre script jenkins:
ssh -t 127.0.0.1 "sudo command"
Bien que vous deviez avoir
ssh
des 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=no
argument àssh
pour ignorer cela.la source
Il échoue, car
sudo
tente 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
:Assurez-vous ensuite que votre utilisateur Jenkins appartient au
admin
groupe (ouwheel
).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
la source
Si vous exécutez des commandes via ssh, vous devez cocher l'option "Exec in pty".
la source