Se o script for cooperativo, ou seja, se ele não tentar contê-lo deliberadamente, você poderá usar o chroot para executá-lo em uma subárvore de sua árvore de diretórios. Um programa executado sob o chroot não pode acessar diretamente os arquivos fora da árvore em que ele é chrootado, mas pode interagir com o mundo externo de outras maneiras, incluindo envio de sinais para processos, comunicação via sockets, acesso à rede, etc.
chroot ~/fake myscript
A subárvore ~/fake
precisa conter tudo o que o script precisa: ~/fake/bin/sh
, ~/fake/lib/ld-linux.so.2
e ~/fake/lib/libc.so.6
ou qualquer que seja o carregador dinâmico e a biblioteca padrão no seu sistema, /proc
no Linux para coisas como ps
para o trabalho, etc. Eles precisam ser arquivos reais, não links simbólicos, uma vez que o traversal de links simbólicos é restrito pelo chroot.
Montagens de amarração podem ajudar a construir uma árvore chroot sem copiar todas as informações necessárias arquivos.
O Chroot requer permissões de root. Se todos os programas que você deseja executar estiverem dinamicamente vinculados, você pode usar o fakechroot
para usar o chroot em um peso mais leve caminho. O Fakechroot funciona através da interceptação de chamadas do sistema via pré-carregamento da biblioteca , por isso não requer privilégios. Com fakechroot, links simbólicos apontando para fora do chroot são seguidos normalmente, então você pode construir uma floresta de links simbólicos para disponibilizar coisas na subárvore.
Se o script não for cooperativo, você precisará de uma ferramenta de isolamento adequada: um contêiner ou uma máquina virtual.