it-swarm.com.de

Shell-Befehl in Jenkins als Root ausführen?

Ich habe kürzlich damit begonnen, Jenkins für die Integration zu verwenden. Alles war gut, bis ich Jobs auf dem Master-Knoten ohne Shell-Befehl ausgeführt habe, aber ich muss Jobs sowohl auf dem Master- als auch auf dem Slave-Knoten ausführen, der Shell-Befehle für enthält. Ich kann diese Shell-Befehle nicht als Root-Benutzer ausführen. Ich habe versucht

  1. Mit SSH Keys.
  2. Festlegen des Benutzernamens in Shell-Befehlen.
  3. Mit Sudo.

Ich bekomme permission denied Fehler jedes Mal, wenn ich eine der oben genannten Methoden verwende.

13
Raj Gupta

Sie müssen die Berechtigung für den Benutzer jenkins ändern, damit Sie die Shell-Befehle ausführen können. Sie können die Jenkins als Dienst installieren (RPM-Paket herunterladen). Möglicherweise müssen Sie die Ports ändern, da standardmäßig http auf 8080 und AJP auf 8009 ausgeführt wird.



Der folgende Vorgang gilt für CentOS
1. Öffnen Sie dieses Skript (mit VIM oder einem anderen Editor):

vim /etc/sysconfig/jenkins

2. Finde dieses $JENKINS_USER und wechsle zu "root":

$JENKINS_USER="root"

3. Ändern Sie dann den Eigentümer von Jenkins home, webroot und logs:

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

4) Starten Sie Jenkins neu und überprüfen Sie, ob der Benutzer geändert wurde:

service jenkins restart
ps -ef | grep jenkins

Jetzt sollten Sie in der Lage sein, die Jenkins-Jobs als Root-Benutzer auszuführen, und alle Shell-Befehle werden als root ausgeführt.

21
Pulkit

Ich würde vorschlagen, dass der Benutzer jenkins nicht als root ausgeführt wird. Dies könnte das Betriebssystem und alle Repos, die Jenkins erstellen können, offen legen.

Das Ausführen eines Skripts als root stellt ein Sicherheitsrisiko dar. Etwas sicherer ist es jedoch, dem jenkins-Benutzer Sudo den Zugriff zu gewähren, nur das eine Skript auszuführen, ohne ein Kennwort zu benötigen.

Sudo visudo

und fügen Sie Folgendes hinzu:

jenkins    ALL = NOPASSWD: /var/lib/jenkins/jobs/[job name]/workspace/script

Überprüfen Sie Ihren Pfad über das Konsolenprotokoll eines fehlgeschlagenen Erstellungsskripts. Die hier gezeigte ist die Standardeinstellung.

Jetzt können Sie innerhalb der Jenkins-Aufgabe Sudo $WORKSPACE/your script

29
oden