2016-06-07 16 views
1

Ich habe einen Benutzer: Gruppe im Besitz von www-data. Immer wenn ich einen Pull zum Server mache (im Verzeichnis cgi-bin), werden die geänderten Dateien von www-data in root geändert.Beibehalten von Gruppenberechtigungen mit einem Git Ziehen

Ich würde gerne wissen, ob es eine Möglichkeit gibt, den Inhalt der Dateien von Git zu ziehen, während gleichzeitig die Benutzergruppenberechtigungen unverändert bleiben, nachdem der Pull ausgeführt wurde.

Bitte beraten. Vielen Dank.

+1

Git macht nichts Besonderes an Benutzer- und Gruppenbesitz und Berechtigungen, außer das 'x' Bit zu setzen oder zu löschen, basierend auf dem Modus, der für jede Datei im Repository gespeichert ist. Dies bedeutet, dass Sie diese Dinge mit den üblichen Systemkonfigurationselementen konfigurieren. Diese variieren je nach Betriebssystem, aber Solaris und Linux verwenden beide die Konvention, dass neue Dateien der Gruppe des Prozesses gehören, der die Datei * erstellt, es sei denn * das g + s (Gruppen-Sticky) Bit ist auf dem * enthaltenden Verzeichnis * gesetzt. Das g + s-Bit wird beim Erstellen von Unterverzeichnissen vererbt, sodass es ausreicht, es einmal in vorhandenen Verzeichnissen zu setzen. – torek

+0

Danke für Ihre Antwort. Dies war die Lösung, auf die ich schließlich zurückgriff. Ich habe gesehen, dass Leute von git cache-meta gesprochen haben, aber die Schritte zur Implementierung waren nicht klar. Meine einzige Sorge mit g + s ist, dass es nur die Gruppenberechtigungen und nicht den Eigentümer behält. Die Codebasis ist etwas, das ich geerbt habe, und einige der Berechtigungen, die der Gruppe zugewiesen werden müssen, wurden möglicherweise auf den Besitzer festgelegt. Möglicherweise muss ich diese ändern und die Berechtigungen entsprechend festlegen. –

Antwort

1

Dies liegt daran, dass Sie als root ziehen. Sie möchten ziehen, wie der Benutzer die Dateien besitzen wollte. Natürlich ist das Anfügen von Zugangsdaten an Ihr www-data Konto nicht gut für die Sicherheit, also sollten Sie wahrscheinlich etwas wie githubs deploy keys verwenden (kann Code ziehen, aber nicht drücken).

Wenn Sie als www-data ziehen möchten, können Sie su - www-data, aber zunächst werden Sie Probleme haben, da Root bereits Dateien und Teile des Git-Index besitzt. Sie möchten chown -R www-data:www-data /path/to/dir, so dass Ihr beabsichtigter Benutzer den Repo und Index während des Ziehens ändern kann.

Auch Sie können das Sticky Bit wie im Kommentar vorgeschlagen verwenden.