面對對惡意軟件包或安裝腳本的安全問題,我很困惑如何最好地使用pip
。我沒有太大的安全專家,所以我可能只是混淆(包涵),但似乎有4個,可能重疊,方法:什麼是最安全的方式來使用`pip`來維護Python包?
(1)使用sudo pip
一切
這就是我現在要做的事。我通常不需要virtualenvs,就像我的所有軟件包都適用於所有工具一樣方便。我也沒有安裝大量的實驗軟件包,它們幾乎與衆所周知和廣泛使用的軟件包(matplotlib
,six
等)緊密相關。
我收集這可能是一個冒險的方法,雖然因爲安裝過程有su
特權和could potentially do anything;然而,它具有保護site-packages
目錄免受後續惡作劇安裝後以非su
身份運行的任何事件(不僅僅是包)的優勢。
這種方法也不能完全避免,因爲有些包(pip
本身)需要它來引導任何Python安裝。
(2)創建pip
用戶,並給它的site-packages
這seem to have the advantage限制什麼pip
可以做的所有權:所有可以做的就是安裝到site-packages
。但是我不確定副作用,或者它甚至會起作用(例如,當pip
需要將東西放在其他位置時)。一個更現實的變體是這樣設置,當它工作時使用pip
作爲「pip-user」,當它不工作時使用su
。
(3)給自己的site-packages
我收集this is a very had idea所有權,但我不知道爲什麼相當。這意味着我運行的任何代碼都可以篡改site-packages
;但這意味着惡意安裝腳本只會損壞我自己可能會損壞自己的東西。
(4)「使用的virtualenv」
這一建議自帶了很多,但我看不出它如何幫助。這對我來說似乎沒有什麼不同,因爲它創建了我自己的site-packages
。
哪一個,如果這些方法或方法的組合中的任何一個最適合確保pip
不會導致我的系統暴露?我的關注主要集中在整個系統上,其次我的Python安裝在site-packages
(如果需要,我可以隨時重建)。
我有一個問題,那就是不知道如何衡量風險。一個示例方法似乎對我的有限理解是有意義的,它只是簡單地做(1),並且對於任何我擔心的包使用virtualenv(4)可能會損壞我的site-packages
。我安裝的任何東西仍然會損壞任何我可以訪問的東西,但這似乎是不可避免的,至少我無法訪問的東西是安全的(除了安裝過程本身)。但是我很難評估這種保護措施是否值得它創造的風險。
如果你認爲3和4是完全相同的,我建議你閱讀更多什麼是virtualenv。從doc(http://docs.python-guide.org/en/latest/dev/virtualenvs/):虛擬環境,簡而言之,它是一個Python的獨立工作副本,它允許您在沒有特定項目的情況下工作擔心影響其他項目。 –
@AndreadeMarco:是的,但是如果安裝腳本是惡意的,它會在任何地方造成破壞,贏得它?如果'site-packages'中安裝了惡意軟件,它與任何惡意軟件安裝在任何地方都沒有什麼不同 - 它會隨我一起運行,並且可以做任何我能做的事情。 – orome
關鍵的區別是,virtualenv是「一個**孤立的** python工作副本」 – yuvi