面对有关恶意软件包或安装脚本的安全问题,我对如何最好地使用pip感到困惑.我不是一个安全专家,所以我可能只是感到困惑(忍受我),但似乎有4种可能重叠的方法:

(1)使用sudo pip处理所有事情

这就是我现在做的事情.我通常不需要virtualenvs,并且喜欢让我的所有包都适用于我的所有工具.我也没有安装很多实验包,几乎坚持着名的和广泛使用的(matplotlib,六等).

我认为这可能是一种冒险的方法,因为安装过程具有su权限,而could potentially do anything;但它的优点是可以保护site-packages目录免受安装后以非su运行的任何东西(不仅仅是包)的后续恶作剧.

这种方法也无法完全避免,因为有些软件包(pip本身)需要它来引导任何Python安装.

(2)创建一个pip用户并赋予它对site-packages的所有权

这将限制pip可以做的seem to have the advantage:它可以做的就是安装到site-packages.但是我不确定副作用,或者它是否会起作用(例如,当pip需要将东西放在其他位置时).更现实的变体是以这种方式进行设置,并在它工作时使用pip作为“pip-user”,而当它不工作时使用su.

(3)给自己拥有网站包的所有权

我收集了this is a very had idea,但我不确定为什么.这意味着我运行的任何代码都可以篡改站点包;但这意味着恶意安装脚本只会损坏我可能会损坏自己的东西.

(4)“使用virtualenv”

这个建议出现了很多,但我看不出它有多大帮助.它似乎与我没有什么不同,因为它创建了我拥有的网站包.

如果这些方法中的任何一种或方法的组合最适合确保pip不会导致我的系统暴露?我关心的主要是我的系统整体,其次是我在站点包中的Python安装(如果需要,我可以随时重建).

我遇到的部分问题是,不知道如何权衡风险.一个示例方法,似乎对我有限的理解是有意义的,只是在大多数情况下做(1),并使用virtualenv(4)任何我担心可能会损坏我的网站包的包.我安装的任何东西仍然可以破坏我有权访问的任何东西,但这似乎是不可避免的,至少我无法访问的东西是安全的(除了在安装过程中本身).但我无法评估这种保护是否值得冒这个风险.