Czasami napotykam komentarze lub odpowiedzi, które wyraźnie stwierdzają, że bieganie pip
pod sudo
jest „niewłaściwe” lub „złe”, ale są przypadki (w tym sposób, w jaki skonfigurowałem zestaw narzędzi), w których jest to znacznie prostsze lub nawet konieczne uruchom to w ten sposób.
Jakie są zagrożenia związane z bieganiem pip
pod sudo
?
Zwróć uwagę, że to nie to samo pytanie, co to , które pomimo tytułu nie zawiera żadnych informacji o ryzyku. Nie jest to również kwestia tego, jak unikać używania sudo
, ale konkretnie, dlaczego ktoś miałby chcieć.
pip
lub podczas każdego kolejnego uruchomienia tego, co zostało zainstalowane?sudo
czy nie, kiedy japip
, prawda? Po zainstalowaniu wszyscy jesteśmy zagrożeni, bez względu na to, jak to się stało?sudo
ale także tych problemów z uprawnieniami, instalując pakiety w innym miejscu (np. W virtualenv). Może to być nawet lepsze i bardziej niezawodne, nawet jeśli zignorujesz wszystkie obawy dotyczące bezpieczeństwa.sudo
, dajesz temu uprawnienia roota; o to właśnie chodzisudo
, a już na pewno nie tylko o topip
.Oprócz oczywistych zagrożeń bezpieczeństwa (które, jak sądzę, są w rzeczywistości niskie, gdy instalujesz oprogramowanie, które znasz), przyniosły inne odpowiedzi, jest jeszcze jeden powód. Python dostarczany z systemem jest częścią tego systemu i kiedy chcesz zarządzać systemem, używasz narzędzi przeznaczonych do konserwacji systemu, takich jak menedżer pakietów w przypadku instalacji / aktualizacji / deinstalacji oprogramowania. Kiedy zaczynasz modyfikować oprogramowanie systemu za pomocą narzędzi stron trzecich (w tym przypadku pip), nie masz żadnej gwarancji co do stanu systemu. Kolejnym powodem jest to, że sudo może przynieść ci problemy, których nie miałbyś szansy lub masz bardzo małą szansę na inne. Zobacz na przykład niezgodność między sys.executable i sys.version w Pythonie
Dystrybutorzy są świadomi tego problemu i starają się go złagodzić. Na przykład Fedora - zabezpieczanie sudo pip i Debian - pakiety dist zamiast pakietów witryn .
źródło
Używanie pip w ten sposób oznacza, że ufasz mu do tego stopnia, że pozwalasz mu na wprowadzenie czegokolwiek do twojego systemu. Nie tylko pip, ale także każdy kod, który pobierze i uruchomi ze źródeł, którym możesz nie ufać i który może być złośliwy.
A pip nie potrzebuje tych wszystkich uprawnień, tylko prawa do zapisu w określonych plikach i katalogach. Jeśli nie możesz użyć menedżera pakietów systemu i nie chcesz korzystać z wirtualnego środowiska, możesz utworzyć określonego użytkownika, który ma uprawnienia do zapisu w katalogu instalacyjnym języka Python i użyć go dla pip. W ten sposób lepiej kontrolujesz, co pip może robić, a czego nie. I możesz tego użyć
sudo -u
!źródło
site-packages
?pip
sama, ipython, Django, pygments, ...), więc musisz również dostęp do katalogu w zależności od tego, że instalują się w.pip
(żadne inne zmiany w systemie, jak nowy katalog domowy itp. Nie są potrzebne)? Potem zakładam, że po prostu zmieniam właścicielasite-packages
na tego użytkownika, prawda?Jedyną „złą” rzeczą
sudo
jest to, że to, cóż, DZIAŁA jako superużytkownik ala root, co oznacza, że możesz potencjalnie zniszczyć instalację za pomocą złego polecenia. Ponieważ PIP to usługa zarządzania pakietami dla określonego programu, i tak potrzebujesz takiego dostępu, aby wprowadzić zmiany ...źródło