Каковы риски запуска "sudo pip"?
Иногда я сталкиваюсь с комментариями или ответами, которые заявляют, что запуск pip
под sudo
является "неправильным" или "плохим", но есть случаи ( включая способ, которым у меня есть набор инструментов), где он либо намного проще, либо даже необходимо запустить его таким образом.
Каковы риски, связанные с запуском pip
под sudo
?
Обратите внимание, что это не тот вопрос, что этот, который, несмотря на заголовок, не предоставляет никакой информации о рисках. Это также не вопрос о том, как избежать использования sudo
, а конкретно о том, почему нужно хотеть.
Ответы
Ответ 1
Когда вы запустите pip
с помощью sudo
, вы запустите setup.py
с помощью sudo
. Другими словами, вы запускаете произвольный код Python из Интернета с правами root. Если кто-то запускает вредоносный проект в PyPI, и вы его устанавливаете, вы предоставляете root-хакеру доступ к вашему компьютеру. До недавних исправлений для pip
и PyPI злоумышленник также мог запустить человека в средней атаке, чтобы внедрить свой код при загрузке надежного проекта.
Ответ 2
Помимо очевидных угроз безопасности (которые, по моему мнению, на самом деле низки, когда вы устанавливаете программное обеспечение, которое вы знаете) принесли другие ответы, есть еще одна причина. Python, входящий в систему, является частью этой системы, и когда вы хотите управлять системой, вы используете инструменты, предназначенные для системного обслуживания, такие как менеджер пакетов в случае установки/обновления/удаления программного обеспечения. Когда вы начинаете изменять системное программное обеспечение с помощью сторонних инструментов (pip в этом случае), тогда у вас нет гарантии состояния вашей системы. Еще одна причина заключается в том, что sudo может принести вам проблемы, у вас не будет шанса или у вас будет очень мало шансов иметь в противном случае. См. Например Несоответствие между sys.executable и sys.version в Python
Distros знают об этой проблеме и пытаются ее смягчить. Например, Fedora - Создание безопасного sudo pip и Debian - dist-packages вместо сайтов-пакетов.
Ответ 3
Использование pip таким образом означает, что вы доверяете ему до уровня, позволяющего ему что-либо сделать в вашей системе. Не только пип, но и любой код, который он будет загружать и выполнять из источников, которым вы не доверяете, и которые могут быть вредоносными.
И пипсу не нужны все эти привилегии, только доступ на запись к определенным файлам и каталогам. Если вы не можете использовать диспетчер системных пакетов и не хотите идти виртуальной средой, вы можете создать конкретного пользователя, который имеет права на запись в каталог установки python и использовать его для pip. Таким образом, вы лучше контролируете то, что может делать, и не делать. И вы можете использовать sudo -u
для этого!
Ответ 4
Единственное, что "неправильно" с sudo
заключается в том, что он, ну, как суперпользователь, так что вы можете потенциально уничтожить установку с помощью неправильной команды. Поскольку PIP - это обслуживание пакета для конкретной программы, вам нужен такой доступ, чтобы внести изменения...