Eu sinto que ninguém deu uma explicação técnica completa, então aqui vai.
Para entender um chroot você primeiro tem que entender a divisão entre o kernel (o Linux no GNU / Linux) e o userspace (o GNU no GNU / Linux, ou possivelmente outra coisa, como o busybox.)
O kernel controla todo o hardware do seu computador. Ele também fornece as APIs para acesso a arquivos, rede e assim por diante, e controla quais programas de software estão sendo executados. Isso tudo forma uma abstração do computador, que é apresentado por meio de uma interface de programação de aplicativo (API). Ele não faz nada por si mesmo, exceto talvez inicializar em uma tela preta. Nem mesmo um prompt de shell.
O espaço do usuário é tudo o mais . Todo o software que você executa no seu computador. Na verdade, o kernel só executa um programa de espaço de usuário diretamente, o init, que é então responsável por iniciar todo o resto, como shells e ambientes de desktop. O espaço do usuário também inclui bibliotecas, que geralmente começam com a libc, sobre as quais todas as outras bibliotecas são construídas.
Então, com isso em mente, o conceito de um chroot é simples. Apenas altera o diretório raiz do sistema de arquivos unix para outro diferente, apenas para o comando que você escolher para executar neste contexto. Este é geralmente um shell que você pode lançar outro software, tanto quanto o kernel só lança um único comando diretamente. Esse novo contexto pode ter um conjunto diferente de programas e bibliotecas do espaço do usuário. O mesmo kernel está rodando ambos os conjuntos de software, então ambos os sistemas podem usar todos os recursos de hardware, mas (exceto os bugs de segurança) o chroot aninhado não pode acessar nada do sistema de arquivos primário. Ele tem sua própria versão de / etc para configuração, é próprio / lib para bibliotecas e é próprio / bin, / usr / bin para programas.
Você deve estar ciente de que os dispositivos de hardware são compartilhados . Então, ao contrário de uma máquina virtual, se você formatar / dev / sda de dentro do chroot, você irá formatar seu disco rígido real . Isso ocorre porque os nós do dispositivo em / dev são uma interface direta do kernel, portanto eles significam a mesma coisa dentro e fora do chroot.
Uma outra coisa: é possível dar acesso ao chroot ao sistema de arquivos externo com montagens de ligação. Se você usar uma ferramenta de criação de chroot, é possível que ela "seja útil" sistema principal dentro do chroot. Esta não é uma cópia, é o mesmo sistema de arquivos, e neste caso, quaisquer alterações feitas dentro do chroot serão realizadas no original. Então, eu recomendo que você crie chroots manualmente até que você esteja confortável com o modo como eles funcionam.
Além desses dois problemas em potencial, não há muito que possa dar errado com um chroot, já que é principalmente um sistema autônomo que só será iniciado quando você pedir por ele.