
XiaoFangyu
Ich habe ein Fehlerprotokoll von Apache2 gefunden, das schwerwiegend ist: unsafe repository ('/home/repon' is owned by someone else)
Es passiert, weil ich habe git rev-parse --symbolic-full-name --abbrev-ref HEAD'
in PHP-Code und es sieht so aus neue Git-Sicherheitsänderung nicht mehr erlaubt www-data
um diesen Git-Befehl auszuführen.
git config --global --add safe.directory /homerepon
funktioniert nicht. Hat jemand einen Workaround um dieses Problem zu lösen?
Git-Version: 2.35.3
PHP-Version: 7.4
Apache2-Version: 2.4.41

8 Tintenfisch
Dies trat erstmals mit der Veröffentlichung des Sicherheitsupdates git 2.35.2 auf, das die beschriebenen Schwachstellen behebt hier. Credits @Juan-Kabbali
Hier sind 4 mögliche Lösungen:
- Vertrauen Sie dem Git-Verzeichnis (tun Sie es, wenn Sie wissen, dass der Inhalt des Verzeichnisses sicher ist)
git config --global --add safe.directory /home/repon
Dazu kommt ~/.gitconfig
das safe
Gruppe wie in diesem Beispiel gezeigt
[safe]
directory = /home/repon
- Führen Sie den Befehl als den richtigen Benutzer aus, zum Beispiel:
sudo -u ubuntu -- git status
Notiz: Dies erfordert Benutzer www-data
um die Berechtigung zum Ausführen des Git-Befehls als Benutzer zu haben ubuntu
(vorausgesetzt, Ubuntu ist der Eigentümer des Repositorys). Damit dies funktioniert, müssen Sie eine neue Datei darin hinzufügen /etc/sudoers.d/
mit folgendem Inhalt:
www-data ALL=(ubuntu) NOPASSWD: /usr/bin/git
Dies kann Auswirkungen auf die Sicherheit haben, wenden Sie sich daher zuerst an Ihren Sicherheitsmitarbeiter.
- Ändern Sie den Eigentümer des Git-Repositorys in
www-data
sudo chown -R www-data:www-data /home/repon
- Downgrade von git als vorübergehende Lösung. Zum Beispiel in Ubuntu:
apt install git-man=1:2.17.0-1ubuntu1 git=1:2.17.0-1ubuntu1
Notiz: Zumindest unter Windows scheinen alle Git-Repositories auf auswerfbaren Laufwerken als unsicher zu gelten und das Ändern des Eigentums scheint nicht zu funktionieren.

Huber Thomas
Für Windows musste ich Folgendes tun:
- Klicken Sie mit der rechten Maustaste auf den Git-Repository-Ordner, in dem der Fehler auftritt
- Wählen Sie die Registerkarte Sicherheit, dann wählen Sie „Erweitert“ (linkes Bild: „Erweitert“ drücken)
- Überprüfen Sie die Besitzereigenschaften (rechtes Bild: “Besitzer”) im oberen Bereich des neu geöffneten Fensters und passen Sie sie an (rechtes Bild: “Ändern” drücken), dies muss Ihr funktionierendes Windows-Konto sein
- Drücken Sie OK und warten Sie, bis die Rechte gesetzt wurden, dann sollte die Git-Fehlermeldung Geschichte sein

Diese Lösung funktioniert auch, wenn Sie das Verzeichnis nachträglich verschieben oder umbenennen. Meiner Meinung nach sollte man dieser Lösung den Vorzug geben
git config --global --add safe.directory <repo-path>
was Sie jedes Mal tun müssen, wenn Sie Änderungen am Verzeichnisnamen vornehmen. Sie können die .gitconfig-Datei auch manuell anpassen
C:\Users\<username>\.gitconfig
sobald Sie zur sicheren Liste hinzugefügt wurden.

Nacht
Das liegt am Git-Safe-Update.
Damit Git jedem Verzeichnis vertraut, können Sie dies in Powershell ausführen:
git config --global --add safe.directory *
In bash solltest du dem entkommen *
Ausdehnung vermeiden:
git config --global --add safe.directory '*'
Unterstützung für *
wurde nur in Git 2.36 hinzugefügt, wie erwähnt unter: https://github.blog/2022-04-18-highlights-from-git-2-36/ und von genonymous in den Kommentaren.
Wenn Sie nur einem Verzeichnis vertrauen, können Sie diesen Befehl ausführen
git config --global --add safe.directory your-directory
Ich hatte ein ähnliches Problem – eine Webanwendung, die Git verwendet, konnte nicht auf das Repository zugreifen.
Ausführen des vorgeschlagenen Befehls (git config --global --add safe.directory /repo/path
) funktionierte nicht so gut, weil ich es als „me“ und nicht als „www-data“-Benutzer ausgeführt habe.
Die Lösung war eigentlich ganz einfach – ich habe sie erstellt .gitconfig
Datei in /var/www
Verzeichnis (das in meinem Fall das Zuhause des www-data-Benutzers ist) und put
[safe]
directory = /repo/path
dort.
Keine der oben genannten Lösungen hat bei mir funktioniert, aber das Ändern des Eigentümers des Repositorys hat funktioniert. Ich renne Ubuntu 20.04.4 LTS
und ich habe den folgenden Befehl ausgeführt:
sudo chown -R username:group directory
Als Teil der Automatisierung beinhaltete unser Szenario das mehrfache Aufrufen eines Skripts, und wir kennen den Arbeitsbereich nicht im Voraus.
Also in unserem Fall git config --global --add safe.directory *
mehrere Einträge erstellt in ~/.gitconfig
.
git config --global --replace-all safe.directory '*'
hat uns geholfen sicherzustellen, dass keine doppelten Einträge vorhanden sind.

Dregad
Ich sage vielleicht das Offensichtliche, aber ich denke, es ist erwähnenswert, dass ich renne git config --global --add safe.directory /home/repon
muss für die getan werden www-Daten Benutzer.
Problem 1: Das HOME-Verzeichnis von www-data ist /var/www
also mit a .gitconfig Datei kann ein Sicherheitsrisiko bestehen (Herausgeben von Serverpfaden / Config).
Problem 2: Bei Apache/Ubuntu 20.04 ist die Umgebungsvariable HOME standardmäßig nicht definiert (/etc/apache2/envvars
setzt es zurück), sodass die Konfiguration nicht übernommen wird (git config --global
scheitert mit fatal: $HOME nicht gesetzt).
Ich habe es geschafft, das Problem zu beheben, indem ich das Repository zur Systemkonfiguration von git hinzugefügt habe, dh git config --system --add safe.directory /home/repon
.
10144400cookie-checkfatal: Unsicheres Repository (‘/home/repon’ gehört jemand anderem)yes
Dies hängt eng mit Q1 und Q2 zusammen; siehe beide Fragen und alle Antworten dort.
– Torek
17. April um 12:34 Uhr
Lesen Sie für eine fundierte Entscheidung auch die URL, auf die Sie in Ihrer Frage verwiesen haben, und studieren Sie die Git-Dokumentation für die Teile, auf die sie verweist. Sie haben nur ein Konfigurationsproblem aufgrund kürzlich eingeführter Einschränkungen, damit Sie nicht so leicht in ein Sicherheitsproblem geraten.
– hakre
17. April um 12:40 Uhr