Se
- o programa pode ser modificado para fazer uma chamada de sistema de sua escolha antes de qualquer código não confiável (isso pode ser feito via LD_PRELOAD ) e
- o programa não precisa fazer chamadas do sistema além de
exit(),sigreturn(),read()ewrite()
você pode usar seccomp (artigo da Wikipedia). Para permitir mais do que apenas as chamadas do sistema, há o seccomp-bpf, que usa o Filtro de Pacotes de Berkeley para determinar quais chamadas do sistema permitir . A biblioteca libseccomp simplifica o seccomp-bpf (por exemplo) se você quiser permitir a chamada do sistema close() :
seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(close), 0);
Ou para algo semelhante a chroot , mas que não pode ser quebrado, você pode tentar recipientes do Linux , OpenVZ ou VServer do Linux .