Nie można uzyskać dostępu do „git / atrybutów”

89

Co oznacza ostrzeżenie remote: warning: unable to access '/root/.config/git/attributes': Permission deniedi jakie konsekwencje niesie ze sobą?

$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.

Czy powinienem zgłosić firmie hostingowej potencjalny problem z infrastrukturą?

Basilevs
źródło
Czy byłeś w stanie rozwiązać ten problem?
mu 無
@mu 無 Nie, niechętnie zgłaszam błąd dotyczący hostingu, ponieważ nadal nie mam ostatecznej odpowiedzi.
Basilevs

Odpowiedzi:

188

Sam wpadłem w tę sytuację. Po sprawdzeniu, że szuka ~/.config/, zauważyłem, że właścicielem tego folderu był root. Zmieniłem to na my_user_namei zadziałało.

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

Warto również poznać przyczynę: ten katalog jest tworzony przy pierwszym uruchomieniu programu, który go używa. Jeśli polecenie zostało uruchomione jako root, spowoduje to problem z uprawnieniami.

Na przykład, jeśli ~/.configkatalog jeszcze nie istnieje, a uruchomisz sudo htop, katalogi ~/.configi ~/.config/htopzostaną utworzone i będą własnością root. Później zwykłe polecenie git nie będzie miało dostępu ~/.configi wyświetli powyższe ostrzeżenie. (Kredyt: użytkownik mehtunguh)

-ROpcja ze chownjest modyfikacja uprawnień rekursywnie. Pomoże to, jeśli masz podfoldery w ramach~/.config

Czarny Warzyw
źródło
6
to również pomogło mi podczas korzystania z wiersza poleceń linux w systemie Windows 10 - dziękuję!
lukaszkups
1
to była świetna oszczędność czasu
Prithvi Raj Vuppalapati
7
Dobrze jest również poznać przyczynę - ten katalog jest tworzony przy pierwszym uruchomieniu programu, który go używa. Jeśli polecenie zostało uruchomione jako root, spowoduje to problem z uprawnieniami. Na przykład, jeśli ~/.configkatalog jeszcze nie istnieje, a uruchomisz sudo htop, katalogi ~/.configi ~/.config/htopzostaną utworzone i będą własnością roota. Wtedy zwykłe gitpolecenie nie ma dostępu ~/.configi wyświetli to ostrzeżenie.
mehtunguh
1
@mehtunguh Proszę rozważyć dodanie tego do mojej odpowiedzi! Z pewnością są to cenne informacje.
BlackVegetable
@mehtunguh Dodałem Twój wgląd w tę odpowiedź. Jeszcze raz dziękuję.
BlackVegetable
9

Myślę, że HOMEzmienna środowiska jest nieprawidłowo ustawiona.

Z gwintem grupy pomocną ,

zmienna środowiskowa HOME została ustawiona na /roottaką, na którą wyglądała /root/.gitconfiglub /root/.config/git/configponieważ nieuprzywilejowany użytkownik nie miał do /rootniej dostępu , zgłosił błąd.

Rozwiązaniem było więc ustawienie HOME env na katalog HOME użytkownika

mu 無
źródło
2

Git próbuje odczytać konfigurację z roota zamiast konfiguracji użytkownika. Sprawdź, czy zmienne środowiskowe mają prawidłowy zestaw konfiguracji git lub czy plik .gitconfig w folderze domowym jest dostępny.

Vishal
źródło
Czy są przez to jakieś potencjalne problemy?
Basilevs
2

Przejdź do katalogu głównego

cd ~/

Napisz następujący kod:

sudo chown -R username /Users/username

Gdzie nazwa użytkownika to nazwa użytkownika twojego systemu.

Arti Prasad
źródło
Odpowiedź na pytanie „Czy powinienem zmienić własność folderu .config znajdującego się w moim własnym katalogu domowym?” Jest istotna. askubuntu.com/questions/852265/…
CodingMatters
0

Uruchomiłem podobny problem i udało mi się go naprawić po stronie serwera. git działa tam pod uwsgi więc dodałem w konfiguracji uwsgi następującą linię:

env = HOME=/srv/git

gdzie / srv / git należy do tego samego uidu, pod którym działa uwsgi i utworzony. chmod u+rwX /srv/git Więc musisz wskazać zmienną HOME po stronie serwera dla procesu, który uruchamia git, do katalogu, w którym ten proces będzie miał uprawnienia do odczytu / zapisu / przechodzenia.

phaoost
źródło
0

W przypadku systemu Windows może to być przypadek, gdy jakiś proces, taki jak klient CMD lub SSH, otworzył folder, który Git próbuje usunąć.

Oleg Neumyvakin
źródło