Linux Essentials Revisão Rápida Cesar Brod Linux Professional Institute cbrod@lpi.org Dê boas vindas aos participantes e apresente-se antes de iniciar a oficina. Dependendo do número de participantes, convide-os a se apresentarem também. Se você já conhece um pouco sobre o sistema operacional Linux, essa revisão irá ajudá-lo a passar no exame para a certificacão Linux Essentials, a primeira em sua carreira profissional com Linux. Se Linux é algo novo para você, esta revisão, ainda que rápida, o ajudará a entender um pouco mais sobre o que é Linux e o que são softwares livres. Pode ser que nem todo o conteúdo possa ser coberto nas horas que temos adiante. Não faz mal. Mais importante do que correr com o conteúdo é firmar o conteúdo básico que o ajudará a passar no exame Linux Essentials e, mais do que isso, lhe dará a base necessária para aprender cada vez mais. Além do mais, toda essa apresentação ficará disponível para você! O que é o Linux Professional Institute? Organizacão sem fins lucrativos que visa o desenvolvimento de um ambiente profissional global em Linux e outros softwares livres, trabalhando com parceiros de capacitação, tanto na academia quanto na iniciativa privada e promovendo certificacões reconhecidas globalmente. Parte 1 A comunidade Linux e oportunidades profissionais com Softwares Livres e de Código Aberto (Peso 7) O que é o Linux? Olá a todos vocês usando o minix. Estou construindo um sistema operacional livre (apenas como um hobby, não será tão grande ou profissional como o gnu) para o 386 (486) e seus clones. (...) Qualquer sugestão é bem vinda, mas não prometo que as implementarei. Linus Torvalds (TORVALDS, DIAMOND, 2001). Minix foi desenvolvido por Andrew Tanenbaum O que é GNU? GNU GNU Não é Unix O caso da impressora Xerox e Richard Stallman A GPL e as Quatro Liberdades 0. Executar o programa 1. Estudar o programa 2. Copiar e distribuir 3. Aperfeiçoar Distribuições Android Debian, Ubuntu (LTS) CentOS, openSUSE, Red Hat Linux Mint, Scientific Linux http://distrowatch.com/ Aplicacões OpenOffice.org, LibreOffice Thunderbird, Firefox GIMP Apache HTTPD, NGINX MySQL, PostgreSQL, MongoDB NFS, Samba C, Java, Perl, shell, Python, PHP dpkg, apt-get, rpm, yum Permitir que os alunos experimentem os aplicativos da interface gráfica... Agora, você tem alguma ideia sobre como poderia fazer a sua vida profissional com software livre? Parte 2 Encontrando seu caminho no Linux (Peso 9) $ _ Agora a coisa ficou preta! Por quê um terminal? Como abrir um terminal (dentro da interface gráfica e com CTRL + ALT + Fn) O que é Shell? BASH - Bourne Again Shell Como eu me viro? $ help A partir do comando "help", explore, junto com os alunos, os comandos echo history env (explore as principais variáveis do ambiente, com destaque a PATH) echo $HOME export (usando algumas das variáveis de ambiente) export | grep PATH (aproveite para falar do pipe - Douglas McIlroy, Dennis Ritchie, Ken Thompson, Unix 1970) type type env which which env man info ls man ls cd man cd info cd type cd man shell info shell env | grep SHELL man shell (busca por cd) man -k "texto" apropos "texto" /usr/share/doc man ls (como listar paginando? - more) Qual a diferença entre man (guia Rápido) e info (tutorial)? locate (e updatedb) EU="BROD" echo $EU EU1="CESAR" echo $EU1 $EU $ cd / Explorando a raiz! Quais são os diretórios na pasta raiz? ls e ls -la more /proc/meminfo more /proc/cpuinfo /dev . - aqui .. - acima ~ home $ cd ~ mkdir teste cd teste ls touch teste ls cat /proc/meminfo > teste less teste cat /proc/cpuinfo >> teste less teste cp teste teste1 [o truque do TAB TAB] diff teste teste1 mount mount >> teste1 diff teste teste1 rm * cd .. pwd rmdir teste touch .teste ls ls -a mv .teste teste ls Parte 3 O poder da linha de comando (Peso 9) Arquivando e comprimindo tar gzip bzip2 zip, unzip outras opções... Entrando em modo Maddog! Proteja o arquivo compactado com uma senha! O que são expressões regulares? http://www.novatec.com.br/livros/expressoes-regulares-5ed/ Alívio cômico: são aquelas expressões nem boas, nem ruins... :-p . * ? [ ] mkdir teste touch teste1 touch teste2 touch teste3 touch teste11 touch teste21 touch teste31 touch teste1111 ls test[tab][tab] ls t* ls teste1* ls teste1? ls -la | grep [tes] ls -la | grep [z] ls -la | grep [^z] Manipulacão básica de textos vim, pico grep less cat sort wc cut head, tail Todos abrem um editor de texto (pico) e a cada um que se apresenta na sala, adiciona-se a um arquivo (nomes) o nome e o sobrenome de uma pessoa. Depois de pronto: less nomes echo "Caio Ladislau" >> nomes less nomes cat nomes | grep Brod cat nomes | grep -i brod cat nomes | grep -i brod > familiabrod less familiabrod Só os nomes que começam com A cat nomes | grep ^A E se eu quero ignorar maiúsculas e minúsculas? cat nomes | sort Como gravar a saída em um arquivo ordenado? wc nomes - o que são os números resultantes? Como você descobre isso? cut -d" " -f1 nomes head e tail - demonstre com arquivos de log tail -f /var/log/syslog Como eu sei, dentro da pasta /etc, quais e quantas são as pastas dentro dela? Entrando em modo Maddog! Mais comandos para a formatação de textos fmt nl split tr uniq join paste pr Permita que os alunos usem man, info e --help para descobrir o que faz cada um destes comandos fmt é usado para formatar, por exemplo, o número de colunas de um texto: fmt -w 80 arquivo.txt Pegue um texto grande (você conhece o mussumipsum.com?), formate-o em 70 colunas, numere as linhas e separe-o em arquivos com 20 linhas cada um. Que tal pegar o mesmo texto grande e usar o 'pr' para prepará-lo para a impressão? Entrando em modo Maddog! Scripts em Shell http://www.novatec.com.br/livros/shellscript/ http://www.dicas-l.com.br/cantinhodoshell/ https://jneves.wordpress.com/ #!/bin/bash echo "Meu primeiro script em shell" echo "Estou rodando nessa pasta:" pwd echo "Esses arquivos estão nessa pasta:" ls echo "Acabou!" Por quê #! ? Execute com bash script1 chmod +x script1 ./script1 #!/bin/bash echo "Meu segundo script em shell" echo "Estou rodando nessa pasta:" pwd echo "Esses arquivos estão nessa pasta:" ls echo "Acabou com o status" $? exit 0 # encerra o script graciosamente # isso é um comentário No Linux, no news is good news. Status 0 é bom! #!/bin/bash # Script criado por Cesar Brod echo "Meu terceiro script em shell" echo "Estou rodando nessa pasta:" pwd echo "O arquivo naoexiste.txt está aqui?" ls naoexiste.txt echo "Acabou com o status" $? exit 0 O que é esse status resultante? Como eu posso saber o que ele significa (man ls - procurar por status). #!/bin/bash # Script criado por Cesar Brod # Esse script tenta apagar um arquivo e # avisa se conseguiu fazê-lo rm meapague && echo "Apaguei" || echo "Deu pau!" echo "Acabou com o status" $? exit 0 && = AND || = OR Se der tempo... Experimente tirar o lado OR e veja se muda o status de erro no caso do arquivo não existir. Como saber o que é esse status? Na falta de informacão, todo o status diferente de 0 é um erro. Faça um script que pegue um texto grande, formate-o em 70 colunas, numere as linhas, separe-o em arquivos com 20 linhas cada um e apague o arquivo original, verificando se o apagamento foi bem sucedido. Entrando em modo Maddog! #!/bin/bash # Script para quando você está carente echo "Qual é seu nome, pessoa linda?" read NOME echo "Puxa," $NOME "você está radiante hoje!" exit 0 #!/bin/bash # Script para quando você está carente echo "Qual é seu nome, pessoa linda?" read NOME echo "Puxa," $NOME "você está radiante hoje!" echo "Eis o pensamento do dia para você," $NOME fortune exit 0 O comando fortune deu erro? Como você pode instalá-lo (no Debian e no Fedora) #!/bin/bash # Script para somar dois números echo "Digite o primeiro número, pessoa linda!" read NUM1 echo "Digite o segundo número, meu bem!" read NUM2 TOTAL=$NUM1+$NUM2 echo "Eis o resultado de" $NUM1 "+" $NUM2 ":" $TOTAL exit 0 Como você resolve isso? No começo do script declare -i NUM1 declare -i NUM2 declare -i TOTAL #!/bin/bash # Acerte o número secreto! declare -i NUM1 echo "Em qual número estou pensando, pessoa linda?" read NUM1 if [ $NUM1 = 7 ]; then echo "Acertou!" else echo "Errou!" fi exit 0 Qual a sua ideia para tornar esse programa muito mais interessante? #!/bin/bash # Acerte o número secreto! declare -i NUM1 for (( ; ; )) do echo "Em qual número estou pensando, pessoa linda!" read NUM1 if [ $NUM1 = 7 ]; then echo "Acertou!" else echo "Errou!" fi done exit 0 E se o número fosse aleatório e o programa terminasse quando a pessoa querida o adivinhasse? Entrando em modo Maddog! Um papo sobre os principais sistemas operacionais. Com qual deles você pode fazer o quê? Quais respeitam as quatro liberdades? kernel.org https://en.wikipedia.org/wiki/Computer_hardwareþtps://pt.wikipedia.org/wiki/Computador Descobrindo o computador por meio de comandos e arquivos ps top free dmesg /etc/ /var/log/ (syslog) /boot/ /proc/ /dev/ /sys/ Faça os alunos exercitarem os comandos e peça que eles mesmos tentem explicá-los Idem para os arquivos e pastas Peça que usem o ps, o top e o free, abram programas no desktop e vejam o que muda na saída desses comandos tail -f /var/log/syslog Onde estou na Internet? ifconfig route netstat ping host /etc/resolv.conf /etc/hosts /etc/init.d/networking Ferramentas gráficas Desenhar o computador, o gateway e a internet... O que faz esse comando: netstat -atnp | grep ESTA E este? watch -d -n0 "netstat -atnp | grep ESTA" Parte 5 Segurança e permissões (Peso 7) Usuários O super usuário /etc/passwd /etc/shadow /etc/group id who whoami w last sudo su /etc/sudoers Criando usuários e grupos useradd userdel groupadd groupdel passwd adduser deluser /etc/passwd /etc/shadow /etc/group Ferramentas gráficas Explore com man, --help which adduser file /usr/sbin/adduser less /usr/sbin/adduser Permissões e propriedades de arquivos ls -a ls -l ls -lah chown chmod -rwxrwxrwx d/- user group owner User são todos os usuários! (pense em Universe) Mostrar, no quadro, como funciona a numeracão binária para o modo octal Links e links simbólicos ln -s ls -la /etc/init.d /etc/rc2.d Observe o init.d e o rc2.d para ver como os links simbólicos são úteis. S start K stop número é a ordem Lembra do comando runlevel? Acabou? não! Tem muito mais! https://wiki.lpi.org/wiki/LinuxEssentials_Objectives_V1.5 A importância das senhas fortes Outros tipos de estruturas de repetição (until ... do, while..., case) Endereçamento IPv4 e IPv6 /etc/skel /tmp Sticky Bit Virtualizacão É impossível cobrir tudo o que cai no exame Linux Essentials em poucas horas. Familiarize-se com os objetivos nesse link. não cobrimos praticamente nada de arquitetura de hardware, você deve saber quais os componentes de seu computador: processador, memória, expansões, armazenamento em disco, pendrives (flashdrives), rede, periféricos. Onde eu posso estudar o que falta? lcnsqr.com/curso-linux-essentials www.linuxcertification.co.za/sites/default/files/linux-esentials-manual.pdf Google: "Linux Essentials" filetype:pdf Google: Linux site:novatec.com.br Google: Linux site:altabooks.com.br www.4linux.com.br/curso/linux-beginners-cloud-online ... Obrigado! Cesar Brod cbrod@lpi.org