Talvez seja um pouco demais, mas provavelmente a maneira mais segura seria usar o AppArmor ou o SELINUX para bloquear a execução do binário. Modificar as permissões do arquivo funcionará até que o pacote que fornece esse binário seja atualizado (então, ele será definido como executável novamente quando for atualizado).
Por outro lado, se você estiver tentando proteger uma partição inteira para que nada possa ser executado diretamente nela (por exemplo, proteja /var
ou /tmp
para que ninguém possa descompactar e executar binários nesses diretórios) , você pode montar as partições com o sinalizador de opções "noexec":
root@server: ~ # grep noexec /etc/fstab
/dev/sda6 /tmp ext4 defaults,noexec,nosuid,nodev 1 1
Desta forma:
root@server: /tmp # cp /usr/bin/vim .
root@server: /tmp # ./vim
-bash: ./vim: Permission denied
Observe que os scripts de shell ainda podem ser executados como /bin/sh /tmp/myscript.sh
, mas não diretamente com ./myscript.sh
.
O sinalizador "noexec" é útil para servidores web, porque você pode evitar alguns ataques baseados em download, compilação e execução de binários de sites vulneráveis baseados em PHP ou CGI.