O sinalizador noexec
será aplicado adequadamente aos scripts, porque esse seria o comportamento "esperado".
No entanto, definir noexec
apenas impede que as pessoas não saibam o suficiente sobre o que estão fazendo. Quando você executa sh foo.sh
, na verdade você está executando sh
de seu local padrão (provavelmente /bin
), o que não está em um sistema de arquivos montado com noexec
.
Você pode até mesmo obter noexec
para arquivos binários regulares invocando ld
diretamente.
cp /bin/bash $HOME
/lib/ld-2.7.so $HOME/bash
Isso executará o bash, independentemente de estar ou não em um sistema de arquivos montado com noexec
.