SlideShare uma empresa Scribd logo
Introdu¸c˜ao Implementa¸c˜ao
Namespace
Lu´ıs Eduardo
lets@cin.ufpe.br
Universidade Federal de Pernambuco
Agosto 2015
Introdu¸c˜ao Implementa¸c˜ao
Summary I
1 Introdu¸c˜ao
2 Implementa¸c˜ao
Estrutura de dados
Clone Flags
System Calls
Introdu¸c˜ao Implementa¸c˜ao
Introdu¸c˜ao
a
Limita o escopo do Kernel a nomes e a estruturas de dados
utilizados gradualmente por processos para prover isola¸c˜ao.
Observa¸c˜ao
Existem 10 namespaces definidos (por´em apenas 6 implementados)
Mount (mnt)
Process ID (pid)
Network (net)
Interprocess Call (ipc)
Unix Timesharing System (uts)
User (user)
security*
security key*
device*
Introdu¸c˜ao Implementa¸c˜ao
Introdu¸c˜ao
Implementado para oferecer maneiras de isolar processos
Introdu¸c˜ao Implementa¸c˜ao
Introdu¸c˜ao
Implementado para oferecer maneiras de isolar processos
Permite inserir checkpoint/restore (C/R), importante para
sistemas que s˜ao executados em ambientes HPC
Introdu¸c˜ao Implementa¸c˜ao
Introdu¸c˜ao
Implementado para oferecer maneiras de isolar processos
Permite inserir checkpoint/restore (C/R), importante para
sistemas que s˜ao executados em ambientes HPC
Permite integrar live-migration
Introdu¸c˜ao Implementa¸c˜ao
Introdu¸c˜ao
Implementado para oferecer maneiras de isolar processos
Permite inserir checkpoint/restore (C/R), importante para
sistemas que s˜ao executados em ambientes HPC
Permite integrar live-migration
Utilizado em projetos como containers (LXC, OpenVZ, etc),
CRIU.
Introdu¸c˜ao Implementa¸c˜ao
Implementa¸c˜ao
Mount namespaces foi o primeiro namespace a ser
implementado, em 2002 no kernel 2.4.19
User namespace foi o ´ultimo namespace a ser implementado e
tornou-se dispon´ıvel junto com os outros tipos no kernel 3.8
Observa¸c˜ao
Exceto o User namespace, todos precisam da capacidade
(capability) CAP SYS ADMIN
Introdu¸c˜ao Implementa¸c˜ao
Summary
1 Introdu¸c˜ao
2 Implementa¸c˜ao
Estrutura de dados
Clone Flags
System Calls
Introdu¸c˜ao Implementa¸c˜ao
Estrutura de dados
Implementa¸c˜ao da estrutura nsproxy no
include/linux/nsproxy.h
Introdu¸c˜ao Implementa¸c˜ao
Estrutura de dados
a
Todas as estruturas de nsproxy possuem
um objeto user ns
User namespace ´e membro da estrutura
de credenciamento (cred)
cred representa o contexto de seguran¸ca
de um processo
O objeto nsproxy ´e criado atrav´es do
m´etodo create nsproxy()
nsproxy ´e liberado atrav´es do m´etodo
free nsproxy()
O descritor de processo (task struct)
possui um ponteiro para nsproxy
Introdu¸c˜ao Implementa¸c˜ao
Summary
1 Introdu¸c˜ao
2 Implementa¸c˜ao
Estrutura de dados
Clone Flags
System Calls
Introdu¸c˜ao Implementa¸c˜ao
Clone Flags
O que s˜ao
Flags utilizadas para suportar a cria¸c˜ao de namespaces (em
especial, utilizadas na system call clone()
S˜ao 6:
CLONE NEWNS: mount namespace
CLONE NEWUTS: unix timesharing system namespace
CLONE NEWIPC: inter-process call namespace
CLONE NEWPID: process id namespace
CLONE NEWNET: networking namespace
CLONE NEWUSER: user namespace
Implementado em: include/linux/sched.h
A system call clone() ´e utilizada para criar novos processos. Foi
adaptada para suportar novas flags, criando um processo e
adicionando a um namespace espec´ıfico.
Introdu¸c˜ao Implementa¸c˜ao
Summary
1 Introdu¸c˜ao
2 Implementa¸c˜ao
Estrutura de dados
Clone Flags
System Calls
Introdu¸c˜ao Implementa¸c˜ao
System Calls
Foram adicionadas 2 system calls:
unshare()
setns()
Introdu¸c˜ao Implementa¸c˜ao
unshare()
Defini¸c˜ao
Respons´avel por criar um objeto nsproxy e adicion´a-lo ao processo
que chamou o system call. Requer uma Clone Flag para identificar
qual namespace dever´a ser criado.
Quando a CLONE NEWPID ´e passada, ele chama a system call
fork(), diferenciando seu comportamento tradicional.
Implementado em: kernel/fork.c
Introdu¸c˜ao Implementa¸c˜ao
setns()
Defini¸c˜ao
Respons´avel por adicionar um processo que chamou a system call
a um namespace existente.
Assinatura do m´etodo: setns(int fd, int nstype), onde:
fd (file descriptor): Um descritor que refere-se a um
namespace. Localizado no diret´orio:/proc/$PID/ns/
nstype (opcional): Especifica atrav´es de uma Clone Flag qual
deve ser o tipo do namespace.
Valor 0, fd pode assumir qualquer tipo.
Valor de nstype diferente do tipo de fd: Retorna -EINVAL
Implementado em: kernel/nsproxy.c
Introdu¸c˜ao Implementa¸c˜ao
Namespace
Lu´ıs Eduardo
lets@cin.ufpe.br
Universidade Federal de Pernambuco
Agosto 2015

Mais conteúdo relacionado

Mais procurados

Palestra thiago cavacante virtualização
Palestra thiago cavacante virtualizaçãoPalestra thiago cavacante virtualização
Palestra thiago cavacante virtualização
marleigrolli
 
FreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeFreeBsd com Alta Disponibilidade
FreeBsd com Alta Disponibilidade
Boteco 4Linux
 
Invasaocom exploits
Invasaocom exploitsInvasaocom exploits
Invasaocom exploits
Nauber Gois
 
Nagios+ubuntu16
Nagios+ubuntu16Nagios+ubuntu16
Nagios+ubuntu16
Eduardo Charquero
 
FreeBSD para leigos
FreeBSD para leigosFreeBSD para leigos
FreeBSD para leigos
Pedro Neto
 
OpenSolaris a Céu Aberto
OpenSolaris a Céu AbertoOpenSolaris a Céu Aberto
OpenSolaris a Céu Aberto
José Maria Silveira Neto
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
Vicente Nobre
 
Apresentação OpenSUSE 11.3 para Desenvolvedores - Portuguese
Apresentação OpenSUSE 11.3 para Desenvolvedores - PortugueseApresentação OpenSUSE 11.3 para Desenvolvedores - Portuguese
Apresentação OpenSUSE 11.3 para Desenvolvedores - Portuguese
Komputer
 
Servidores linux
Servidores linuxServidores linux
Servidores linux
Marcelo Gomes
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Tchelinux
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 
Customizando Slackware
Customizando SlackwareCustomizando Slackware
Customizando Slackware
Hudson Figueredo
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores Linux
Alessandro Silva
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
Caio Cutrim
 
Combo video aulas servidor linux + comandos shell linux
Combo video aulas servidor linux + comandos shell linuxCombo video aulas servidor linux + comandos shell linux
Combo video aulas servidor linux + comandos shell linux
Video Aulas Linux e Mikrotik
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básicoAdriano Melo
 
Kubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 lKubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 l
ginho17
 
Trabalho sistemas operacionais
Trabalho sistemas operacionaisTrabalho sistemas operacionais
Trabalho sistemas operacionais
Fernando Gomes Chaves
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
SoftD Abreu
 
Utilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.JsUtilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.Js
KingHost - Hospedagem de sites
 

Mais procurados (20)

Palestra thiago cavacante virtualização
Palestra thiago cavacante virtualizaçãoPalestra thiago cavacante virtualização
Palestra thiago cavacante virtualização
 
FreeBsd com Alta Disponibilidade
FreeBsd com Alta DisponibilidadeFreeBsd com Alta Disponibilidade
FreeBsd com Alta Disponibilidade
 
Invasaocom exploits
Invasaocom exploitsInvasaocom exploits
Invasaocom exploits
 
Nagios+ubuntu16
Nagios+ubuntu16Nagios+ubuntu16
Nagios+ubuntu16
 
FreeBSD para leigos
FreeBSD para leigosFreeBSD para leigos
FreeBSD para leigos
 
OpenSolaris a Céu Aberto
OpenSolaris a Céu AbertoOpenSolaris a Céu Aberto
OpenSolaris a Céu Aberto
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
 
Apresentação OpenSUSE 11.3 para Desenvolvedores - Portuguese
Apresentação OpenSUSE 11.3 para Desenvolvedores - PortugueseApresentação OpenSUSE 11.3 para Desenvolvedores - Portuguese
Apresentação OpenSUSE 11.3 para Desenvolvedores - Portuguese
 
Servidores linux
Servidores linuxServidores linux
Servidores linux
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 
Customizando Slackware
Customizando SlackwareCustomizando Slackware
Customizando Slackware
 
Seguranca em Servidores Linux
Seguranca em Servidores LinuxSeguranca em Servidores Linux
Seguranca em Servidores Linux
 
GDG Conf Node JS sem segredos
GDG Conf Node JS sem segredosGDG Conf Node JS sem segredos
GDG Conf Node JS sem segredos
 
Combo video aulas servidor linux + comandos shell linux
Combo video aulas servidor linux + comandos shell linuxCombo video aulas servidor linux + comandos shell linux
Combo video aulas servidor linux + comandos shell linux
 
Mini-curso de linux básico
Mini-curso de linux básicoMini-curso de linux básico
Mini-curso de linux básico
 
Kubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 lKubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 l
 
Trabalho sistemas operacionais
Trabalho sistemas operacionaisTrabalho sistemas operacionais
Trabalho sistemas operacionais
 
Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
Utilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.JsUtilizando Docker para escalonar aplicações Node.Js
Utilizando Docker para escalonar aplicações Node.Js
 

Destaque

Criação de ambientes em chroot
Criação de ambientes em chrootCriação de ambientes em chroot
Criação de ambientes em chroot
Rudá Moura
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerJim Yeh
 
chroot and SELinux
chroot and SELinuxchroot and SELinux
chroot and SELinux
Shay Cohen
 
LSA2 - 02 chrooting
LSA2 - 02 chrootingLSA2 - 02 chrooting
LSA2 - 02 chrooting
Marian Marinov
 
Chw00t: Breaking unices’ chroot solutions
Chw00t: Breaking unices’ chroot solutionsChw00t: Breaking unices’ chroot solutions
Chw00t: Breaking unices’ chroot solutions
Positive Hack Days
 
Understand how docker works
Understand how docker worksUnderstand how docker works
Understand how docker works
Justin Li
 
LXD: The hypervisor that isn't
LXD: The hypervisor that isn'tLXD: The hypervisor that isn't
LXD: The hypervisor that isn't
tych0
 
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 KVM
Marian Marinov
 
Evoluation of Linux Container Virtualization
Evoluation of Linux Container VirtualizationEvoluation of Linux Container Virtualization
Evoluation of Linux Container Virtualization
Imesh 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 containers
Marian Marinov
 
LXD Container Hypervisor
LXD Container HypervisorLXD Container Hypervisor
LXD Container Hypervisor
Danial 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 Machines
Soheila 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 Kubernetes
Shreyas MM
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Eueung Mulyana
 
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
Etsuji Nakai
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
Imesh Gunaratne
 
簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能簡介 Linux 的 Network Namespace 功能
簡介 Linux 的 Network Namespace 功能
John L Chen
 

Destaque (19)

Criação de ambientes em chroot
Criação de ambientes em chrootCriação de ambientes em chroot
Criação de ambientes em chroot
 
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 Namespace

Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
eliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
 
Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1
Ivo Calado
 
Apresentação Monografia
Apresentação MonografiaApresentação Monografia
Apresentação Monografia
Leon Homar
 
I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespes
luizfelipemz
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
Caio Cutrim
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
Daniel
 
Back track apresentação
Back track   apresentaçãoBack track   apresentação
Back track apresentação
Kleber Santos
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
Luciano Ramalho
 
Exercicios linux
Exercicios linuxExercicios linux
Exercicios linux
Alex Santos Silva
 
Windows Vista , Seven , Server 2008 r2
Windows Vista , Seven , Server 2008 r2Windows Vista , Seven , Server 2008 r2
Windows Vista , Seven , Server 2008 r2
Flávio de Almeida Navarro
 
Implantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linuxImplantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linuxSoftD Abreu
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
Eduardo de Lucena Falcão
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shellMarcio Pereira
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
Julio Viegas
 
SO2 - Windows 7
SO2 - Windows 7SO2 - Windows 7
SO2 - Windows 7
Silvio Carréra
 
Iptables layer7
Iptables layer7Iptables layer7
Iptables layer7
Paulo Steinhauser
 

Semelhante a Namespace (20)

Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1
 
Apresentação Monografia
Apresentação MonografiaApresentação Monografia
Apresentação Monografia
 
I Workshop de Redes do Iespes
I Workshop de Redes do IespesI Workshop de Redes do Iespes
I Workshop de Redes do Iespes
 
GDG NodeJS Sem Segredos
GDG NodeJS Sem SegredosGDG NodeJS Sem Segredos
GDG NodeJS Sem Segredos
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Back track apresentação
Back track   apresentaçãoBack track   apresentação
Back track apresentação
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Exercicios linux
Exercicios linuxExercicios linux
Exercicios linux
 
Apresentacao Aula03 So
Apresentacao Aula03 SoApresentacao Aula03 So
Apresentacao Aula03 So
 
Windows Vista , Seven , Server 2008 r2
Windows Vista , Seven , Server 2008 r2Windows Vista , Seven , Server 2008 r2
Windows Vista , Seven , Server 2008 r2
 
Implantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linuxImplantação de sistemas desegurança com linux
Implantação de sistemas desegurança com linux
 
Sistemas Distribuídos - Clusters
Sistemas Distribuídos - ClustersSistemas Distribuídos - Clusters
Sistemas Distribuídos - Clusters
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shell
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
SO2 - Windows 7
SO2 - Windows 7SO2 - Windows 7
SO2 - Windows 7
 
Iptables layer7
Iptables layer7Iptables layer7
Iptables layer7
 

Namespace