Buscar

Apostila_PWEB - Unidade 2_v0 2-2021

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
Apostila – Unidade 02 
 
Virtualização 
Administração de sistemas 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Módulo 1 
 
Disciplina: Plataforma de Desenvolvimento em Software Livre e Servidores Web 
 
Prof. Juvêncio Geraldo de Moura 
 
 
 
 
Versão 1.2 (junho/2021) 
 
 
 
 
 
 
2 
 
3 Virtualização 
 
 Um sistema computacional é formado por níveis, sendo o hardware a camada de 
nível mais baixo. Logo acima, encontramos o sistema operacional que oferece suporte para 
as aplicações. O modelo de máquina virtual, ou virtual machine (VM), cria um nível 
intermediário entre o hardware e o sistema operacional, denominado gerência de máquinas 
virtuais (Fig. 3.1). O gerenciador de máquina virtual, também conhecido por Hypervisor, cria 
diversas máquinas virtuais independentes, onde cada uma oferece uma cópia virtual do 
hardware, incluindo os modos de acesso, interrupções, dispositivos de E/S etc. (MAIA, 2013) 
 Virtualização é um processo que adiciona uma camada de abstração entre o 
hardware físico real e o sistema que faz uso dele. Em vez de o servidor acessar o hardware 
do computador diretamente, um componente intermediário chamado hypervisor cria um 
ambiente para Virtual Machine (VM), e o Sistema Operacional do servidor é executado 
 
Figura 1 - Máquina Virtual (CALUSBR`S, 2018) 
 
 
 
 
 
3 
neste ambiente. Em outras palavras, a virtualização implanta e mantém várias instâncias 
de um Sistema Operacional (VMs) em um único computador. (JKOLB, 2018) 
 O Hypervisor ou Virtual Machine Monitor – Monitor de Máquina Virtual (VMM) é 
responsável por fornecer ao sistema operacional visitante a abstração da máquina virtual. 
Ele controla o acesso dos sistemas operacionais visitantes aos dispositivos de hardware. 
(GETCARDHOST, 2018). 
 
 
 
 
 
 
 Na década de 1960, a virtualização já era uma tecnologia empregada pela IBM em 
seus mainframes. Este modelo cria o isolamento total entre cada VM, oferecendo grande 
segurança para cada máquina virtual. Se, por exemplo, uma VM executar uma aplicação 
que comprometa o funcionamento do seu sistema operacional, as demais máquinas virtuais 
não sofrerão qualquer problema. Apesar do isolamento das aplicações, as máquinas 
virtuais não estão livres de problemas, como, por exemplo, vírus e erros de software do 
sistema operacional ou aplicações da VM. Além dessas vantagens, existem diversas 
aplicações para a utilização de máquinas virtuais: (MAIA, 2013) 
• Portabilidade de código: um programa executável, em linguagem de máquina, 
precisa de uma plataforma de hardware específica para ser executado, tornando-o 
dependente desse ambiente. Se o programa for gerado em uma linguagem 
intermediária e uma VM fizer a tradução dos comandos para a plataforma onde o 
programa está́ sendo executado, a aplicação pode ser portada para qualquer 
ambiente sem a necessidade de se reescrever o programa. 
• Consolidação de servidores: é muito comum que os servidores de uma empresa 
funcionem com apenas parte de sua capacidade total de processamento, ou seja, 
existe a subutilização da UCP, memória principal e dispositivos de E/S dos sistemas 
computacionais. A ideia da consolidação é poder executar diversas aplicações que 
 
A virtualização permite que cada máquina virtual tenha seu próprio SO, aplicativos e 
serviços de rede. Ela pode ser aplicada a servidores, armazenamento e redes. 
A interconexão entre elas é possível por meio de interfaces de redes, switches, 
roteadores e firewalls virtuais. 
 
 
 
 
 
4 
estariam sendo processadas em diferentes servidores, cada qual com o seu 
hardware e sistema operacional, em uma única máquina, utilizando uma VM para 
cada uma das aplicações. Dessa forma, a consolidação permite a melhor utilização 
dos recursos computacionais e, além disso, também permite a redução de custos de 
infraestrutura, como energia elétrica, refrigeração, espaço físico e cabeamento de 
rede. 
• Aumento da disponibilidade: uma vez que cada VM pode ser copiada facilmente 
para a memória secundária, como um disco, caso haja algum problema com uma 
VM ou com o próprio sistema onde está́ sendo processada, basta restaurar a cópia 
da VM em outro servidor e rapidamente o ambiente pode ser novamente 
disponibilizado. 
• Facilidade de escalabilidade e balanceamento de carga: caso o sistema no qual 
a VM está́ sendo processada fique sobrecarregado e apresente problemas de 
desempenho, a VM pode ser facilmente migrada para um novo ambiente que possua 
maior capacidade de processamento. Dessa forma, é possível balancear a carga 
dos servidores e garantir o bom desempenho das aplicações. 
• Facilidade no desenvolvimento de software: as VMs permitem a criação de um 
ambiente independente para o desenvolvimento e teste de software sem o 
comprometimento das máquinas de produção. Além disso, é possível o teste do 
software em diferentes sistemas operacionais e suas versões sem a necessidade de 
um hardware dedicado. 
 
 A criação de um ambiente computacional virtual pode ser via hardware ou software. 
Para tanto, é necessário de um hypervisor. Esse software simula o hardware e é nele que 
instalamos o sistema operacional desejado. Existem diversos pacotes de software para 
máquinas virtuais, como o Mare, Oracle VirtualBox, Chen, Hype-V, entre outros. 
 Em um ambiente computacional virtual, existem dois componentes principais: o 
hospedeiro (host) e o convidado (guest): (CACIATO, 2009) 
• Hospedeiro: é o hypervisor executado diretamente sobre o hardware físico ou 
servidor, mas existem versões de hypervisor que necessitam do sistema operacional 
 
 
 
 
 
5 
para ser instalado, ou seja, existem duas versões: uma que o hypervisor também é 
o sistema operacional e uma que o hypervisor precisa de um sistema operacional 
para ser instalado. Esse hospedeiro é o hypervisor que você instala inicialmente 
sobre o servidor; 
• Convidado: é o sistema operacional, no entanto, não é tão restrito. O sistema 
operacional convidado é o ambiente computacional virtual que é executado sobre o 
hypervisor hospedeiro como uma máquina virtual. Ao contrário dos sistemas 
hospedeiros mais tradicionais, é possível manter simultaneamente vários sistemas 
convidados. 
 
3.1 Versões de hypervisor 
 
 Um Hypervisor ou VMM pode ser um software, firmware ou hardware que permite a 
criação de um ambiente computacional virtual. Agora vamos ver a diferença entre as 
principais versões. (CACIATO, 2009) 
• Hypervisor diretamente sobre o hardware: Essa versão tem incorporado o 
sistema operacional customizado, ou seja, é preparado para receber os convidados 
e tem total controle do hardware. Este é a melhor opção já que não existem várias 
camadas de software sobre o hardware sendo mais performático e seguro (Figura 2, 
Type 1). 
• Hypervisor dependente do sistema operacional: Essa versão por ser dependente 
do sistema operacional possui menos desempenho e segurança, já que temos que 
nos preocupar em administrar o sistema operacional base e o hypervisor (Figura 2, 
Type 2). 
 
 
 
 
 
 
6 
 
3.2 Vantagens e desvantagens 
 Existem diversas vantagens na virtualização, a seguir serão citadas as principais 
(MATTOS, 2018): 
• Segurança: com o uso de máquinas virtuais, pode-se definir qual é o melhor 
ambiente para executar cada serviço, com diferentes requerimentos de segurança, 
ferramentas diferentes e o sistema operacional mais adequado para cada serviço. 
Além disso, cada máquina virtual é isolada das demais. Usando uma máquina virtual 
para cada serviço, a vulnerabilidade de um serviço não prejudica os demais. 
• Confiança e disponibilidade: a falha de um software não prejudica os demais 
serviços. 
• Custo: a redução de custos é possível de ser alcançada com a consolidação de 
pequenos servidores em outros mais poderosos. Essa redução pode variar de 29% 
a 64%. 
• Adaptação às diferentes cargas de trabalho: variações na carga de trabalho 
podem sertratadas facilmente. Ferramentas autônomas podem realocar recursos de 
 
Figura 2 - Tipos de Hypervisor (Tipo 1 – dependente de hardware; Tipo 2 – dependente de software) 
 
 
 
 
 
7 
uma máquina virtual para a outra. 
• Balanceamento de carga: toda a máquina virtual está encapsulada no VMM. Sendo 
assim é fácil trocar a máquina virtual de plataforma, a fim de aumentar o seu 
desempenho. 
• Suporte a aplicações legadas: quando uma empresa decide migrar para um novo 
sistema operacional, é possível manter o sistema operacional antigo sendo 
executado em uma máquina virtual, o que reduz os custos com a migração. Vale 
ainda lembrar que a virtualização pode ser útil para aplicações que são executadas 
em hardware legado, que está sujeito a falhas e tem altos custos de manutenção. 
Com a virtualização desse hardware, é possível executar essas aplicações em 
hardwares mais novos, com custo de manutenção mais baixo e maior confiabilidade. 
 
 Por outro lado, existem as desvantagens da virtualização, sendo as principais: 
 
• Segurança: segundo Neil MacDonald, especialista de segurança da Gartner, hoje 
em dia, as máquinas virtuais são menos seguras que as máquinas físicas justamente 
por causa do VMM. Este ponto é interessante, pois se o sistema operacional 
hospedeiro tiver alguma vulnerabilidade, todas as máquinas virtuais que estão 
hospedadas nessa máquina física estão vulneráveis, já que o VMM é uma camada 
de software, portanto, como qualquer software, está sujeito a vulnerabilidades. 
• Gerenciamento: os ambientes virtuais necessitam ser instanciados, monitorados, 
configurados e salvos. Existem produtos que fornecem essas soluções, mas esse é 
o campo no qual estão os maiores investimentos na área de virtualização, 
justamente por se tratar de um dos maiores contratempos na implementação da 
virtualização. Vale lembrar que o Mare é a plataforma mais flexível e fácil de usar, 
mas ainda apresenta falhas que comprometem a segurança, assim como as demais 
plataformas. 
• Desempenho: atualmente, não existem métodos consolidados para medir o 
desempenho de ambientes virtualizados. No entanto, a introdução de uma camada 
extra de software entre o sistema operacional e o hardware, o VMM ou hypervisor, 
 
 
 
 
 
8 
gera um custo de processamento superior ao que se teria sem a virtualização. Outro 
ponto importante de ressaltar é que não se sabe exatamente quantas máquinas 
virtuais podem ser executadas por processador, sem que haja o prejuízo da 
qualidade de serviço. 
 
 Percebe-se que a virtualização trouxe inúmeros benefícios, sendo um dos maiores 
a capacidade de consolidar aplicativos em único sistema. A virtualização conduziu uma 
redução de custos através da possibilidade de um provisionamento mais rápido e uma 
capacidade de recuperação de desastres melhorada. Ambientes de desenvolvimento/QA1 
também se beneficiaram desta consolidação da virtualização, onde por exemplo, com uma 
maior utilização de servidores mais potentes liberou servidores não utilizados para 
montagem destes ambientes. (PAGOTO, 2018) 
 
3.3 VM vs Conteiner 
 
 A virtualização do sistema operacional tem crescido em popularidade na última 
década como um meio de permitir que o software funcione do mesmo modo quando movido 
de um servidor para outro. Os containers fornecem uma maneira de executar esses 
sistemas isolados em um único sistema operacional servidor/host. (PAGOTO, 2018) 
 Os containers ficam em cima de um servidor físico e seu sistema operacional 
hospedeiro. Cada container compartilha o kernel do SO host e geralmente, os binários e 
bibliotecas também. Componentes compartilhados são somente leitura e isso torna os 
containers excepcionalmente leve. Os containers têm tamanhos estimados em MB e levam 
segundos para serem iniciados contra os minutos e os vários gigabytes de uma VM inteira. 
(PAGOTO, 2018) 
 Containers fornecem o básico necessário para qualquer aplicativo ser executado em 
um sistema operacional hospedeiro. Você poderia pensar neles como máquinas virtuais 
que executam o software com apenas o suficiente para implantar um aplicativo. (PAGOTO, 
 
1QA (Quality Assurance): conjunto de atividades para garantir a qualidade nos processos de desenvolvimento. 
 
 
 
 
 
9 
2018) 
 Tecnicamente, o kernel Linux por si só não tem nenhum indício que existem 
Containers vivendo no andar de cima, mas containers podem, no entanto, partilhar recursos 
de kernel através de recursos como namespaces, cgroups e chroot. Estes permitem que 
os Containers isolem processos e possam gerir totalmente os recursos e garantir a 
segurança adequada. (PAGOTO, 2018) 
 No Linux, namespaces é uma maneira de embrulhar um recurso global do sistema 
em uma abstração que faz com que pareça que os processos dentro do namespace tenham 
a sua própria instância isolado do recurso global. Se namespaces ajuda os processos a 
terem seu próprio ambiente, chroot pode isolar os namespaces do resto do sistema e, 
assim, proteger contra ataques ou interferência de outros Containers no mesmo host. 
Usando namespaces e chroot, você pode criar um contêiner lógico com a sua própria visão 
do sistema, mas você também vai precisar alocar recursos para o seu novo Container. Isto 
pode ser feito usando cgroups, que é um recurso do kernel Linux responsável por isolar a 
utilização de recursos como CPU, memória, I/O de disco, e da rede, a partir de um conjunto 
de processos. (PAGOTO, 2018) 
 São estes três ingredientes que criam a magia de virtualização de Containers. A 
arquitetura básica é usada atualmente em uma verdadeira coleção de implementações, o 
mais famoso é o Docker e o Rkt da CoreOS. (PAGOTO, 2018) 
 Os benefícios dos containers se resumem em velocidade e leveza. Muitos containers 
podem ser colocados em um mesmo servidor, contra as VMs, que poucas podem residir no 
mesmo. Os containers são compartilháveis e podem ser usados em uma variedade de 
implantações de nuvens públicas e privadas, além do ambiente on premise acelerando o 
desenvolvimento e teste, facilitando o empacotamento de aplicações. Além disso os 
containers reduzem a carga de trabalho na gestão dos sistemas operacionais, já que eles 
compartilham o mesmo kernel, você tem menos sistemas operacionais nos seus servidores 
para gerenciar pacotes de atualização e segurança. (PAGOTO, 2018) 
 A diferença principal entre container e VM é que o container virtualiza o SO enquanto 
a VM virtualiza o hardware. No fim, velocidade, agilidade e portabilidade tornam os 
containers uma ótima tecnologia para facilitar o desenvolvimento de software e gestão de 
 
 
 
 
 
10 
infraestrutura de TI. (PAGOTO, 2018) 
 
3.4 Tecnologia Docker 
 
 A tecnologia Docker é uma plataforma de código aberto para desenvolvedores e 
administradores de sistemas que tem o objetivo de facilitar e tornar mais rápida a criação, 
implantação, gerenciamento e execução de aplicações distribuídas. (CLOUD21, 2018) 
 Hykes, que hoje é CTO da Docker, percebeu que não havia a necessidade de recriar 
um sistema operacional completo no processo de virtualização como acontece na 
abordagem de VM por HyperVisor. Pelo Docker é possível utilizar os mesmos recursos de 
SO em ambiente virtual isolado, chamado de contêiner. 
 Docker não é um sistema de virtualização tradicional. Enquanto em um ambiente de 
virtualização tradicional encontramos um SO completo e isolado, dentro do Docker temos 
recursos isolados que utilizando bibliotecas de kernel em comum (entre host e container), 
isso é possível pois o Docker utiliza como backend o conhecido Linux Conteiner (LXC). A 
Figura 3 apresenta a diferença entre a virtualização e containers. 
 
 
 
Figura 3 - Diferença entre virtualização e containers. 
 
 
 
 
 
11 
 O Docker possibilita o empacotamento de uma aplicação ou ambiente inteiro dentro 
de um container, e a partir desse momento o ambiente inteiro torna-se portável para 
qualquer outro Host que contenhao Docker instalado. 
 Isso reduz drasticamente o tempo de deploy de alguma infraestrutura ou até mesmo 
aplicação, pois não há necessidade de ajustes de ambiente para o correto funcionamento 
do serviço, o ambiente é sempre o mesmo, configure-o uma vez e replique-o quantas vezes 
quiser. 
 Outra facilidade do Docker é poder criar suas imagens (containers prontos para 
deploy) a partir de arquivos de definição chamados Dockerfiles (veremos isso melhor em 
posts futuros). 
 Não podemos nos esquecer também de que o Docker utiliza como backend default 
o LXC, com isso é possível definir limitações de recursos por container (memória, cpu, I/O, 
etc.) 
 Para ficar um pouco mais claro, podemos ver na imagem abaixo a diferença em se 
utilizar o LXC puro e o Docker. 
 
 O Docker trabalha utilizando cliente e servidor (toda a comunicação entre o Docker 
Figura 4 - LXC e Docker 
 
 
 
 
 
12 
Daemon e Docker client é realizada através de API), desse modo basta apenas que você 
tenha instalado o serviço do Docker em um lugar, e aponte em seu Docker Client para esse 
servidor. A plataforma do Docker em si utilizada alguns conjuntos de recursos, seja para a 
criação ou administração dos containers, entre esses conjuntos podemos destacar a 
biblioteca libcontainer, que é responsável pela comunicação entre o Docker Daemon e o 
backend utilizado, é ela a responsável pela criação do container, e é através dela que 
podemos configurar os limites de recursos por container. 
 
3.5 Principais Funcionalidades do Docker (ESCOLALINUX, 2018) 
• Contêineres facilmente portáveis: você pode criar uma imagem de toda a 
configuração e aplicativos instalados em seu contêiner, transferir e instalar em um 
outro host desde que tenha um Docker previamente instalado. 
• Versionamento: Docker permite que você versione as alterações de um contêiner 
de uma forma muito semelhante ao feito pelo GIT ou SVN. Isto permite, portanto, 
verificar as diferenças entre versões, fazer commit de novas versões e fazer rollback 
de uma dada versão. 
• Reutilização de componentes: as imagens criadas podem ser reutilizadas, como 
por exemplo, se diversas de suas aplicações utilizam um stack com Java 8, Tomcat 
8 e Oracle 12 você poderá criar uma imagem base contendo estes itens com sua 
instalação e configuração. Desta maneira esta imagem poderá ser reutilizada em 
diversos Contêineres diferentes. Podemos construir imagens Docker usando um 
arquivo Dockerfile e o comando de montagem docker build. O Dockerfile usa uma 
 
PLATAFORMA DOCKER 
 
Quando foi lançada, a plataforma Docker era baseada no Linux Containers (LXC). 
Atualmente já conta com interface própria que utiliza as funcionalidades de grupos de 
monitoramento (cgroups) e espaços de nomes (namespace) do Kernel, ou núcleo, do 
sistema operacional Linux, para criar e rodar ambientes virtuais de forma isolada em um 
único host (hospedeiro). Esse ambiente cria um contêiner onde são executados os 
aplicativos. (CLOUD21, 2018) 
 
 
 
 
 
 
13 
DSL - Domain Specific Language - simples com poucas instruções, porém 
suficientes para construir imagens Docker. A abordagem de criação via Dockerfile 
pode ser repetida quantas vezes for necessário, em quantos ambientes seja 
desejado além de permitir gerenciamento de versão no GIT/SVN das definições da 
infraestrutura. Com esta DSL o Docker consegue levar a Metodologia de Orientação 
a Objetos para o provisionamento da Infraestrutura. 
• Compartilhamento: o Docker Hub já possui milhares de contêineres com as mais 
diversas aplicações instaladas e configuradas, desta maneira você pode 
rapidamente criar sua aplicação com uma base desenvolvida por outra pessoa, ou 
ainda criar sua base e compartilhá-la. 
• CLI - Command Line Interface e API - Application Program Interface: Permite 
criação de Programas e Scripts que interagem com o Docker para provisionar 
serviços nos Contêineres. 
• Automatização de Implantação dentro dos Contêineres: Usando os 
provisionadores que por sua vez usam a API do Docker, podemos automatizar a 
implantação dos ambientes de software. 
 
• Licença Open Source: Licenciado como Apache License, Version 2.0 mantém os 
códigos fonte disponíveis para facilitar o desenvolvimento colaborativo. 
• Evita Dependency Hell: Um dos maiores problemas em múltiplos ambientes com 
os quais os desenvolvedores de software convivem diariamente é o gerenciamento 
de dependências. O Docker evita problemas neste gerenciamento. 
• Demanda Poucos Recursos de Hardware: Exige poucos recursos de processos, 
memória e espaço em disco. 
• Performance inigualável: é possível baixar uma imagem Fedora do repositório 
público na Internet em menos de um minuto e executar um comando simples num 
contêiner criado com esta imagem, a partir do computador Host, em menos de um 
segundo. 
• Ligação entre Contêineres: Conectar contêineres via mapeamentos de porta 
TCP/IP não é a única forma de disponibilizar recursos entre eles. Um contêiner 
 
 
 
 
 
14 
Docker pode se conectar a um outro via um sistema de ligação e enviar informações 
de um para o outro de forma eficiente e segura. Quando os contêineres estão ligados, 
a informação sobre o contêiner origem pode ser enviada para um contêiner destino. 
Isso permite que o contêiner destino possa acessar dados selecionados do contêiner 
origem. Como exemplo, podemos então criar um contêiner chamado web (destino) 
e ligá-lo a um contêiner chamado db (origem) usando um alias para o link chamado 
dblink, por exemplo. Para permitir a ligação o Docker cria um túnel seguro entre o 
contêiner origem e o contêiner destino, eliminando a necessidade de expor qualquer 
porta TCP/IP externamente a estes dois contêineres. 
 
 
 
 
 
 
3.6 Infraestrutura para projetos de contêineres 
 O projeto linuxcontainers.org/pt_br visa oferecer uma distro e um ambiente neutro 
para o desenvolvimento de tecnologias de contêiner Linux. Dentre os projetos ativos estão: 
LXC, LXD e LXCFS. (LINUXCONTAINERS, 2018) 
 LXC é bem conhecido como um kit de ferramentas, modelos, bibliotecas e ligações 
de idiomas. É de baixo nível, muito flexível e abrange quase todos os recursos suportados 
pelo kernel. LXC está pronto para produção com o LXC 1.0, obtendo 5 anos de atualizações 
de segurança e correções de erros (até abril de 2019). 
 LXD é a nova experiência LXC. Oferece uma experiência de usuário completamente 
nova e intuitiva com uma única ferramenta de linha de comando para gerenciar seus 
contêineres. Os recipientes podem ser gerenciados pela rede de forma transparente 
através de uma API REST. Também funciona com implantações em grande escala 
integrando-se ao OpenStack. 
 Já LXCFS (Userspace (FUSE) filesystem) oferece duas coisas principais: 
 
 
 
 
 
 
15 
• Arquivos de sobreposição para cpuinfo, meminfo, stat e uptime; 
• Uma árvore compatível com cgroupfs que permite gravações não privilegiadas. 
 
 Ele é projetado para solucionar as falhas de procfs, sysfs e cgroupfs exportando 
arquivos que combinam o que o usuário do sistema de contêiner esperaria. 
 O principal foco desses projetos é o sistema de contêineres. Ou seja, recipientes que 
oferecem um ambiente o mais próximo possível como o que você obteria de uma VM, mas 
sem a sobrecarga que acompanha a execução de um kernel separado e a simulação de 
todo o hardware. 
 
 
3.7 Instalação de máquinas virtuais para dev backend e frontend 
 Chegou a hora de praticar! Vamos fazer o download e a instalação da última versão 
do software de virtualização, Oracle VM VirtualBox 5.2 (https://www.virtualbox.org). Após, 
você irá criar duas máquinas virtuais; uma para uma distribuição Linux dev frontend e outra 
para backend, como conhecemos na semana anterior. A seguir é proposta uma sugestão, 
você pode escolher outras distribuições caso tenha curiosidade de conhecer uma específica. 
 
Teste os conhecimentos adquiridos! 
 
Faça um comparativo entre Hypervisor e Docker.Cite exemplos dessas duas 
tecnologias. 
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
___ 
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
___ 
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
___ 
_____________________________________________________________________
_____________________________________________________________________
 
 
 
 
 
16 
 Para dev frontend, vamos instalar o Linux Mint e para dev backend o Ubuntu Server 
com a utilização de Hypervisor, o Oracle Virtual Box. Para tanto será necessário criar duas 
máquinas virtuais. 
 Os tutoriais de instalação tanto do Linux Mint quanto do Ubuntu Server estão em 
links publicados no AVA. 
 Após a instalação, faça um tour pelas funcionalidades do Linux Mint. Já no Ubuntu 
server, iremos instalar o Docker, servidores e outras ferramentas. 
 
3.8 Instalando o Docker no Ubuntu Linux 
 Como vimos, o Docker é uma plataforma aberta usada por desenvolvedores e 
administradores de sistemas para construir, entregar e rodar aplicações distribuídas. É 
composto pelo Docker Engine, que é uma ferramenta leve de execução e empacotamento, 
e pelo Docker Hub, um serviço em nuvem responsável pelo compartilhamento de 
aplicações e automação de fluxos de trabalho. Ele permite que aplicações sejam 
 
Mãos na massa, ou melhor, no teclado e mouse! 
 
Instale o Linux Mint 20 e o Ubuntu Server 20.04 LTS em máquinas virtuais 
isoladas. Você poderá consultar o material disponibilizado no AVA e/ou realizar 
pesquisas na Internet. É possível encontrar diversos tutoriais e vídeos que irão 
auxiliar na execução dessas tarefas, tente realizar a conexão entre elas para testar 
uma aplicação simples de conexão remota, como o SSH. 
 
Faça as anotações e registros que você achar pertinentes. 
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
________ 
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
 
 
 
 
 
17 
rapidamente montadas e elimina as diferenças entre os ambientes de desenvolvimento, 
testes e produção. (ESCOLALINUX, 2018) 
 O Docker não é uma ferramenta de virtualização de máquinas, ele é um ambiente 
de virtualização de Linux, construído sobre os LinuX Contêineres (LXC), que utiliza as 
funcionalidades cgroups e namespacing do Kernel do Linux (e a linguagem Go) para criar 
e rodar ambientes Linux Virtuais isolados em um único host. Mais recentemente a equipe 
do Docker em parceria com 34 outras empresas fundaram a Open Container Initiative para 
padronizar conteineres e a forma de executá-los independente de sistema operacional. 
(ESCOLALINUX, 2018) 
 O Virtual Environment - VE roda diretamente sobre o kernel já existente (do host) e 
apenas cria um contêiner para executar seus aplicativos, em que também é possível recriar 
outra configuração de SO, já que este será apenas outro aplicativo rodando sobre o kernel. 
Vale observar que o Docker compartilha o kernel do Linux entre os ambientes e, portanto, 
seus contêineres não terão completo isolamento como acontece numa máquina real ou 
numa máquina virtual completa rodando sob Virtual Box, Hype-V ou Mare. (ESCOLALINUX, 
2018) 
 O Docker permite a implantação portátil por meio de máquinas, pois o Docker pode 
ser usado para criar um objeto único que contém todas as suas aplicações empacotadas o 
qual chamamos Imagem Docker. Este objeto pode ser transferido e rapidamente instalado 
em qualquer outro host Linux com Docker habilitado, incluindo máquinas reais ou virtuais 
rodando Linux, Windows ou MAC OSX. (ESCOLALINUX, 2018) 
 O Docker permite a reutilização de componentes, pois podemos "empilhar" pacotes 
já criados cada um com sua funcionalidade específica. Por exemplo, se você precisa criar 
várias máquinas que todos necessitam de banco de dados Oracle e WebServer Apache, 
podemos criar uma imagem base contendo o Oracle e outra contendo o Apache, e na 
sequência, construir e criar novos contêineres que utilizam estas imagens base já criadas. 
(ESCOLALINUX, 2018) 
 O Docker pode usar imagens disponíveis em bibliotecas compartilhadas. Existe um 
registro público onde podemos encontrar milhares de imagens já prontas 
(https://hub.docker.com/explore/). (ESCOLALINUX, 2018) 
 
 
 
 
 
18 
 Para instalar o Docker, você pode acessar a documentação disponível no site oficial 
(https://docs.docker.com/install/linux/docker-ce/ubuntu/) que está também no AVA. Observe 
a versão do seu Linux. Faça a instalação e experimente! 
 Para facilitar o entendimento e utilização do Docker disponibilizei, lá no AVA, um 
vídeo bem passo a passo para a criação de conteineres. 
 
 
3.9 Microsoft Azure e AWS 
 Segundo a Microsoft (2019), ao criar múltiplos recursos de um único computador ou 
servidor, a virtualização aprimora a escalabilidade e as cargas de trabalho enquanto utiliza 
menos servidores, gasta menos energia e requer menos custos de infraestrutura e 
manutenção. Há quatro categorias principais de virtualização. 
 I) Virtualização de área de trabalho: permite que um servidor centralizado sirva e 
gerencie desktops individualizados. 
 II) Virtualização de rede: desenvolvida para dividir a largura de banda da rede entre 
canais independentes que são posteriormente atribuídos a servidores ou dispositivos 
específicos. 
 III) Virtualização de software: que separa aplicativos do hardware e do sistema 
operacional. 
 IV) Virtualização de armazenamento: que combina múltiplos recursos de 
armazenamento de rede em um único dispositivo de armazenamento que pode ser 
acessado por diversos usuários. 
 O Microsoft Azure é um conjunto cada vez maior de serviços de nuvem para ajudar 
sua organização a enfrentar seus desafios de negócios. É a liberdade de criar, gerenciar e 
implantar aplicativos em uma enorme rede global usando suas ferramentas e estruturas 
favoritas. 
 A Amazon Web Services oferece serviços de computação em nuvem confiáveis, 
escaláveis e acessíveis. A AWS oferece um conjunto amplo de serviços globais de 
computação, armazenamento, banco de dados, análise, aplicativos e implementação que 
ajudam as organizações a se moverem mais rapidamente, baixarem custos de TI e 
 
 
 
 
 
19 
escalonarem aplicativos. 
 O Amazon Elastic Compute Cloud (EC2) é o serviço da Amazon Web Services usado 
para criar e executar máquinas virtuais na nuvem. A AWS denomina essas máquinas 
virtuais como “instâncias”. Em AWS (2019) você pode encontrar um guia detalhado que 
ajudará a executar com sucesso uma máquina virtual Linux no Amazon EC2 no nível 
gratuito da AWS, após criar uma conta gratuita. 
 Como as plataformas de nuvem pública líderes do mercado, o Azure e o AWS 
oferecem ambos um conjunto amplo e profundo de recursos com cobertura global. Mesmo 
assim,muitas organizações optam por usar ambas as plataformas juntas para ter mais 
opções e maior flexibilidade, bem como para ampliar seu risco e dependências com uma 
abordagem com várias nuvens. Empresas de consultoria e fornecedores de software 
também podem expandir e usar ambos o Azure e o AWS, visto que essas plataformas 
representam a maioria das demandas de nuvem do mercado. (MICROSOFT, 2019) 
 Nessa unidade não iremos aprofundar sobre essas duas excelentes ferramentas, 
devido ao extenso conteúdo. Mas, como forma de conhecimento, sugiro explorar essas 
duas opções de computação em nuvem que estão em alta e contribuem bastante para o 
desempenho e segurança das aplicações desenvolvidas atualmente. É uma infinidade de 
recursos oferecidos, vale a pena conhecer. 
 
 
 
. 
 
 
 
 
 
 
 
 
 
 
20 
4. Administração de sistemas Linux 
Vimos até aqui sobre o software livre, Linux e virtualização. Esse conteúdo foi 
essencial para compreender a importância e os benefícios desse sistema operacional na 
vida dos profissionais de TI e a vasta utilização nas empresas dos mais variados ramos. 
Veremos agora um pouco sobre o a administração de sistemas Linux, conhecendo 
sobre diretórios e arquivos, gerenciador de boot, gerenciamento de pacotes (APT), 
comandos básicos, gerenciamento de usuários, grupos e privilégios e gerenciamento de 
processos. 
 
4.1 Diretórios e arquivos 
 Muitos usuários têm dificuldades com o GNU/Linux porque não têm uma visão geral 
sobre o que está guardado em que local. Pode-se dizer que, no Linux, tudo é arquivo. Se 
há algo que não seja um arquivo, então este algo é um processo. No GNU/Linux, não há 
diferença entre arquivo e diretório, uma vez que um diretório é apenas um arquivo contendo 
nomes de outros arquivos. Imagens, músicas, textos, programas, serviços e assim por 
diante são todos arquivos. Dispositivos de entrada e saída, e geralmente, todos os 
dispositivos, são considerados como arquivos. 
 Os arquivos estão organizados de acordo com uma hierarquia, isto é, há critérios 
que preveem os principais diretórios e seu conteúdo. Estes critérios são definidos por um 
padrão, o FHS (Filesystem Hierarchy Standard). 
 
 
 
 
 
 
21 
 
4.2 Caminho absoluto X Caminho relativo 
Caminho de um diretório são os diretórios que devemos percorrer até chegar a ele. 
Todo caminho absoluto começa com uma 'barra', por exemplo: 
/home/estudante/pos/plataforma, /home/estudante/fabricadesoftware, 
esta 'barra' referência o diretório raiz (/), a partir do qual, todos caminhos absolutos derivam, 
formando uma árvore de diretórios. (DICAS-L, 2018) 
Todo caminho relativo não contém uma 'barra' no início. A referência é geralmente o 
diretório atual (pwd) do processo sendo executado. Por exemplo, se o diretório atual for o 
raiz (/), você pode simplesmente executar ls tmp em vez de ls /tmp. (DICAS-L, 2018) 
 
 
Figura 5 - Hierarquia de arquivos do Linux (LINUXPROGRAMAÇÃO, 2018) 
 
 
 
 
 
22 
 
4.3 Permissões de acesso 
 
O Linux foi desenvolvido para ser um sistema multiusuário. Isto significa que vários 
usuários podem ter configurações personalizadas, independentes das dos demais usuários, 
bem como diferentes usuários podem executar tarefas ao mesmo tempo numa mesma 
máquina. Assim sendo, cada usuário pode querer negar ou permitir o acesso a determinado 
arquivo ou diretório. Por isso, existem as chamadas permissões de acesso do Linux: para 
impedir o acesso indevido de outros usuários ou mesmo de programas mal intencionados 
a arquivos e diretórios. 
 
Donos, grupos, outros 
 
 No Linux, para cada arquivo são definidas permissões para três tipos de usuários: o 
dono do arquivo, um grupo de usuários e os demais usuários. 
Dono: é o usuário que criou o mesmo. Somente o dono e o usuário root podem mudar as 
permissões para um arquivo ou diretório. 
Grupo: é um conjunto de usuários. Grupos foram criados para permitir que vários usuários 
tivessem acesso a um mesmo arquivo. 
Outros: são os usuários que não se encaixam nos tipos de usuários anteriores. 
 
Tipos de permissões 
 
 Os três tipos básicos de permissão para arquivos e diretórios são: 
r (read): permissão de leitura para arquivos, se for diretório, permite listar o conteúdo. 
w (write): permissão de escrita para arquivos, se for diretório, permite gravar arquivos ou 
outros diretórios dentro dele. É a permissão que permite excluir um arquivo ou diretório. 
x (execute): permite executar um arquivo, se for diretório, permite que ele seja acessado 
pelo comando cd. 
 
 
 
 
 
23 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 6 - Entendendo o resultado do comando ls -l (as permissões de acesso). 
 
 
 
 
 
24 
 
 
 
 
 
 
 
 
4.4 Modo texto 
 O modo texto também é chamado de linha de comando. Ao aprender a trabalhar no 
modo texto, o usuário do GNU/Linux pode otimizar várias tarefas e ter um melhor 
desempenho do hardware, uma vez que o modo gráfico consome mais recursos. 
 Para acessar o modo texto o usuário pode acessar um terminal “puro”, pressionando 
as teclas “CTRL+ALT+F1” (substituir o F1 por F2, de F3 até F6 também funciona na maior 
parte das distros) e depois voltar ao modo gráfico pressionando “ALT+F7”. 
 Uma tela de login (Figura 6) do modo texto geralmente mostra alguma informação 
sobre a máquina na qual você está trabalhando, o nome da máquina e um prompt para 
login. Para logar-se, digite o nome de usuário e tecle Enter. Agora você deverá digitar sua 
senha e teclar Enter novamente. O usuário não verá nenhuma indicação de que está 
digitando a senha, mas isso é normal no GNU/Linux. 
 Outra maneira é usar um “emulador de terminal”, isto é, dentro do modo gráfico, 
abre-se um programa que funciona como linha de comando. 
 
Figura 7 - Tela terminal para digitar login e senha. 
 
 
 
 
 
25 
Shell 
 De qualquer uma das duas formas, o que você verá rodando (após logar-se ou 
acessar o Terminal) é um programa chamado shell, que é um interpretador de comandos. 
 
Bash 
 O Bash (Bourne Again Shell) é o shell desenvolvido para o projeto GNU, que se 
tornou padrão nas várias distribuições Linux. 
 
4.5 Comandos básicos 
 Iremos conhecer alguns comandos. Não é preciso decorar, para aprendê-los de fato, 
você deve ir praticando com os exercícios propostos e conforme a sua necessidade. 
 
Prompt 
 O prompt do Bash tem a seguinte aparência: 
username@nomedamáquina:diretório$ 
 No nosso caso, podemos encontrar algo parecido: 
estudante@ubuntu-server:~$ 
estudante é o nome do usuário, ubuntu-server é o nome da máquina, ~ é o diretório em que 
o usuário se encontra (~ representa o diretório home do usuário, nesse caso, 
/home/estudante), e o $ é o símbolo do tipo de usuário (nesse caso, um usuário normal. 
Se fosse o usuário root (administrador do sistema), o símbolo seria #. 
 
Sintaxe dos comandos 
 É importante lembrar que a linha de comando é case sensitive, isto é, diferencia 
letras maiúsculas de minúsculas. Portanto, “echo” é diferente de “Echo”, que são 
diferentes de “ECHO”. Isso também vale para nomes de diretórios e arquivos. 
 Os comandos em geral são em letras minúscula. Muitos deles aceitam argumentos. 
Os argumentos que começam com um ou (dois) “-” são opções. 
 
 
 
 
 
 
26 
comando -opção1 -opção 2 -opção3 argumento 
 
 Quando os argumentos forem arquivos ou diretórios, tanto o caminho absoluto como 
o relativo poderão ser usados. 
 Você pode digitar os comandos e nomes de arquivos ou diretórios pela metade e 
depois pressionar Tab. O shell “tentará completar” o que falta para você. 
 
pwd: mostra o nome e o caminho do diretório atualização. 
ls: lista os arquivos e subdiretórios de um ou mais diretórios. 
ls -la: lista todos os arquivos e diretórios, incluindo os ocultos. 
ls -r: lista o conteúdo de um diretório e dos subdiretórios, recursivamente. 
ls -l: usa o formato longo para listagem, o que significa que serão listados detalhes 
sobrecada arquivo e diretório mostrado. 
 
 
 
 
 
 
 
27 
 
mkdir: cria novos diretórios. 
rmdir: remove um ou mais diretórios vazios. 
rm -rf: remove diretório com conteúdo. 
touch: cria novos arquivos vazios e também muda a data e a hora de criação de arquivos 
existentes. 
rm: remove arquivos e diretórios. 
cp: copia arquivos. 
mv: move e renomeia arquivos e diretórios. 
cat: concatena arquivos e imprime o resultado no terminal. 
find: procura por diretórios e arquivos no disco. 
clear: limpa a tela. 
exit: sai do shell. 
echo: mostra um texto. 
date: imprime ou modifica a data e o horário do sistema. 
chmod: muda permissões de arquivos ou diretórios. 
passwd: atualiza informações dos usuários. 
Figura 8 - Detalhes da resposta ao comando ls -l. 
 
 
 
 
 
28 
su: muda de usuário ou torna-se superuser (administrador de sistema ou usuário root). 
sudo: obtém privilégio de outros usuários (sobretudo do usuário root) para executar 
determinadas tarefas. 
wc: conta linhas, palavras e bytes de um arquivo ou do que for escrito no terminal. 
| “pipe”: faz com que a saída de um comando seja enviada como entrada para o 
próximo comando. 
>: direciona a saída de um comando para um arquivo ou dispositivo. 
>>: também direciona a saída de um comando para um arquivo ou dispositivo, sem 
substituir o conteúdo do arquivo, apenas acrescenta ao final. 
man: mostra uma página de manual para um determinado comando. 
nano [nome_do_arquivo]: cria um arquivo texto dentro do diretório atual com o nome 
especificado. 
apropos: faz buscas de palavras em um banco de dados que contém descrições curtas 
de comandos e programas. 
--help: serve para obter ajuda sobre o comando em questão. 
shutdown -r now: serve para reiniciar o sistema. 
shutdown -h now: serve para desligar o sistema. 
 
Instalando programas pela linha de comando 
 O apt-get é baseado no APT (Advanced Packaging Tool), que é um gerenciador 
de pacotes que permite instalar e atualizar programas de forma prática, resolvendo 
dependências automaticamente. O APT está presente em várias distros, como Debian e 
Ubuntu. 
 Com o apt-get é possível, portanto, instalar, remover e atualizar programas. 
 Para usar o apt-get, o primeiro passo e rodar o comando apt-get update, que 
faz com que o apt-get baixe a lista com os pacotes disponíveis. Isso permite que ele crie 
uma espécie de banco de dados com os pacotes disponíveis, em que cada um pode ser 
encontrado e qual endereço contém a versão mais recente. Este comando deve ser 
executado periodicamente. O ideal é que você o use uma vez por semana, ou sempre que 
 
 
 
 
 
29 
for fazer alguma instalação importante. 
$ sudo apt-get update 
 Depois disso, você poderá instalar os programas desejados, usando a seguinte 
sintaxe: 
$sudo apt-get install [nome do programa] 
 Para desinstalar um programa, também é muito simples: 
$sudo apt-get remove [nome do programa] 
 
 Finalmente, existe a opção de atualizar todo o sistema, o que é feito usando os 
comandos: 
#apt-get update (baixa a lista de pacotes disponíveis) 
#apt-get upgrade (verifica todos os pacotes do sistema e tenta atualizar todos de uma 
vez) 
 
4.6 Gerenciamento de boot 
 
 O processo de inicialização (boot) do Linux é o procedimento para inicializar o 
sistema. Consiste em tudo o que acontece desde quando o computador é ligado até que a 
interface do usuário esteja operacional. (SEMPREUPDATE, 2018) 
 Depois de começar a usar o Linux, você perceberá que ter um bom entendimento 
das etapas do processo de inicialização pode ajudá-lo a solucionar problemas. Bem como 
adaptar o desempenho do computador às suas necessidades. (SEMPREUPDATE, 2018) 
 Por outro lado, o processo de inicialização pode ser bastante técnico. 
 
 
 
 
 
30 
 
 
Figura 9 - Etapas do boot no Linux. 
 
 
 
 
 
31 
 
O GRUB 
 GRUB é a sigla para GRand Unifield Bootloader. Trata-se de um gerenciador de boot 
desenvolvido inicialmente por Erich Stefan Boleyn, disponibilizado como software GNU. 
Entre seus principais recursos está a capacidade de trabalhar com diversos sistemas 
operacionais, como o Linux, o Windows e as versões BSD, e seu consequentemente 
suporte a vários sistemas de arquivos, como o ext2, ext3, reiserfs, FAT, FFS, entre outros. 
(INFOWESTER, 2018) 
 Um dos motivos mais óbvios para o GRUB ser usado é sua capacidade de permitir 
que o usuário escolha um dos sistemas operacionais instalados em seu computador. Em 
outras palavras, o GRUB é capaz de trabalhar com "multiboot". Além disso, esse 
gerenciador também é capaz de "bootar" sistemas em discos SCSI ou mesmo carregá-los 
através de imagens disponíveis em rede. 
 
Configuração do GRUB 
 Geralmente, o GRUB faz uso do arquivo /boot/grub/menu.lst para definir e 
carregar sua configuração (um detalhe importante: dependendo da distribuição, o GRUB 
pode usar outro diretório e outro nome de arquivo, como grub.conf ou menu.conf). Nele, 
a primeira coisa que chama a atenção é sua forma de trabalhar com os discos rígidos do 
computador. Ao invés de referenciar esses dispositivos como /dev/hda1, /dev/hda2, etc, 
ele o faz através dos termos (hd0,0), (hd0,1) e assim por diante. Observe a tabela abaixo 
para um melhor entendimento: 
 
Padrão GRUB 
/dev/hda1 (hd0,0) 
/dev/hda2 (hd0,1) 
/dev/hdb1 (hd1,0) 
/dev/hdb2 (hd1,1) 
 
 
 
 
 
 
32 
 O GRUB chama o HD principal do computador de hd0 (enquanto o Linux o chama 
de hda). Um disco secundário recebe o nome de hd1 (o Linux o chama de hdb) e assim 
se segue. Para trabalhar com as partições do HD, o GRUB as referencia através de um 
número inserido após uma vírgula. Assim, a primeira partição recebe o número 0 (zero) - 
hd0,0 -, à segunda partição é atribuído o número 1 - hd0,1 - e assim por diante. É importante 
frisar que, nesse caso, o GRUB não faz distinção entre discos IDE e SCSI. 
 Agora que você já sabe como o GRUB trata os discos da máquina, abaixo segue, 
como exemplo, o conteúdo de um arquivo menu.lst: 
 
default 0 
timeout 5 
fallback 1 
splashimage=(hd0,1)/grub/splash.xpm.gz 
 
title Fedora Core (2.6.9-1.667) 
root (hd0,1) 
kernel /boot/vmlinuz-2.6.9-1.667 ro root=/dev/hda2 
initrd /boot/initrd-2.6.9-1.667.img 
 
title Windows 10 
rootnoverify (hd0,0) 
makeactive 
chainloader +1 
 
 A primeira linha - default 0 - indica ao GRUB qual sistema operacional inicializar 
caso o usuário não faça nenhuma escolha. No exemplo, ele vai "bootar" o Fedora Linux, 
pois o número 0 faz referência ao primeiro sistema listado no arquivo. Caso o Windows 10 
tivesse que ser carregado por padrão, bastaria mudar a linha em questão para default 1, 
pois no arquivo esse sistema é o segundo a ser listado (note que o GRUB faz a listagem 
começando em zero). 
 
 
 
 
 
33 
 
 As demais linhas e configurações desse gerenciador de boot podem ser encontradas 
em INFOWESTER (2018). 
 
4.7 Usuários, grupos e privilégios 
 Criar e remover usuários é tarefa básica para qualquer administrador de 
computadores e, muitas vezes, é conhecimento necessário também para quem usa o Linux 
em casa e compartilha a máquina com outros membros da família. (CANALTECH, 2018) 
 
Usuário root e Ubuntu 
 Por padrão, o Ubuntu vem com o usuário root "desabilitado". Esse usuário é o 
administrador do sistema e possui acesso a qualquer arquivo e comando do Linux. E por 
"desabilitado" entenda que você não pode se logar no sistema como root, mas mesmo 
assim é capaz de usar as super habilidades dele. 
 
Adicionar e remover usuários 
 Criar um usuário novo no Ubuntu Linux é bastante simples e requer poucas linhas 
de comando no Terminal. Basta executar o comando adduser por meio do sudo e indicar 
como parâmetro o nome do novo usuário. Em seguida, é preciso responder a algumas 
perguntas para concluir o processo, veja a Figura 10. 
 
 
 
 
 
34 
 Note que, além da senha exigida pelo sudo para executar o comando adduser, será 
necessário informaruma senha para o usuário que está sendo criado e, em seguida, 
preencher informações como o nome e telefone da pessoa que ficará responsável por ele. 
 Você pode confirmar a criação do novo usuário acessando o sistema a partir dele. 
Para isso, use o comando su seguido do nome do novo usuário. Acompanhando o exemplo 
deste artigo, a linha a ser digitada seria su canaltech. Se tudo estiver certo, basta digitar 
a nova senha para personificar o novo usuário do sistema. Caso deseje retornar ao usuário 
anterior, ou seja, interromper a nova sessão no Terminal, execute o comando exit. 
 Quando o assunto é a exclusão de usuários, tudo funciona de maneira similar, porém 
com o comando deluser, como no exemplo a seguir: 
$sudo deluser canaltech 
 Porém, note que esse tipo de operação traz algumas implicações na segurança do 
sistema e que devem ser levadas em conta pelo administrador. Ao excluir um usuário, o 
comando deluser por si só não apaga o diretório home dele e, assim, outros usuários 
poderão encontrar meios de acessar esse conteúdo, caso desejem. 
 Por isso, vale a pena alterar as permissões desse diretório, para evitar que dados 
importantes sejam copiados ou apagados. Se quiser remover o usuário com o diretório 
Figura 10 - Criando usuário no Linux. 
 
 
 
 
 
35 
home dele, use o comando sudo deluser -r nomedousuário. 
 
Grupos de usuários 
 Outro recurso interessante do Linux é a possibilidade de agregar usuários em grupos. 
Isso é muito útil, por exemplo, em ambientes empresariais. Com base em certas regras, 
você poderia criar um diretório acessível para todos os funcionários de determinado setor, 
mas permitindo a apenas um deles o direito de remover, adicionar ou editar arquivos 
daquela pasta. 
 Para adicionar ou remover grupos, existem comandos semelhantes aos que vimos 
até o momento: addgroup e delgroup. A sintaxe é a mesma: sudo 
addgroup/delgroup nomedogrupo. Porém, para adicionar um usuário a determinado 
grupo, o comando é um pouco diferente: sudo adduser/deluser nomeusuário 
nomedogrupo. 
 
4.8 Gerenciamento de processos 
 
 Nessa seção serão apresentados os comandos de processos: 
 
shutdown -h now/halt: Desliga o computador. 
<Ctrl>+<Z>: Suspende o processo temporariamente. 
top: Processos que consomem mais recursos do sistema. 
jobs: Lista os processos em foreground (execução primária)/background 
(execução em segundo plano). 
bg: Manda processo para o background. 
fg: Manda processo para o foreground. 
nice/renice: Altera prioridades de execução de um processo. 
ps -auxw: Lista todos os processos do sistema. 
time: Calcula o tempo decorrente do início ao término de um processo. 
kill -HUP <número do processo>: Reinicia o processo. 
 
 
 
 
 
36 
kill -9 <número do processo>: Finaliza (mata) o processo. 
killall processo: Finaliza (mata) o processo pelo nome. 
killall -HUP processo: Reinicia o processo pelo nome. 
 
 
 
 
 
37 
 
 
 
Teste os conhecimentos adquiridos! 
 
REALIZE ESSA TAREFA NO TERMINAL DO UBUNTU SERVER. 
 
1. Inicie o Linux Ubuntu Server e faça o login com o usuário que você criou. 
2. Acesse o diretório/tmp e crie um diretório com o nome de exercicios. 
3. Dentro desse diretório, crie um arquivo texto (com o nome comandos.txt), 
utilizando o editor nano, contendo informações de 7 comandos (no mínimo), com suas 
respectivas funcionalidades. 
4. Mova o arquivo do diretório exercicios para o diretório home do usuário que você 
está logado com o novo nome comandos-linux.txt. 
5. Liste o conteúdo do diretório exercicios. Visualize as horas do sistema. 
6. Crie dois grupos de usuários. Logo, crie quatro usuários; dois em um grupo e dois 
cadastrados em outro grupo. Lembre-se de alterar o dono, grupo e incluir a senha. Em 
outro terminal, teste o acesso de um usuário criado. 
7. Volte para o seu terminal e crie um diretório em /tmp com o nome revisão. 
8. Copie o arquivo comando-linux.txt do seu diretório para o diretório 
renomeado no exercício anterior. Visualize o conteúdo do arquivo criado com o 
comando CAT. 
9. Exclua o diretório comandos-do-linux. 
10. Visualize todos os comandos que você realizou durante esta tarefa. Localize qual 
o comando que você limpou a tela e execute-o sem ter que digitá-lo novamente. 
11. O que é Grub? Descubra qual é o arquivo de configuração do Grub. Onde ele fica 
localizado? Quais são as possibilidades de inicialização de sistemas operacionais 
disponíveis no seu computador (supondo que ele você tinha o Windows e agora você 
instalou o Linux)? Como modificar a ordem dos sistemas disponíveis ou configurar a 
inicialização padrão um determinado sistema operacional, ou seja, o que você deve 
alterar no arquivo de configuração do Grub? 
12. Digite o código para desligar o computador em dois minutos. 
 
 
 
 
 
 
38 
5. Referências 
ANUNCIAÇÃO, Heverton. Linux Total e Software Livre. Rio de Janeiro: Editora Ciência 
Moderna Ltda, 2007. 
 
AWS. Disponível em https://aws.amazon.com/pt/getting-started/tutorials/launch-a-virtual-
machine/. Acessado em 29/03/2019. 
 
CACIATO, Luciano Eduardo. Virtualização e Consolidação dos Servidores do Datacenter. 
UNICAMP, 2009. 
 
CALUSBR’S BLOG. Máquinas Virtuais – Seu contexto nos Dias Atuais. Disponível em 
https://calusbr.wordpress.com/2010/05/18/maquinas-virtuais/. Acessado em 18/09/2018. 
 
CANALTECH. Disponibilizado em https://canaltech.com.br/linux/gerenciando-usuarios-no-
linux/. Acessado em 20/09/2018. 
 
CLOUD21. Disponibilizado em https://cloud21.com.br/computacao-em-nuvem/docker-e-
hypervisor-veja-vantagens-das-duas-tecnologias/. Acessado em 18/09/2018. 
 
DICAS-L. Disponibilizado em http://www.dicas-l.com.br/arquivo/caminho_absoluto 
_e_caminho_relativo.php#.W6cVi-XBSUk. Acessado em 20/09/2018. 
 
ESCOLALINUX. Disponibilizado em https://www.escolalinux.com.br/blog/o-docker-e-a-
virtualizacao-enxuta. Acessado em 19/09/2018. 
 
INFORWESTER. Disponibilizado em https://www.infowester.com/lingrub.php. Acessado em 
20/09/2018. 
 
JKOLB. Virtualização. Disponível em http://jkolb.com.br/virtualizacao/. Acessado em 
18/09/2018. 
 
LINUXPROGRAMAÇÃO. Disponível em 
https://linuxeprogramacao.blogspot.com/2013/07/organizacao-dos-diretorios-linux.html. 
Acessado em 20/09/2018. 
 
MAIA, L. P. Arquitetura de Redes de Computadores. 2ª edição. Rio de Janeiro: Editora LTC, 
2013. 
 
MATTOS, Diogo Menezes Ferrazani. Virtualização. Disponível em 
https://www.gta.ufrj.br/grad/08_1/virtual/VantagenseDesvantagens.html. Acessado em 
18/09/2018. 
 
MICROSOFT AZURE. Disponível em https://azure.microsoft.com/pt-br/solutions/. 
 
 
 
 
 
39 
Acessado em 29/03/2019. 
 
MUNDODOCKER. Disponibilizado em https://www.mundodocker.com.br/o-que-e-docker/. 
Acessado em 18/09/2018. 
 
PAGOTO, Thiago. Virtualização de Containers (Docker) X Vms. Disponibilizado em 
https://www.aprendacloud.com.br/containers-docker-vms/. Acessado em 18/09/2018.

Continue navegando