Tentando executar um programa em / root / por outro usuário adicionando-o ao caminho [duplicado]

0

Especificamente, estou usando a parte do comando conda da distribuição do Miniconda . Acontece que o instalador coloca arquivos em /root/miniconda3/ .

O problema é que /root/miniconda3/bin está no caminho, mas o comando conda só pode ser executado pelo root, não pelo outro sudoer.

Eu tentei definir direitos para 777 (eu sei que isso é ruim, pois contém compilador e outras coisas, e está sob root, mas isso é somente para o ambiente de teste).

Nota: eu possuo a raiz e o sudoer.

    
por Curcuma_ 25.02.2018 / 13:14

1 resposta

0

sudo conda não executará necessariamente /root/.bash_profile , mas sim sua conta original, a menos que a /etc/sudoers option always_set_home esteja definida.

Isso ocorre por design: ele permite que vários administradores no mesmo sistema tornem-se root e ainda mantenham suas preferências de ambiente de shell pessoal.

Além disso, como sudo sempre redefine a variável de ambiente PATH para um valor padrão padrão antes de executar o comando como o usuário de destino, sua configuração PATH como o usuário original não será preservada em sudo .

Nesse caso, você desejará que o comando sudo defina HOME=/root antes de executar o comando conda usando o shell, para que a configuração PATH em /root/.bash_profile tenha efeito e conda também encontre seus outros arquivos de configuração:

  • $HOME/.condarc file
  • $HOME/.conda/ directory
  • $HOME/.continuum/ directory

Para isso, execute sudo -H conda ou sudo -i conda em vez de apenas sudo conda .

    
por 25.02.2018 / 13:45