Chroot
chroot em sistemas operacionais derivados do Unix é uma operação que invoca um processo, alterando o diretório raiz do sistema para ele e seus filhos. "chroot" pode se referir à chamada de sistema chroot(2) ou ao programa executável chroot(8) . Comumente, o ambiente virtual criado pelo chroot a partir da nova raiz do sistema é conhecido como "gaiola chroot".
O sistema chroot foi introduzido por Bill Joy em 18 de março de 1982 ( 17 meses antes do lançamento do BSD 4.2 ) para testar seu sistema de instalação e compilação.
Usar "chroot" para invocar um processo impedirá que o processo e seus processos filhos acessem qualquer arquivo acima do novo diretório raiz pelo nome. Isso geralmente é entendido como um dispositivo de segurança, pois teoricamente cria uma zona segura para executar um programa que não é confiável, não foi testado ou, de alguma forma, pode exibir um comportamento perigoso para a integridade do sistema. No entanto, deve-se notar que as jails chroot não são tão seguras quanto outros tipos de jails ou virtualização .
Como os programas esperam encontrar seu espaço de armazenamento, arquivos de configuração ou bibliotecas de links dinâmicos , entre outros lugares, em determinados lugares, configurar uma prisão chroot também envolve incluir esses recursos nela.
Os programas têm permissão para levar descritores de arquivos abertos (sejam arquivos físicos, pipes ou conexões de rede) na jaula, o que pode simplificar o design, tornando desnecessário deixar arquivos de trabalho dentro do diretório chroot. Isso também funciona como um sistema de recursos simples , no qual o programa recebe acesso explícito a recursos chroot externos com base nos descritores que ele pode carregar dentro.
Usa
As jaulas chroot são usadas para criar e manter uma cópia virtual separada do sistema operacional em um diretório do sistema operacional. Isso pode ser útil para:
- Teste e desenvolvimento: Uma área de teste pode ser criada para um programa quando é arriscado usar um sistema diretamente na produção.
- Controle de Dependência: Os programas podem ser desenvolvidos , construídos e testados apenas com as dependências esperadas. Isso pode evitar algumas formas de links corrompidos que surgem quando os desenvolvedores criam projetos com diferentes bibliotecas instaladas.
- Compatibilidade: Software legado ou software que usa uma interface binária de aplicativo diferente às vezes deve ser executado separadamente, pois bibliotecas de suporte ou arquivos de dados podem entrar em conflito em nomes ou links com o sistema de contêiner de gaiola.
Referências
McGrath, Roland . "Páginas 2 e 8 do manual do sistema chroot".