Answers:
当您pip
使用时sudo
,您会setup.py
使用sudo
。换句话说,您可以从互联网上以根用户身份运行任意Python代码。如果有人在PyPI上放置了一个恶意项目,然后安装了该项目,则可以使攻击者具有对计算机的根访问权限。在对pip
PyPI和PyPI 进行一些最新修复之前,攻击者还可能在您下载值得信赖的项目时,在中间攻击中让一名男子注入他们的代码。
sudo
何时我都对pip
,这是对的吗?安装之后,无论它如何到达那里,我们都将面临风险。
sudo
通过在其他位置(例如,在virtualenv中)安装软件包,不仅可以避免这些许可问题,而且通常也非常简单。即使忽略所有安全问题,这样做甚至可能更好,更可靠。
除了明显的安全风险(我认为安装已知的软件时,风险实际上较低)之外,还有其他原因。系统随附的Python是该系统的一部分,当您要管理系统时,可以使用专为系统维护而设计的工具,例如在安装/升级/卸载软件时的软件包管理器。当您开始使用第三方工具(在本例中为pip)修改系统软件时,就无法保证系统状态。另一个原因是,sudo可能会给您带来问题,否则您将没有机会或很少会有其他问题。例如,请参阅python中sys.executable和sys.version之间的不匹配
发行版已意识到此问题,并尝试减轻它。例如,Fedora – 使sudo pip安全; Debian – dist-packages而不是site-packages。
以这种方式使用pip意味着您可以信任它到允许它对系统进行任何操作的程度。不仅是点子,而且还会从您可能不信任的来源下载并执行的任何代码,这可能是恶意的。
pip不需要所有这些特权,只需要对特定文件和目录的写权限。如果您不能使用系统的程序包管理器并且不想使用虚拟环境,则可以创建一个对python安装目录具有写权限的特定用户,并将其用于pip。这样,您可以更好地控制可以做什么和不可以做什么。您可以使用sudo -u
它!
site-packages
?授予写权限。
pip
本身,IPython中,Django的,Pygments来做,...),所以你还需要获得他们自己安装在哪个目录下。
pip
(不需要对系统进行其他更改,例如新的主目录等)?之后,我假设我只是将所有者更改site-packages
为该用户,对吗?
pip
其安装期间或之后的任何运行中适用?