Zugriff auf 'Git / Attribute' nicht möglich


93

Was bedeutet Warnung remote: warning: unable to access '/root/.config/git/attributes': Permission deniedund welche Auswirkungen hat sie?

$git clone git://git.eclipse.org/gitroot/egit/egit.git
Cloning into 'egit'...
remote: warning: unable to access '/root/.config/git/attributes': Permission denied
remote: Counting objects: 57926, done.
remote: Compressing objects: 100% (11872/11872), done.
remote: Total 57926 (delta 30734), reused 56308 (delta 29136)
Receiving objects: 100% (57926/57926), 32.29 MiB | 1021 KiB/s, done.
Resolving deltas: 100% (30734/30734), done.
Checking out files: 100% (1483/1483), done.

Sollte ich dem Hoster ein potenzielles Infrastrukturproblem melden?


Konnten Sie das lösen?
mu 無

@mu 無 Nein, ich zögere es, einen Fehler beim Hosting zu melden, da ich noch keine endgültige Antwort habe.
Basilevs

Antworten:


195

Ich bin selbst in diese Situation geraten. Nachdem ~/.config/ich überprüft hatte, ob es angezeigt wurde, bemerkte ich, dass der Eigentümer dieses Ordners war root. Ich habe das geändert my_user_nameund es hat funktioniert.

cd ~/
ls -al
<Noticed .config was owned by root, unlike everything else in $HOME>
sudo chown -R $(whoami) .config

Es ist auch hilfreich, die Ursache zu kennen: Dieses Verzeichnis wird erstellt, wenn Sie zum ersten Mal ein Programm ausführen, das es verwendet. Wenn der Befehl als ausgeführt wurde root, verursacht dies dieses Berechtigungsproblem.

Wenn zum Beispiel das ~/.configVerzeichnis noch nicht existiert, und Sie laufen sudo htop, die Verzeichnisse ~/.configund ~/.config/htopwird erstellt und im Besitz sein root. Danach kann ein regulärer git-Befehl nicht mehr zugreifen ~/.configund gibt die obige Warnung aus. (Bildnachweis: Benutzer mehtunguh)

Die -ROption mit chownbesteht darin, die Berechtigungen rekursiv zu ändern. Dies ist hilfreich, wenn Sie Unterordner unter haben~/.config


6
Das hat mir auch bei der Verwendung der Linux-Befehlszeile in Windows 10 geholfen - danke!
lukaszkups

1
Dies war eine große Zeitersparnis
Prithvi Raj Vuppalapati

7
Es hilft auch, die Ursache zu kennen - Dieses Verzeichnis wird erstellt, wenn Sie zum ersten Mal ein Programm ausführen, das es verwendet. Wenn der Befehl als root ausgeführt wurde, verursacht dies dieses Berechtigungsproblem. Wenn zum Beispiel das ~/.configVerzeichnis noch nicht existiert, und Sie laufen sudo htop, die Verzeichnisse ~/.configund ~/.config/htopwird von root erstellt und besessen werden. Dann kann ein regulärer gitBefehl nicht darauf zugreifen ~/.configund gibt diese Warnung aus.
Mehtunguh

1
@mehtunguh Bitte füge dies meiner Antwort hinzu! Dies sind wertvolle Informationen, um sicher zu sein.
BlackVegetable

@mehtunguh Ich habe Ihren Einblick in diese Antwort hinzugefügt. Danke nochmal.
BlackVegetable

9

Ich denke, Ihre HOMEUmweltvariable ist falsch eingestellt.

Aus dem Google-Gruppenthread ,

Die Umgebungsvariable HOME wurde so eingestellt, /rootdass sie angezeigt wurde /root/.gitconfigoder /root/.config/git/configda der nicht privilegierte Benutzer keinen Zugriff darauf hatte /root, wurde ein Fehler ausgegeben.

Die Lösung bestand also darin, die HOME-Umgebung auf das HOME-Verzeichnis des Benutzers zu setzen


2

Git versucht, die Konfiguration von root anstelle der Benutzerkonfiguration zu lesen. Bitte überprüfen Sie, ob für Ihre Umgebungsvariablen die richtige Git-Konfiguration festgelegt ist oder auf die .gitconfig-Datei in Ihrem Home-Ordner zugegriffen werden kann.


Gibt es mögliche Probleme, die dadurch verursacht werden?
Basilevs

2

Gehen Sie zum Stammverzeichnis

cd ~/

Schreiben Sie den folgenden Code:

sudo chown -R username /Users/username

Wobei Benutzername der Benutzername Ihres Systems ist.


Diese Antwort auf "Soll ich den Besitz eines .config-Ordners ändern, der sich in meinem eigenen Ausgangsverzeichnis befindet?" Ist relevant. askubuntu.com/questions/852265/…
CodingMatters

0

Ich habe das ähnliche Problem ausgeführt und konnte es auf der Serverseite beheben. git läuft dort unter uwsgi, also habe ich in uwsgi config die folgende Zeile hinzugefügt:

env = HOME=/srv/git

Dabei gehört / srv / git derselben UID, unter der uwsgi ausgeführt und erstellt wird. chmod u+rwX /srv/git Daher müssen Sie die HOME-Variable auf der Serverseite für den Prozess, der git ausführt, auf das Verzeichnis verweisen, in dem dieser Prozess über Lese- / Schreib- / Durchlaufberechtigungen verfügt.


0

Unter Windows kann es vorkommen, dass ein Prozess wie der CMD- oder SSH-Client einen Ordner geöffnet hat, den Git zu löschen versucht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.