Berechtigungen mit Git Post-Receive

Ich habe git lokal und auf meinem Server eingerichtet und ein Post-Receive-Verfahren erstellt, damit es beim Push auf den Live-Server in das Verzeichnis der virtuellen Hosts der Website wechselt.

#!/bin/sh
GIT_WORK_TREE=/var/www/domainname/public_html/ git checkout -f

Wenn ich jedoch versuche, meinen Push auszuführen, geht der Master erfolgreich aus, aber mir werden Fehler mit verweigerter Berechtigung angezeigt, wenn ich versuche, diese Dateien in meinem Server-Webstamm zu erstellen.

z.B.remote: error: unable to create file index.php (Permission denied)

Diese Fehler sind für mich aufgrund der Art und Weise, wie ich meinen Server eingerichtet habe, tatsächlich sinnvoll. Ich habe den Root-Zugriff deaktiviert und einen neuen Benutzer erstellt, der über visudo zu den Sudoern hinzugefügt wird. Anschließend habe ich für diesen Benutzer SSH-Schlüssel eingerichtet. Ich benutze diesen Benutzer, um meine Git-Änderungen auf den Server zu übertragen.

Ich glaube, das Problem ist, dass dieser Benutzer, mit dem ich eine Verbindung zu Push herstelle, nicht über die Schreibrechte für das Verzeichnis der virtuellen Hosts verfügt. Alle meine Dateien in diesen Ordnern gehören www-data (meinem Nginx-Benutzer) mit derselben Gruppe.

Was ist die Lösung? Erstellen Sie einen anderen Benutzer mit SSH-Schlüsseln, um eine Verbindung nur für Git mit höheren Berechtigungen herzustellen, oder gibt es eine Möglichkeit, sudo-ähnliche Fähigkeiten nach dem Empfang zu gewähren?

Ich entschuldige mich für die langwierige Frage, wollte aber unbedingt klarstellen, was ich getan habe.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage