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:

  1. Instalei o schroot:
     # aptitude install schroot 
  2. Criei um chroot 32 bits normal usando:
     # debootstrap --arch i386 sid /srv/chroot/sid http://ftp.br.debian.org/debian 
    1. Para instalar programas dentro do chroot basta fazer:
       # schroot -c sid aptitude install [nomepacote] 
    2. Instalei alguns programas essenciais para qualquer uso como: vim e less
    3. 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)
    4. Criei o Packages.gz:
       # cd /srv/chroot/sid/root/packages; apt-ftparchive packages . |gzip > Packages.gz 
    5. Alterei o /srv/chroot/sid/etc/apt/sources.list adicionando meu micro-repositório:
       deb file:///root/packages ./ 
    6. Atualizei a lista de pacotes do aptitude de dentro do chroot:
       # schroot -c sid aptitude update 
    7. Instalei o skype:
       # schroot -c sid aptitude install skype 
  3. 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 
  4. 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 
  5. Observe que indiquei qual o usuário ("amadeu" no meu caso) deve ter acesso completo no chroot
  6. Agora basta usar:
     $ schroot -c sid COMANDO 

Mas para rodar programas que precisam usar o X basta fazer:

  1. Liberar acesso para conexões de outros hosts na sua sessão do X:
     $ xhost + 
  2. 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.
  3. 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:

  1. 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 
  2. Dê permissão de execução:
    # chmod +x /usr/local/bin/skype_wrapper
  3. 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;
  4. Prontinho.. pode clicar no botão da sua área de trabalho cool!
Tags:
Debian1Add my vote for this tag Dicas de Softwares1Add my vote for this tag create new tag


Creative Commons License Esta obra está licenciada sob uma Licença Creative Commons.