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 .