De temps en temps je tombe sur commentaires ou réponses cet état insiste sur le fait que lancer pip
sous Sudo
est "faux" ou "mauvais", mais il existe des cas avoir un tas d’outils mis en place) où il est beaucoup plus simple, voire nécessaire de le faire de cette façon.
Quels sont les risques associés à l'exécution de pip
sous Sudo
?
Notez que ce n'est pas la même question que celle-ci , qui, malgré le titre, ne fournit aucune information sur les risques. Ce n’est pas non plus une question sur la façon d’éviter d’utiliser Sudo
, mais plutôt sur la raison pour laquelle on voudrait le faire.
Lorsque vous exécutez pip
avec Sudo
, vous exécutez setup.py
avec Sudo
. En d’autres termes, vous exécutez du code arbitraire Python depuis Internet. Si quelqu'un met en place un projet malveillant sur PyPI et que vous l’installez, vous accordez à un attaquant un accès root à votre ordinateur. Quelques correctifs récents apportés à pip
et à PyPI, un attaquant pourrait aussi faire attaquer un homme au milieu d'injecter son code lorsque vous téléchargiez un projet de confiance.
Outre les risques de sécurité évidents (qui, à mon avis, sont en fait faibles lorsque vous installez un logiciel que vous connaissez), d'autres réponses apportent une autre raison. Python fourni avec le système fait partie de ce système et lorsque vous souhaitez gérer le système, vous utilisez des outils conçus pour la maintenance du système, tels que le gestionnaire de packages en cas d'installation/de mise à niveau/de désinstallation de logiciels. Lorsque vous démarrez pour modifier le logiciel du système avec des outils tiers (pip dans ce cas-ci), vous n’aurez aucune garantie quant à l’état de votre système. Une autre raison est que Sudo peut vous causer des problèmes que vous n’auriez pas eu la chance de faire ou très peu voir par exemple incompatibilité entre sys.executable et sys.version en Python
Les Distros sont conscients de ce problème et tentent de l'atténuer. Par exemple, Fedora - Rendre Sudo pip sécurisé et Debian - paquets dist au lieu de paquets site .
En utilisant pip de cette façon, vous faites confiance au niveau auquel vous lui permettez de faire n'importe quoi pour votre système. Non seulement pip, mais aussi tout code qu’il téléchargera et exécutera à partir de sources non fiables et potentiellement malveillantes.
Et pip n'a pas besoin de tous ces privilèges, seulement de l'accès en écriture à des fichiers et répertoires spécifiques. Si vous ne pouvez pas utiliser le gestionnaire de packages de votre système et ne souhaitez pas utiliser l'environnement virtuel, vous pouvez créer un utilisateur spécifique disposant des privilèges d'écriture sur le répertoire d'installation python) et l'utiliser pour le pip De cette façon, vous pourrez mieux contrôler ce que vous pouvez faire et ne pas faire. Et vous pouvez utiliser Sudo -u
pour ça!
La seule chose qui "ne va pas" avec Sudo
, c’est que c’est bien, en tant que super utilisateur ala racine, ce qui signifie que vous pouvez potentiellement détruire une installation avec la mauvaise commande. Comme PIP est un paquet de maintenance pour un programme particulier, vous auriez besoin de cet accès de toute façon pour apporter des modifications ...