schroot - Chroots para usuários comuns
Antes de qualquer coisa..
olá !! agora vou voltar (na verdade começar) a blogar as maluquices que eu encontro pela net porque desde 2005 nunca parei para usar blogs de fato. Dessa vez acho que vai dar certo. Também será uma boa oportunidade para
não perder idéias e fazer anotações que possam ser importantes para mais alguém. É isso aí viva a liberdade de blogar !
Eu uso Debian Lenny 64bits em meu laptop, um HP Pavilion
DV6308NR? que roda tudo bem redondo. A única coisa chata é que por vezes ainda preciso usar o infeliz do
skype, que não tem para 64bits. Até poucos dias atrás o
wengophone também não estava disponível no
lenny. Então fiz algumas tentativas em usar máquinas virtuais como o
VirtualBox, como comentou AntonioTerceiro em outro post. Realmente o
virtualbox é muito fácil de usar e ótimo substituto para os acostumados com a interface do VMWare.
Estes dias também vi o
http://virt-manager.et.redhat.com/, que parece muito interessante e apesar de ainda não ter pacotes Debian compila e instala fácil com um
make && make install da vida. Mesmo assim, para usar estes softwares se gasta muito tempo. No caso do
virtualbox para rodar um programa gráfico é preciso instalar o servidor X, ou mesmo usando o
xen (além de ter de configurar todo o xen, mudar kernel, etc) ainda seria preciso outra grande volta para rodar um servidor X. E para quê tanto esforço para rodar um simples programa gráfico 32bits? Não.. maluquice. Voltei a pensar em usar o chroot na mão mesmo.
Para quem não conhece:
chroot vem de
change root e é um comando existente na maioria das instalações linux e permite alterar momentaneamente a raiz do sistema, tipicamente para
simular o uso de uma outra instalação específica (motivado por questões de segurança ou outras). Por exemplo, é interessante num servidor compartilhado de ssh configurar o daemon do ssh para
enjaular o usuário num chroot mínimo para evitar que o usuário consiga realizar um ataque no host e prejudicar outras aplicações ou usuários. Em nosso caso, o
schroot é apenas um facilitador para o uso do chroot e será especialmente útil aos usuários novatos para rodarem programas gráficos localizados num diretório de instalação diferente do original (original pode ser amd64 e o novo ser i386, para rodar firefox + plugin java, por exemplo).
O que fiz para usar:
- Instalei o schroot:
# aptitude install schroot
- Criei um chroot 32 bits normal usando:
# debootstrap --arch i386 sid /srv/chroot/sid http://ftp.br.debian.org/debian
- Para instalar programas dentro do chroot basta fazer:
# schroot -c sid aptitude install [nomepacote]
- Instalei alguns programas essenciais para qualquer uso como: vim e less
- Peguei o pacote do skype 32 bits e como um bom preguiçoso copiei ele na pasta /srv/chroot/sid/root/packages (que vai ser minha fonte extra de pacotes para o apt)
- Criei o Packages.gz:
# cd /srv/chroot/sid/root/packages; apt-ftparchive packages . |gzip > Packages.gz
- Alterei o /srv/chroot/sid/etc/apt/sources.list adicionando meu micro-repositório:
deb file:///root/packages ./
- Atualizei a lista de pacotes do aptitude de dentro do chroot:
# schroot -c sid aptitude update
- Instalei o skype:
# schroot -c sid aptitude install skype
- Configurei o /etc/schroot/schroot.conf colocando:
[sid]
description=Debian sid (unstable)
location=/srv/chroot/sid
type=directory
priority=3
users=amadeu
groups=amadeu
root-groups=amadeu
run-setup-scripts=true
run-exec-scripts=true
- Adicionalmente é recomendável alterar /etc/schroot/mount-defaults para incluir outros pontos de montagem:
/dev /dev none rw,bind 0 0
/etc/resolv.conf /etc/resolv.conf none ro,bind 0 0
/etc/hosts /etc/hosts none ro,bind 0 0
- Observe que indiquei qual o usuário ("amadeu" no meu caso) deve ter acesso completo no chroot
- Agora basta usar:
$ schroot -c sid COMANDO
Mas para rodar programas que precisam usar o X basta fazer:
- Liberar acesso para conexões de outros hosts na sua sessão do X:
$ xhost +
- Contudo é um problema de segurança caso não se faça o respectivo
$ xhost -
para remover o acesso indiscriminado, logo é melhor usar o comando xauth como mostramos abaixo na criação do script de wrapper.
- Usar o schroot -p que mantém as variáveis de ambiente setadas:
$ schroot -c sid -p skype
Rodou
perfeitamente !!! Maravilhoso !!!
Para não esquecer dos usuários que gostam de apertar botão:
- Crie um script para rodar os dois comandos, sugiro criar /usr/local/bin/skype_wrapper:
#!/bin/bash
## UPDATED after some comment to reduce security risk ;-)
# right way for export Xauthority file to
# your home directory on chroot environment
xauth extract /srv/chroot/sid$HOME/.Xauthority $DISPLAY
# run your command
schroot -c sid -p skype
# after program execution to remove the Xauthority
# because it isn't need anymore
rm -f /srv/chroot/sid$HOME/.Xauthority
- Dê permissão de execução:
# chmod +x /usr/local/bin/skype_wrapper
- Crie um lançador no seu GNOME (ou XFCE), em ~/Desktop/skype.desktop com o seguinte conteúdo:
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=Skype
Type=Application
Comment=Skype 32 bits
Exec=/usr/local/bin/skype_wrapper
Icon=/srv/chroot/sid/usr/share/pixmaps/skype.png
Categories=Application;System;
- Prontinho.. pode clicar no botão da sua área de trabalho
Esta obra está licenciada sob uma Licença Creative Commons.