O termo geral em sistemas operacionais do tipo Unix para executar um processo com um diretório raiz dedicado é chroot
(abreviação de "alterar diretório raiz").
A maneira canônica de fazer isso é algo como:
$ mkdir /tmp/chroot-dir
$ cp /bin/sh /tmp/chroot-dir/
$ chroot /tmp/chroot-dir /sh
Supondo que você tenha executado a execução em / tmp, isso alteraria o diretório raiz de tal forma que /tmp/chroot-dir
se tornasse o novo /
para esse processo, então execute /sh
dentro do contexto disso. É possível que chroot
exija que você seja o usuário root; Nesse caso, substitua sudo chroot
por chroot
. Quando você sair do shell gerado, tudo voltará ao normal.
Como o / bin / sh provavelmente precisa de algumas bibliotecas, o exemplo específico provavelmente falhará, mas estará apontando na direção certa para o que mais é necessário. No Linux, executar ldd /bin/sh
dirá quais bibliotecas adicionais são necessárias; OS X provavelmente tem algo semelhante, se não a mesma coisa. O software não-trivial também precisa frequentemente de arquivos de configuração, nós de dispositivos e outras probabilidades e extremidades disponíveis em sua visão do sistema de arquivos.
O software orientado ao consumidor geralmente não é muito bom para ser chrooted sem esforço significativo, mas o software de servidor pode ser coaxed em um chroot com relativamente pouco esforço, e alguns até vêm com documentação sobre o que é necessário.