Exécuter la commande shell dans jenkins en tant qu'utilisateur root?
J'ai récemment commencé à utiliser Jenkins pour l'intégration. Tout allait bien jusqu'à ce que je était de travaux en cours d'exécution sur le nœud maître sans commande shell, mais j'ai pour l'exécution des travaux sur le master ainsi que le nœud esclave qui contient des commandes shell. Je ne suis pas en mesure de les exécuter des commandes shell en tant que root. J'ai essayé
- À l'aide de
SSH Keys
. - Paramètre nom d'utilisateur dans des commandes shell.
- À l'aide de
sudo
.
Je suis permission denied
d'erreur à chaque fois que je utiliser une des méthodes ci-dessus.
source d'informationauteur Raj Gupta
Vous devez vous connecter pour publier un commentaire.
Vous devez modifier les autorisations pour les
jenkins
de l'utilisateur, de sorte que vous pouvez exécuter des commandes shell.Vous pouvez installer le jenkins en tant que service (télécharger le package rpm), Vous pourriez avoir besoin de changer les ports parce que par défaut il fonctionne http sur le port 8080 et AJP sur le port 8009.
Processus suivant est pour
CentOS
1. Ouvrir ce script (à l'aide de VIM ou un autre éditeur):
2. Trouver cette
$JENKINS_USER
et changement à la “racine”:3. Puis modifier la propriété de Jenkins de la maison, webroot et les journaux:
4) Redémarrer Jenkins et vérifier que l'utilisateur a été changé:
Maintenant, vous devriez être en mesure d'exécuter le Jenkins emplois en tant qu'utilisateur root et tout le shell la commande sera exécutée comme
root
.Je voudrais suggérer à l'encontre de l'exécution de l'jenkins utilisateur en tant que root. Cela pourrait exposer le système d'exploitation et toutes les pensions qui jenkins peut construire.
Exécution d'un script en tant que root est un risque pour la sécurité, mais un peu plus sûr de la méthode à accorder à l'jenkins utilisateur sudo accès uniquement à exécuter un script, sans avoir besoin d'un mot de passe.
et ajoutez les éléments suivants:
Vérifiez votre chemin via le journal de la console de l'échec d'un script de compilation. Celui présenté ici est la valeur par défaut.
Maintenant dans le jenkins tâche, vous pouvez appeler
sudo $WORKSPACE/your script
Je suis d'accord w/oden@,
L'exécution de Jenkins en tant que root, aura également un problème lorsque vous essayez d'exécuter le appium, parce que "Appium ne fonctionnera pas si utilisé ou installé avec sudo".
Une autre option est de mettre en place un jenkins "Esclave" qui est effectivement en cours d'exécution en tant que root sur le maître et de le restreindre à égalité emplois, puis pointez votre travail esclave. Loin d'être l'idéal, mais certainement une solution rapide.
Il vous suffit de lancer la commande shell sur la machine Linux à l'aide de privilèges Root de Jenkins.
Suit :
1)
sudo vi /etc/sudoers
2) Ajoutez la ligne :
3) De Jenkins,exécutez le script de shell à distance en utilisant sudo .
pour exemple :
sudo ps -ef
4) Construire Jenkins travail maintenant.
Ce travail s'exécute le script sur la machine Linux à l'aide de privilèges root.