Was macht sudo -H?

10

Nach dem Versuch, virtualenv mit pip zu installieren

%Vor%

Ich habe eine Fehlermeldung erhalten, die verweigert wurde

%Vor%

Also habe ich Sudo benutzt, um virtualenv zu installieren

%Vor%

Aber dann tauchte eine Warnung auf:

  

Das Verzeichnis '/ Benutzer / petertao / Library / Caches / pip / http' oder dessen Eltern   Verzeichnis gehört nicht dem aktuellen Benutzer und der Cache wurde   behindert. Bitte überprüfen Sie die Berechtigungen und Besitzer dieses Verzeichnisses. Ob   Wenn Sie pip mit sudo ausführen, können Sie sudos -H-Flag verwenden.

     

Das Verzeichnis '/ Benutzer / petertao / Library / Caches / pip' oder dessen Eltern   Verzeichnis gehört nicht dem aktuellen Benutzer und Caching Wheels wurde   behindert. Überprüfen Sie die Berechtigungen und den Besitzer dieses Verzeichnisses. Ob   Wenn Sie pip mit sudo ausführen, können Sie sudos -H-Flag verwenden.

Was bewirkt sudos -H-Flag?

    
Peter Tao 26.04.2017, 00:26
quelle

1 Antwort

21

allgemein:

man sudo oder Ссылка Der genaue Text kann variieren, aber es wird ähnlich sein.

  

-H

     

Die Option -H (HOME) fordert an, dass die Sicherheitsrichtlinie die HOME-Umgebungsvariable auf das Basisverzeichnis des Zielbenutzers (standardmäßig root) gemäß der Angabe in der Kennwortdatenbank setzt. Abhängig von der Richtlinie kann dies das Standardverhalten sein.

Warum ist das überhaupt eine Option? Normalerweise ändert die Verwendung von "sudo" die Umgebungsvariable $ HOME nicht.

zum Beispiel:

%Vor%

Sie können sehen, dass ein normales sudo ändert, welcher Benutzer ich von "testuser" zu "root" bin, aber nicht, was $ HOME eingestellt ist, während ein sudo -H auch die Variable von "my" home-Verzeichnis zu root ändert Heimverzeichnis.

in Ihrem Fall:

pip warnt Sie, dass es als Benutzer root ausgeführt wurde und Dinge in $ HOME ändern wollte, die auf '/ Users / peterta' gesetzt wurde, die nicht im Besitz von root ist (höchstwahrscheinlich der Benutzer "petertao") . Die Warnung zeigt an, dass pip $ HOME verwendet, um Dateien zu chachen, aber aufgrund der Diskrepanz des Besitzes des Ordners sein eigenes Caching deaktiviert hat.

Natürlich kann während der Ausführung als root pip '/ Users / petertao / Library / Caches / pip' geändert werden, da root (fast) allmächtig ist. Dies kann später problematisch werden, da ein Programm, das ohne root ausgeführt wird, diese Dateien nicht mehr überschreiben oder ändern kann. Stattdessen verweigert pip das Schreiben in ein Verzeichnis, das einem anderen Benutzer gehört.

    
user3141593 26.04.2017, 00:37
quelle

Tags und Links