Resolvendo a ofuscação de $ PATH por / bin / sh (traço)

1

Esta pergunta é uma continuação do link . Eu postei aqui, já que é mais específico da distribuição.

O shell usado por padrão para sh ou seja, dash, não é compatível com execvp porque ele manipula a variável $ PATH. Uma maneira padronizada de lidar com nomes de arquivos estranhos é usar o esquema de codificação de URL. Agora não posso usar esse padrão porque o traço reserva%. Para resolver este problema eu tenho as seguintes opções

  1. Recomende aos meus usuários no Ubuntu que alterem o link simbólico / bin / sh para algo como bash. É necessário fazê-lo globalmente, pois o popen (3) depende do / bin / sh.

  2. Divergir da codificação de URL tradicional usando algo diferente de%

  3. Lança um erro sempre que os caracteres proibidos (sim, o Windows, mas essa restrição é são em uma configuração de inicialização dupla) aparece.

O ideal é que eu prefira que a opção (1) pareça o melhor caminho a percorrer. Torna possível usar um esquema de escape padronizado em nomes de arquivos. No entanto, como o traço se comporta claramente de maneira diferente de alguns outros shells, ele quebrará o sistema se algum dos scripts do sistema depender da funcionalidade exclusiva do traço. Também requer que o usuário tenha privilégios de root.

A opção (2) implica que eu tenho que encontrar outro símbolo que não colida em lugar algum. Certamente, alguma casca pode estragar qualquer símbolo que não seja uma letra.

Opção (3) implica redução muito grande na funcionalidade

    
por user877329 29.04.2014 / 10:02

1 resposta

1

A opção 1 é bastante simples. Você só precisa executar:

sudo dpkg-reconfigure dash

E escolha Não. Isso fará com que /bin/sh volte para /bin/bash .

Você pode fazer isso manualmente (removendo o link, criando um novo), mas este é o método oficial .

    
por Oli 29.04.2014 / 10:10