Eu ia sugerir um wrapper para chmod ou algo assim, mas quanto mais eu penso sobre isso, os usuários eventualmente encontrarão uma maneira de contornar isso (scp um executável de outra caixa, ou executar perl -s "chmod ('FILE '); ", etc ...
Então, acho que o método FS é o melhor. Como você diz que não pode movê-los para um novo sistema de arquivos, que tal usar uma montagem --bind para "remount" / home e / var sem privilégios de exec?
mount -o noexec --bind /var /var
mount -o noexec --bind /home /home
Não tenho certeza se isso funcionaria ou não, mas parece promissor ...
EDIT:
Bem, eu gosto do meu bom e brilhante emblema de "boa resposta" desta resposta, mas depois de jogar com ele não acho que vai funcionar. Meu teste original estava em um kernel antigo (2.4.9), e a funcionalidade "montar em cima de si" parecia funcionar. Eu tentei novamente com um novo kernel (2.6.18) e parece não funcionar. Eu comecei a olhar para o trabalho (como renomear / var e / home para outra coisa e montá-los de volta. Eu não fui muito longe, porque eu achei isso na página man para montar na caixa mais nova:
Note that the filesystem mount options will remain the same as those on the original mount point, and cannot be changed by passing the -o option along with --bind/--rbind.
Oh bem ... - ainda é uma opção divertida ...