Como usar o Chroot no Debian Top 10

Como usar o Chroot no Debian Top 10
Em um ambiente de teste, geralmente precisamos solar certas aplicações para impedir que eles danifiquem ou bisbulem o restante do sistema. Existem diferentes ferramentas disponíveis para sandbox um programa e impedindo que ele afete o restante do sistema, como VirtualBox, VMware, Xen, KVM, etc. No entanto, para apenas uma única ou poucas aplicações, a caixa de areia inteira não parece prática.

Para o Linux OS, existe uma ferramenta disponível, conhecida como chroot, que fornece uma maneira mais fácil e rápida de sandbox um aplicativo. Com o chroot, você pode instalar e testar qualquer aplicativo sem afetar o restante do sistema.

Este artigo explicará como usar o Chroot no Debian 10 Buster, junto com alguns exemplos. Para explicação, criaremos um ambiente de chroot para a festa e alguns dos comandos, como os comandos "LS", "IP" e "PWD".

O que é chroot?

A ferramenta Chroot é um comando no Linux que altera o diretório raiz de um aplicativo para outro diretório. Os processos em execução neste novo diretório raiz não podem acessar os arquivos fora dele. Portanto, isola as operações de aplicações do restante do sistema.

Como funciona o chroot?

O Chroot funciona copiando o aplicativo e todos os seus executáveis ​​e dependências dentro do diretório raiz alternativo. Em seguida, ele executa o aplicativo dentro deste diretório raiz alternativo, fazendo com que o aplicativo o considere como o diretório raiz original. O diretório raiz é o diretório mais importante da hierarquia, e nenhum aplicativo pode atingir mais alto que este diretório, então é assim que o Chroot isola a aplicação do restante do sistema.

Casos de uso

  • Configurando um ambiente de teste
  • Executando programas de 32 bits em um sistema de 64 bits
  • Executando versões mais antigas do programa na versão mais recente do sistema operacional
  • Recuperação de senha

Sintaxe

A seguir, a sintaxe básica para o comando chroot:

$ chroot comando

Siga as etapas abaixo para usar o comando chroot no Debian para configurar um ambiente de chroot.

Crie um diretório raiz alternativo

Primeiro, crie um diretório raiz alternativo para ser usado para o ambiente de chroot.

$ sudo mkdir ~/new_root

O comando acima criará o new_root diretório sob o Lar Diretório, que será usado como diretório raiz no ambiente de chroot.

Adicione diretórios essenciais

Crie os diretórios "bin", "lib" e "lib64" sob o ~/new_root diretório:

$ sudo mkdir -p ~/new_root/bin, lib, lib64

Copiar binários do programa

Tudo o necessário para executar um aplicativo no ambiente de chroot precisa estar no diretório raiz alternativo. Neste artigo, criaremos um ambiente de chroot para os comandos Bash e alguns comandos, incluindo o "LS", "IP" e "PWD". Portanto, copiaremos os binários do /bin diretório para o alternativo ~/new_root/bin diretório. Para localizar os binários dos comandos, use o comando qual:

$ que bash ls ip pwd

Em seguida, copie os binários dos comandos para o ~/new_root/bin diretório.

$ sudo cp -v/bin/bash, ls, ip, pwd ~/new_root/bin

Copiar dependências do programa

Também precisaremos descobrir quais dependências nosso programa precisa. Primeiro, precisaremos encontrar quais são essas dependências e depois as copiaremos para o ~/new_root/lib Diretório.

Copiando dependências para Bash

Primeiro, descubra as dependências para o programa Bash:

$ LDD /BIN /BASH

Em seguida, copie essas dependências para o ~/new_root/lib diretório.

$ cp -v/lib/x86_64-linux-gnu/libbtinfo.então.6, libdl.então.2, libc.então.6 ~/new_root/lib

Para os arquivos /lib64, copie -os para o ~/new_root/lib64 diretório.

$ cp -v /lib64 /ld-linux-x86-64.então.2 ~/new_root/lib64

Copiar dependências para o comando ls

Primeiro, descubra as dependências para o comando LS:

$ ldd /bin /ls

Em seguida, copie essas dependências para o ~/new_root/lib diretório.

$ sudo cp -v/lib/x86_64-linux-gnu/libselinux.então.1, libc.então.6, libpcre.então.3,
libdl.então.2, libpthread.então.0 /lib64 /ld-linux-x86-64.então.2 ~/new_root/lib

Para os arquivos /lib64, copie -os para o ~/new_root/lib64 diretório.

$ sudo cp -v /lib64 /ld-linux-x86-64.então.2 ~/new_root/lib64

Copiar dependências para o comando IP

Primeiro, descubra as dependências para o comando IP:

$ ldd /bin /ip

Em seguida, copie essas dependências para o ~/new_root/lib diretório.

$ cp -v /lib /x86_64 -linux
GNU/libelinux.então.1, Libelf.então.1, libmnl.então.0, libcap.então.2, libdl.então.2, libc.então.6,
libpcre.então.3, Libz.então.1, libpthread.então.0 ~/new_root/lib

Para os arquivos /lib64, copie -os para o ~/new_root/lib64 diretório.

$ sudo cp -v /lib64 /ld-linux-x86-64.então.2 ~/new_root/lib64

Copiar dependências para o comando pwd

Primeiro, descubra as dependências para o comando PWD:

$ ldd /bin /pwd

Em seguida, copie essas dependências para o ~/new_root/lib diretório.

$ sudo cp -v/lib/x86_64-linux-gnu/libc.então.6 ~/new_root/lib

Para os arquivos /lib64, copie -os para o ~/new_root/lib64 diretório.

$ sudo cp -v /lib64 /ld-linux-x86-64.então.2 ~/new_root/lib64

Para visualizar todos os diretórios no diretório raiz alternativo, use o seguinte comando:

$ ls -r

Alterne para o diretório raiz alternativo

Agora, finalmente estamos preparados para mudar para o nosso novo ambiente de chroot. Para alterar o diretório raiz, execute o seguinte comando no shell com privilégios de raiz:

$ sudo chroot ~/new_root/bin/bash

Onde ~/new_root é o nosso diretório raiz alternativo e /BIN/BASH é o aplicativo que usamos para configurar o ambiente de chroot.

Depois de executar o comando acima, você verá que o prompt de bash mudou para Bash-x.y que no nosso caso é Bash-5.0 (onde 5.0 é o número da versão Bash).

Observação: Você pode encontrar o seguinte erro depois de executar o comando chroot, como eu fiz:

Se ocorrer esse erro, verifique se você adicionou todas as bibliotecas e executáveis ​​relacionados ao programa necessário ao novo diretório raiz.

Depois de entrar no ambiente chroot, você só poderá acessar o arquivo nele. Tente executar os comandos que você configurou para o seu ambiente de chroot, incluindo alguns comandos embutidos. Você pode encontrar os comandos embutidos executando o ajuda comando no shell.

Você pode ver que tentamos os comandos "LS", "PW" e "IP", e todos eles conseguiram. Se executarmos qualquer comando que não seja esses três comandos e os comandos internos, o comando falhará, pois não o configuramos para o ambiente chroot. Como você pode ver na captura de tela a seguir, tentamos executar os comandos "Touch", "ping" e "Clear", e todos eles falharam.

Saia chroot

Para sair do ambiente chroot, use o saída comando.

Conclusão

Neste artigo, você aprendeu o que é o chroot e como funciona no Linux. Este artigo mostrou a você passo a passo como usar o Chroot no Debian 10 Buster para criar um ambiente de chroot para Bash e outros comandos. Agora, você deve se sentir confortável usando o comando chroot para alterar o diretório raiz de um processo e seus subprocessos e isolá-los do restante do sistema.