Schwerwiegender Fehler “unsicheres Repository (‘/home/repon’ gehört jemand anderem)”

Lesezeit: 6 Minuten

Benutzer-Avatar
XiaoFangyu

Ich habe ein Fehlerprotokoll von Apache 2 gefunden, das schwerwiegend ist:

Unsicheres Repository (‘/home/repon’ gehört jemand anderem)

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. Gibt es eine Problemumgehung, um dieses Problem zu lösen?

Git-Version: 2.35.3

PHP-Version: 7.4

Apache-2-Version: 2.4.41

  • 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

  • Verwandte (eher Windows-orientiert): Ich kann das übergeordnete Verzeichnis nicht zu safe.directory in Git hinzufügen

    – Peter Mortensen

    Vor 21 Stunden


Benutzer-Avatar
8 Tintenfisch

Dies trat erstmals mit der Veröffentlichung des Git 2.35.2-Sicherheitsupdates auf, das die beschriebenen Schwachstellen behebt hier. Credits @Juan-Kabbali

Hier sind vier 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

Dies fügt die hinzu safe Gruppe zu Datei ~/.gitconfig 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 zu haben, den Git-Befehl als Benutzer auszuführen ubuntu (vorausgesetzt Ubuntu ist der Repository-Eigentümer). 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 Sicherheitsbeauftragten.

  • Ändern Sie den Eigentümer des Git-Repositorys in www-data
sudo chown -R www-data:www-data /home/repon
  • stufen Sie Git als vorübergehende Lösung herunter. 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.

  • Ich musste laufen sudo git config --global --add safe.directory /home/repon

    – SAIF AHMED ANIK

    21. April um 20:39 Uhr

Benutzer-Avatar
Huber Thomas

Für Windows musste ich Folgendes tun:

  1. Klicken Sie mit der rechten Maustaste auf den Git-Repository-Ordner, in dem der Fehler auftritt

  2. Wählen Sie die Registerkarte „Sicherheit“ und dann „Erweitert“ (linkes Bild: „Erweitert“ drücken)

  3. Überprüfen Sie im oberen Bereich des neu geöffneten Fensters die Eigentümereigenschaften (rechtes Bild: „Besitzer“) und passen Sie diese an (rechtes Bild: „Ändern“ drücken). Dies muss Ihr funktionierendes Windows-Konto sein

  4. Drücken Sie OK und warten bis die Rechte gesetzt wurden, dann sollte die Git-Fehlermeldung Geschichte sein

    Geben Sie hier die Bildbeschreibung ein

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 auch manuell anpassen .gitconfig Datei in

C:\Users\<username>\.gitconfig

sobald Sie zur sicheren Liste hinzugefügt wurden.

  • Diese Lösung hat bei mir funktioniert, da der Repository-Ordner einem anderen Benutzer gehörte.

    – Natenho

    23. April um 6:36 Uhr

  • Das hat einige meiner lokalen Repos repariert. Sie gehörten einer Benutzergruppe. Ich musste keine Git-Konfiguration ändern.

    – Tobster

    25. April um 8:02 Uhr

  • Dies sollte die Defacto-Lösung unter Windows sein.

    – LunicLynx

    25. April um 10:15 Uhr

  • Danke für die Windows-Lösung. Die Nummer 2 ist es Fortschrittlich auf englisch nicht erweitert.

    – v

    18. Mai um 11:40 Uhr

  • In meinem Fall gehörten Ordner, die 2021 nach einer Neuformatierung und Neuinstallation von Windows wiederhergestellt wurden, nicht mehr zu meinem Benutzerkonto. Anscheinend ist die Überprüfung des Eigentums eine neue Funktion von GIT, die mit Version 2.35.2.windows.1 angegeben wird. Projekte, die seit der Wiederherstellung erstellt wurden, funktionierten weiterhin normal. Das Zurückerlangen des Eigentums an der obersten Ebene der Projektordner und das Einschließen von “Untercontainern und Objekten” erledigten das. Die Verarbeitung dauerte ein oder zwei Minuten, aber es war nur ein Mal.

    – Reicher Shealer

    26. Mai um 14:35 Uhr

Benutzer-Avatar
Nacht

Dies liegt am Git-Safe-Update.

Damit Git jedem Verzeichnis vertraut, in dem Sie dies ausführen können Power Shell:

git config --global --add safe.directory *

Im Baschsollten Sie dem entgehen * Ausdehnung vermeiden:

git config --global --add safe.directory '*'

Unterstützung für * wurde nur in Git 2.36 hinzugefügt, wie erwähnt unter: Höhepunkte von 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

  • es ist, weil CVE-2022-24765 Sicherheitslücke

    – Juan-Kabbali

    20. April um 13:38 Uhr

  • Dies wäre sinnvoll, da Git selbst dies vorgibt, aber das Ausführen des Befehls gibt einen Fehler aus: error: wrong number of arguments, should be 2

    – Steven Gann

    20. April um 17:26 Uhr

  • @StevenGann Stellen Sie sicher, dass Sie das Verzeichnisargument am Ende angeben.

    – genonym

    20. April um 19:10 Uhr

  • @StevenGann Außerdem wird * von Git 2.36 unterstützt, daher müssen Sie es möglicherweise aktualisieren.

    – genonym

    20. April um 19:33 Uhr

  • In bash würden Sie vermutlich entkommen wollen * mit '*' Andernfalls wird es nur auf Dateien im aktuellen Verzeichnis erweitert?

    – Ciro Santilli Путлер Капут 六四事

    23. April um 18:59 Uhr

Benutzer-Avatar
Michael Grabowski

Ich hatte ein ähnliches Problem – eine Webanwendung, die Git verwendete, konnte nicht auf das Repository zugreifen.

Ausführen des vorgeschlagenen Befehls (git config --global --add safe.directory /repo/path) hat auch nicht funktioniert, weil ich es als „me“ und nicht als „www-data“-Benutzer ausgeführt habe.

Die Lösung war eigentlich ganz einfach – ich habe die erstellt .gitconfig Datei in der /var/www Verzeichnis (das in meinem Fall das Zuhause des www-data-Benutzers ist) und put

[safe]
        directory = /repo/path

dort.

Benutzer-Avatar
Ayush

Keine der Lösungen in den vorherigen Antworten hat bei mir funktioniert, aber das Ändern des Eigentümers des Repositorys hat funktioniert. Ich renne Ubuntu 20.04.4 (Focal Fossa) LTS und ich haben den folgenden Befehl ausgeführt:

sudo chown -R username:group directory

Benutzer-Avatar
Peter Mortensen

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: www-DatenDas HOME-Verzeichnis von ist /var/wwwalso mit a .gitconfig Datei kann ein Sicherheitsrisiko bestehen (Veröffentlichung von Serverpfaden und -konfigurationen).

Problem 2: mit Apache/Ubuntu 20.04 (Focal Fossa)die Umgebungsvariable HOME ist 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.

Benutzer-Avatar
Peter Mortensen

Als Teil der Automatisierung unser Das Szenario beinhaltete das mehrmalige Aufrufen eines Skripts, und wir kannten den Arbeitsbereich im Voraus nicht.

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.

1017480cookie-checkSchwerwiegender Fehler “unsicheres Repository (‘/home/repon’ gehört jemand anderem)”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy