chroot (Português)

chroot é uma operação que altera o diretório raiz aparente para o processo atual de execução e seus filhos. Um programa que é executado em tal ambiente modificado não consegue acessar os arquivos e comandos fora dessa árvore de diretórios ambiental. Esse ambiente modificado é chamado de um prisão chroot (ou chroot jail).

Status de tradução: Esse artigo é uma tradução de chroot. Data da última tradução: 2019-11-11. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Motivação

Alterar a raiz geralmente é feito para executar a manutenção do sistema em sistemas onde a inicialização e/ou a autenticação não são mais possíveis. Exemplos comuns são:

Veja também Wikipedia:Chroot#Limitations.

Requisitos

  • Privilégio de root.
  • Outro ambiente Linux, como um LiveCD ou mídia flash USB (ex.: pendrive), ou outra distribuição Linux.
  • Ambientes com igual arquitetura; i.e. o chroot de e chroot para. A arquitetura do ambiente atual pode ser descoberta com: uname -m (ex.: i686 ou x86_64).
  • Módulos de kernel carregados que são necessários no ambiente chroot.
  • Swap habilitado se necessário:
    # swapon /dev/sd''xY''
  • Conexão com a Internet estabelecida, se necessário.

Uso

Nota:
  • Algumas ferramentas do systemd, tal como hostnamectl, localectl e timedatectl, não podem ser usados dentro de um chroot, pois eles exigem uma conexão dbus ativa.
  • O sistema de arquivos que vai servir como uma nova raiz (/) de seu chroot deve estar acessível (i.e., descriptografado, montado).

Há duas opções principais para usar chroot, descritas abaixo.

Usando arch-chroot

O script bash arch-chroot é parte do pacote . Antes que ele execute , o script monta sistemas de arquivos de api como e torna o disponível no chroot.

Entrar em um chroot

Execute arch-chroot com o novo diretório raiz como o primeiro argumento:

# arch-chroot /local/da/nova/raiz

Por exemplo, no guia de instalação esse diretório seria o /mnt:

# arch-chroot /mnt

Para sair do chroot, basta usar:

# exit

Executar um único comando e sair

Para executar um comando a partir do chroot e sair novamente, anexe o comando ao final da linha:

# arch-chroot /local/da/nova/raiz meucomando

Por exemplo, para executar mkinitcpio -p linux para um chroot localizado em faça:

# arch-chroot /mnt/arch mkinitcpio -p linux

Usando chroot

No exemplo a seguir, é o diretório no qual a nova raiz reside.

Primeiro, monte os sistemas de arquivos de API temporários:

# cd /local/da/nova/raiz
# mount -t proc /proc proc/
# mount --rbind /sys sys/
# mount --rbind /dev dev/

E opcionalmente:

# mount --rbind /run run/

Em seguida, para usar uma conexão com a internet no ambiente chroot copie os detalhes do DNS:

# cp /etc/resolv.conf etc/resolv.conf

Finalmente, para alterar a raiz para usando um shell do bash:

# chroot /local/da/nova/raiz /bin/bash

Após fazer o chroot pode ser necessário carregar a configuração local do bash:

# source /etc/profile
# source ~/.bashrc

Ao finalizar com o chroot, você pode sair dele via:

# exit

Então, desmonte os sistemas de arquivos temporários:

# cd /
# umount --recursive /local/da/nova/raiz

Executar aplicativos gráficos a partir do chroot

Se você tiver um servidor X funcionando em seu sistema, você pode iniciar aplicativos gráficos a partir do ambiente chroot.

Para permitir que o ambiente chroot se conecte a um servidor X, abra um terminal virtual dentro do servidor X (i.e. dentro do computador do usuário que está atualmente autenticado), então execute o comando xhost, que dá a permissão para qualquer um se conectar ao servidor X do usuário (veja também Xhost):

$ xhost +local:

Então, para direcionar os aplicativos para o servidor X do chroot, defina a variável de ambiente DISPLAY dentro do chroot para corresponder a variável DISPLAY do usuário que possui o servidor X. Então, por exemplo, execute

$ echo $DISPLAY

como o usuário que possui o servidor X para ver o valor de DISPLAY. Se o valor for ": 0" (por exemplo), em seguida, no ambiente chroot é executado

# export DISPLAY=:0

Sem privilégios de root

O chroot requer privilégios de root, o que pode não ser desejável ou possível para o usuário obter em determinadas situações. Há, no entanto, várias maneiras de simular o comportamento de chroot com implementações alternativas.

PRoot

PRoot pode ser usado para alterar o diretório raiz aparente e usar sem privilégios de root. Isso é útil para confinar aplicativos para um único diretório ou executar programas criados para uma arquitetura de CPU diferente, mas tem limitações devido ao fato de que todos os arquivos são de propriedade do usuário no sistema hospedeiro. O PRoot fornece um argumento que pode ser usado como uma solução alternativa para algumas dessas limitações de maneira semelhante (embora mais limitada) para fakeroot.

Fakechroot

fakechroot é uma camada de biblioteca que intercepta a chamada do chroot e falsifica os resultados. Ele pode ser usado em conjunto com para simular um chroot como usuário comum.

# fakechroot fakeroot chroot ~/meu-chroot bash

Veja também

gollark: https://en.wikipedia.org/wiki/CP_violation
gollark: I assume you have particle accelerators.
gollark: Well, the obvious approach is to use the weird asymmetric things in particle physics which I recall existing.
gollark: You could transmit an image, obviously, but there's no guarantee you'll write it down the same way round.
gollark: If you have clockwise/anticlockwise it's obviously quite easy to explain it from there.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.