nie można uzyskać dostępu do „/root/.config/git/attributes”: Uprawnienie> odmowa ”

10

Na naszym serwerze Ubuntu jesteśmy w stanie sklonować jako użytkownik Nginx w /usr/share/nginx/wwwtym, że www-data:www-data własności otrzymuje ostrzeżenie jako

”Ostrzeżenie: nie można uzyskać dostępu do„ /root/.config/git/attributes ”: Odmowa dostępu”

Wykonujemy polecenie jako sudo -u www-data git clone <repo>.

Z sudo otrzymujemy to ostrzeżenie, w przeciwnym razie działa dobrze.

Jesteśmy w stanie sklonować jako użytkownik root i nie ma problemu.

.gitconfig znajduje się tylko w katalogu głównym i zapoznaj się z zawartością:

root@geo:~# cat /root/.gitconfig
[user]
        name = pc_user
        email = [email protected]
root@geo:~#

Czy ktoś może nam w tym pomóc.

Próbowaliśmy różnych opcji, takich jak ręcznie tworzone /root/.config/bezpośrednio i zmieniane uprawnienia itp., Ale nic nie działa. Czy ktoś może mi w tym pomóc.

Zobacz także:

root@geo:/setup/test# ll /setup/
total 16
drwxr-xr-x  4 www-data www-data 4096 Oct  9 00:14 ./
drwxr-xr-x 24 root     root     4096 Oct  9 00:14 ../
drwxr-xr-x  3 www-data www-data 4096 Oct  9 00:14 test/

root@geo:/setup/test# sudo -u www-data git clone -v git@....../test.git
Cloning into 'test'...
remote: Counting objects: 8323, done.
remote: Compressing objects: 100% (6459/6459), done.
remote: Total 8323 (delta 1543), reused 8241 (delta 1500)
Receiving objects: 100% (8323/8323), 39.85 MiB | 19.52 MiB/s, done.
Resolving deltas: 100% (1543/1543), done.
Checking connectivity... done.
warning: unable to access '/root/.config/git/attributes': Permission denied

Wygląda więc na problem z konfiguracją git. Czy ktoś może nas poprowadzić.


Korzystam z tej konfiguracji na Ubuntu 14.04. Gdy wykonam tę samą konfigurację w innym Ubuntu 12.04, wszystko działa idealnie.

Zrobiłem to również:

Utworzono geopc użytkownika i dodano go do listy sudoers, a kiedy zalogowaliśmy się jako użytkownik geopc i wykonamy to polecenie, sudo -u www-data git clone -v git@....../test.git działa idealnie.

Problem polega na tym, że zalogowaliśmy się bezpośrednio jako użytkownik root w Ubuntu 14.04 i dokonaliśmy klonowania w momencie pojawienia się sudo -u www-data git clonetego ostrzeżenia. Ale nie ma go w Ubuntu 12.04.

Używamy gita w wersji 1.9.1 na Ubuntu 14.04, zaktualizowaliśmy również git do wersji 2.1.1, ale tak samo.

Geo
źródło
1
Dość typowe jest to, że uprawnienia systemu plików blokują dostęp do plików wszystkim innym użytkownikom, w tym www /root. Jeśli nie uprawnienia systemu plików, to z pewnością rzeczy takie jak AppArmor lub SELinux powinny blokować dostęp serwera WWW do katalogu / root.
HBruijn
Wygląda na to, że nie. Zmieniłem pytanie, proszę sprawdzić.
Geo
Korzystam z tej odpowiedzi i ta odpowiedź działa dla mnie. Spróbuj sam
Toir427,

Odpowiedzi:

10

@mu ma rację. Jest to problem polegający na tym, że zmienna środowiskowa HOME użytkownika rootjest przekazywana do skryptu zamiast www-datazmiennej środowiskowej HOME użytkownika .

Musisz tylko dodać przełącznik -H do polecenia sudo, więc jest to dość łatwe:

sudo -u www-data -H git clone -v git@....../test.git
quentinadam
źródło
1

Myślę, że HOMEzmienna jest niepoprawnie skonfigurowana.

Z grupy nici google ,

zmienna środowiskowa HOME została ustawiona na /roottak, aby sprawdzał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 env HOME na katalog HOME użytkownika

mu 無
źródło
dla mnie zaczynało się: HOME = / home / git git daemon ...
rofrol
-1

Musisz tylko zrestartować instancję skrytki, używając użytkownika innego niż root. Zazwyczaj użytkownik byłby taki sam, jak użytkownik użyty podczas instalacji.

np. atlstash

W ten sposób ustawisz zmienną HOME jako / home / atlstash i rozwiążesz problem

AB
źródło