偶尔我会遇到comments or responses,强调在pip
下运行sudo
是“错误”或“不好”,但有些情况(包括我有一堆工具设置)它要么更简单,要么以这种方式运行它。
在pip
下运行sudo
会带来哪些风险?
请注意,这与this one的问题不同,尽管标题不提供有关风险的信息。这也不是关于如何避免使用sudo
的问题,而是关于人们想要的具体原因。
答案 0 :(得分:89)
当您使用pip
投放sudo
时,您使用setup.py
运行sudo
。换句话说,您以root身份从Internet运行任意Python代码。如果有人在PyPI上设置恶意项目并进行安装,则会授予攻击者root权限以访问您的计算机。在最近对pip
和PyPI进行一些修复之前,攻击者还可以在中间攻击中运行一个人,以便在下载可靠项目时注入他们的代码。
答案 1 :(得分:14)
除了明显的安全风险(我认为安装你知道的软件时实际上很低)带来了其他答案还有另一个原因。系统附带的Python是该系统的一部分,当您想要管理系统时,您可以使用指定用于系统维护的工具,如安装/升级/卸载软件时的包管理器。当您开始使用第三方工具(在此实例中为pip)修改系统软件时,您无法保证系统状态。另一个原因是,sudo可以为你带来一些你没有机会的问题,或者只有很小的机会。请参阅示例Mismatch between sys.executable and sys.version in Python
发行版了解此问题并尝试缓解此问题。例如Fedora - Making sudo pip safe和Debian - dist-packages instead of site-packages。
答案 2 :(得分:7)
以这种方式使用pip意味着您将其信任到允许它为您的系统制作任何内容的级别。不仅是pip,还包括它将从您可能不信任且可能是恶意的来源下载和执行的任何代码。
pip不需要所有权限,只需要对特定文件和目录的写访问权限。如果您无法使用系统的软件包管理器并且不想采用虚拟环境方式,则可以创建一个对python安装目录具有写权限的特定用户并将其用于pip。这样你就可以更好地控制可以做什么而不做什么。你可以使用sudo -u
!
答案 3 :(得分:2)
sudo
唯一“错误”的是,它作为超级用户ala root意味着您可能会使用错误的命令破坏安装。由于PIP是特定程序的软件包维护,因此您无论如何都需要进行更改...