2014-01-10 7 views
56

Иногда я сталкиваюсь с comments or responses, что утверждают, что работа pip под номером sudo является «неправильной» или «плохой», но есть случаи (в том числе, как у меня есть набор инструментов), где она либо намного проще, либо даже необходимо запустить его таким образом.Каковы риски запуска «sudo pip»?

Каковы риски, связанные с запуском pip под № sudo?


Обратите внимание, что это в не тот же вопрос, как this one, который, несмотря на название, не дает никакой информации о рисках. Это также не вопрос о том, как избежать использования sudo, но о том, почему именно этого хотелось бы.

ответ

62

При запуске pip с sudo, вы запускаете setup.py с sudo. Другими словами, вы запускаете произвольный код Python из Интернета с правами root. Если кто-то запускает вредоносный проект в PyPI, и вы его устанавливаете, вы предоставляете root-хакеру доступ к вашему компьютеру. До некоторых последних исправлений до pip и PyPI злоумышленник также мог запустить человека в средней атаке, чтобы ввести свой код при загрузке надежного проекта.

+1

Имеется ли угроза только во время 'pip' или для любого последующего запуска того, что она установила? – orome

+0

@raxacoricofallapatorius Установленный код будет иметь только привилегии root при запуске от имени root, а не всегда. Но это все еще код из Интернета, если он злонамерен, он может также делать злые вещи во время выполнения. – delnan

+2

Но это будет так, если я 'sudo' или нет, когда я' pip', правильно? Как только он будет установлен, мы все рискуем, как бы там ни было? – orome

2

Единственное, что «неправильно» с sudo заключается в том, что он, ну, как суперпользователь, так что вы можете потенциально уничтожить установку с помощью неправильной команды. Как PIP является обслуживание пакета для конкретной программы вам потребуется такой доступ, так или иначе, чтобы сделать изменения ...

6

Использование этого способа означает, что вы доверяете ему до уровня, позволяющего ему что-либо делать в вашей системе. Не только пип, но и любой код, который он будет загружать и выполнять из источников, которым вы не доверяете, и которые могут быть вредоносными.

И пипсу не нужны все эти привилегии, только доступ на запись к определенным файлам и каталогам. Если вы не можете использовать диспетчер пакетов вашей системы и не хотите идти виртуальной средой, вы можете создать конкретного пользователя, который имеет права на запись в каталог установки python и использовать его для pip. Таким образом, вы лучше контролируете то, что может делать, и не делать. И вы можете использовать для этого sudo -u!

+0

Итак, все, что мне нужно сделать, это, например, позволить себе писать разрешения на 'site-packages'? – orome

+1

@raxacoricofallapatorius не просто там, так как некоторые пакеты также устанавливают вспомогательные скрипты (например, 'pip', IPython, django, pygments, ...), поэтому вам также потребуется доступ к тому месту, в котором они устанавливаются. – MattDMo

+0

Да и нет , Я не эксперт по безопасности, но я думаю, что лучше, если пользователь, выполняющий сценарии, не имеет права на запись. Поэтому я предлагаю скорее отдельного пользователя. – Cilyan

11

Помимо очевидных угроз безопасности (которые, по моему мнению, на самом деле низки при установке программного обеспечения, которые вы знаете), вносятся другие ответы, есть еще одна причина. Python, входящий в систему, является частью этой системы, и когда вы хотите управлять системой, вы используете инструменты, предназначенные для системного обслуживания, такие как менеджер пакетов в случае установки/обновления/удаления программного обеспечения. Когда вы начинаете модифицировать программное обеспечение системы с помощью сторонних инструментов (пип в этом случае), то у вас нет гарантии состояния вашей системы. Еще одна причина заключается в том, что sudo может принести вам проблемы, у вас не будет шанса или у вас будет очень мало шансов иметь в противном случае. См. Например, Mismatch between sys.executable and sys.version in Python

Distros знают об этой проблеме и пытаются ее смягчить. Например, Fedora - Making sudo pip safe и Debian - dist-packages instead of site-packages.

Смежные вопросы