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

Lesezeit: 5 Minuten

Benutzer-Avatar
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

  • 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

Benutzer-Avatar
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.

  • 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, dann wählen Sie „Erweitert“ (linkes Bild: „Erweitert“ drücken)
  3. Ü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
  4. Drücken Sie OK und warten Sie, 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 .gitconfig-Datei auch manuell anpassen

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

  • Dies sollte die Antwort sein

    – Geschmeidig

    19. Mai um 1:17 Uhr

Benutzer-Avatar
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

  • 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

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.

Benutzer-Avatar
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/wwwalso 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.

1014440cookie-checkfatal: 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