Ich habe eine Website, auf der ich Github (Closed Source) verwende, um Änderungen zu verfolgen und die Website zu aktualisieren. Das einzige Problem ist, dass das .git-Verzeichnis anscheinend über das Web zugänglich ist. Wie kann ich damit aufhören und trotzdem Git verwenden?
Soll ich .htaccess verwenden? Sollte ich die Berechtigungen von .git ändern?
Antworten:
Erstellen Sie eine
.htaccess
Datei im.git
Ordner und fügen Sie Folgendes in diese Datei ein:Beachten Sie jedoch, dass es verloren gehen würde, wenn Sie das Repository jemals neu klonen würden
quelle
.git/
Verzeichnis selbst zu stellen, da es verloren gehen würde, wenn Sie das Repository jemals neu klonen würden.Fügen Sie dies in eine
.htaccess
Datei im Stammverzeichnis Ihres Webservers ein:Diese Lösung ist robust und sicher : es
.git
Verzeichnisse auf Ihrer Site, auch wenn es mehr als eines gibt,.gitignore
und.gitmodules
.git
Verzeichnisse undquelle
.git
Ordner, aber ich konnte die.gitignore
Datei trotzdem zum Abrufen bringen.server config, virtual host, directory, .htaccess
RedirectMatch 404 /\.git.*
Beides
.htaccess
und Berechtigungen für den.git/
Ordner würden funktionieren. Ich empfehle das erstere:quelle
<Files>
,<FilesMatch>
).Ich wollte nicht im
.git
Verzeichnis herumspielen und konnte Bennetts Lösung nicht für Apache 2.2 verwenden, aber das Hinzufügen von Folgendem zu meiner<VirtualHost>
Konfiguration hat funktioniert:quelle
Ich bin nicht zufrieden damit, den Zugriff auf meine .git-Ordner einzeln zu steuern und dies über die Apache-Konfiguration anstelle von .htaccess zu tun, um zu verhindern, dass ich sie überschreibe oder eine Neuinstallation vergesse usw.
Hier sind einige detaillierte Anweisungen, die hoffentlich helfen. Ich benutze Ubuntu 16.10.
quelle
Eine robustere und einfachere Option wäre das Deaktivieren der READ- und Execution-Berechtigung des
.git
Verzeichnisses.Da Apache (httpd) zum Beispiel meistens unter einem speziellen Benutzerkonto ausgeführt wird, wird es beispielsweise
apache
unter CentOS als Benutzer ausgeführt , während das.git
Verzeichnis unter einem echten Benutzerkonto erstellt werden muss, sodass wir den Zugriff einfach durch Ändern der Berechtigung blockieren können. Darüber hinaus führt dieser Ansatz keine neue Datei ein und wirkt sich auch nicht auf die git-Befehle aus.Der Befehl kann sein:
quelle
chmod
erneut zu laufen .mod_rewrite gibt dir den gewünschten Effekt:
quelle
.git
Verzeichnisses zu bestimmen, da es einen verbotenen Code zurückgibt und nicht gefunden.Anstatt mit
.htaccess
Regeln herumzuspielen , wie es die meisten Antworten vermuten lassen, sollten Sie das.git/
Verzeichnis einfach über der Webroot platzieren.In meinen Setups befindet sich mein
.git
Verzeichnis normalerweise in folgenden Bereichen:/home/web/project_name/.git/
Mein eigentlicher Code lebt in
/home/web/project_name/www_root/
Da mein Webstamm (wie in Apache oder Nginx definiert. Ich bevorzuge letzteres)
/home/web/project_name/www_root/
nicht auf das.git
Verzeichnis über das Web zugreifen kann, da es "höher" als das Webroot lebtquelle
project_name
Verzeichnis hat zwei Unterverzeichnisse:www_root
Wo sich die Dateien befinden, die tatsächlich bereitgestellt werden, wenn ein Besucher meine Website durchsucht, und.git
wo sich das Repo befindet. Aus den Repo-Updateswww_root
und deren Inhalten ziehen. Die Sache ist, dass, da das.git
Verzeichnis hierarchisch "über" meinem Front-Controller ist, es über das Web nicht zugänglich ist.