É seguro adicionar. para o meu caminho? Por quê?

45

Eu vi pessoas mencionarem em outro responde que é uma má idéia incluir o diretório de trabalho atual (' . ') na sua variável de ambiente $PATH , mas não conseguiu encontrar uma pergunta especificamente abordando a questão.

Então, por que não devo adicionar . ao meu caminho? E se, apesar de todos os avisos, eu fizer isso de qualquer maneira, o que eu tenho que tomar cuidado? É mais seguro adicioná-lo ao final do que ao início?

    
por Jander 22.02.2013 / 05:58

3 respostas

36

Se você é o único usuário na máquina, tudo bem, contanto que você saiba o que está fazendo. A preocupação geral é que, tendo seu diretório atual em PATH , você não pode ver comandos como uma lista constante. Se você precisa rodar o script / programa a partir do seu diretório atual, você sempre pode executá-lo explicitamente colocando o ./ em seu nome (você está dizendo o sistema "Eu quero rodar este arquivo do meu diretório atual").

Digamos que agora você tem todos esses pequenos scripts em todo o seu sistema de arquivos; Um dia você vai correr o errado, com certeza. Portanto, ter seu PATH como uma lista predefinida de caminhos estáticos é tudo sobre ordem e salvar-se de um possível problema.

No entanto, se você for adicionar . ao seu PATH , sugiro que você o acrescente ao final da lista ( export PATH=$PATH:. ). Pelo menos você não irá sobrescrever binários de todo o sistema desta maneira.

Se você for uma raiz no sistema e tiver o sistema exposto a contas de outros usuários, ter . em PATH é um grande risco à segurança: você pode cd no diretório de alguns usuários e não intencionalmente execute o script mal-intencionado apenas porque você digitou errado uma coisa ou o script tem o mesmo nome que um binário de todo o sistema.

    
por 22.02.2013 / 07:29
35

O risco é que alguém coloque um executável malicioso no diretório que é o seu atual.

O pior caso acontece quando:

  • você está logado como root, pois o comando malicioso tem poder de dano ilimitado
  • . está no início do seu PATH, pois os comandos padrão podem ser substituídos sem que você perceba (normalmente um ls que pode se esconder da lista).

O risco é muito menor se você estiver logado como um usuário comum e tiver o . no final do seu PATH, mas ele ainda existe:

  • alguém pode descobrir que você digita incorretamente um comando e instala um correspondente
  • alguém pode instalar um comando falso com o nome de um que não esteja instalado.

Observe que, em qualquer caso, o risco ainda existe, mesmo se você for o único usuário da máquina. O software mal-intencionado seria instalado se, por exemplo, você extraísse um arquivo baixado de um site comprometido.

    
por 22.02.2013 / 07:18
2

Mesmo que você tenha sempre muito cuidado com o que digita, colocar . no seu PATH , mesmo no final, ainda é inseguro porque alguns programas alteram o diretório atual para /tmp (que é gravável pelo mundo) e também pode tentar executar utilitários que na verdade não estão instalados, com o padrão em /tmp . Se isso ocorrer, este é um vetor de ataque.

Note também que não há muito inconveniente em evitar . em PATH , porque ./ é fácil de digitar (em particular em teclados como QWERTY, onde esses caracteres estão em chaves consecutivas e não precisam de Shift ) e usando ./ também ajudará na conclusão, potencialmente salvando as teclas digitadas no final.

Se você realmente deseja ser capaz de digitar comandos do diretório atual, os shells modernos (como zsh, com seu command_not_found_handler ) podem fornecer recursos para fazer isso com segurança, ou seja, permitindo que você adicione todas as verificações de segurança desejadas. no manipulador, antes que o comando seja executado.

    
por 29.07.2018 / 11:37

Tags