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

23

O / mnt / ext está montado em um sistema de arquivos ext2, um disco rígido externo. Por alguma razão, não consigo executar scripts a partir daí. 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 $ 

Gostaria muito de descobrir por que vejo o erro.

luntain
fonte

Respostas:

22

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

Para verificá-lo, você pode executar o mountque mostrará as opções de montagem entre parênteses e para remover o noexecsinalizador que você pode usar mount -o remount,exec /mnt/extno root.

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.

whitequark
fonte
3

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

James Reinstate Monica Polk
fonte
3

Um sistema de arquivos montado noexecimpede apenas a execução do script (ou seja, solicita que o kernel o execute adequadamente com base em um número mágico ou em uma linha shebang). Isso não impede que você chame um intérprete em outro sistema de arquivos montado exece passe o script como argumento (ou no stdin) para o referido intérprete. Portanto, se não for root, você poderia ter resolvido isso com apenas sh k.sh.

pilona
fonte