it-swarm-es.com

¿Cuáles son los riesgos de ejecutar 'Sudo pip'?

Ocasionalmente me encuentro con comentarios o respuestas que afirman enfáticamente que ejecutar pip bajo Sudo es "incorrecto" o "malo", pero hay casos (incluyendo la forma en que tengo un conjunto de herramientas configuradas) donde hay mucho Más simple, o incluso necesario para ejecutarlo de esa manera.

¿Cuáles son los riesgos asociados con la ejecución de pip bajo Sudo?


Tenga en cuenta que esto no es la misma pregunta que esta , que, a pesar del título, no proporciona información sobre los riesgos. Esto tampoco es una pregunta sobre cómo evitar el uso de Sudo, sino específicamente sobre por qué uno querría.

83
orome

Cuando ejecuta pip con Sudo, ejecuta setup.py con Sudo. En otras palabras, ejecuta un código Python arbitrario desde Internet como raíz. Si alguien pone un proyecto malicioso en PyPI y lo instala, le da a un atacante acceso raíz a su máquina. Antes de algunas correcciones recientes a pip y PyPI, un atacante también podría ejecutar un ataque de hombre en el medio para inyectar su código cuando descargue un proyecto confiable.

89
user395760

Además de los riesgos obvios de seguridad (que creo que en realidad son bajos cuando instala el software que conoce) que se presentan en otras respuestas, hay otra razón. Python que viene con el sistema es parte de este sistema y cuando desea administrar el sistema, utiliza las herramientas designadas para el mantenimiento del sistema, como el administrador de paquetes, en caso de instalar/actualizar/desinstalar el software. Cuando comienza a modificar el software del sistema con herramientas de terceros (pip en este caso), no tiene ninguna garantía sobre el estado de su sistema. Sin embargo, otra razón es que el Sudo puede traerle problemas que usted no tendría la oportunidad de tener de otra manera. Ver, por ejemplo, Desajuste entre sys.executable y sys.version en Python

Las distros son conscientes de este problema y tratan de mitigarlo. Por ejemplo, Fedora - Haciendo seguro sudo pip y Debian - dist-packages en lugar de los paquetes de sitio .

15
Piotr Dobrogost

Usar pip de esa manera significa que usted confía en el nivel que le permite hacer cualquier cosa a su sistema. No solo pip, sino también cualquier código que descargará y ejecutará desde fuentes en las que no confíe y que pueden ser maliciosos.

Y pip no necesita todos esos privilegios, solo el acceso de escritura a archivos y directorios específicos. Si no puede usar el administrador de paquetes de su sistema y no desea utilizar el entorno virtual, puede crear un usuario específico que tenga privilegios de escritura en el directorio de instalación de python y usarlo para pip. De esa manera usted puede controlar mejor lo que puede hacer y no hacer. ¡Y puedes usar Sudo -u para eso!

7
Cilyan

Lo único "incorrecto" con Sudo es que, bueno, HACE como superusuario a la raíz del usuario, lo que significa que potencialmente puede destruir una instalación con el comando incorrecto. Como PIP es un paquete de mantenimiento para un programa en particular, usted necesitaría dicho acceso para hacer cambios ...

2
EkriirkE