python security pip sudo

python - ¿Cuáles son los riesgos de ejecutar ''sudo pip''?



security (4)

Además de los obvios riesgos de seguridad (que creo que de hecho son bajos cuando instala el software que conoce) trajeron otras respuestas, hay otra razón. Python que viene con el sistema es parte de este sistema y cuando desea administrar el sistema utiliza 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), entonces no tiene ninguna garantía sobre el estado de su sistema. Otra razón más es que sudo puede traerte problemas que no tendrías la oportunidad o tienes muy pocas posibilidades de tener de otra manera. Ver, por ejemplo, desajuste entre sys.executable y sys.version en Python

Las distribuidoras conocen este problema y tratan de mitigarlo. Por ejemplo Fedora - Making sudo pip safe y Debian - dist-packages en lugar de site-packages .

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

¿Cuáles son los riesgos asociados con ejecutar pip under 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 quisiera.


Cuando ejecuta pip con sudo , ejecuta setup.py con sudo . En otras palabras, ejecuta código Python arbitrario desde Internet como raíz. Si alguien pone un proyecto malicioso en PyPI y lo instala, le da acceso de atacante a su máquina. Antes de algunas correcciones recientes para 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.


Lo único "malo" con sudo es que, bueno, funciona como Super User ala root, lo que significa que puedes destruir una instalación con el comando incorrecto. Como PIP es un paquete de mantenimiento para un programa en particular, necesitaría tal acceso de todos modos para hacer cambios ...


Usar pip de esa manera significa que confías en él al nivel que le permites hacer algo a tu sistema. No solo pip, sino también cualquier código que descargue y ejecute desde fuentes en las que no puede confiar y que puede ser malicioso.

Y pip no necesita todos esos privilegios, solo el acceso de escritura a archivos y directorios específicos. Si no puede usar el gestor 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 utilizarlo para pip. De esa forma, es mejor controlar qué puede hacer y qué no hacer. ¡Y puedes usar sudo -u para eso!