Co robi sudo-H?

Po próbie zainstalowania virtualenv z pip

$ pip install virtualenv

Dostałem błąd odmowy pozwolenia

IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py'

Więc użyłem sudo do zainstalowania virtualenv

$ sudo pip install virtualenv

Ale wtedy pojawiło się Ostrzeżenie:

Katalog '/ Users / petertao/Library/Caches/pip / http' lub jego rodzic katalog nie jest własnością bieżącego użytkownika, a pamięć podręczna została niepełnosprawni. Sprawdź uprawnienia i właściciela tego katalogu. Jeśli wykonując pip z sudo, możesz chcieć użyć flagi-H sudo.

Katalog '/ Users / petertao/Library/Caches / pip' lub jego rodzic katalog nie jest własnością bieżącego użytkownika i koła buforujące zostały niepełnosprawni. sprawdź uprawnienia i właściciela tego katalogu. Jeśli wykonując pip z sudo, możesz chcieć użyć flagi-H sudo.

Co robi flaga sudo-H?

Author: Peter Tao, 2017-04-26

1 answers

Ogólnie

man sudo (dokładny tekst może się różnić, ale będzie podobny):

-H

Opcja-H (HOME) wymaga, aby polityka bezpieczeństwa ustawiła zmienną środowiskową HOME do katalogu domowego użytkownika docelowego (domyślnie root), jak określono w bazie haseł. W zależności od zasad może to być zachowanie domyślne.

Więc dlaczego jest to w ogóle opcja? normalnie użycie "sudo" nie zmienia środowiska $HOME zmienna.

Na przykład:

 echo $HOME $USER
/home/testuser testuser

 sudo bash -c 'echo $HOME $USER'
/home/testuser root

 sudo -H bash -c 'echo $HOME $USER'
/home/root root

Widać, że zwykłe sudo zmienia użytkownika, którym jestem z "testuser" na "root" , ale nie to, na co ustawia się $HOME, podczas gdy sudo-H zmienia również zmienną z" my " katalogu domowego na katalog domowy roota.

W Twoim przypadku

Pip ostrzega cię, że został wykonany jako root użytkownika i chciał zmodyfikować rzeczy w $HOME, który został ustawiony na '/ Users / petertao', który nie jest własnością roota (najprawdopodobniej użytkownika "petertao"). na ostrzeżenie wskazuje, że pip używa $HOME do buforowania plików, ale wyłączył własne buforowanie z powodu rozbieżności w własności folderów.

Oczywiście podczas wykonywania jako root pip może modyfikować '/ Users / petertao/Library/Caches / pip', ponieważ root jest (prawie) Wszechmogący. Może to stać się kłopotliwe później, ponieważ program działający bez roota nie może już nadpisywać lub modyfikować tych plików. Zamiast tego pip odmawia zapisu do katalogu należącego do innego użytkownika.

 37
Author: user3141593,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-02 14:03:17