Jaulas para programas com
chroot é um recurso bem conhecido do pessoal aqui do Viva o
Linux. Útil para diversas coisas, a jaula, como o próprio nome diz, permite executar um programa em um ambiente limitado (enjaulado), o que é ótimo para segurança da informação e para rodar aplicativos em um ambiente Unix diferente sem ser necessário o uso de virtualização (ie rodar programas 32bits em um Linux 64). Eu mesmo gosto de testar serviços (Apache, MySQL etc) em uma jaula sem ter que sair instalando pacotes em meu notebook, quando não quero mais apenas preciso remover o diretório onde está o sistema enjaulado para ficar tudo como antes.
O grande problema é que criar uma jaula nem sempre é uma tarefa trivial, muito menos se usarmos o chroot, administrá-la. O chroot, por exemplo, só pode ser executado pelo usuário root. O que fazer em um ambiente onde preciso que um usuário execute um aplicativo enjaulado?
Bom, vamos parar de imaginar as possibilidades, estou aqui para apresentar a dupla
debootstrap e
schroot. Tenho certeza que aqueles que não os conhecem vão achá-los muito úteis.
O debootstrap prepara um ambiente Debian básico. Na prática, ele baixa os pacotes necessários para a instalação básica do Debian e os instala no diretório (alvo) que você escolheu.
Já o schroot permite entrar de forma segura em ambiente chrootado, uma jaula.
Bom, deu para notar que o artigo foi feito por uma usuário
Debian, por isso, antes de tudo, vamos "apetêguetar" os pacotes com:
# apt-get install schroot debootstrap
Preparando um ambiente Debian para a jaula
Como falei na introdução, o debootstrap prepara um ambiente Debian básico.
O seu funcionamento é bastante simples, bastando uma rápida consulta às manpages para já conseguir fazer o que quer.
Aqui vou apresentar a sintaxe e algumas opções que achei bastante úteis.
A sintaxe do debootstrap é:
debootstrap [OPTION...] SUITE TARGET [MIRROR]
Considerações:
- SUITE diz respeito àqueles codinomes das versões Debian: woody, etch, sarge, lenny, squeeze, stable, testing...
- experimental não é uma versão, logo não terá uma distribuição Debian completo para testar;
- Se você quiser testar no Ubuntu os codinomes são diferentes, por exemplo: hardy ou jaunty;
- O comando deve ser executado com permissões de superusuário;
- TARGET é o diretório alvo (onde você vai instalar a sua jaula. Aqui no meu notebook, por exemplo, estou usando /home/squeeze32bits);
- MIRROR é a url de onde ele irá baixar os pacotes. O legal é que os pacotes (Packages.gz) podem estar em um diretório, em um servidor web, ftp, ou ssh. Bastando apenas formar a url conforme o local onde estarão os pacotes.
Por exemplo, se eu quiser baixar os arquivos de um cd-rom montado baixa formatar o comando assim:
# debootstrap --variant=minbase squeeze /caminho/para/a_sua_jaula file://media/cdrom/debian
Algumas opções úteis são:
- --arch=arquitetura - faz o debootstrap baixar os pacotes para uma arquitetura específica;
- --verbose - produz mas informação sobre o download;
- --variant=minbase|buildd|fakechroot|scratchbox - permite escolher um perfil para a instalação determinando assim quais os pacotes serão baixados. O padrão instala uma distribuição Debian padrão.
Aqui em meu notebook tenho alguns programas que só foram distribuídos em 32 bits, mas minha instalação é um Debian squeeze Amd64, então usarei o seguinte comando:
# debootstrap --verbose --variant=minbase --arch=i386 squeeze /var/chroot/squeeze32bits http://ftp.br.debian.org/debian
Assim que terminado, vamos para o enjaulamento! ;-)