Ocasionalmente, recebo comentários ou respostas que afirmam enfaticamente que executar pip
under sudo
é "errado" ou "ruim", mas há casos (incluindo a forma como tenho um monte de ferramentas configuradas) em que é muito mais simples ou mesmo necessário execute dessa forma.
Quais são os riscos associados ao running pip
under sudo
?
Observe que esta não é a mesma pergunta que esta , que, apesar do título, não fornece informações sobre riscos. Esta também não é uma questão sobre como evitar o uso sudo
, mas sobre por que especificamente se deseja.
pip
ou para qualquer execução subsequente do que foi instalado?sudo
ou não quando eupip
, certo? Depois de instalado, todos corremos risco, não importa como ele foi parar lá.sudo
mas também esses problemas de permissão, instalando os pacotes em outro lugar (por exemplo, em um virtualenv). Fazer isso pode ser ainda melhor e mais confiável, mesmo ignorando todas as questões de segurança.sudo
você concede privilégios de root; esse é o ponto principalsudo
, e certamente não é específicopip
.Além de riscos de segurança óbvios (que eu acho que são baixos quando você instala software, você sabe) trazidos em outras respostas, há outro motivo. O Python que vem com o sistema faz parte deste sistema e quando você deseja gerenciar o sistema, você usa ferramentas designadas para manutenção do sistema como o gerenciador de pacotes no caso de instalação / atualização / desinstalação de software. Quando você começa a modificar o software do sistema com ferramentas de terceiros (pip neste caso), você não tem garantia sobre o estado do seu sistema. Outra razão é que o sudo pode trazer problemas que você não teria chance ou teria uma chance muito pequena de ter de outra forma. Veja, por exemplo, incompatibilidade entre sys.executable e sys.version em Python
As distros estão cientes desse problema e tentam mitigá-lo. Por exemplo, Fedora - Tornando sudo pip seguro e Debian - dist-packages em vez de sites-packages .
fonte
Usar o pip dessa forma significa que você confia nele até o nível que permite que ele faça qualquer coisa em seu sistema. Não apenas o pip, mas também qualquer código que ele baixe e execute de fontes que você pode não confiar e que podem ser maliciosas.
E o pip não precisa de todos esses privilégios, apenas o acesso de gravação a arquivos e diretórios específicos. Se você não pode usar o gerenciador de pacotes do seu sistema e não quer seguir o caminho do ambiente virtual, você pode criar um usuário específico que tenha privilégio de gravação no diretório de instalação do python e usá-lo para pip. Dessa forma, você controla melhor o que o pip pode fazer e não fazer. E você pode usar
sudo -u
para isso!fonte
site-packages
?pip
ele mesmo, IPython, django, pygments, ...), portanto, você também precisará acessar qualquer diretório em que eles se instalem.pip
(nenhuma outra alteração no sistema, como um novo diretório pessoal, etc. é necessária)? Depois disso, presumo que apenas alterei o proprietário desite-packages
para esse usuário, correto?A única coisa "errada"
sudo
é que ele, bem, funciona como superusuário ala root, o que significa que você pode destruir uma instalação com o comando errado. Como PIP é uma manutenção de pacote para um programa específico, você precisaria desse acesso de qualquer maneira para fazer alterações ...fonte