Quels sont les risques associés à l'exécution de 'sudo pip"?
Il m'arrive de courir dans des commentaires ou des réponses cet état avec insistance que l'exécution de pip
sous sudo
est "mauvais" ou "mauvais", mais il y a des cas (y compris la façon dont j'ai un tas d'outils mis en place) où il est beaucoup plus simple, ou même nécessaire, pour exécuter cette façon.
Quels sont les risques associés à l'exécution de pip
sous sudo
?
Noter que ce n'est pas la même question que cette une, qui, en dépit de son titre, ne donne aucune information sur les risques. Ce n'est pas également une question sur la façon d'éviter d'utiliser sudo
, mais précisément pourquoi vouloir.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous exécutez
pip
avecsudo
, vous exécutezsetup.py
avecsudo
. En d'autres termes, vous exécuter arbitrairement du code Python à partir de l'Internet en tant que root. Si quelqu'un met un malveillant projet sur PyPI et vous l'installez, vous donner un attaquant d'accès à la racine de votre machine. Avant pour certains correctifs récents depip
et PyPI, un attaquant pourrait également lancer un homme dans le milieu attaque à injecter du code lorsque vous téléchargez un projet digne de confiance.pip
ou de les exécuter de quoi il installé?sudo
ou pas quand jepip
, droit? Une fois qu'il est installé, nous sommes tous à risque, peu importe comment il en est arrivé là?pip
a besoin d'eux, et puis en exécutantpip
que moi?sudo
, mais aussi à des problèmes d'autorisation par l'installation de ces paquets ailleurs (par exemple dans un virtualenv). Cela peut même être meilleures et plus fiables, même en ignorant toutes les préoccupations en matière de sécurité.site-packages
et d'autres répertoires utilisés parpip
installe en être autrement que de mettre les choses dans un nouveau dossier avec ces autorisations? Il semble que, aussi sûr que je peux m'attendre à obtenir, n'est-ce pas.sudo pip
ne vous donne pas des autorisations d'écriture dans des répertoires spécifiques comme site-packages seulement, mais à tous les répertoires dans le système.site-packages
est de l'option recommandée? D'ailleurs je vois qu'une soluiton à installer sous un autre utilisateur. Est-il un recommandé meilleure façon d'exécuter pip sans l'aide desudo
? Qui serait le plus pythonic.site-packages
répertoire qui appartient à un utilisateur ordinaire.sudo
vous donner les privilèges de root; c'est le point de l'ensemble desudo
, et certainement pas spécifique àpip
.En plus évidente des risques de sécurité (qui je pense sont en fait des faibles lorsque vous installez un logiciel qui vous savez) a introduit, dans d'autres réponses, il y a une autre raison. Python qui vient avec le système fait partie de ce système et lorsque vous souhaitez gérer le système que vous utilisez les outils désignés pour la maintenance du système comme le gestionnaire de paquets dans le cas d'installation/mise à niveau/désinstallation de logiciels. Lorsque vous commencez à modifier le système, du logiciel avec des outils tiers (pip dans ce cas), alors vous n'avez aucune garantie sur l'état de votre système. Pourtant, une autre raison est que sudo peut vous apporter des problèmes que vous n'auriez pas une chance ou ont une très faible chance d'avoir autrement. Voir, par exemple, La discordance entre le sys.exécutable et sys.la version en Python
Distributions sont conscients de ce problème et d'essayer de l'atténuer. Par exemple Fedora – Faire sudo pip sûr et Debian – dist-packages au lieu de site-packages.
Utilisation de pip qui permet de vous faire confiance pour les niveau vous permettre de faire quoi que ce soit à votre système. Non seulement pip, mais aussi tout le code qu'il va le télécharger et l'exécuter à partir de sources que vous ne pouvez pas confiance et qui peuvent être malveillants.
Et pip n'a pas besoin de tous ces privilèges, seul l'accès en écriture à certains fichiers et répertoires. Si vous ne pouvez pas utiliser votre gestionnaire de package du système et ne veulent pas aller de l'environnement virtuel, vous pouvez créer un utilisateur qui a le droit d'écriture pour le répertoire d'installation de python et de l'utiliser pour le pep. De cette façon, vous permettent de mieux contrôler ce qui peut pip faire et ne pas faire. Et vous pouvez utiliser
sudo -u
pour que!site-packages
?pip
lui-même, IPython, django, pygments, ...) de sorte que vous aurez besoin d'un accès quel que soit le répertoire dans lequel ils s'installent dans.pip
(pas d'autres changements dans le système, comme un nouveau répertoire d'accueil, etc. besoin)? Après que je suppose que je viens de changer le propriétaire desite-packages
à l'utilisateur, correct?groupadd python; useradd -M pipuser -g python -d /tmp; passwd -l pipuser
puischgrp -R python site-packages; chmod -R g+w site-packages
et enfinsudo --user pipuser pip install ...
. Je ne sais pas à propos de Mac.La seule chose de "mal" avec
sudo
est que, eh bien, est en tant que Super-Utilisateur ala racine qui signifie que vous pouvez potentiellement détruire une installation avec la commande incorrect. Que le PIP est un package de maintenance pour un programme particulier, vous auriez besoin d'un tel accès, de toute façon, de faire des changements...