Время от времени я сталкиваюсь с комментариями или ответами , в которых категорически утверждается, что работать pip
под управлением sudo
«неправильно» или «плохо», но бывают случаи (в том числе то, как у меня настроена куча инструментов), когда это либо намного проще, либо даже необходимо запустить его таким образом.
Каковы риски , связанные с запуском pip
под sudo
?
Обратите внимание, что это не тот же вопрос, что и этот , который, несмотря на название, не предоставляет информации о рисках. Это также вопрос не о том, как избежать употребления sudo
, а о том, почему именно это нужно.
pip
или при любом последующем запуске того, что она установила?sudo
или нет, когда яpip
, верно? После его установки мы все в опасности, независимо от того, как он туда попал?sudo
этих проблем с разрешениями, но и путем установки пакетов в другом месте (например, в virtualenv). Это может быть даже лучше и надежнее, даже если игнорировать все проблемы безопасности.sudo
вы даете ему привилегии root; в этом вся сутьsudo
и, конечно, не конкретноpip
.Помимо очевидных рисков безопасности (которые, как мне кажется, на самом деле являются низкими, когда вы устанавливаете программное обеспечение, которое вы знаете) принесли другие ответы, есть еще одна причина. Python, который поставляется с системой, является частью этой системы, и когда вы хотите управлять системой, вы используете инструменты, предназначенные для обслуживания системы, такие как диспетчер пакетов в случае установки / обновления / удаления программного обеспечения. Когда вы начинаете изменять программное обеспечение системы с помощью сторонних инструментов (в данном случае pip), у вас нет гарантии относительно состояния вашей системы. Еще одна причина в том, что sudo может доставить вам проблемы, у которых у вас не было бы шансов или которые были бы очень малы в противном случае. См., Например, Несоответствие между sys.executable и sys.version в Python
Дистрибутивы знают об этой проблеме и пытаются ее смягчить. Например, Fedora - обеспечение безопасности sudo pip и Debian - dist-packages вместо site-packages .
источник
Использование pip таким образом означает, что вы доверяете ему уровень, на котором он позволяет делать что угодно в вашей системе. Не только pip, но и любой код, который он будет загружать и выполнять из источников, которым вы не можете доверять и которые могут быть вредоносными.
И pip не нужны все эти привилегии, только доступ на запись к определенным файлам и каталогам. Если вы не можете использовать диспетчер пакетов вашей системы и не хотите использовать виртуальную среду, вы можете создать конкретного пользователя с правами записи в каталог установки python и использовать его для pip. Таким образом вы лучше контролируете, что может делать и чего не делать pip. И вы можете использовать
sudo -u
для этого!источник
site-packages
?pip
сам, IPython, django, pygments, ...), поэтому вам также понадобится доступ к любому каталогу, в который они устанавливаются.pip
(никаких других изменений в системе, таких как новый домашний каталог и т. Д., Не требуется)? После этого, я полагаю, я просто сменил владельцаsite-packages
на этого пользователя, верно?Единственное, что "не так"
sudo
, это то, что он, ну, ДЕЙСТВУЕТ как суперпользователь ala root, что означает, что вы потенциально можете уничтожить установку неправильной командой. Поскольку PIP - это пакет обслуживания для конкретной программы, вам в любом случае понадобится такой доступ, чтобы вносить изменения ...источник