17 Stimmen

Wie behebt man die verweigerte Berechtigung für das Verzeichnis .git/ beim Ausführen von Git Push?

Ich habe ein Git-Repository auf meinem Server eingerichtet. Ich habe einen neuen Benutzer 'git' angelegt. Meine Repos befinden sich in /srv/git/example.git . Ich war in der Lage git remote add origin git@domain/srv/git/example.git dann habe ich meine Änderungen hinzugefügt und bestätigt.

Als ich jedoch versuchte git push origin master es scheiterte an:

fatal: temporäre Datei kann nicht erstellt werden: Berechtigung verweigert' und 'fatal: sha1 file write error: invalid argument'.

Auf dem Server habe ich ausgeführt:

sudo chown -R git:git /srv/git/`

Damit ist mein Problem behoben, aber ich frage mich, ob das die richtige Vorgehensweise war?

22voto

Auf dem Server habe ich sudo chown -R git:git /srv/git/ ausgeführt - das hat mein Problem behoben, aber ich frage mich, ob das die richtige Vorgehensweise war?

Ganz genau. Das Problem war bisher, dass der Git-Benutzer, als der Sie sich über SSH anmelden, nicht in das Repository schreiben konnte.

Je nach Bedarf können Sie verschiedene Kombinationen von Benutzern und SSH-Schlüsseln oder eines der vielen Zusatzprogramme (gitolite usw.) in Betracht ziehen, die für eine genauere Zugangskontrolle verwendet werden können.

12voto

kenorb Punkte 134883

Korrigieren Sie zunächst die Dateiberechtigungen in Ihrem entfernten .git z.B.

sudo chmod -R ug+w /var/www/.git
sudo chown -R git:git /var/www/.git

または root:root wenn Sie die Mitglieder von root Gruppe für Push-Zugriff.

Dann muss das Git-Repository auf dem Zielhost als gemeinsam genutzt eingestellt werden, so dass der folgende Befehl auf dem entfernten Rechner ausgeführt werden muss:

git config core.sharedRepository group

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X