SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
Criação de ambientes em
         chroot
         Rudá Moura
       Novembro de 2009
Quem sou eu?

•   Trabalhei de 1999 à 2001 no desenvolvimento
    de uma distribuição Linux (Conectiva Linux);

•   Passei a década de 2000 inteira trabalhando
    com Linux;

•   Agora eu uso o Mac OS X no desktop, mas
    trabalho com Linux em servidores.
Propósito da
            apresentação

•   Entender o que é um ambiente chroot;

•   Criar um ambiente chroot;

•   Dar subsídios para a pessoa saber criar seus
    próprios ambientes em chroot.
O que é um chroot?
•   É uma chamada de sistema (chroot syscall);

•   É um comando do Unix (chroot);

•   Permite trocar o root do sistema de arquivos
    para um outro diretório;

•   Na prática, permite isolar,em uma gaiola um
    programa, serviço ou distribuição;

•   Não é virtualização ou paravirtualização!
Матрёшка (Matrioshka)
Para que serve?

•   Permite criar ambientes isolados (gaiolas) de
    desenvolvimento, sem contaminar o ambiente
    original;

•   Permite criar gaiolas para rodar serviços (ssh,
    httpd, dns) em separado e protegido;
                                          Não existe
                                          mecanismo
                                         100% seguro!
Executando o chroot

•   chroot em /var/chroot (tanto faz o lugar)

•   /usr/sbin/chroot /var/chroot

•   /usr/sbin/chroot /var/chroot /bin/bash

•   O /var/chroot/ vira o / para o bash (do chroot)
chroot com o Busybox
“busybox.i386 : Statically linked binary providing simplified
versions of system commands” (yum)


   $ sudo mkdir -p /var/chroot/bin
   $ sudo cp -a /sbin/busybox /var/chroot/bin/
   $ sudo /usr/sbin/chroot /var/chroot/ busybox ash
   / $ /bin/busybox find /
   /                             Estou no
   /bin                           chroot!
   /bin/busybox
/ $ /bin/busybox ps
  PID Uid VmSize Stat Command                Cadê o /
ps: unable to open `/proc': No such file       proc?
or directory
  $ sudo mkdir -p /var/chroot/etc
  $ sudo cp -a /etc/fstab /var/chroot/etc/         Origem


 / $ /bin/busybox mkdir /proc      Voltamos
 / $ /bin/busybox mount /proc      ao chroot
 / $ /bin/busybox ps
   PID Uid VmSize Stat Command
    10         648 S init [5]
    20           SW< [migration/0]        Todos os
                                         processos!
    30           SWN [ksoftirqd/0]
 …
chroot com o GNU
               Bash
  O Bash não é um binário estático, depende de libs
  dinâmicas! Só copiar o binário para o chroot não vai
  funcionar!
$ ldd /bin/bash
      linux-gate.so.1 => (0x0024c000)
      libtermcap.so.2 => /lib/libtermcap.so.2 (0x06468000)
      libdl.so.2 => /lib/libdl.so.2 (0x00a49000)
      libc.so.6 => /lib/libc.so.6 (0x008d9000)
      /lib/ld-linux.so.2 (0x008b6000)
$ sudo cp -a /bin/bash /var/chroot/bin/bash
$ sudo mkdir -p /var/chroot/lib
$ sudo cp -a /lib/libc.* /lib/libc-* /lib/libdl* /lib/   Para não
libtermcap.so.2* /var/chroot/lib/                         copiar
                                                         somente
                                                           links!
   / $ bash
                         Finalmente
   bash-3.2#
Melhorando o ambiente
É importante copiar alguns arquivos do /etc e os
arquivos de dispositivos (/dev).

$ sudo cp -a /etc/passwd /etc/group /etc/hosts /etc/
resolv.conf /var/chroot/etc/
$ sudo /dev/MAKEDEV -d /var/chroot/dev/ -v generic
chroot com o RPM

$ sudo mkdir -p /var/chroot/var/lib/rpm
$ sudo rpm --root /var/chroot/ --initdb

Vamos precisar de RPMs para instalar (http://
centos.pop.com.br/5.4/os/i386/CentOS/)
$ sudo rpm --root /var/chroot -ihv
basesystem-8.0-5.1.1.el5.centos.noarch.rpm
error: Failed dependencies:                   Oops, o pacote
     setup is needed by                        depende de
basesystem-8.0-5.1.1.el5.centos.noarch           outros!
     filesystem is needed by
basesystem-8.0-5.1.1.el5.centos.noarch

$ sudo rpm --root /var/chroot -ihv
basesystem-8.0-5.1.1.el5.centos.noarch.rpm
filesystem-2.4.0-2.el5.centos.i386.rpm          Satisfazendo as
setup-2.5.58-7.el5.noarch.rpm                        deps

$ rpm --root /var/chroot -ihv rpm-4.4.2.3-18.el5.i386.rpm
(uma lista enorme!)
Considerações sobre o
  RPM em chroot
•   Nunca esqueça de passar o parâmetro --root
    (cuidado para não estragar o seu sistema);

•   O processo inteiro para ter o RPM instalado
    envolve instalar e satisfazer as dependências de
    pacote, algumas deps são óbvias;

•   Exige um pouco de “manha” para saber qual
    pacote tem o que, mas só se aprende fazendo;

•   Pode-se fazer instalações parciais, por exemplo,
    instalar até o Bash (via RPMs) e depois até o
    RPM.
O yum é seu amigo

$ sudo mkdir -p /var/chroot/var/lib/rpm       Cria o banco
$ sudo rpm --root /var/chroot --initdb          do RPM

$ sudo rpm --root /var/chroot -ihv --nodeps
centos-release-5-4.el5.centos.1.i386.rpm

$ sudo yum -y --installroot=/var/chroot        A mágica
install rpm                                    está aqui
Para ver depois…
•   rpm -q --requires | --whatrequires | --provides |
    --whatprovides

•   mount --bind /home /var/chroot/home/

•   Filesystem Hierarchy Standard

•   Welcome to Linux From Scratch

•   Montar chroot para outros sistemas (Ubuntu
    em CentOS)

Mais conteúdo relacionado

Mais procurados

Introdução ao Linux - aula 05
Introdução ao Linux - aula 05Introdução ao Linux - aula 05
Introdução ao Linux - aula 05Renan Aryel
 
Treinamento com SphinxTrain
Treinamento com SphinxTrainTreinamento com SphinxTrain
Treinamento com SphinxTrainGabriel Araujo
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiFrancisco Gonçalves
 
Sismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para PesquisaSismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para PesquisaCentro de Sismologia - USP
 
Temperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper UsbTemperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper UsbThiago Santos
 
(11) hardware, modulos
(11)   hardware, modulos(11)   hardware, modulos
(11) hardware, modulosAnderson Lago
 
Lab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantLab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantPedro Fernandes Vieira
 
Estrutura De Arquivos
Estrutura De ArquivosEstrutura De Arquivos
Estrutura De ArquivosJuliano Linux
 
Apostila de comandos linux resumidos (universidade católica de brasília)
Apostila de comandos linux   resumidos (universidade católica de brasília)Apostila de comandos linux   resumidos (universidade católica de brasília)
Apostila de comandos linux resumidos (universidade católica de brasília)SENAC RIO
 
Funtoo escla
Funtoo esclaFuntoo escla
Funtoo esclaDaniel
 
Funtoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremoFuntoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremoDaniel
 
Faça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZFaça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZRicardo Bánffy
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaLucas Brasilino
 

Mais procurados (20)

Ubuntued blog
Ubuntued blogUbuntued blog
Ubuntued blog
 
Introdução ao Linux - aula 05
Introdução ao Linux - aula 05Introdução ao Linux - aula 05
Introdução ao Linux - aula 05
 
Watt OS R6
Watt OS R6Watt OS R6
Watt OS R6
 
Linux como funciona esta fera
Linux como funciona esta feraLinux como funciona esta fera
Linux como funciona esta fera
 
Treinamento com SphinxTrain
Treinamento com SphinxTrainTreinamento com SphinxTrain
Treinamento com SphinxTrain
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-ti
 
Sismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para PesquisaSismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para Pesquisa
 
Temperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper UsbTemperatura Zabbix Procedimento Temper Usb
Temperatura Zabbix Procedimento Temper Usb
 
(11) hardware, modulos
(11)   hardware, modulos(11)   hardware, modulos
(11) hardware, modulos
 
Lab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantLab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrant
 
Estrutura De Arquivos
Estrutura De ArquivosEstrutura De Arquivos
Estrutura De Arquivos
 
Apostila de comandos linux resumidos (universidade católica de brasília)
Apostila de comandos linux   resumidos (universidade católica de brasília)Apostila de comandos linux   resumidos (universidade católica de brasília)
Apostila de comandos linux resumidos (universidade católica de brasília)
 
Funtoo escla
Funtoo esclaFuntoo escla
Funtoo escla
 
Funtoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremoFuntoo Gnu/Linux: Customização ao extremo
Funtoo Gnu/Linux: Customização ao extremo
 
Docker volumes
Docker volumesDocker volumes
Docker volumes
 
Shell Scipt - Comandos
Shell Scipt - ComandosShell Scipt - Comandos
Shell Scipt - Comandos
 
Squid
SquidSquid
Squid
 
Lab so-abertos-unidade3
Lab so-abertos-unidade3Lab so-abertos-unidade3
Lab so-abertos-unidade3
 
Faça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZFaça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZ
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
 

Destaque

WBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning BasicsWBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning BasicsWBConsulting
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerJim Yeh
 
chroot and SELinux
chroot and SELinuxchroot and SELinux
chroot and SELinuxShay Cohen
 
Chw00t: Breaking unices’ chroot solutions
Chw00t: Breaking unices’ chroot solutionsChw00t: Breaking unices’ chroot solutions
Chw00t: Breaking unices’ chroot solutionsPositive Hack Days
 
Understand how docker works
Understand how docker worksUnderstand how docker works
Understand how docker worksJustin Li
 
LXD: The hypervisor that isn't
LXD: The hypervisor that isn'tLXD: The hypervisor that isn't
LXD: The hypervisor that isn'ttych0
 
Hypervisor "versus" Linux Containers with Docker !
Hypervisor "versus" Linux Containers with Docker !Hypervisor "versus" Linux Containers with Docker !
Hypervisor "versus" Linux Containers with Docker !Francisco Gonçalves
 
LSA2 - 01 Virtualization with KVM
LSA2 - 01 Virtualization with KVMLSA2 - 01 Virtualization with KVM
LSA2 - 01 Virtualization with KVMMarian Marinov
 
Evoluation of Linux Container Virtualization
Evoluation of Linux Container VirtualizationEvoluation of Linux Container Virtualization
Evoluation of Linux Container VirtualizationImesh Gunaratne
 
Evolution of Linux Containerization
Evolution of Linux Containerization Evolution of Linux Containerization
Evolution of Linux Containerization WSO2
 
Lxd the proper way of runing containers
Lxd   the proper way of runing containersLxd   the proper way of runing containers
Lxd the proper way of runing containersMarian Marinov
 
LXD Container Hypervisor
LXD Container HypervisorLXD Container Hypervisor
LXD Container HypervisorDanial Behzadi
 
Performance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesPerformance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesSoheila Dehghanzadeh
 
Containers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesContainers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesShreyas MM
 
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1Etsuji Nakai
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to KubernetesImesh Gunaratne
 
簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能John L Chen
 

Destaque (20)

WBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning BasicsWBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning Basics
 
Namespace
NamespaceNamespace
Namespace
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
chroot and SELinux
chroot and SELinuxchroot and SELinux
chroot and SELinux
 
LSA2 - 02 chrooting
LSA2 - 02 chrootingLSA2 - 02 chrooting
LSA2 - 02 chrooting
 
Chw00t: Breaking unices’ chroot solutions
Chw00t: Breaking unices’ chroot solutionsChw00t: Breaking unices’ chroot solutions
Chw00t: Breaking unices’ chroot solutions
 
Understand how docker works
Understand how docker worksUnderstand how docker works
Understand how docker works
 
LXD: The hypervisor that isn't
LXD: The hypervisor that isn'tLXD: The hypervisor that isn't
LXD: The hypervisor that isn't
 
Hypervisor "versus" Linux Containers with Docker !
Hypervisor "versus" Linux Containers with Docker !Hypervisor "versus" Linux Containers with Docker !
Hypervisor "versus" Linux Containers with Docker !
 
LSA2 - 01 Virtualization with KVM
LSA2 - 01 Virtualization with KVMLSA2 - 01 Virtualization with KVM
LSA2 - 01 Virtualization with KVM
 
Evoluation of Linux Container Virtualization
Evoluation of Linux Container VirtualizationEvoluation of Linux Container Virtualization
Evoluation of Linux Container Virtualization
 
Evolution of Linux Containerization
Evolution of Linux Containerization Evolution of Linux Containerization
Evolution of Linux Containerization
 
Lxd the proper way of runing containers
Lxd   the proper way of runing containersLxd   the proper way of runing containers
Lxd the proper way of runing containers
 
LXD Container Hypervisor
LXD Container HypervisorLXD Container Hypervisor
LXD Container Hypervisor
 
Performance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesPerformance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual Machines
 
Containers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesContainers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to Kubernetes
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能
 

Semelhante a Criando ambientes chroot

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
Project HA
Project HAProject HA
Project HAKarpv
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Marlon Willrich
 
Debian 6: Instalação e Hardening
Debian 6: Instalação e HardeningDebian 6: Instalação e Hardening
Debian 6: Instalação e HardeningBruna Griebeler
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
Instalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosInstalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosAlexandre Almeida
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Wellington Silva
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosSistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosLuiz Arthur
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asteriskVicente Nobre
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores LinuxJoão Sá
 
Arquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxArquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxIvani Nascimento
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalaçãoLuís Eduardo
 

Semelhante a Criando ambientes chroot (20)

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
Compilando o Android 5 para o Nexus 5
Compilando o Android 5 para o Nexus 5Compilando o Android 5 para o Nexus 5
Compilando o Android 5 para o Nexus 5
 
Project HA
Project HAProject HA
Project HA
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
 
Debian 6: Instalação e Hardening
Debian 6: Instalação e HardeningDebian 6: Instalação e Hardening
Debian 6: Instalação e Hardening
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
Instalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosInstalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutos
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
MigraçãO
MigraçãOMigraçãO
MigraçãO
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosSistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
 
Asterisk
AsteriskAsterisk
Asterisk
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores Linux
 
Arquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxArquivos de Inicialização do Linux
Arquivos de Inicialização do Linux
 
Opennebula instalação
Opennebula instalaçãoOpennebula instalação
Opennebula instalação
 
Tutorial beagleboard
Tutorial beagleboardTutorial beagleboard
Tutorial beagleboard
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 

Mais de Rudá Moura

HTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSAHTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSARudá Moura
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Rudá Moura
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Python em (mais de) 10 minutinhos
Python em (mais de) 10 minutinhosPython em (mais de) 10 minutinhos
Python em (mais de) 10 minutinhosRudá Moura
 

Mais de Rudá Moura (6)

HTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSAHTTPS com TLS em Modo RSA
HTTPS com TLS em Modo RSA
 
K computer
K computerK computer
K computer
 
Pylibmc
PylibmcPylibmc
Pylibmc
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Python em (mais de) 10 minutinhos
Python em (mais de) 10 minutinhosPython em (mais de) 10 minutinhos
Python em (mais de) 10 minutinhos
 

Criando ambientes chroot

  • 1. Criação de ambientes em chroot Rudá Moura Novembro de 2009
  • 2. Quem sou eu? • Trabalhei de 1999 à 2001 no desenvolvimento de uma distribuição Linux (Conectiva Linux); • Passei a década de 2000 inteira trabalhando com Linux; • Agora eu uso o Mac OS X no desktop, mas trabalho com Linux em servidores.
  • 3. Propósito da apresentação • Entender o que é um ambiente chroot; • Criar um ambiente chroot; • Dar subsídios para a pessoa saber criar seus próprios ambientes em chroot.
  • 4. O que é um chroot? • É uma chamada de sistema (chroot syscall); • É um comando do Unix (chroot); • Permite trocar o root do sistema de arquivos para um outro diretório; • Na prática, permite isolar,em uma gaiola um programa, serviço ou distribuição; • Não é virtualização ou paravirtualização!
  • 6. Para que serve? • Permite criar ambientes isolados (gaiolas) de desenvolvimento, sem contaminar o ambiente original; • Permite criar gaiolas para rodar serviços (ssh, httpd, dns) em separado e protegido; Não existe mecanismo 100% seguro!
  • 7. Executando o chroot • chroot em /var/chroot (tanto faz o lugar) • /usr/sbin/chroot /var/chroot • /usr/sbin/chroot /var/chroot /bin/bash • O /var/chroot/ vira o / para o bash (do chroot)
  • 8. chroot com o Busybox “busybox.i386 : Statically linked binary providing simplified versions of system commands” (yum) $ sudo mkdir -p /var/chroot/bin $ sudo cp -a /sbin/busybox /var/chroot/bin/ $ sudo /usr/sbin/chroot /var/chroot/ busybox ash / $ /bin/busybox find / / Estou no /bin chroot! /bin/busybox
  • 9. / $ /bin/busybox ps PID Uid VmSize Stat Command Cadê o / ps: unable to open `/proc': No such file proc? or directory $ sudo mkdir -p /var/chroot/etc $ sudo cp -a /etc/fstab /var/chroot/etc/ Origem / $ /bin/busybox mkdir /proc Voltamos / $ /bin/busybox mount /proc ao chroot / $ /bin/busybox ps PID Uid VmSize Stat Command 10 648 S init [5] 20 SW< [migration/0] Todos os processos! 30 SWN [ksoftirqd/0] …
  • 10. chroot com o GNU Bash O Bash não é um binário estático, depende de libs dinâmicas! Só copiar o binário para o chroot não vai funcionar! $ ldd /bin/bash linux-gate.so.1 => (0x0024c000) libtermcap.so.2 => /lib/libtermcap.so.2 (0x06468000) libdl.so.2 => /lib/libdl.so.2 (0x00a49000) libc.so.6 => /lib/libc.so.6 (0x008d9000) /lib/ld-linux.so.2 (0x008b6000)
  • 11. $ sudo cp -a /bin/bash /var/chroot/bin/bash $ sudo mkdir -p /var/chroot/lib $ sudo cp -a /lib/libc.* /lib/libc-* /lib/libdl* /lib/ Para não libtermcap.so.2* /var/chroot/lib/ copiar somente links! / $ bash Finalmente bash-3.2#
  • 12. Melhorando o ambiente É importante copiar alguns arquivos do /etc e os arquivos de dispositivos (/dev). $ sudo cp -a /etc/passwd /etc/group /etc/hosts /etc/ resolv.conf /var/chroot/etc/ $ sudo /dev/MAKEDEV -d /var/chroot/dev/ -v generic
  • 13. chroot com o RPM $ sudo mkdir -p /var/chroot/var/lib/rpm $ sudo rpm --root /var/chroot/ --initdb Vamos precisar de RPMs para instalar (http:// centos.pop.com.br/5.4/os/i386/CentOS/)
  • 14. $ sudo rpm --root /var/chroot -ihv basesystem-8.0-5.1.1.el5.centos.noarch.rpm error: Failed dependencies: Oops, o pacote setup is needed by depende de basesystem-8.0-5.1.1.el5.centos.noarch outros! filesystem is needed by basesystem-8.0-5.1.1.el5.centos.noarch $ sudo rpm --root /var/chroot -ihv basesystem-8.0-5.1.1.el5.centos.noarch.rpm filesystem-2.4.0-2.el5.centos.i386.rpm Satisfazendo as setup-2.5.58-7.el5.noarch.rpm deps $ rpm --root /var/chroot -ihv rpm-4.4.2.3-18.el5.i386.rpm (uma lista enorme!)
  • 15. Considerações sobre o RPM em chroot • Nunca esqueça de passar o parâmetro --root (cuidado para não estragar o seu sistema); • O processo inteiro para ter o RPM instalado envolve instalar e satisfazer as dependências de pacote, algumas deps são óbvias; • Exige um pouco de “manha” para saber qual pacote tem o que, mas só se aprende fazendo; • Pode-se fazer instalações parciais, por exemplo, instalar até o Bash (via RPMs) e depois até o RPM.
  • 16. O yum é seu amigo $ sudo mkdir -p /var/chroot/var/lib/rpm Cria o banco $ sudo rpm --root /var/chroot --initdb do RPM $ sudo rpm --root /var/chroot -ihv --nodeps centos-release-5-4.el5.centos.1.i386.rpm $ sudo yum -y --installroot=/var/chroot A mágica install rpm está aqui
  • 17. Para ver depois… • rpm -q --requires | --whatrequires | --provides | --whatprovides • mount --bind /home /var/chroot/home/ • Filesystem Hierarchy Standard • Welcome to Linux From Scratch • Montar chroot para outros sistemas (Ubuntu em CentOS)