De vez en cuando me encuentro con comentarios o respuestas que afirman enfáticamente que correr por pip
debajo sudo
es "incorrecto" o "malo", pero hay casos (incluida la forma en que tengo un montón de herramientas configuradas) en los que es mucho más simple o incluso necesario ejecutarlo de esa manera.
¿Cuáles son los riesgos asociados con correr por pip
debajo sudo
?
Tenga en cuenta que esta no es la misma pregunta que esta , que, a pesar del título, no proporciona información sobre riesgos. Esto tampoco es una pregunta sobre cómo evitar el uso sudo
, sino específicamente por qué uno querría hacerlo.
pip
o para cualquier ejecución posterior de lo que instaló?sudo
o no cuando yopip
, ¿verdad? Una vez que está instalado, todos corremos riesgo, sin importar cómo llegó allí.sudo
estos problemas de permisos instalando los paquetes en otro lugar (por ejemplo, en un virtualenv). Hacerlo puede incluso ser mejor y más confiable incluso si se ignoran todas las preocupaciones de seguridad.sudo
le otorga privilegios de root; ese es el objetivo desudo
, y ciertamente no es específico depip
.Además de los riesgos de seguridad obvios (que creo que de hecho son bajos cuando instalas un software que conoces) traído 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 software. Cuando comienza a modificar el software del sistema con herramientas de terceros (pip en este caso), no tiene garantía sobre el estado de su sistema. Otra razón más es que sudo puede traerle problemas que de otra manera no tendría o no tendría. Consulte, por ejemplo, Discrepancia entre sys.executable y sys.version en Python
Las distribuciones son conscientes de este problema e intentan mitigarlo. Por ejemplo, Fedora - Haciendo que sudo pip sea seguro y Debian - dist-packages en lugar de site-packages .
fuente
Usar pip de esa manera significa que confía en él hasta el nivel que le permite hacer algo en su sistema. No solo pip, sino también cualquier código que descargue y ejecute de fuentes en las que no confíe y que pueda 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 administrador de paquetes de su sistema y no desea seguir el camino del 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, controlas mejor lo que pip puede hacer y lo que no. ¡Y puedes usarlo
sudo -u
para eso!fuente
site-packages
?pip
mismo, IPython, django, pygments, ...) por lo que también necesitará acceso a cualquier directorio en el que se instalen.pip
(no se necesitan otros cambios en el sistema, como un nuevo directorio de inicio, etc.)? Después de eso, supongo que solo cambio el propietario desite-packages
ese usuario, ¿correcto?Lo único "malo"
sudo
es que, bueno, SÍ como superusuario como root, 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, necesitaría dicho acceso de todos modos para realizar cambios ...fuente