运行“ sudo pip”有什么风险?


94

有时,我会遇到一些评论或回应,它们强调说pipsudo“错误”或“不良”情况下运行,但在某些情况下(包括我设置了一堆工具的方式),情况可能要简单得多,甚至有必要这样运行。

什么是与运行相关的风险pipsudo


请注意,这个问题与这个问题不同,尽管有标题,但没有提供有关风险的信息。这也不是关于如何避免使用的问题sudo,而是关于为什么要使用的问题。

Answers:


103

当您pip使用时sudo,您会setup.py使用sudo。换句话说,您可以从互联网上以根用户身份运行任意Python代码。如果有人在PyPI上放置了一个恶意项目,然后安装了该项目,则可以使攻击者具有对计算机的根访问权限。在对pipPyPI和PyPI 进行一些最新修复之前,攻击者还可能在您下载值得信赖的项目时,在中间攻击中让一名男子注入他们的代码。


2
该威胁是否仅在pip其安装期间或之后的任何运行中适用?
orome 2014年

2
但是不管我sudo何时我都对pip,这是对的吗?安装之后,无论它如何到达那里,我们都将面临风险。
orome 2014年

2
@raxacoricofallapatorius这是我不愿意回答的问题,不是因为我没有任何想法(我有预感,可以给出原因),而是因为很难预测像这样的细微变化如何影响总体安全。此外,sudo通过在其他位置(例如,在virtualenv中)安装软件包,不仅可以避免这些许可问题,而且通常也非常简单。即使忽略所有安全问题,这样做甚至可能更好,更可靠。

2
@raxacoricofallapatorius根据确切的写入权限和目录布局,我担心更复杂的恶意软件会覆盖其他更受信任的代码,例如系统实用程序通常以root身份运行的代码。

2
这个答案很奇怪。当然,当您与某人一起运行某些东西时,sudo请赋予它root权限;那是重点sudo,当然也不是特定于pip

19

除了明显的安全风险(我认为安装已知的软件时,风险实际上较低)之外,还有其他原因。系统随附的Python是该系统的一部分,当您要管理系统时,可以使用专为系统维护而设计的工具,例如在安装/升级/卸载软件时的软件包管理器。当您开始使用第三方工具(在本例中为pip)修改系统软件时,就无法保证系统状态。另一个原因是,sudo可能会给您带来问题,否则您将没有机会或很少会有其他问题。例如,请参阅python中sys.executable和sys.version之间的不匹配

发行版已意识到此问题,并尝试减轻它。例如,Fedora – 使sudo pip安全; Debian – dist-packages而不是site-packages


6

以这种方式使用pip意味着您可以信任它到允许它对系统进行任何操作的程度。不仅是点子,而且还会从您可能不信任的来源下载并执行的任何代码,这可能是恶意的。

pip不需要所有这些特权,只需要对特定文件和目录的写权限。如果您不能使用系统的程序包管理器并且不想使用虚拟环境,则可以创建一个对python安装目录具有写权限的特定用户,并将其用于pip。这样,您可以更好地控制可以做什么和不可以做什么。您可以使用sudo -u它!


因此,我所需要做的就是,例如,允许自己向site-packages?授予写权限。
orome 2014年

1
@raxacoricofallapatorius不只是在那里,一些包也安装辅助脚本(如pip本身,IPython中,Django的,Pygments来做,...),所以你还需要获得他们自己安装在哪个目录下。
MattDMo

是的,没有。我不是安全专家,但是我认为如果运行脚本的用户没有写许可权会更好。因此,我建议使用一个单独的用户。
Cilyan 2014年

@MattDMo:是的,这很有道理;但是这些情况很容易发现,因为如果没有适当的权限,事情就会失败。如果完成了,那不是最安全的方法,那么整个系统可能发生的最坏情况就是无论如何运行都会发生什么,对吗?唯一的区别是,我可能会像我一样毁掉我的Python安装(而不是必须先做su),对吗?
orome 2014年

我该如何创建这样一个用户,仅出于使用目的pip(不需要对系统进行其他更改,例如新的主目录等)?之后,我假设我只是将所有者更改site-packages为该用户,对吗?
orome 2014年

1

唯一“错误”的地方sudo是,它确实是以超级用户ala根身份运行的,这意味着您可能使用错误的命令破坏安装。由于PIP是特定程序的软件包维护,因此无论如何都需要这种访问权限才能进行更改...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.