É seguro usar os seguintes tipos de caminhos em '$ PATH'?

3

Está usando os seguintes tipos de caminhos em $PATH como uma prática segura e boa:

  • nome do caminho vazio.

    O manual do findutils diz que é inseguro se $PATH contiver um caminho vazio, e eu me pergunto por quê?

    Um nome de caminho vazio é um nome absoluto ou relativo?

  • nomes de caminho que contêm expansões de til ou de nome de arquivo.

    Um usuário de $PATH sempre entende e executa expansões de til ou nome de arquivo em $PATH como shell?

    Se eu definir o valor de PATH em um script de inicialização do shell, como ~/.profile , isso importa, já que um shell executa o arquivo de inicialização?

    Encontrei um relacionado com a expansão do link do til

  • diretório de trabalho atual. Veja É seguro adicionar. para o meu caminho? Como assim?

Obrigado.

    
por Tim 07.06.2018 / 18:45

2 respostas

4

Se houver um elemento vazio em PATH , isso se refere a '.' e pode ser visto como inseguro.

Se o elemento dot ou empty no final de PATH , isso não é altamente inseguro, uma vez que só ocorreria se alguém colocasse um binário em um diretório que usasse um nome binário do sistema escrito incorretamente.

Para CDPATH é o contrário: se você não tiver o elemento dot ou empty, cd não encontrará subdiretórios no diretório atual.

O til dentro de uma string PATH não é compreendido. É por isso que o padrão POSIX requer a expansão de sequências de til após dois pontos na linha de comando quando uma macro de shell é atribuída.

Com relação ao texto que você adicionou à sua pergunta depois que eu respondi: esses caracteres de til são expandidos antes que o comando seja executado.

    
por 07.06.2018 / 18:50
2

Só para que os outros saibam se acertam isso com o google.

Se você colocar . em seu caminho e um invasor criar um arquivo chamado ls em seu diretório de trabalho atual que pode ser executado se aparecer antes de / bin / ls. Esse ls falso pode ser um script de shell com rm -rf , se . aparecer no caminho primeiro, você pode inadvertidamente executá-lo quando emitir o comando e destruir seus arquivos.

    
por 07.06.2018 / 19:35