运行'sudo pip'有什么风险?

oro*_*ome 89 python security sudo pip

偶尔我碰上评论或回应表示国家重点跑跑pipsudo是"错误"或"坏",但也有例(其中我有一堆的设置工具的方式),其中它要么是简单得多,或者甚至是必要的以这种方式运行.

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


请注意,这与问题的问题不同,尽管标题不提供有关风险的信息.这也不是关于如何避免使用的问题sudo,而是关于人们想要的具体原因.

小智 97

当您运行pip使用sudo,运行setup.py使用sudo.换句话说,您以root身份从Internet运行任意Python代码.如果有人在PyPI上设置恶意项目并进行安装,则会授予攻击者root权限.在最近对pipPyPI 进行了一些修复之前,攻击者还可以在中间攻击中运行一个人,以便在下载可信项目时注入他们的代码.

  • 威胁是仅在`pip`期间还是在其安装的任何后续运行中应用? (2认同)
  • 但是当我"点"时,无论我是否"sudo"都是如此,对吧?一旦安装完毕,无论它如何到达,我们都处于危险之中? (2认同)
  • @raxacoricofallapatorius这是进入领域我不舒服回答,不是因为我没有任何想法(我有预感并可以给出理由)但是因为很难预测这些看起来很小的变化如何影响整体安全.此外,通常通过在其他地方安装软件包(例如在virtualenv中)避免"sudo"以及这些许可问题非常简单.即使忽略所有安全问题,这样做甚至可能更好,更可靠. (2认同)
  • @raxacoricofallapatorius根据确切的写入权限和目录布局,我担心更复杂的恶意软件会覆盖其他更受信任的代码,例如系统实用程序使用的代码通常以root身份运行. (2认同)
  • 这个答案很奇怪。当然,当您使用`sudo`运行某些东西时,您会赋予它root特权;这就是sudo的重点,当然不是特定于pip。 (2认同)

Pio*_*ost 18

除了明显的安全风险(我认为安装你知道的软件时实际上很低)带来了其他答案还有另一个原因.系统附带的Python是该系统的一部分,当您想要管理系统时,您可以使用指定用于系统维护的工具,如安装/升级/卸载软件时的包管理器.当您开始使用第三方工具(在此实例中为pip)修改系统软件时,您无法保证系统状态.另一个原因是,sudo可以为你带来一些你没有机会的问题,或者只有很小的机会.例如,参见Python中sys.executable和sys.version之间的不匹配

发行版意识到这个问题,并尝试缓解它.例如Fedora - 使sudo pip安全和Debian - dist-packages而不是site-packages.


Cil*_*yan 6

以这种方式使用pip意味着您将其信任到允许它为您的系统制作任何内容的级别.不仅是pip,还有它将从您可能不信任且可能是恶意的来源下载和执行的任何代码.

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