Berechtigungen für Jenkins im Apache-Ordner

Berechtigungen für Jenkins im Apache-Ordner

Ich habe ein ähnliches Problem wie dieses: So kopieren Sie Dateien als Jenkins-Aktion „Post Build“, wenn ich keine Berechtigungen für das Zielverzeichnis habe

Ich bin bereit, Dateien vom Jenkins-Arbeitsbereich zu verschieben/kopieren/rsyncen nach

/var/www/app

mit Rechten auf

Apache:Apache

Ich habe Jenkins zur Gruppe hinzugefügt Apache, aber die Jenkins-Instanz kann keine Dateien nach /var/www/app kopieren.

Ich habe auch versucht, die Berechtigungen für /var/www/app auf apache:jenkins zu setzen, aber Jenkins gibt immer noch den Fehler aus: Zugriff verweigert oder Vorgang nicht zulässig

PS: Habe vergessen hinzuzufügen, dass es sich um das Betriebssystem CentOS handelt ;)

BEARBEITEN 1: Dies ist das Protokoll vom laufenden Jenkins-Skript:

[Arbeitsbereich] $ /bin/sh -xe /tmp/hudson1379987233097some_more_numbers.sh + sh /path_to_sh_script/script.sh sendet inkrementelle Dateiliste

Anwendung/

rsync: Berechtigungen für "/var/www/app/application" konnten nicht festgelegt werden: Vorgang nicht zulässig (1)

Und das ist das Skript selbst :)

#!/bin/bash

rsync -avzh /Pfad/zu/Jenkins/Jobs/App/Arbeitsbereich/Standard/Anwendung /var/www/app ;

rsync -avzh /Pfad/zu/Jenkins/Jobs/App/Workspace/Standard/Bibliothek /var/www/app ;

rsync -avzh /Pfad/zu/Jenkins/Jobs/App/Arbeitsbereich/Standard/öffentlich /var/www/app;

Antwort1

Nach einer langen und fruchtbaren Diskussion in den Kommentaren und im Anschlussdieser LinkDer Benutzer konnte das Problem lösen, indem er

--no-perms --omit-dir-times

zu den rsyncOptionen.

Vorläufige Versuche zur Lösung des Problems:

Ich denke, wenn Sie sich für einen kurzen Zeitraum keine Sorgen um die Sicherheit machen, können Sie versuchen

chmod a+rwx /var/www/app 

und versuchen Sie dann, in dieses Verzeichnis zu schreiben. Beachten Sie, dass Sie dies rekursiv tun müssen, wenn Unterverzeichnisse vorhanden sind:

chmod --recursive a+rwx /var/www/app 

Wenn dies erfolgreich ist, können Sie mit dem schrittweisen Entfernen der Berechtigungen beginnen und so das Problem genauer bestimmen.

Überprüfen Sie, ob der Benutzer Jenkins bereits Mitglied der Gruppe Apache ist mit

groups apache

Antwort2

Ich hatte ein ähnliches Problem. Ich wollte in Jenkins auf /var/www auf dem lokalen Host schreiben. Auf meinem Server gehört /var/www www-data, also habe ich Jenkins zur www-data-Gruppe hinzugefügt und die Gruppe /var/www beschreibbar gemacht, aber ich bekam immer wieder die Fehlermeldung „Zugriff verweigert“. Ein einfacher Neustart des Jenkins-Dienstes hat das Problem für mich behoben.

Antwort3

Fügen Sie zunächst Ihren Linux- oder Apache-Server mit SSH und SSH-Schlüsselaustausch zum Jenkin-Server hinzu. Und erstellen Sie einen Benutzer im Linux-/Apache-Server mit einem Benutzer namens Jenkin (Unix-Benutzer). Denn wenn Sie SSH zum Pullen/Pushen von Dateien verwenden, verwendet Jenkin „Jenkin“ als Standardbenutzer.

Das Hinzufügen eines Apache-Benutzers zur Jenkin-Gruppe in Unix kann hilfreich sein.

verwandte Informationen