Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos Bootcamp Administrador Linux Douglas Rafael Silva 2021 Fundamentos Bootcamp Administrador Linux – Página 2 de 69 Fundamentos Bootcamp Administrador Linux Douglas Rafael Silva © Copyright do Instituto de Gestão e Tecnologia da Informação. Todos os direitos reservados. Fundamentos Bootcamp Administrador Linux – Página 3 de 69 Sumário Capítulo 1. Um pouco de história, FHS e instalação do sistema ........................... 6 1.1. Um pouco de história e distribuições ............................................................... 6 1.2. Padrão de hierarquia do sistema de arquivos (FHS) ....................................... 8 1.3. Instalação VirtualBox e Putty ........................................................................... 9 1.4. Instalação do CentOS 7 ................................................................................. 13 1.5. Instalação de pacotes .rpm ............................................................................ 26 1.6. Gerenciador de pacotes “yum” ....................................................................... 27 Capítulo 2. Comandos básicos ............................................................................ 29 2.1. Conhecendo o shell e explorando o sistema de arquivos .............................. 29 2.2. Pedindo ajuda e curingas do shell ................................................................. 30 2.3. Gerenciando arquivos e diretórios ................................................................. 32 2.4. Leitor de texto ................................................................................................ 33 2.5. Compressão de arquivos ............................................................................... 34 2.6. Editor de texto Vi ............................................................................................ 36 2.7. Variáveis de ambiente.................................................................................... 37 2.8. Tipos de arquivos e Links .............................................................................. 38 Capítulo 3. Redirecionamentos e Filtros .............................................................. 40 3.1. Redirecionamentos >, >>, tee e pipe ............................................................. 40 3.2. Comandos head, tail e sort ............................................................................ 40 3.3. Comandos find, locate e xargs ....................................................................... 41 3.4. Comandos cut, awk, tr, sed e grep ................................................................ 42 Capítulo 4. Shell Script ........................................................................................ 45 Fundamentos Bootcamp Administrador Linux – Página 4 de 69 4.1. Introdução a shell script (aspas, crase e $) .................................................... 45 4.2. Passando parâmetros para o script ............................................................... 46 4.3. Loop “for” ....................................................................................................... 47 4.3.1. Loop “for” (Parte 1) .................................................................................. 47 4.3.2. Loop “for” (Parte 2) .................................................................................. 48 4.4. Condicionais (if, else, elif) e o comando read ................................................ 50 4.5. Variável especial $? && e || ........................................................................... 50 4.6. Gerando logs ................................................................................................. 52 4.7. Condicional “case” ......................................................................................... 52 4.8. Loop com “while” e ‘funções” ......................................................................... 53 Capítulo 5. Gerenciamento de processos............................................................ 55 5.1. PID, processo init e load average .................................................................. 55 5.2. Comandos ps, kill, killall e pkill ....................................................................... 56 5.3. Processos em foreground, background e prioridades .................................... 56 Capítulo 6. Comandos básicos de rede ............................................................... 58 6.1. Verificando as interfaces e adicionando IP .................................................... 58 6.2. Rotas.............................................................................................................. 59 6.3. Fixando as configurações de rede ................................................................. 60 6.4. Resolução de nomes ..................................................................................... 60 6.5. Verificando conexões (netstat, telnet e nc) .................................................... 61 Capítulo 7. Gerenciamento de usuários e grupos ............................................... 63 7.1. Gerenciamento de usuários ........................................................................... 63 7.2. Gerenciamento de grupos .............................................................................. 64 Fundamentos Bootcamp Administrador Linux – Página 5 de 69 Capítulo 8. Permissões de arquivos e diretórios ................................................. 66 8.1. Definindo permissões de arquivos e diretórios .............................................. 66 8.2. Alterando os donos de arquivos ..................................................................... 67 8.3. Atributos especiais ......................................................................................... 67 Referências.................. ............................................................................................ 69 Fundamentos Bootcamp Administrador Linux – Página 6 de 69 Capítulo 1. Um pouco de história, FHS e instalação do sistema 1.1. Um pouco de história e distribuições Antes do surgimento do Linux, já existiam alguns sistemas operacionais proprietários, como o DOS e o Unix. O Unix nasceu nos anos 60 através de um projeto da Empresa AT&T. Seus principais programadores foram Ken Thompson e Dennis Ritchie (criador da linguagem C). Em meados dos anos 70, o Unix tornou-se um sistema efetivamente disponível no meio acadêmico, o que permitiu a sua evolução e o surgimento de variações. No entanto, na década seguinte o Unix parou de compartilhar o código fonte com universidades. Então, um professor chamado Andrew S Tanenbaum, em 1987, decidiu criar um sistema operacional baseado no Unix com um único propósito de ensinar. O sistema foi chamado de Minix. Inspirado no trabalho de Tanenbaum, um estudante universitário finlandês chamado Linus Torvalds desenvolveu um sistema operacional baseado no Minix/Unix em 1991. Linus criou uma interface de linha de comando, uma ferramenta para salvar dados em disco e um compilador para instalar novos programas. A ideia de Linus era criar um sistema operacional e compartilhar o código- fonte do sistema para que outros programadores contribuíssem. O que o Linus Torvalds criou foi o Kernel (núcleo) do Sistema, responsável por realizar a comunicação entre hardware e software. No entanto, a distribuição do sistema completo, com ferramentas e utilitários, se deu pela junção do Kernel Linux criado por Linus com programas desenvolvidos pelo projeto chamado GNU. GNU é a sigla para um nome: "GNU is Not Unix” (GNU Não é Unix). É um projeto que Richard Stallman iniciou em 1984. O projeto GNU já desenvolvia diversos projetos de software livre que rodavam no Unix. A ideia inicial de RichardStallman era fazer com que o próprio GNU desenvolvesse um núcleo para o sistema operacional, mas não havia uma versão estável até aquele momento. Quando o Linus Torvalds lançou o Linux em 1991, ele foi incorporado aos programas do projeto GNU e distribuído com a licença GPL (GNU General Public License), criada em 1989 com Fundamentos Bootcamp Administrador Linux – Página 7 de 69 Richard Stallman como principal autor. Diante disso, muitos dizem que o correto seria chamarmos o sistema de GNU/Linux, não somente Linux. A GPL tem como principal foco o software livre, que consiste em 4 liberdades essenciais: a liberdade de executar o software como quiser para qualquer objetivo, a liberdade de estudar como funciona o software e modificá-lo conforme sua necessidade e a liberdade de redistribuir e distribuir cópias de suas versões modificadas. Devido a essa liberdade, temos tantas versões diferentes do GNU/Linux, que chamamos de distribuições. Distribuições contém o Kernel mais os aplicativos mantidos por uma empresa ou comunidade. Existem distribuições com foco em atender usuário final, servidores web, executar containers, segurança etc. No entanto, apesar das diferenças entre distribuições para diversos objetivos, possuem características comuns, que mantém um padrão entre elas. Dessa forma, aprendendo administrar o sistema como um todo, fica mais fácil migrar entre distribuições. O principal projeto para o esforço em manter certos padrões é o Linux Standard Base (LSB). Figura 1 – TUX. Fonte: Mascote oficial do kernel Linux – Imagens Google. Fundamentos Bootcamp Administrador Linux – Página 8 de 69 1.2. Padrão de hierarquia do sistema de arquivos (FHS) Os arquivos no Linux são organizados em uma estrutura de diretórios hierárquica, no qual cada diretório tem um propósito. O FHS (Filesystem Hierarchy Standard) é o padrão que define o conteúdo desses diretórios. Foram listados abaixo os principais diretórios com seus respectivos objetivos: / → Raiz de toda a hierarquia do sistema de arquivos. /boot → Arquivos utilizados para boot do sistema. /bin → Programas essenciais para todos os usuários. /sbin → Programas essenciais de root. /lib → Bibliotecas para programas do /bin/ e /sbin/. /usr → Programas não essenciais, bibliotecas e documentações. /usr/bin → Programas não essenciais para todos os usuários. /usr/sbin → Programas não essenciais de root. /usr/lib → Bibliotecas para programas do /usr/bin e /usr/sbin. /dev → Dispositivos (Exemplo: arquivos do tipo bloco – HD’s). /var → Arquivos variáveis como filas de e-mail e logs. /home → Diretório padrão dos usuários. /root → Diretório home do root. /etc → Arquivos de configuração. /mnt e /media → Pontos de montagem temporário. /opt → Programas de terceiros. /tmp → arquivos temporários. Fundamentos Bootcamp Administrador Linux – Página 9 de 69 /proc → informações de processos. /sys → informações do sistema. 1.3. Instalação VirtualBox e Putty Links das ferramentas utilizadas durante as aulas práticas. VirtualBox: https://download.virtualbox.org/virtualbox/6.1.12/VirtualBox-6.1.12-139181- Win.exe https://download.virtualbox.org/virtualbox/6.1.12/VirtualBox-6.1.12-139181-Win.exe https://download.virtualbox.org/virtualbox/6.1.12/VirtualBox-6.1.12-139181-Win.exe Fundamentos Bootcamp Administrador Linux – Página 10 de 69 Fundamentos Bootcamp Administrador Linux – Página 11 de 69 Fundamentos Bootcamp Administrador Linux – Página 12 de 69 Putty: https://the.earth.li/~sgtatham/putty/0.74/w64/putty.exe https://the.earth.li/~sgtatham/putty/0.74/w64/putty.exe Fundamentos Bootcamp Administrador Linux – Página 13 de 69 1.4. Instalação do CentOS 7 Link para download do CentOS 7, distribuição Linux utilizada nas aulas práticas: ‒ http://centos.itsbrasil.net/7.9.2009/isos/x86_64/CentOS-7-x86_64- Minimal-2009.iso http://centos.itsbrasil.net/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso http://centos.itsbrasil.net/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso Fundamentos Bootcamp Administrador Linux – Página 14 de 69 Fundamentos Bootcamp Administrador Linux – Página 15 de 69 Fundamentos Bootcamp Administrador Linux – Página 16 de 69 Fundamentos Bootcamp Administrador Linux – Página 17 de 69 Fundamentos Bootcamp Administrador Linux – Página 18 de 69 Fundamentos Bootcamp Administrador Linux – Página 19 de 69 Fundamentos Bootcamp Administrador Linux – Página 20 de 69 Fundamentos Bootcamp Administrador Linux – Página 21 de 69 Aguarde desaparecer o ícone de exclamação dos itens “Fonte de Instalação” e “Seleção de Software”. Fundamentos Bootcamp Administrador Linux – Página 22 de 69 Fundamentos Bootcamp Administrador Linux – Página 23 de 69 Fundamentos Bootcamp Administrador Linux – Página 24 de 69 Fundamentos Bootcamp Administrador Linux – Página 25 de 69 Fundamentos Bootcamp Administrador Linux – Página 26 de 69 1.5. Instalação de pacotes .rpm Distribuições baseadas no Red Hat utilizam pacotes do tipo rpm. O comando rpm verifica pacotes instalados no sistema e manipula pacotes com extensão .rpm. A desvantagem de instalar um pacote usando o comando rpm é que o este não resolve dependências, sendo necessário instalar todos os pacotes dependentes antes de instalar o pacote desejado. Principais comandos: Lista pacotes instalados no sistema: Fundamentos Bootcamp Administrador Linux – Página 27 de 69 rpm -qa Informações sobre um pacote: rpm -qi "pacote“ Mostra arquivos referente a um pacote instalado: rpm -ql "pacote" Informa o pacote que instalou um arquivo: rpm -qf "caminho do arquivo" Instala pacote rpm (não resolve depedências): rpm -i "pacote.rpm" -v → verbose -r → mostra progresso da instalação Remove pacote: rpm -evh "pacote" 1.6. Gerenciador de pacotes “yum” O principal gerenciador de pacotes utilizado em distribuições baseadas no Red Hat é o Yum. Ao contrário do comando rpm, o Yum resolve dependências, facilitando a instalação de programas no sistema. Ele consulta repositórios pré- configurados no sistema para localizar os pacotes. Diretório de repositórios: /etc/yum.repos.d/ Fundamentos Bootcamp Administrador Linux – Página 28 de 69 Principais comandos: Atualiza todos os pacotes da máquina: yum update Procura pacotes nos repositórios: yum search "pacote" Instala pacote: yum install "pacote“ Parâmetro: -y → Instala sem pedir confirmação Remove pacote: yum remove "pacote" Fundamentos Bootcamp Administrador Linux – Página 29 de 69 Capítulo 2. Comandos básicos 2.1. Conhecendo o shell e explorando o sistema de arquivos O shell é um interpretador de comandos. Ele faz o meio de campo entre o usuário e o sistema, ou seja, é uma interface para o usuário executar programas e interagir com o sistema. Também é um ambiente de programação (shell script) muito utilizado para automatizar tarefas. Em ambientes Desktop, além do shell, existe uma interface gráfica para interação. No entanto, em ambientes corporativos, na maioria dos casos a única forma de interação com o sistema é através do shell para administração de servidores. Existem alguns tipos de shell, porém, o mais utilizado atualmente é o “BASH”. Acessando os diretórios: Exemplos: ‒ cd /var → usando caminho absoluto ‒ cd log → usando caminho relativo ‒ cd /var/log → caminho absoluto O caminho absoluto sempre vai começar com o “/”. Ou seja, é o caminho completo de um arquivo ou diretório. O caminho relativo depende do diretório atual. Informa o diretório atual: pwd. ‒ . → representao diretório atual ‒ .. → representa um diretório anterior Acessando um diretório anterior: cd Fundamentos Bootcamp Administrador Linux – Página 30 de 69 O diretório /home por padrão armazena os diretórios dos usuários. Exemplo: /home/douglas ‒ ~ representa o home do usuário. ‒ cd ~/Downloads é igual a cd /home/douglas/Downloads ‒ cd sem informar qualquer diretório retorna para o home do usuário. Listando arquivos: ls Principais parâmetros do ls: ‒ -l → lista longa, mostra mais informações sobre os arquivos ‒ -t → organiza pela data de modificação ‒ -r → organiza de forma reversa ‒ -d → lista somente o diretório sem o conteúdo do mesmo. ‒ -a → lista arquivos ocultos ‒ No Linux arquivos ocultos são iniciados com “.” 2.2. Pedindo ajuda e curingas do shell Dicas: Sempre que aprender um novo comando, explore sua documentação utilizando os comandos man e help; ‒ man ls ‒ ls --help Fundamentos Bootcamp Administrador Linux – Página 31 de 69 Acostume a utilizar atalhos do shell e o Tab para acelerar a digitação dos comandos. Tab auto completa comandos e caminhos dos arquivos/diretórios. Atalhos mais usados: Ctrl+L → limpa a tela (igual ao comando clear) Ctrl+R → realiza busca no histórico de comandos (history) Ctrl+U → recorta a linha inteira Ctrl+W → recorta a palavra à esquerda Ctrl+K → recorta do cursor até o fim da linha Ctrl+Y → cola o trecho recortado Curingas do shell: * → qualquer coisa ? → um caractere qualquer [ ] → qualquer um dos caracteres listados ou um intervalo { } → strings específicas separadas por “,” Os curingas do shell podem ser utilizados para qualquer comando. Alguns exemplos usando o ls: ls -l /dev/sda* ls -l /dev/sd? ls -l /dev/sda[13] ls -l /dev/sd{a,a5} Fundamentos Bootcamp Administrador Linux – Página 32 de 69 2.3. Gerenciando arquivos e diretórios Cria diretório: mkdir [caminho absoluto ou relativo] Cria árvore de diretórios: mkdir -p /diretorio1/dir2/dir3 tree /diretorio => visualiza toda a àrvore de diretório Cria um arquivo vazio: touch arquivo.txt Copia arquivos: cp [arquivo origem] [destino do arquivo] Parâmetros: -i → interativo, pede uma confirmação antes de sobrescrever. -r → cópia recursiva. -p → preserva atributos (data de modificação, permissões etc.). -a → cópia recursiva e preserva permissões do arquivo. Move e/ou renomeia arquivos: mv [arquivo ou diretório de origem] [destino]. Origem e destino no mesmo diretório o arquivo é renomeado. Parâmetros: -i → interativo, pede uma confirmação antes de sobrescrever um arquivo. Fundamentos Bootcamp Administrador Linux – Página 33 de 69 -f → força sobrescrever o arquivo de destino. Remove arquivos e diretórios: rm arquivo.txt Parâmetros: -i → interativo, pede uma confirmação antes de remover. -f → força remoção do arquivo. -r → remove diretório de forma recursiva. Remove diretório vazio: rmdir [diretório] 2.4. Leitor de texto Concatena arquivos e imprime na saída padrão: cat arquivo1 arquivo2 Informando somente um arquivo, é impresso na tela: cat [arquivo1] Alguns parâmetros: -n → enumera todas as linhas. -b → enumera as linhas, exceto linhas em branco (igual o comando nl). Lê um arquivo de texto de forma paginada: less [arquivo] Fundamentos Bootcamp Administrador Linux – Página 34 de 69 Opção de busca: / → realiza buscas dentro do arquivo. n → mostra a próxima busca encontrada. N → retorna busca anterior encontrada. q → para sair. Mostra quantidade de linhas, palavras e bytes de um arquivo: wc [arquivo] Parâmetro: -l → quantidade de linhas. -w → quantidade de palavras. -c → quantidade de bytes. 2.5. Compressão de arquivos Empacota arquivos: tar cvf arquivo.tar arquivo1 arquivo2 Primeiro o nome do arquivo que será criado e na sequência os arquivos a serem empacotados. Mostra os arquivos: tar tvf arquivo.tar. c => cria. t => lista. Fundamentos Bootcamp Administrador Linux – Página 35 de 69 v => verbose. f => define o nome do arquivo. Compactar arquivos com gzip: gzip arquivo.tar Descompactar arquivo gzip: gunzip arquivo.tar.gz Ou gzip -d arquivo.tar.gz Podemos unir o recurso do tar com gzip para compactar e descompactar. Compacta: tar zcvf arquivo.tar.gz arquivo1 arquivo2 Descompacta: tar zxvf arquivo.tar.gz (extrai no diretório corrente). tar zxvf arquivo.tar.gz -C /home ( -C define o diretório de destino). z → invoca o gzip. x → extrai. Comandos úteis para ler arquivos compactados sem precisar extrair: “zcat” e “zgrep” Fundamentos Bootcamp Administrador Linux – Página 36 de 69 2.6. Editor de texto Vi Acessa um arquivo para edição: vi [caminho_nome-arquivo]. i → entra no modo de inserção (“o” modo de inserção na próxima linha). Esc → entra no modo de navegação. Esc : → entra no modo de comandos. Alguns comandos: :w → salva o arquivo :q → sai do arquivo sem salvar :wq → sai do arquivo salvando ou :x Mais alguns comandos úteis: :%s/string_velha/nova_string => substitui string. :5,10 s/string_velha/nova_string => substitui string. Opções para o modo de navegação: / → busca (n próxima | N anterior). gg → move o cursor para primeira linha. G → move o cursor para última linha. yy → copia a linha. cc → recorta a linha. p → cola a linha. Fundamentos Bootcamp Administrador Linux – Página 37 de 69 dd → apaga a linha. u → desfazer. 2.7. Variáveis de ambiente Assim como qualquer outra linguagem de programação, o shell também utiliza de variáveis para armazenar dados em memória. Podemos aproveitar essas variáveis do shell ou criarmos novas para utilizarmos em um script, por exemplo. Existem as variáveis locais e globais. As locais não são vistas por processos filhos do bash. Lista todas as variáveis: set Lista somente variáveis globais (exportadas): env Define uma variável local: NOMEVAR=Valor Define uma variável global: NOMEVAR=Valor export NOMEVAR Ou export NOMEVAR=Valor Remove variável: unset NOMEVAR Fundamentos Bootcamp Administrador Linux – Página 38 de 69 Imprime uma mensagem e/ou valor de uma variável: echo Fundamentos de Linux - IGTI echo $ NOMEVAR echo $HISTFILE O shell possui comandos internos, como por exemplo o “echo”, e utiliza a variável de ambiente PATH para localizar o caminho absoluto dos comandos externos. Verifica se um comando é interno do shell ou externo: type echo Verifica o caminho absoluto de um comando, utiliza a variável PATH: which cp Mostra informações do sistema: uname -a 2.8. Tipos de arquivos e Links O comando “file” informa o tipo do arquivo: Comandos de exemplo em arquivos de tipos diferentes: file / file /dev/sda file /etc/passwd Mostra mais detalhes sobre o arquivo: Fundamentos Bootcamp Administrador Linux – Página 39 de 69 stat /etc/passwd O Linux não trabalha com conceito de extensão de arquivo. Você pode usar uma extensão para facilitar a identificação do arquivo, mas para o Linux não faz nenhuma diferença. Hardlink são arquivos espelhados (mesmo inode), porém independentes. Comando “ln” cria um hardlink: ln [arquivo] [link] Link simbólico é um atalho. Parâmetro -s cria um link simbólico: ln -s [arquivo] [link] Fundamentos Bootcamp Administrador Linux – Página 40 de 69 Capítulo 3. Redirecionamentos e Filtros 3.1. Redirecionamentos >, >>, tee e pipe > → redireciona a saída de um comando substituindo o conteúdo do arquivo. >> → redireciona a saída de um comando adicionando o conteúdo ao final do arquivo. 2> → redireciona a saída de erro de um comando substituindo o conteúdodo arquivo. 2>> → redireciona a saída de erro de um comando adicionando o conteúdo ao final do arquivo. 2>&1 → redireciona a saída de erro para a mesma saída padrão. | → envia a saída de um comando para entrada de outro. Comando “tee” redireciona a saída padrão para um arquivo e imprime na tela: Exemplo de concatenação de dois arquivos enviando a saída padrão para arquivo3 usando o comando “tee”: ‒ cat arquivo1 arquivo2 | tee arquivo3 3.2. Comandos head, tail e sort Mostra as 10 primeiras linhas de um arquivo: head [arquivo] Parâmetro: n → define a quantidade de linhas para mostrar Fundamentos Bootcamp Administrador Linux – Página 41 de 69 Mostra as 10 últimas linhas de um arquivo: tail [arquivo] Parâmetro: n → define a quantidade de linhas para mostrar. f → fica aguardando novas saídas no arquivo. 3.3. Comandos find, locate e xargs Ordena linhas de um arquivo (padrão ordenar por ordem alfabética): sort [arquivo] Parâmetro: -u → remove linhas repetidas (igual ao comando uniq). Verifica o uso de espaço em disco de arquivos e diretórios: du -sh [arquivo ou diretório] Comando muito útil para identificar diretórios com maior consume de disco: du -sh /home/* | sort -h Procura arquivos baseados pelo nome: find /etc -name services find /etc -name *.conf find [diretório] [opção] [busca] Fundamentos Bootcamp Administrador Linux – Página 42 de 69 Procura arquivos baseados pelo tipo: find /etc -type d (diretório) find /etc -type l (link simbólico) Procura arquivos baseados pelo tamanho: find /etc -size +100k -exec => executa uma ação baseado na saída do find: find /etc -size +100k -exec du -sh {} \; No exemplo acima, após localizar arquivos maiores que 100k, foi executado o comando du -sh em cada saída do find. Faz busca por arquivos baseado no nome: locate arquivo.txt (precisa do pacote mlocate). updatedb (antes de realizar a busca, execute o comando updatedb para atualizar a base de dados que o locate consulta). whereis cp (procura baseado no primeiro nome). xargs → executa comandos baseados na saída padrão: find /etc -size +100k | xargs ls -l mkdir ~/backup ; find /etc -size +100k | xargs -i cp {} ~/backup 3.4. Comandos cut, awk, tr, sed e grep Corta partes de um texto: cut -c1,2 /etc/passwd (c = caracter) cut -c1-5 /etc/passwd Fundamentos Bootcamp Administrador Linux – Página 43 de 69 cut -d: -f1 /etc/passwd (d = delimitador e f = campo (field) ) cut -d: -f1,2 --output-delimiter="|" /etc/passwd awk '{print$1}' /etc/services awk -F: '{print$1 " | " $6}' /etc/passwd ls /etc/*.conf | head -n3 | awk '{print "echo 3 primeiros arquivos encontrados: " $1}' Troca caracteres ou deleta: cat /etc/passwd | tr [:lower:] [:upper:] cat /etc/passwd | tr -d [:space:] Realiza filtros e transformações em arquivos: sed -i s/velho/novo/ arquivo.txt => substitui string “velho” para “novo”. sed -n 5p arquivo.txt => imprime a linha 5 de um arquivo. sed -n 50,70p arquivo.txt => Imprime um bloco, linha 50 a 70. sed /string/d arquivo.txt => Deleta a linha que contém uma string específica. Mostra linhas filtradas por um padrão: grep root /etc/passwd Parâmetros: -i → desconsidera o case sensitive. -r → busca de forma recursiva. -w → resultado somente com a palavra completa. -v → resultado exceto o que encontrar. Fundamentos Bootcamp Administrador Linux – Página 44 de 69 O grep e o sed são comandos que aceitam expressões regulares. Um exemplo do grep para remover linhas em branco (quebra de linha) e comentadas: grep -v -E ‘^#|^$’ /etc/services → grep -E = egrep Fundamentos Bootcamp Administrador Linux – Página 45 de 69 Capítulo 4. Shell Script 4.1. Introdução a shell script (aspas, crase e $) Por convenção shell, scripts são nomeados com .sh. Exemplo: script.sh A primeira linha do arquivo deve conter um shebang “#!” seguido do interpretador de comandos que será utilizado no script: Exemplo: #!/bin/bash ; → utilizado para executar comandos sequenciais. ` ` e $() → comandos dentro de crase e $() são executados e retornam a saída do comando. A saída de um comando pode ser armazenada em uma variável. Exemplo: USUARIOS=$(ls /home) ; echo $USUARIOS \ → protege o caractere seguinte. Exemplos: echo * echo \* Diferença entre aspas simples e duplas: echo “$PATH” echo ‘PATH’ Fundamentos Bootcamp Administrador Linux – Página 46 de 69 echo “`pwd`” echo ‘`pwd`’ Aspas duplas protege os caracteres: $ ` 4.2. Passando parâmetros para o script Passando parâmetros para o script: O script interpreta parâmetros como $ mais um número de acordo com a sequência passada. Exemplo: Ao executar o script: ~/script.sh /backup/logs 7 $1 = /backup/logs $2 = 7 Uma forma debugar o que está sendo feito em um script é executá-lo usando o parâmetro -x do bash. bash -x script.sh → debug Script de exemplo utilizando passagem de parâmetros: #!/bin/bash DIRETORIO=$1 DIAS_RETENCAO=$2 echo Realizando limpeza dos logs do diretório: $DIRETORIO echo Deletando Logs dos últimos $DIAS_RETENCAO dias. find $DIRETORIO -mtime +7 -exec rm {} \; Fundamentos Bootcamp Administrador Linux – Página 47 de 69 Execução: ./script.sh /backup/logs 7 4.3. Loop “for” 4.3.1. Loop “for” (Parte 1) O “for” é utilizado para executar tarefas repetitivas (loop). Sintaxe: for VARIAVEL in LISTA → pode ser saída de um comando ` ` ou $() do “comandos” done For é muito útil no dia a dia, não somente dentro de um script. Exemplo: for servers in `cat servidores` ; do echo $servers ; curl https://servers:443 ; echo ; done Para cada servidor listado no arquivo “servidores”, será armazenado o valor de cada um na variável “servers”, e em seguida executado os comandos que estiverem dentro de “do” e “done”. Nesse caso: echo $servers ; curl https://servers:443 ; echo Se dentro do arquivo servidores estiver: servidor1 servidor2 Será executado: echo servidor1 ; curl https:// servidor1:443 ; echo Fundamentos Bootcamp Administrador Linux – Página 48 de 69 echo servidor2; curl https:// servidor2:443 ; echo Script de exemplo: #!/bin/bash for LISTA_USUARIOS in $(cat /etc/passwd | tr -d [:blank:]) do echo $LISTA_USUARIOS USUARIO=$(echo $LISTA_USUARIOS | cut -d: -f1) HOME_USUARIO=$(echo "$LISTA_USUARIOS" | cut -d: -f6) SHELL_USUARIO=$(echo "$LISTA_USUARIOS" | cut -d: -f7) echo echo -e "\n ===== $USUARIO ===== " echo "HOME: $HOME_USUARIO" echo "SHELL: $SHELL_USUARIO" echo " ==================== " done 4.3.2. Loop “for” (Parte 2) O comando “seq” é útil para definir uma quantidade exata de loops para qualquer fim. Exemplo: #!/bin/bash for num in `seq 10` do echo echo "Realizando teste de conexao... Tentativa $num" sleep 3 done For dentro de For: #!/bin/bash for EMP in `cat empresas` ; do Fundamentos Bootcamp Administrador Linux – Página 49 de 69 for DEP in `cat departamento` ; do mkdir -p ~/backups/$EMP/$DEP done done Para cada linha dentro do arquivo empresas, o valor é armazenado na variável EMP e será executado o segundo “for”, lendo o arquivo departamento e armazenando cada linha na variável DEP. Exemplo: Arquivo empresas Empresa1 Empresa2 Arquivo departamento Juridico Financeiro TI Será executado: mkdir -p ~/backups/Empresa1/Juridico mkdir -p ~/backups/Empresa1/ Financeiro mkdir -p ~/backups/Empresa1/TI mkdir -p ~/backups/Empresa2/Juridico mkdir -p ~/backups/Empresa2/ Financeiro mkdir -p ~/backups/Empresa2/TI Fundamentos Bootcamp Administrador Linux – Página 50 de 69 4.4. Condicionais (if, else, elif) e o comando read Condicionais (if, else, elif) eo comando read O comando read aguarda a entrada de dados do usuário e armazenada os dados em uma variável. As condicionais if (se), else (senão) e elif (senão se) é utilizada para tomada de decisão baseado se a condição testada for verdadeira. Script de exemplo usando read e uma estrutura de if, else e elif: #!/bin/bash echo "Verifica se um usuário existe" read -p "Informe o nome do usuário: " usuario USUARIO=$(cut –d: -f1 /etc/passwd | grep -i $usuario) HOME=“/home/$(echo $usuário | tr [:upper:] [:lower:])” if [[ -n $USUARIO ]] then echo "Usuario $usuario existe!" elif [[ -d $HOME ]] then echo "Usuario nao existe mas possue um home" echo "Deletando o diretorio home..." ; sleep 2 rm -riv $HOME else echo "Usuario $usuario NAO existe!" fi 4.5. Variável especial $? && e || Variável especial $? A variável $? armazena o código de saída do último comando executado. Alguns exemplos de código de saída: Fundamentos Bootcamp Administrador Linux – Página 51 de 69 0 - executado com sucesso 1 - erros comuns 127 - comando não encontrado Sempre que o último comando tiver sucesso na execução a saída será “0”. Portanto, a variável $? é utilizada para realizar validações no script, usando a condicional if. Se a saída do último comando for 0, significa que foi executado com sucesso, caso contrário ocorreu alguma falha. echo "Criando um diretório..." ; echo read -p "Informe um caminho absoluto: " DIR echo "Criando o diretório $DIR..." ; sleep 2 mkdir $DIR if [[ $? -eq 0 ]] then echo "Diretório criado com sucesso" else echo "Falha ao criar o diretório" fi Outra maneira de checar o código de retorno do último comando e executar uma ação é utilizando && e ||: && → Somente executa o segundo comando se o primeiro foi executado com sucesso. || → Somente executa o segundo comando se o primeiro não foi executado com sucesso. #!/bin/bash echo "Criando um diretório..." ; echo Fundamentos Bootcamp Administrador Linux – Página 52 de 69 read -p "Informe um caminho absoluto: " DIR echo "Criando o diretório $DIR..." ; sleep 2 mkdir $DIR && echo "Diretório criado com sucesso" || echo "Falha ao criar o diretório" 4.6. Gerando logs É muito importante gerar logs em todo programa, e com o shell script não é diferente. Para isso, basta utilizar os redirecionadores, > e >> para saída padrão e 2> e 2>> para saídas de erros. #!/bin/bash echo "======= `date "+%d/%m/%Y %H:%M"` ======" >> log.info echo "Criando um diretório..." ; echo read -p "Informe um caminho absoluto: " DIR echo "Criando o diretório $DIR..." >> log.info ; sleep 2 mkdir $DIR 2>> log.info if [[ $? -eq 0 ]] ; then echo "Diretório $DIR criado com sucesso" >> log.info fi echo ============================= >> log.info 4.7. Condicional “case” Uma outra forma de construir uma estrutura condicional é utilizando a estrutura do case. Cada opção passada é como se fosse if, elif e, por último, o asterisco (*) representa o senão. #!/bin/bash read -p "Informe o nome do usuario: " usuario echo "Consultando a base de usuários..." cut -d: -f1 /etc/passwd | grep -i $usuario if [[ $? -ne 0 ]] ; then Fundamentos Bootcamp Administrador Linux – Página 53 de 69 echo "usuario $usuario nao existe" fi read -p "Deseja realizar uma nova busca? [ s/n ]" opcao case $opcao in s) $0 ;; n) echo “Saindo…” ; exit ;; *) echo “opcao invalida” ;; esac 4.8. Loop com “while” e ‘funções” O while (enquanto) é uma outra maneira de realizar loops, assim como o “for”. Porém, o while é usado nos casos que a quantidade de repetições (loop) depende de uma ação do usuário ou do retorno de um comando, por exemplo. While é a junção do if com o for: é feita uma verificação antes de realizar um comando, e esse comando é repetido enquanto a verificação for verdadeira. #!/bin/bash echo “Procura arquivos .conf..." if [[ -z $1 ]] ; then while [[ -z $diretorio ]] ; do read -p "Parametro nao informado. Informe um diretorio para consulta: " diretorio find $diretorio -iname "*.conf" done else find $1 -iname "*.conf" fi As funções são utilizadas para simplificar um programa, pois evitam repetições do código. Uma função é escrita uma vez e sempre que for necessário Fundamentos Bootcamp Administrador Linux – Página 54 de 69 executar uma sequência de comandos específica, basta chamar a função para ser executada. Função Sintaxe: function NOME_FUNCAO () { comandos } NOME_FUNCAO () { comandos } busca_conf () { find $1 -iname "*.conf" } if [[ -z $1 ]] ; then while [[ -z $diretorio ]] ; do read -p "Parametro nao informado. Informe um diretorio para consulta: " diretorio busca_conf $diretorio done else busca_conf $1 fi Fundamentos Bootcamp Administrador Linux – Página 55 de 69 Capítulo 5. Gerenciamento de processos 5.1. PID, processo init e load average Todos os processos do sistema possuem um identificador único => PID e possuem um processo pai => PPID. O primeiro processo executado no sistema, e pai de todos os outros, é o processo init (systemd) de PID = 1. Lista processos em forma de árvore: pstree -p → mostra ID do processo. Monitora todos os processos do sistema: top. Opção útil: 1 → mostra o consumo de cada processador. q → para sair. Load average valor normal é relativo para cada máquina. Mostra 1, 5 e 15 últimos minutos. Shift+M => ordena por consumo de memória. Shift+C => ordena por consumo de cpu. Mostra o tempo que o servidor está ligado → uptime. Mostra o uso de memória → free -m. Busca processo por nome: pidof “nome exato do processo” pgrep “parte do nome do processo” Fundamentos Bootcamp Administrador Linux – Página 56 de 69 5.2. Comandos ps, kill, killall e pkill Processos em execução do usuário no terminal corrente: ps. -u → mostra mais informações relacionadas a usuário. -x → mostra processos que não foram iniciados diretamente em seu terminal. -a → mostra os processos de todos os usuários. Envia sinais para processos: kill. kill -l → lista todos os sinais. Quando executamos Crtl+C estamos enviando o sinal 2) SIGINT (interrupção). 15) SIGTERM => termina processo. 9) SIGKILL => termina processo de forma abrupta. Duas maneiras de enviar sinais para os processos: kill -s SIGTERM “PID_PROCESSO” kill -15 “PID_PROCESSO” Mata processo por nome: killall “nome exato do processo” pkill “parte do nome do processo” 5.3. Processos em foreground, background e prioridades Foreground (fg) e Background (bg): fg → prende o terminal. Fundamentos Bootcamp Administrador Linux – Página 57 de 69 bg → libera o terminal para execução de comandos. Lista jobs com seu id (processos em Background): jobs. Executa um comando enviando para background: [ Comando ] & Retorna um comando para Foreground: fg “id do job” Crtl+Z => envia um sinal de stop para o processo. Envia processos nos jobs para background: bg "id do job“ Mata o processo pelo id do job: kill %"id do job" Prioridades dos processos: PR → Prioridade ( 0 até 39 ) NI → Nice ( -20 até +19 ) nice -n -20 “comando" nice -n 15 “comando“ renice -n -8 “pid" renice -n 8 “pid" Fundamentos Bootcamp Administrador Linux – Página 58 de 69 Capítulo 6. Comandos básicos de rede 6.1. Verificando as interfaces e adicionando IP Pacotes para gerenciamento de rede: net-tools (descontinuado): Comandos → ifconfig e route iproute: Comando → ip Lista as interfaces: ip address show ifconfig Baixa interfaces: ip link set "interface" down ifconfig "interface" down Sobe interfaces: ip link set "interface" up ifconfig "interface" up Define um IP: ip addr add "IP/MASK" dev "interface" ifconfig "interface" "IP" netmask "mascara“ Deleta um IP de uma interface: Fundamentos Bootcamp Administrador Linux – Página 59 de 69 ip addr del "IP/MASK" dev "interface“ ifconfig "interface" delete "IP" Define novos IP's em uma interface: ip addr add "IP/MASK" dev "interface" ifconfig "interface":"num" "IP" netmask "mascara" 6.2. Rotas Lista as rotas: ip route show route Deleta rota default: ip route del default route del default Cria rota default: ip route add default via "IP“ route add default gw "IP" Adiciona rota: ip route add "rede/mask" via "IP" dev "interface“ route add -net "REDE" gw "IP" Deleta rota: ip route del "rede/mask" via "IP" dev "interface“ Fundamentos Bootcamp Administrador Linux – Página 60 de 69 route del -net "REDE" gw "IP" 6.3. Fixando as configurações de rede Configurando IP e Máscara: /etc/sysconfig/network-scripts/ifcfg-xxx IPADDR=192.168.1.10 NETMASK=255.255.255.0 Reinicia as interfaces de rede: systemctl restart network Fixar rota default: /etc/sysconfig/network GATEWAY=192.168.1.1 Fixar rota: /etc/sysconfig/network-scripts/route-xxx 192.168.2.0/24 via 192.168.2.1 dev enp0xx 6.4. Resolução de nomes Configuração dos servidores de DNS: /etc/resolv.conf nameserver => aponta o servidor de DNS Fundamentos Bootcamp Administrador Linux – Página 61 de 69 Resolução de Nomes: /etc/hosts Apontamento de IP -> nome (por padrão, é consultado antes do DNS) Precedência da resolução de nomes é configurada no arquivo: /etc/nsswitch.conf Comandos úteis: pacote bind-utils. Resolução de nomes e dns reverso: host [endereco] dig [endereco] nslookup [endereco] Verifica conectividade: ping [endereco] -c => define a quantidade de pacotes 6.5. Verificando conexões (netstat, telnet e nc) Conexões – netstat, telnet e nc. Mostra conexões ativas: netstat Parâmetros: -n → não resolve nome -a → todas as conexões (all) Fundamentos Bootcamp Administrador Linux – Página 62 de 69 -t → tcp -u → udp -p → pid do processo Testa conexões: telnet [endereco] nc –v [endereco] Abre uma porta no servidor (útil para testar conectividade com alguma porta): nc -l -p “Porta” Fundamentos Bootcamp Administrador Linux – Página 63 de 69 Capítulo 7. Gerenciamento de usuários e grupos 7.1. Gerenciamento de usuários Usuários são armazenados no arquivo /etc/passwd. 7 campos separados por “:”. Nome: Senha: UID: GID: Descrição: Home: Shell O Campo “Senha” com x indica que as senhas estão armazenadas no arquivo: /etc/shadow. Criar usuário: useradd "nome do usuario" Opções: -s → shell -c → comentário -m → solicita a criação de um home -d → home -g → grupo primário -G → grupo secundário Definir senha do usuário: passwd "usuario" Remove usuário: userdel "nome do usuario" Fundamentos Bootcamp Administrador Linux – Página 64 de 69 Opção: -r → remove o home do usuário Modifica usuário: usermod "opcoes" "nome do usuario“ (Mesmas opções do useradd). 7.2. Gerenciamento de grupos Grupos são armazenados no arquivo /etc/group. 4 campos separados por “:”. Grupo: Senha: ID: Usuários O Campo “Senha” com x indica que as senhas estão armazenadas no arquivo: /etc/gshadow. Criar grupo: groupadd "nome grupo" Altera o grupo primário de um usuário: usermod -g "grupo" "usuario" Altera o grupo secundário de um usuário: usermod -G "grupo" "usuario" Adiciona usuário em um grupo: usermod -a -G "grupo" "usuario" Mostra o UID e todos GID que usuário pertence: id "usuario" Fundamentos Bootcamp Administrador Linux – Página 65 de 69 Mostra os grupos de um usuário: groups "usuario" getent pode ser usado para consultar /etc/passwd e /etc/group getent passwd "usuario" getent group "grupo" Fundamentos Bootcamp Administrador Linux – Página 66 de 69 Capítulo 8. Permissões de arquivos e diretórios 8.1. Definindo permissões de arquivos e diretórios - r w - r - - r - - root root Usuário Dono → Grupo Dono → Outros Primeiro caractere representa o tipo do arquivo e os demais conforme as cores. r = leitura (read) w = escrita (write) x = execução (execute) Arquivo → ler (r), escrever (w) e executar (x) Diretório → listar (r) criar e remover (w) e acessar (x) u → usuário g → grupo o → outros a → todos = -> define + -> adiciona - -> remove Modificar permissões: chmod u=rw,g=rw,o=r arquivo.txt chmod a=rw arquivo.txt r = leitura (read) → 4 w = escrita (write) → 2 Fundamentos Bootcamp Administrador Linux – Página 67 de 69 x = execução (execute) → 1 Modificar permissões de forma octal: chmod 644 arquivo.txt Parâmetro: -R => define permissões de forma recursiva Comando stat mostra as permissões das duas formas 8.2. Alterando os donos de arquivos Alterar usuário e grupo dono: chown usuário “arquivo ou diretório”. chown usuário:grupo “arquivo ou diretório”. chown :grupo “arquivo ou diretório”. chgrp grupo “arquivo ou diretório”. -R → altera de forma recursiva. 8.3. Atributos especiais Atributos especiais: SUID → utiliza a permissão do usuário dono. SGID → cria arquivos e diretórios herdando o mesmo grupo dono. Stick → somente quem criou um arquivo no diretório consegue apagar e renomear. Fundamentos Bootcamp Administrador Linux – Página 68 de 69 r w s r – x r – x root root /bin/passwd S – sem permissão de execução s – com permissão de execução T – sem permissão de execução t – com permissão de execução Adicionar os atributos especiais: chmod u+s “arquivo” chmod g+s “arquivo” chmod o+t “arquivo” SUID → 4 SGID → 2 Stick → 1 chmod 4644 “arquivo” umask → máscara usada para definir permissões de novos arquivos e diretórios umask 0022 0777 - 0022 -------- 0755 → Diretório 0644 → Arquivo Fundamentos Bootcamp Administrador Linux – Página 69 de 69 Referências SIQUEIRA, Luciano. Certificações LPI-1 101 102 Linux. 6. ed. Alta Books, 2019. GUIA FOCA LINUX. Guia Foca Online Iniciantes. Página inicial. Disponível em: <https://www.guiafoca.org/>. Acesso em: 25 jan. 2021. https://www.guiafoca.org/
Compartilhar