Por que eu tenho que usar sh para executar scripts de mídia de CD / DVD?

6

Eu acerto novamente neste estranho comportamento do sistema. Estou executando o Debian 6.0.6 e tive alguns problemas ao executar um script diretamente do CD / DVD. Finalmente eu tive que usar:

sh /media/cdrom/command

para executá-lo. Qual é o grande problema de ter que recorrer a sh ?! E se o script se basear em recursos bash? Realmente chato e pouco adicionado à segurança na minha opinião

Alguém sabe de uma boa razão para esse comportamento?

PS: se você tentar executá-lo diretamente com. / ... você recebe um erro que não sugere nenhuma dica para o problema (sistema de arquivos montado noexec):

bash: ./media/cdrom/command: No such file or directory

Se você executá-lo como bash / media / cdrom / command, obterá o mesmo erro (acho que a verificação das opções de montagem é verificada pelo bash, mesmo para comandos passados como parâmetros na linha de comando.

A solução permanente é adicionar exec às opções de montagem em / etc / fstab, como:

/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec     0       0
    
por a1an 27.12.2012 / 13:12

2 respostas

9

Sistemas de arquivos são frequentemente montados noexec,nosuid por padrão para aumentar um pouco a segurança. Portanto, mesmo que você veja o bit executável no conjunto de arquivos, o kernel se recusará a executá-lo. Ao chamá-lo na forma de interpreter path/to/script , você está solicitando que o sistema execute interpreter , que por sua vez recebe path/to/script como um argumento e analisa-o ignorando a restrição imposta pelo sistema de arquivos (você pode conseguir o mesmo efeito com executáveis compilados com: /lib/ld-linux.so.1 path/to/executable ).

Assim, uma opção é mount -o exec ... . Você pode querer colocar a opção em /etc/fstab - geralmente substituindo a opção defaults por defaults,exec . No entanto, a menos que você realmente saiba o que está fazendo, eu aconselho contra isso.

Quanto aos detalhes BASH, acredito que bash os interprete mesmo quando estiver executando como sh . E você está definitivamente livre para invocá-lo como bash path/to/script .

    
por 27.12.2012 / 13:32
1

Isso é um pouco tarde para o jogo, mas eu achei isso procurando uma resposta para o meu problema e pensei em falar com outras pessoas procurando. Nosso shell script foi gravado em CD a partir de um PC Windows e, uma vez montado na caixa Redhat, apareceu como rw-rw-r-- . Minha solução foi colocar o arquivo em um servidor Redhat CM, torná-lo r-xr-xr-x e gravá-lo em CD a partir da caixa Redhat. Essas permissões apareceram da mesma forma, uma vez montadas no computador de destino, para que eu pudesse executar com apenas /mnt/cdrom/install.sh

    
por 22.05.2013 / 17:24