
Betriebssystem: Ubuntu Server 10.04 LTS
Ich habe ein seltsames Problem mit Berechtigungen und kann die Ursache nicht finden.
Der Aufbau ist wie folgt:
Git-Repository-Ordner (und die darin enthaltenen Dateien) sind Eigentum von root, und die Gruppe, die wir für die Projekte verwenden, verfügt über RWS-Rechte, zum Beispiel:
ll /path/to/project
drwxrwsr-x 7 root project 4096 2013-03-14 19:19 project
Unser Jenkins-Benutzer ist Mitglied aller Gruppen, die wir für die Projekte erstellen, einschließlich der Gruppe im Beispiel. Die Jenkins-Anwendung wird vom Jenkins-Benutzer gestartet, um sicherzustellen, dass sie vollen Zugriff auf die Projektordner hat.
Wenn ich die Lese- und Ausführungsrechte für „Andere“ für diese Git-Ordner entferne, schlagen unsere Builds fehl und es wird folgende Meldung angezeigt:
fatal: '/path/to/project' does not appear to be a git repository
ps: kein SELinux im Spiel
Antwort1
Ich vermute, es liegt an Ihren Berechtigungen für Unterverzeichnisse innerhalb des Repository.
# Set the same ownerships for every file and directory within the repository
sudo chown -R root:project /path/to/project
# Remove permissions for others on all files
sudo chmod o-rwx $(find /path/to/project -not -type d)
Wenn Sie möchten, dass Gruppenmitglieder Änderungen zurückschreiben:
# Set permissions for all subdirectories
sudo chmod 2770 $(find /path/to/project -type d)
Wenn Sie möchten, dass Gruppenmitglieder nur Lesezugriff haben:
# Remove write permissions for group members for every file
sudo chmod g-w $(find /path/to/project -not -type d)
# Set permissions for all subdirectories
sudo chmod 2750 $(find /path/to/project -type d)
Solange der Jenkins-Benutzer Mitglied der Projektgruppe ist, sollte er das Git-Repository problemlos klonen können.
Wenn Sie jedoch SELinux auf Ihrem System aktiviert haben, könnte es etwas komplizierter werden.
Viel Spaß beim Programmieren :)