Eu não sei como fazer isso através do binfmt-misc e xattrs, mas vou propor uma abordagem diferente. Eu não tentei, mas não vejo por que isso não funcionaria.
A ideia é usar um conjunto de união para ocultar os binários reais por meio de um script de invólucro que chama o sandbox. Precisamos de uma montagem de união onde o diretório superior é principalmente lido e gravado em um arquivo não-sombreado, vá para o diretório inferior, que não é suportado por todos os sistemas de montagem de união. Em particular, isso exclui o OverlayFS, que agora está embutido no kernel Linux.
Escreva um script de wrapper genérico:
#!/bin/sh
exec /usr/local/bin/sandbox "${0#/sandboxed}" "$@"
Crie um diretório /sandbox
e crie uma montagem de união que sombreie o sistema de arquivos raiz. Vou usar aufs (Ubuntu: aufs-tools
), que infelizmente foi abandonado recentemente; pode haver uma escolha melhor.
mount -t aufs -o br:/,br:/sandbox aufs-sandbox /
Para cada executável que você deseja proteger, vincule /sandbox/path/to/foo
ao script de wrapper (depois de criar os diretórios necessários /path/to
under /sandbox
).