Co oznacza ostrzeżenie remote: warning: unable to access '/root/.config/git/attributes': Permission denied
i 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ą?
Odpowiedzi:
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 namy_user_name
i zadziałało.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
~/.config
katalog jeszcze nie istnieje, a uruchomiszsudo htop
, katalogi~/.config
i~/.config/htop
zostaną utworzone i będą własnościąroot
. Później zwykłe polecenie git nie będzie miało dostępu~/.config
i wyświetli powyższe ostrzeżenie. (Kredyt: użytkownik mehtunguh)-R
Opcja zechown
jest modyfikacja uprawnień rekursywnie. Pomoże to, jeśli masz podfoldery w ramach~/.config
źródło
~/.config
katalog jeszcze nie istnieje, a uruchomiszsudo htop
, katalogi~/.config
i~/.config/htop
zostaną utworzone i będą własnością roota. Wtedy zwykłegit
polecenie nie ma dostępu~/.config
i wyświetli to ostrzeżenie.Myślę, że
HOME
zmienna środowiska jest nieprawidłowo ustawiona.Z gwintem grupy pomocną ,
źródło
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.
źródło
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.
źródło
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ę:
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.źródło
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ąć.
źródło