Não é possível executar um script em uma unidade externa montada

23

O / mnt / ext é montado em um sistema de arquivos ext2, um disco rígido externo. Por alguma razão, não consigo executar scripts de lá. Por favor, veja a sessão abaixo.

luntain@plato /mnt/ext $ echo "echo success" > k.sh
luntain@plato /mnt/ext $ chmod 777 k.sh
luntain@plato /mnt/ext $ ./k.sh
-bash: ./k.sh: Permission denied
126luntain@plato /mnt/ext $ ll k.sh
-rwxrwxrwx 1 luntain luntain 13 Jan 23 15:08 k.sh*
luntain@plato /mnt/ext $ 

Eu adoraria descobrir por que vejo o erro.

    
por luntain 23.01.2010 / 16:20

3 respostas

22

Provavelmente, havia um atributo noexec definido quando o sistema de arquivos foi montado; talvez seja o seu 'recurso' de distribuição.

Para verificar isso, você pode executar mount , que mostrará as opções de montagem entre parênteses, e para remover noexec , é possível usar mount -o remount,exec /mnt/ext sob a raiz.

Além disso, certifique-se de colocar a opção exec após a opção do usuário, ou o sistema ainda montará sua unidade como noexec.

    
por 23.01.2010 / 16:29
3

O sistema de arquivos é montado com a opção noexec.

    
por 23.01.2010 / 16:30
3

Um sistema de arquivos montado noexec apenas impede a execução do script (ou seja, pedindo ao kernel para executá-lo apropriadamente com base em um número mágico ou em uma linha shebang). Isso não impede que você chame um interpretador em outro sistema de arquivos montado em exec e passe o script como um argumento (ou em stdin) para o dito interpretador. Logo, se não for root, você poderia ter contornado isso com apenas sh k.sh .

    
por 24.07.2013 / 17:21