followup: por que os arquivos shebang não são suficientes?

0

pergunta de acompanhamento para o link . há uma resposta muito boa por Gilles. infelizmente, eu não entendo isso. nada descrito parece intrinsecamente diferente entre executáveis e interpretáveis.

    Os scripts
  • tinham uma condição de substituição do arquivo de corrida, mas o bloqueio do Unix não é necessário para corrigir isso. qualquer executável C é lido primeiro e depois executado. isso poderia ser feito tão facilmente com o código interpretável quanto com o código executável. a maioria dos scripts (shell) não é mais longa que a maioria dos executáveis C, portanto, ambos podem ser carregados primeiro. o fato de implementações anteriores lerem uma linha, fecharem o arquivo e reabri-lo (e, portanto, sofrerem essa condição de corrida), não é intrínseco. Aconteceu de ser uma implementação antiga. Isso não é facilmente corrigível universalmente em todas as implementações UNIX, lendo todo o arquivo de script interpretável?

  • o tempo de execução necessário para realizar uma função específica é vulnerável, mas isso se aplica tanto ao código C quanto ao interpretador. scripts shell ou python, digamos, adicionam / têm tempos de execução vulneráveis?

  • qualquer executável (C) pode chamar outros programas shell da mesma maneira que uma linguagem interpretada pode. os programas que passam um para o outro foram originalmente reivindicados como o caminho Unix, então devemos fazer isso com frequência.

tudo isso é mais ou menos declarado na resposta de Gilles, talvez exceto o explícito "leia tudo primeiro, execute segundo". em vez disso, descreve as implementações / dev / fd / equivalent.

então ainda sinto falta dela. o que é intrinsecamente diferente? (o único recurso de segurança que consigo pensar é que ao proibir scripts suid, tornamos mais difícil para o noobs escrever qualquer script setuid.)

houve um comitê que fez e explicou sua decisão para, digamos, o ubuntu, onde eu posso ler a motivação?

/ iaw

    
por ivo Welch 13.09.2014 / 22:32

2 respostas

0

Claro, é possível alterar a implementação para ser seguro, mas na prática, isso requer a cooperação de todos os fornecedores Unix e muita reeducação do usuário. Se você é capaz de coordenar tal esforço, mais poder para você. :) A alternativa (por exemplo, ficar com programas wrapper setuid) pode ser inconveniente, mas não é intolerável.

Por outras palavras, há boas razões para ainda não conseguirmos escrever corretamente criar . A quantidade de esforço necessária para consertar isso não é julgada como proporcional ao benefício.

    
por 13.09.2014 / 23:57
0

É muito mais fácil modificar um script de shell do que modificar um arquivo binário. Nenhuma ferramenta especial é necessária além de um editor e grava o acesso ao arquivo. Mesmo o sed funciona, mas isso ainda é um editor de fluxo.

Faz sentido a partir de uma perspectiva de segurança. Você pode executar um script através do sudo ou su para root. Você sempre pode executar um programa suid dentro de um script ...

    
por 14.09.2014 / 02:26