
Nesta primeira aula, vamos falar um pouco mais sobre:
O que compõem um sistema Linux
O que são e como funcionam as distribuições Linux
Distribuições mais usadas no mercado, tanto para Desktop quanto para Servidores
Vou deixar alguns links complementares para o site do Kernel Linux e também para o site do CentOS, que é a distribuição que vamos utilizar.
O Vagrant é amplamente utilizado para fazer o spin-up de máquinas virtuais de forma extremamente rápida, usando um hypervisor por trás (VMWare, VirtualBox, KVM, etc).
Nesta aula você vai aprender a utilizar o Vagrant para criar máquinas do CentOS 7, que vai lhe poupar algumas boas horas instalando o sistema.
OBS: Primeiro você precisa do VirtualBox instalado, depois deve instalar o Vagrant.
[POSSÍVEIS ERROS]
Bringing machine 'default' up with 'libvirt' provider...
Error while connecting to libvirt: Error making a connection to libvirt URI qemu:///system?no_verify=1&keyfile=/root/.ssh/id_rsa:
Esse erro significa que o Vagrant está tentando usar o libvirt ao invés do VirtualBox, então você tem duas opções:
Remover o libvirt
Forçar a execução com VirtualBox
Recomendo a segunda opção para garantir que não vai quebrar nada. Aqui você pode fazer de duas formas:
$ vagrant up --provider=virtualbox
Seguir a documentação em anexo neste módulo. Você pode rodar esse comando para que toda a vez que inicie uma nova sessão, ele sempre configure a variável: $ echo 'export VAGRANT_DEFAULT_PROVIDER=virtualbox' >> .bashrc
The provider 'virtualbox' that was requested to back the machine 'default' is reporting that it isn't usable on this system. The
reason is shown below:
Vagrant has detected that you have a version of VirtualBox installed that is not supported by this version of Vagrant. Please install one of the supported versions listed below to use Vagrant:
4.0, 4.1, 4.2, 4.3, 5.0, 5.1, 5.2, 6.0
Você provavelmente instalou uma versão do Vagrant direto do repositório da sua distro. Recomendo ir no site do Vagrant e instalar a última versão disponível.
O FHS (ou File System Hierarchy) é um standard criado para garantir que cada distribuição Linux tenha os mesmos diretórios na sua árvore.
Essa árvore é conhecida por dois nomes: “/“ ou “root filesystem”. Por isso que todos os diretórios estão dentro do “/“.
Seguindo este padrão, conseguimos evitar problemas como: mudar de distribuição e tudo ser totalmente diferente.
O processo de boot do Linux, desde quando pressionado o botão de power, consiste em:
Power - Fase onde os componentes receberão energia elétrica.
Pre-POST & POST - Fase onde os componentes de hardware serão testados para averiguar se está tudo OK, já que não faz sentido bootar um sistema que tenha um hardware danificado.
BIOS - Após os testes de hardware, o firmware da placa-mãe é iniciado, também conhecido como BIOS, armazenado na CMOS mantida pela pilha da placa-mãe.
MBR & UEFI - Dependendo de como o sistema está instalado, uma ação diferente será tomada. UEFI é o modo mais recente e amplamente utilizado.
Grub - Ambas as opções anteriores irão carregar o Grub 2, o famoso bootloader que vai carregar o Kernel posteriormente.
Kernel - O coração do sistema operacional Linux. Ele vai usar o Initrd como auxiliar neste processo.
Initrd - Usa o como um arquivo temporário de drivers durante o boot do equipamento.
Init - Por fim, o primeiro processo do sistema (com PID 0) é iniciado, podendo ser tanto o init quanto o systemd.
Deixei alguns materiais complementares para uma leitura posterior.
O Grub 2 é o bootloader responsável pela inicialização do sistema operacional. Saber configurar ele é de suma importância até mesmo para resolver problemas de boot e conseguir recuperar o sistema quando algum problema aparece.
Em anexo nos links desse modulo você encontra algumas opções de configuração do mesmo.
SysV vs systemd, são vantagens e desvantagens que nos levam a uma longa discussão.
O systemd foi implantado pelo time da Red Hat e hoje é amplamente utilizado em todas as distribuições (com exceção do Slackware que ainda usa SysV).
Nesta aula, vamos ver um pouco mais sobre a diferença entre eles e como o systemd tem facilitado a nossa vida.
Além disso, existe um conceito chamado de runlevel, usado para determinar o nível de execução usado pelo nosso sistema. Esse conceito é um pouco complexo de entender, principalmente se você está chegando ao Linux agora. E é aí que os systemd targets entram em ação e abstraem a complexidade dos runlevels para um nível mais end-user.
O systemctl é o utilitário usado para controlar praticamente tudo relacionado ao systemd. É o front-end de comunicação com o daemon do systemd.
Nesta aula, vamos aprender algumas das coisas que podemos fazer com ele. Veja nos links adicionais o manual oficial do mesmo.
Vamos começar a dar nossos primeiros passos com o gerenciamento de permissões no Linux.
É importante que você tenha em mente como é estruturado isso:
1. Disco rígido (HD) ou disco sólido (SSD).
2. Tabela de partição, MBR ou GPT.
MBR: Pode ter até 4 partições primarias, ou seja, usamos 3 primarias e uma lógica, sendo que a lógica pode ser estendida para outras.
GPT: Pode ter até 128 partições primarias.
Existem vários utilitários para gerenciar partições no Linux, sendo gparted, parted, fdisk, gdisk… Sendo que aqui vamos utilizar o fdisk.
Com o fdisk é possível gerenciar partições desde a tabela de partição até a criação das partições de verdade.
Depois de criado a partição, precisamos dar a ele um sistema de arquivos, que vai nos permitir o uso normal (copiar arquivos, criar diretórios, etc).
Existem diversos sistemas de arquivos disponíveis, como por exemplo:
EXT4(3,2)
Btrfs
ReiserFS
XFS
ZFS
Cada um tem um uso específico, pros e contras. O EXT4 e XFS são os mais utilizados e com maior suporte dentro da comunidade.
Podemos usar tanto o mkfs, quanto o mke2fs para formatar a partição.
Lembrando que o mke2fs é usado somente para os sistema de arquivos EXT4(3,2).
Para montar qualquer dispositivo ao longo do boot do sistema operacional Linux, devemos editar o arquivo /etc/fstab.
Este arquivo possui uma nomenclatura bem específica no quesito de montagem:
1. Dispositivo a ser montado (UUID, /dev/* ou LABEL).
2. Ponto de montagem.
3. Sistema de arquivos a ser utilizado.
4. Parâmetros de montagem.
5. Vai usar dump?
6. Vai usar fsck no boot?
Veja o manual do mesmo nos links complementares.
Caso haja algum desligamento do sistema indesejado, como por exemplo com uma queda de enegia elétrica, são grandes as chances do sistemas de arquivos corromper ou enfrentar algum problema.
São nesses casos que o fsck se torna útil e nos ajuda a "costurar" o sistema de arquivos. São raros os casos que vamos realmente utilizar ele, mas é de suma importância que você esteja a par da existência dele.
Se o sistema de arquivos for um EXT(2,3,4), podes utilizar o e2fsck também.
O LVM é um ótimo recurso e amplamente utilizado para fazer o gerenciamento de storage de forma dinâmica.
Basicamente, o LVM trabalha com três camadas:
PV - Physical Volume.
VG - Volume Group.
LV - Logical Volume.
Sendo que o LV é a última camada e é ela que nos permite colocar um sistema de arquivos em cima para começar a gravar arquivos.
A grande vantagem do LVM é que podemos expandi-lo facilmente para aumentar seu espaço. Então, se eu tiver um LV de 10GB e quiser estender o mesmo para 20GB, posso fazer com LVM de forma dinâmica.
É importante ressaltar que o LVM é amplamente utilizado por hypervisors como Xen, e consequentemente por hyperscalers que usam o Xen por baixo dos panos, como é o caso do OpenStack.
A forma de gerenciamento de pacotes no Linux é um pouco diferente do que utilizar o Windows.
Basicamente, temos duas formas de instalação de pacotes:
Externa (usando pacotes .rpm, .deb, .tar...)
Pelo repositório (usando yum, apt, dnf...)
No nosso caso, estamos utilizando o CentOS, que é baseado no Red Hat Enterprise Linux, usando o yum/rpm como gerenciador de pacotes.
O RPM é usado para instalar pacotes no formato .rpm, que são basicamente os .exe do Windows. É importante lembrar que o rpm não instala as dependências, então caso o .rpm não contenha todas as bibliotecas, você vai precisa do yum para realizar o trabalho.
Em anexo, você encontra uma documentação diretamente do site da Red Hat.
O yum é o instalador de pacotes que busca pacotes nos repositórios oficiais do CentOS, e que consequentemente já trás todas as dependências consigo, fazendo com que não haja quebra de pacotes.
Uma coisa que algumas empresas de grande porte acabam fazendo é criando o seu próprio repositório, então elas mesmas podem testar os pacotes, e se tudo ocorrer bem, ele entra no repositório da empresa.
Sempre que uma nova sessão do Bash é iniciada, alguns arquivos são lidos para definir algumas pré-configurações, sendo tanto arquivos globais quanto específicos do usuário.
Os arquivos que estão dentro do /etc são globais.
Os arquivos que estão dentro do $HOME do usuário são específicos dele.
Também é importante lembrar alguns termos:
interactive login shell - Uma sessão de Bash interativa, ou seja, uma sessão SSH ou acessando uma TTY pelo CTRL+ALT+F(1,2,3,4...).
interactive non-login shell - Uma sessão do Bash que não é necessariamente de login, por exemplo quando está logado pela GUI e então abre um Terminal.
non-interactive non-login shell - Um script que roda em background, por exemplo com agendamento do Cron.
non-interactive login shell - Quando você roda algum comando remotamente usando SSH por exemplo, mas sem logar por SSH diretamente, geralmente enviado usando um pipe. Muito raro de ser usado.
Caso queira alguma configuração específica quando iniciar o Bash, sugiro modificar algum desses arquivos.
Há uma pequena diferença entre o uso das aspas duplas e aspas simples:
aspas duplas - Vai interpretar tudo como uma string, exceto os caracteres "$, ` e \".
$ é usado para variáveis do shell
`` é usado para rodar comandos e extrair a sua saída
\ é usado para definir que o próximo dígito deve obrigatoriamente ser tratado como caractere normal
aspas simples - Vai interpretar tudo como caractere normal, sem exceções.
Em anexo você encontra uma documentação diretamente do manual do Bash.
Como você já deve ter percebido, podemos tudo que fazemos pela interface gráfica usando apenas um Terminal.
Neste módulo começamos com a criação de diretórios e arquivos no Linux.
Por mais que pareça inútil, os comandos para processamento de texto são usados para fazer leitura de dados no uso do Terminal, e principalmente durante o desenvolvimento de scripts em Shell.
Não vou citar cada um deles, mas sugiro que comece a brincar com cada no Terminal.
Talvez os dois mais poderosos processador/filtros de texto da linha de comando do Linux.
Inclusive, existem livros dedicados somente a esses comandos.
Com o grep você vai conseguir realizar diferentes tipos de filtro, mas vai precisar de um outro utilitário para tomar uma ação em cima dessa saída.
Já o sed você pode usar uma expressão e também tomar uma ação em cima do mesmo. Por outro lado, isso torna o sed muito mais complexo também!
Uma vez eu ouvi uma frase que era o seguinte: "O melhor SysAdmin é o mais preguiçoso".
Isso se deve ao fato de que o mais preguiçoso sempre vai buscar a alternativa que dê menos trabalho e seja mais automatizado.
Para que isso seja feito, podemos utilizar um recurso bem bacana chamado de Expressões Regulares, que nos permite que escrever uma expressão específica e posteriormente tomar uma ação com o resultado encontrado.
As expressões regulares não são algo específico do Linux. Entretanto, algumas ferramentas do Linux possuem o suporte nativo as mesmas, o que facilita muito o processamento de texto. As ferramentas grep e sed são o melhor exemplo.
O redirecionamento de comandos no Linux consiste basicamente em compreender os três principais file descriptors:
0 - stdin (entrada)
1 - stdout (saída)
2 - stderr (erros)
Caso façamos um redirecionamento usando o >, saiba que o valor padrão será o stdout.
Se quiser aprofundar seus estudos sobre isso, sugiro ler um pouco sobre file descriptors.
Seja bem-vindo ao treinamento Formação Profissional Linux, o material mais completo de Linux do mercado que vai te levar de um conhecimento básico até um conhecimento avançado.
Se você é um administrador Linux ou um estudante Linux e quer aprender o Linux raiz do zero ao avançado para ter uma melhor prospecção de carreira, você está no lugar correto.
Ao final deste treinamento você não vai somente aprender a usar o Linux, mas se sentir confortável para resolver qualquer problema utilizando a linha de comando, implementar serviços avançados e arquitetar uma infraestrutura open-source.
Este treinamento foi criado para ser 100% prático, ou seja, todos os conteúdos que explico eu demonstro diretamente no meu Terminal para que você possa replicar no seu ambiente de testes. No momento que chegarmos na parte de servidores, uma base teórica é repassada sobre cada serviço do Linux e depois partimos para a configuração do mesmo.
Veja os módulos que você irá aprender:
Módulo 1: Introdução ao treinamento.
Módulo 2: Introdução a distribuições Linux.
Módulo 3: Instalação com VirtualBox e Vagrant.
Módulo 4: Estrutura de diretórios.
Módulo 5: Processo de boot.
Módulo 6: systemd.
Módulo 7: Partições e sistema de arquivos.
Módulo 8: LVM.
Módulo 9: Gerenciamento de pacotes.
Módulo 10: Bash.
Módulo 11: Documentações.
Módulo 12: Compactação e compressão.
Módulo 13: Gerenciamento de processos.
Módulo 14: Hardware e módulos.
Módulo 15: Vim.
Módulo 16: Gerenciamento de permissões.
Módulo 17: Link simbólico e link físico.
Módulo 18: Encontrar arquivos e diretórios.
Módulo 19: Introdução ao Shell Script.
Módulo 20: Agendamento de tarefas com Cron.
Módulo 21: Gerenciamento de usuários.
Módulo 22: Redes.
Módulo 23: SSH.
Módulo 24: NTP.
Módulo 25: RAID.
Módulo 26: DNS.
Módulo 27: FTP.
Módulo 28: NFSv4.
Módulo 29: HTTP.
Módulo 30: Proxy.
Módulo 31: DHCP.
Módulo 32: Rsyslog.
Módulo 33: Rsync (+bônus script de back-up).
Módulo 34: SMTP.
Módulo 35: IMAP.
Módulo 36: Firewall.
Módulo 37: LDAP.
Módulo 38: SAMBA (AD e Fileserver).
Além de toda essa tonelada de conteúdo, você terá acesso a:
Materiais em PDF complementares referente aos tópicos de serviços de rede
Exercícios práticos e questionários para fixação do conteúdo
Suporte do instrutor
Slides das aulas disponíveis para download
E aí, está pronto para colocar a sua carreira nos trilhos? Te vejo na primeira aula.