Fundação Guimarães Rosa Sistema Operacional GNU/Linux Hélio Marques Sobrinho hmarx@linuxtech.com.br
Conteúdo programático Módulo 1 Introdução ao Linux Histórico e licenciamento Distribuições Instalação do sistema Planejamento, instalação e configuração Sistemas de arquivos e estrutura de diretórios Tipos de arquivos Permissões e propriedades de arquivos Utilização do Linux Principais comandos 2
Conteúdo programático Módulo 2 Introdução à administração de sistemas Gerenciamento de pacotes Instalando e atualizando pacotes com RPM Gerenciamento de usuários e grupos Gerenciar processos e serviços Agendador de tarefas cron Editor de runlevels Identificação do hardware Configuração de dispositivos de hardware Gerenciamento de discos Rotinas de backup Linux kernel Gerenciador de boot Utilização do bash Editoração usando joe e vim Programação shell (bash) 3
Conteúdo programático Módulo 3 Rede TCP/IP Rotas e redirecionamento Servidor de DHCP Serviços de Rede Servidor de nomes Bind Administrando o Apache WEB server Servidor de e-mail Sendmail e noções de Postfix SMTP, POP3, anti-spam e antivirus Acesso remoto e administração através de ssh Samba server Proxy server Análise de log de acesso Implementando relatório de acesso à WEB com SARG Segurança Implementação de firewall utilizando iptables Principais regras do iptables; proxy transparente Noções básicas de VPN em Linux Políticas de segurança Virtualização VMWare 4
Histórico do Unix 1964 : Projeto MULTICS Bell Labs, MIT e General Electrics (GE-465) 1969: Ken Thompson Sistema operacional em linguagem assembly do PDP-7 1971 : Dennis Ritchie Linguagem C 1973 : Ken Thompson, Dennis Ritchie e Brian Kernigham Unix reescrito na linguagem C, aprox. 10000 linhas Bell Laboratories / AT&T Distribuição dos fontes pelas universidades Xenix, SCO, BSD 1983: AT&T Unix System V 1990: AT&T Unix System V Release 4 5
O padrão Unix Unix SVR4 AT&T 1990 System V Interface Definition - SVID AT&T Unix SCO Xenix SunOS Berkeley BSD DEC Unix DEC Ultrix IBM AIX HP-ux Sun Solaris Sidix Sox, Edix Plurix... Unix System Laboratories USL Novell 1993 Novell / Caldera Systems Caldera + SCO SCO Group 1995 Unix : X/Open OpenGroup - 1995 http://www.opengroup.org 6
Introdução Projeto GNU GNU is Not Unix GPL GNU General Public License FSF Free Software Foundation Richard Stallman MIT - Boston, USA, 1984 Linux kernel núcleo do sistema operacional clone completo do Unix Linus Benedict Torvalds Univ. Helsinki, Finlândia, 1991 Ambiente operacional GNU/Linux 7
Histórico do kernel Linux Linus Torwalds Inspirirado no Minix de Andrew Tanenbaum Modelo GNU / FSF Plataforma i386 Primeira versão oficial : 5 de outubro de 1991 Versões do kernel : http://www.kernel.org 1999: 2.2.x e 2.3.x 2001: 2.4.x 2002: 2.5.x 2004: 2.6.x versão atual (estável): 2.6.32.7 jan/2010 8
As licenças GNU: GPL e LGPL GPL - General Public License direito de utilizar o programa livremente direito de estudar o programa e modificá-lo direito de redistribuir cópias do programa direito de melhorar o programa e distribuir as melhorias LGPL - Lesser General Public License mais indicada para bibliotecas podem ser utilizadas em programas proprietários compatível com a licença GPL 9
Arquitetura dos sistemas Unix-like Abstração do hardware bibliotecas padrão shells poderosos Portabilidade Intel, AMD, PPC, Motorola,S390, ARM,Sun Sparc, RISC, HP-pa, DEC alpha, 32 ou 64 bits Intel EMT64, AMD 64,... 10
Conceitos do Linux Clone completo da arquitetura Unix Sistema Multiusuário Sistema Multitarefa Múltiplos programas em execução (processos) Preemptivo Resolução de conflitos de alocação de recursos B A Requisição Acesso Acesso R1 R2 Suporte a multi-processamento 11
Gerenciamento de Memória Memória Virtual Tamanho do processo = RAM + espaço em disco para swap swap in e swap out Paginação Espaço de endereçamento virtual Aplicações Espaço de endereçamento real Processador(es) Segmentação Elementos do modelo computacional Blocos de código, blocos de dados, pilha Arquitetura x86 (i386 e superiores) Segmentação e paginação 12
Processo de boot Execução de um processo multi-camada BIOS Inicialização do hardware Carga do loader do sistema operacional Loader Pode ser parte do próprio sistema operacional Carrega o kernel do sistema operacional Identifica o sistema de arquivos raiz ( / ) LILO ou GRUB no Linux Kernel Identifica o hardware instalado e carrega os drivers Monta o sistema de arquivos raiz ( / ) Monta os outros sistemas de arquivos Executa os processos iniciais 13
Sessões Terminais reais Monitor, teclado e interface serial Terminais virtuais Acessíveis através das teclas - a - Welcome to SuSE Linux 11.2 (i386) - Kernel 2.6.31 (tty1) earth login: Usuário e senha Have a lot of fun... Last login: Tue Jan 5 22:24:43 on tty1 No mail: tux@earth:~> 14
O usuário root Usuário privilegiado Acesso completo e irrestrito ao sistema! Comando su tux@earth:~> su Password: earth:~# Execução de comandos privilegiados tux@earth:~> su -c shutdown -h 10m Password: Broadcast message from root (tty1)... The system is going DOWN for system halt in 10 minutes!! Escolha sempre senhas seguras! 15
Sistemas de Arquivos Abstração para facilitar a localização dos dados dos usuários Organização em diretórios hierárquicos caminho ou path (absoluto ou relativo) [ / ] [ { componente / } * ] componente Nodos de informação - inodes número de identificação de um arquivo, diretório ou dispositivo Diretórios mapeamento do número do inodo para um nome de arquivo Diferencia maiúsculas de minúsculas nos nomes tux@earth:~/tmp> ls -l total 6 -rw-r--r-1 tux -rw-r--r-1 tux -rw-r--r-1 tux tux@earth:~/tmp> users users users 1800 Oct 29 09:01 Letter1.tex 1619 Oct 29 09:02 letter1.tex 1593 Oct 29 09:02 letter1.tex 16
Arquivos Sequências de bytes identificadas por um i-nodo Conteúdo do i-nodo Tipo do arquivo Permissões de acesso (rwx para dono, grupo e outros) Links : número de nomes para o i-nodo Dono : UID Grupo : GID Tamanho Datas e horas de criação, modificação e acesso tux@earth:~/work> ls -lid Arquivo Diretorio total 6 48226 -rw-r--r-1 tux users 1754 2010-01-07 09:01 Arquivo 48223 drw-r--r-2 tux users 48 2010-01-06 17:35 Diretorio tux@earth:~/work> 17
Diretórios Conjunto de nomes de arquivos Nome e número do i-nodo Múltiplos nomes para o mesmo arquivo Podem estar em diretórios diferentes hard links e symbolic links tux@earth:~/work> ls -lid file* 48231 lrwxrwxrwx 1 tux users 13 2010-01-07 20:07 file0 -> /usr/bin/file 48230 -rw-rw---- 2 tux users 17033 2010-01-07 20:03 file1 48230 -rw-rw---- 2 tux users 17033 2010-01-07 20:03 file2 tux@earth:~/work> 18
Links simbólicos Restrição do hard link Arquivos e nomes devem estar no mesmo sistemas de arquivos i-nodos estão associados ao sistema de arquivos Links simbólicos Arquivos e/ou nomes podem estar em sistemas de arquivos diferentes tux@earth:~> ls -li total 1 69188 -rw-r r-- 1 tux users tux@earth:~> ln -s old new tux@earth:~> ls -li total 2 69189 -rw-r r-- 1 tux users 69188 -rw-r r-- 1 tux users tux@earth:~> 35 Nov 10 21:23 old 35 Nov 10 21:23 new -> old 35 Nov 10 21:23 old 19
A Estrutura hierárquica de arquivos / bin ls opt oracle kde bin lib etc init.d dev Usr share doc bin home jose arq1 sbin maria arq2 20
Dispositivos No diretório /dev (normalmente) Arquivos especiais representam dispositivos de hardware Tipo caracter, bloco, pipe, link, socket Identificação do dispositivo major number e minor number tux@earth:~> brw-rw---brw-rw---crw-rw---crw-rw---crw-rw---tux@earth:~> ls 1 1 1 1 1 -l /dev/tty0 /dev/tty1 /dev/hda /dev/hdb /dev/lp0 root disk 3, 0 Mar 23 2002 /dev/hda root disk 3, 64 Mar 23 2002 /dev/hdb root lp 6, 0 Mar 23 2002 /dev/lp0 tux tty 4, 0 Apr 15 10:09 /dev/tty0 root tty 4, 1 Apr 15 10:12 /dev/tty1 Alguns dispositivos importantes Discos : Terminais: Impressoras: Captura de imagem: fdi, sd[a-z][i], hd[a-z][i], cdromi, sri,... console, ttyi, tty[a-z]i, pts/i,... lpi videoi i é um número inteiro 21
Diretórios de Aplicativos Utilitários gerais utilizados pelo sistema e pelo usuário Aplicativos padrão : /bin Aplicativos não padrão: /usr/bin Utilitários do sistema X Windows /usr/x11r6/bin Utilitários para administração do sistema Aplicativos padrão : /sbin Aplicativos não padrão : /usr/sbin Aplicativos opcionais Aplicativos padrão /opt Aplicativos específicos da máquina Aplicativos gerais /usr/local/bin Aplicativos administrativos /usr/local/sbin 22
Arquivos de configuração Diretório /etc Arquivos principais /etc/suse-release /etc/inittab /etc/fstab /etc/lilo.conf /etc/modules.conf /etc/profile /etc/passwd /etc/shadow /etc/group /etc/printcap /etc/hosts /etc/inetd.conf /etc/syslog.conf Versão da distribuição SuSE-release redhat-release fedora-release debian-version slackware-release... Subdiretórios principais /etc/init.d/ /etc/sysconfig/ /etc/pam.d/ /etc/x11/ 23
Diretórios pessoais Diretório /home/login name Acessível também por ~login name Arquivos de configurações personalizadas Arquivos ocultos : nomes iniciados com..profile.bashrc.bash_history.exrc.xinitrc.emacs.gnu_emacs.xemacs.aliases entre outros 24
Formatos do sistema de arquivos O Linux suporta diversos tipos de sistemas de arquivos: FAT16, FAT32, HFS, XFS, EXT2, REISER,... Organização dos dados no sistema de arquivos ext2 25
Permissões de acesso Tipo do objeto (-, d, c, b, l, s, p) Permissões por grupos de usuários rwx: read, write, execute Para o dono do objeto Para o grupo do objeto Para os outros usuários Objetos : arquivos, diretórios ou dispositivos tux@earth:~> ls -ld hello.txt Mail -rw-r--r-1 tux users 6 Oct 1 10:33 hello.txt drwx-----2 tux users 1024 Aug 10 09:58 Mail tux@earth:~> Alteração de propriedade do objeto chown dono [ {. : } grupo ] objeto... chown {. : } grupo objeto... chgrp grupo objeto... Alteração de permissões chmod { u g o a} { + - = } objeto... chmod modo_octal objeto... Modo octal : 0000 a 7777 26
Permissões especiais Quarto dígito octal de mais alta ordem S SUID - Set User Id Válido para arquivos executáveis Aplicativo assume a identificação do dono na execução s SGID - Set Group Id Válido para diretórios Arquivos criados no diretório herdarão o grupo do diretório T Sticky bit Válido para diretórios Arquivos neste diretório só podem ser removidos pelos donos Exemplo: /tmp tux@earth:~> ls -ld /tmp drwxrwxrwt 11 root root tux@earth:~> 4096 Apr 12 13:32 /tmp 27
Atributos do Sistema de arquivos ext2 Lista de controle de acesso (ACL) A a c d i s u Comandos lsattr access time append only (grava adiciona informação) compressed (não implementado) não salvo pelo programa de backup dump imutável (não pode ser apagado ou alteado) secure deletion (conteúdo apagado com zero) undeletable (não pode ser removido) e chattr tux@earth:/work # touch blabla tux@earth:/work # chattr +i blabla tux@earth:/work # ls -l blabla -rw-r--r-- 1 root root 0 Apr 12 13:32 blabla tux@earth:/work # rm blabla rm: remove write-protected file blabla? y rm: cannot unlink blabla : Operation not permitted tux@earth:/work # 28
Documentação Ajuda on-line para os comandos do shell help comando tux@earth:~> help exit exit: exit [n] Exit the shell. Exits the shell with a status of N. If N is omitted, the exit status is that of the last command executed. tux@earth:~> Ajuda para os aplicativos gerais Lista opções válidas e argumentos Podem ter opção -h ou help Alguns podem exibir o texto de ajuda se não passar os argumentos necessários se não passar os argumentos corretos 29
Documentação Manual on-line para os comandos Man [ [ -k ] volume ] ] comando Abaixo a tela para man 1 ps NAME ps - report a snapshot of the current processes. SYNOPSIS ps [options] DESCRIPTION ps displays information about a selection of the active processes. If you want a repetitiveupdate of the selection and the displayed information, use top(1) instead. This version of ps accepts several kinds of options: 1 UNIX options, which may be grouped and must be preceded by a dash. Manual page ps(1) line 1 30
Páginas de manual Sessões do manual NAME SYNOPSIS DESCRIPTION OPTIONS COMMANDS FILES SEE ALSO DIAGNOSIS EXAMPLE BUGS Volumes dos manuais 1 0p 1p 2 3 3p 4 5 6 7 8 9 n s * : comandos do usuário : manual de programação POSIX (headers) : manual de programação POSIX : chamadas do sistema : funções e bibliotecas de rotinas : manual de programação POSIX : manual de dispositivos : arquivos de configuração e formatos de arquivos : jogos : pacotes de macros e formatos de arquivos : comandos de administração do sistema : funções internas : biblioteca Tcl : especificações : manuais novos, ainda não classificados 31
Arquivos Info Documentos estruturados Acesso direto a seções a partir do índice Links entre sessões específicas Algumas vezes mais completo que o man File: coreutils.info, Node: ls invocation, Next: dir invocation, Up: Directory listing 10.1 `ls': List directory contents ================================== The `ls' program lists information about files (of any type, including directories). Options and file arguments can be intermixed arbitrarily, as usual. For non-option command-line arguments that are directories, bydefault `ls' lists the contents of directories, not recursively, and omitting files with names beginning with `.'. For other nonoptionarguments, by default `ls' lists just the file name. If no non-opt Ion argument is specified, `ls' operates on the current directory, acting as if it had been invoked with a single argument of `.'. --zz-info: (coreutils.info.gz)ls invocation, 73 lines --Top--------Welcome to Info version 4.13. Type h for help, m for menu item. 32
Documentação Arquivos HOWTO Funcionamento, configurações de aplicativos, serviços e dispositivos Normalmente em /usr/share/doc/howto/ Documentações de pacotes instalados Em /usr/share/doc/packages/pacote Milhares de livros Linux Unix Software livre Coleção da O'Reilly http://oreilly.com/linux Site Wikipedia: http://www.wikipedia.org 33
Ferramentas importantes no Linux O shell Interpretador de comandos Linguagem de programação Bourne shell Korn shell C shell Tcsh Bourne-Again-Shell bash... O shell padrão : bash Arquivos de inicialização /etc/profile.bash_profile.bashrc 34
Ambiente do shell Variáveis de ambiente importantes PATH MANPATH TERM HISTSIZE Definição de variáveis do shell variavel=texto $variavel Uso de, ' e \ como escape para caracteres especiais. tux@earth:~> echo $PATH /bin:/usr/bin:/usr/bin/x11:/usr/x11r6/bin:/usr/local/: /usr/sbin:/home/tux/bin: tux@earth:~> PESSOA= Richard tux@earth:~> EMPRESA= Free Software Foundation tux@earth:~> echo $PESSOA da $EMPRESA Richard da Free Software Foundation tux@earth:~> 35
Ambiente do shell Prompt do shell PS1 PS2 PS3 PS4 prompt normal prompt de continuação prompt do comando select prompt do trace do shell > + Algumas macros \u \w \d \! usuário caminho completo data número do comando \h \W \t \j hostname diretório corrente hora número de jobs tux@earth:~> PS1= \u:\t@\h:\w {\j} #\! > tux:15:32:27@earth:~ {0} #1041 > 36
Comandos do shell Comandos internos if/then/else, for, select, set,... export ulimit functions... Comandos externos executáveis no path scripts (shell, perl, tcl,...) binários (linguagens compiladas) Apelidos alias Histórico de comandos history!n 37
Redirecionamento de E/S Operadores de redirecionamento > 1> 2> i> < i>&j >> <<texto tux@earth:/work> echo GNU/Linux rev Operador pipe Remificação comando tee xunil/ung tux@earth:/work> ls -1 Arquivo Diretorio file0 file1 file2 tux@earth:/work> ls -1 wc 5 5 36 tux@earth:/work> 38
Expansão de comandos Expansão de chaves tux@earth:~/tmp> mkdir test{1,2,3,4,5} tux@earth:~/tmp> ls -F test1/ test2/ test3/ test4/ test5/ tux@earth:~/tmp> Substituição de comandos tux@earth:~> echo "Hoje é $(date +%d/%b/%y)." Hoje é 22/Mar/2003. tux@earth:~> echo "Hoje é `date +%d/%b/%y`." Hoje é 22/Mar/2003. tux@earth:~> 39
Comandos no Linux Sintaxe geral comando [ opções ] [ argumentos ] built-in do shell função definida no shell executável ou script em um diretório definido pela variável PATH Case sensitive: A!= a Prompt Totalmente configurável pelo usuário (PS1) padrão do Linux usuário@máquina:diretóriocorrente> Opções -caracter ou --texto 40
Comandos básicos do Linux Tratamento de diretórios cd [ diretório - ] mkdir [ opções ] caminho rmdir diretório pwd ls [ opções ] [ arquivo ] Tratamento de arquivos cat [ arquivo ] cp [ opções ] arquivo... [ diretório ] mv [ opções ] arquivo... [ diretório ] rm [ opções ] arquivo ln [ opções ] nome... [ diretório ] echo [ -n -e -E ] texto 41
Metacaracteres Processados pelo shell antes de executar o comando * qualquer cadeia de caracteres? um caracter qualquer [ conjunto ] um caracter do conjunto [! conjunto ] um caracter não presente no conjunto Exemplos de conjuntos [!abcdefgh] ou [!a-h] [0123456789ABCDEF] ou [0-9A-F] tux@earth:~/arqs> ls * chap1 chap2 chap3 programb2 tux@earth:~/arqs> ls *[1-3] chap1 chap2 chap3 tux@@earth:~/arqs> ls *[!1-3] programa tux@@earth:~/arqs> ls *[A-B]? programb1 programb2 tux@earth:~/arqs > programa programb1 programb1 programb2 42
Criando links Links hard links symbolic links (atalhos) tux@earth:~> ls -li total 1 69188 -rw-r r-- 1 tux users tux@earth:~> ln old new tux@earth:~> ln -s old brandnew tux@earth:~> ls -li total 2 69190 lrwxrwxrwx 1 tux users 69188 -rw-r r-- 2 tux users 69188 -rw-r r-- 2 tux users tux@earth:~> 35 Nov 10 21:23 old 3 Nov 10 21:23 brandnew -> old 35 Nov 10 21:23 new 35 Nov 10 21:23 old 43
Procurando arquivos find caminho opções algumas opções : -print -true -name padrão -exec comando ; -atime [+/-] n -amin [+/-] n -inum n -uid n -gid n -anewer arquivo -false -maxdepth nivel -iname padrão -size tamanho[cwbkmg] -ctime [+/-] n -cmin [+/-] n -type t -user name -group name -cnewer arquivo suporta expressões utilizando operadores relacionais ( expr )! expr -not expr expr1 -a expr2 expr1 -and expr2 expr1 -o expr2 expr1 -or expr2 44
Procurando arquivos locate opções padrão base de dados criada pelo programa updatedb executado periodicamente através do cron algumas opções -i -w -b -S -c -e -E -p -r ignore case nome completo último componente do nome (basename) estatísticas somente imprime quantidade de arquivos somente arquivos existentes somente arquivos não existentes força a impressão expressão regular 45
Processos Processo init : PID 1 Comando ps (process status) opções mais usuais a u x w l u informações exibidas PID TTY PRI NI STAT TIME COMMAND estado do processo R S D T SIZE Z Outros comandos top qps pstree 46
Enviando sinais Comandos kill killall Sinais mais comuns veja kill l para ver a lista completa SIGTERM SIGKILL SIGSTOP SIGCONT o prefixo SIG pode ser omitido SIGINT SIGQUIT tux@earth:~> xclock & [ 1 ] 24727 tux@earth:~> kcalc & [ 2 ] 24729 tux@earth:~> kill -SIGTERM 24727 [ 1 ]- Terminated xclock tux@earth:~> kill -SIGKILL %2 [ 2 ]+ Killed kcalc tux@earth:~> 47
VI - o editor de textos do Unix tux@earth:~> vi exercicio ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "exercicio" [New File] 0,0-1 All 48
O editor VI Editor padrão do Unix Modos comando edição comando de linha : /?! ¹ volta para o modo comando Utiliza expressões regulares Para a tecla de comando ( ), o comportamento depende do que foi digitado antes (➊) e do que sera digitado depois (➋). ➊ ➋ Exemplo: 5dw : deleta 5 palavras cty : deleta até o caracter y e inicia inserção 49
VI - o editor de textos do Unix Modos de operação comando edição linha de comando volta ao modo comando Comando ª Edição : /? Linha de comando 50
VI Comandos principais ➊ ➋ Movendo pelo texto h j k l 0 $ + -G H M L w b W B e E % Ç Ê È Ê Ã Ä +B +F +U +D ª «Inserindo texto i I a A Substituindo texto r R c C Apagando texto x X d D Saindo do VI ZZ ZQ Localizando caracteres t T f F '`,; Copy and Paste y Y p P Marcando texto " m v V +v Desfazendo últimas alterações u U 51
VI Comandos principais Comandos especiais Repetindo o último comando. Alternando para modo ex (edição linha a linha) Q Execução de comandos! Obtendo o manual do texto sob o cursor K Informações sobre o arquivo +G 52
VI Comandos de linha Comandos de linha ( iniciados por : ) Faixa: [ buffer ] [ [ início ], [ fim ] ] comando buffer: k número da linha marca: 'k /padrão/ Tratando arquivos e r w f Substituindo textos s/padrão1/padrão2/opções g/padrão/s/padrão1/padrão2/opções Ajuda h Que arquivo? f Saindo do VI x q 53
O editor VI expressões regulares. * [conjunto] [^conjunto] ^ $ \< \> \(...\) \n um caracter qualquer 0 ou mais caracteres um caracter do conjunto um caracter não pertencente ao conjunto início de linha fim de linha início de palavra fim de palavra agrupa sub-expressões n-ésima sub-expressão agrupada Utilizadas em pesquisas (comandos :g/.../, / e?) em substituições (comando :s/.../.../) 54
VI Opções Comandos :set opções lógicas [no]number [no]list... [no]wrap [no]ic [no]showmatch [no]hlsearch opções com valores ts=n sw=n fileformat=fmt fileencoding=enc backupcopy={yes no auto} backupext=ext... 55
O Editor Joe Joe's Own Editor Joseph Allen Interface semelhante ao WordStar (MicroPro International) WordStar: desenvolvido inicialmente para o CP/M - 1978 processador Intel 8080/8085 portado p/ o DOS 1981 Mistura de WordStar e Emacs Variantes joe, jstar (wordstar), jmacs (emacs), jpico (pico) 56
O editor Emacs Richard Stallman - FSF Poderoso e altamente configurável alta utilização de memória pode ser transformado em um ambiente operacional ou de desenvolvimento pode trabalhar em partes de um arquivo (seções) Versão para X Window xemacs 57
Tela inicial do Emacs 58
Imprimindo no GNU/Linux Formatando arquivos para impressão pr Colocando jobs na fila de impressão lpr Mostando as filas de impressão lpq Removendo jobs da fila de impressão lprm 59
O bash linguagem de programação Variáveis de ambiente comandos env unset export let tux@earth:~> tux@earth:~> tux@earth:~> VAR=Um texto tux@earth:~> tux@earth:~> tux@earth:~> tux@earth:~> tux@earth:~> 2 tux@earth:~> tux@earth:~> 26 tux@earth:~> env grep ^VAR= export VAR= Um texto env grep ^VAR= unset VAR env grep ^VAR= let V=1 let ++V echo $V let V=V*13 echo $V 60
Algumas variáveis padrão Redefiníveis pelo usuário PATH PS1 PS2 PS3 HOSTNAME HOME TERM MANPATH IFS DISPLAY USER LANG CDPATH... Não redefiníveis pelo usuário?! 0 1 2 3 4 5 6 7 8 9 # * @ 61
Operação com variáveis Expansão de parâmetros $variável ${variável} ${variável:-texto} ${variável:+texto} ${variável:offset} ${variável:offset:tamanho} ${#variável} ${!variável} ${variável#padrão} ${variável##padrão} ${variável%padrão} ${variável%%padrão} ${variável/padrão/texto} ${variável/padrão/texto} 62
Exemplos tux@earth:~> unset A tux@earth:~> echo ${A:-texto} texto tux@earth:~> echo ${A:?Variável não definida} bash: A: Variável não definida tux@earth:~> A= Um texto muito longo tux@earth:~> echo ${#A} 20 tux@earth:~> echo ${A:3:11} texto muito tux@earth:~> echo ${A/muito/quase} Um texto quase longo tux@earth:~> A=/x/y/z/w/x tux@earth:~> echo ${A%/x} /x/y/z/w tux@earth:~> echo ${A#/x} /y/z/w/x tux@earth:~> A=B tux@earth:~> B=1234 tux@earth:~> echo ${!A} 1234 tux@earth:~> 63
Comandos condicionais Condicional simples if condição ; TRUE é 0! FALSE é qualquer valor diferente de 0! then comandos ; fi Condicional composto if condição ; then comandos1 ; else comandos2 ; fi tux@earth:~> 0 tux@earth:~> 1 tux@earth:~> > then > ls > else > ps > fi 22768 p7 S 27773 p1 S 28003 p1 R tux@earth:~> true ; echo $? false ; echo $? if expr 3 \> 4 0:33 bash 0:27 bash 0:00 ps 64
Comandos condicionais Condicional composto agrupado if condição1 ; then comandos1 ; elif condição2 ; TRUE é 0! FALSE é qualquer valor diferente de 0! then comandos2 ; elif condição3 ; then comandos3 ;... else comandosn ; fi 65
Operadores do bash Redirecionamento de E/S < > >> i>&j <<texto Pipeline Separador de comandos ; Disparo em background & Agrupamento de comandos { comando1; comando2;... } Sub-shell ( comando1; comando2;... ) 66
Operadores do bash Substituição de comandos `comando1; comando2;...` $( comando1; comando2;... ) Expressões aritméticas TRUE é 0! FALSE é qualquer valor diferente de 0! (( expressão )) Expressões lógicas [[ expressão ]] 67
Comandos iterativos Teste de continuação do loop while condição ; do comandos ; done Teste do fim do loop until condição ; do comandos ; done #!/bin/bash unset NOME while [ z $NOME ] do echo n Entre seu nome : read NOME done echo Bem vindo $NOME #!/bin/bash unset NOME until [ s $NOME ] do echo n Entre seu nome : read NOME done echo Bem vindo $NOME 68
Comandos iterativos Loop controlado for nome [ in lista_de_palavras ] do comandos done tux@earth:~> for i in > do > echo $i > done A B C D A B C D hmarx@thor:~> 69
Comandos condicionais Seleção múltipla case valor in padrão1) comandos1 ;; padrão2) comandos2 ;; tux@earth:~> cat que_e #!/bin/bash case $1 in [a-z]) echo [A-Z]) echo [0-9]) echo *) echo esac $1 $1 $1 $1 é é é é letra minúscula ;; letra maiúscula ;; numérico ;; caracter especial ;; tux@eath:~>./que_e R R é letra maiúscula tux@earth:~>... esac 70
Comandos interativos Saída echo, cat, printf Entrada read tux@earth:~> printf %04d 0015 %s\n 15 Descrição Descrição tux@earth:~> echo -n Entre seu nome : ; read NOME SOBRENOME Entre seu nome : Helio Marques tux@earth:~> echo Prazer $NOME $SOBRENOME Prazer Helio Marques tux@earth:~> 71
Comandos interativos Geração de menus select nome [ in lista_de_palavras ] do comandos ; done Usa a variável PS3 como prompt! default: #? 72
Exemplo do comando select tux@earth:~> PS3= Escolha a fruta : tux@earth:~> select fruta in uva maçã pera nenhuma > do > if [ $fruta == nenhuma ] > then > break > fi > echo Você escolheu $fruta > done 1) uva 2) maçã 3) pera 4) nenhuma Escolha a fruta : 2 Você escolheu maça 1) uva 2) maçã 3) pera 4) nenhuma Escolha a fruta : 4 tux@earth:~> 73
Programação shell scripts scripts para facilitar tarefas administrativas Exemplo: earth:~# cat /tmp/istodaymonday #!/bin/bash d=`date +%w` if test $d eq 1 then echo yes exit 0 else echo no exit 1 fi earth:~# chmod a+x /tmp/istodaymonday earth:~# 74
Programação shell expressões Forma não portável tux@earth:~> x=1 tux@earth:~> y=2 tux@earth:~> echo $x $y 12 tux@earth:~> echo $(($x + $y)) 3 Forma portável tux@earth:~> x=1 tux@earth:~> y=2 tux@earth:~> echo `expr $x + $y` 3 75
Programação shell Depuração Comando set set -v : verbose set -x : mostra substituições set -t :executa apenas um comando separação de strings tux@earth:~> x= a b c d e tux@earth:~> set $x tux@earth:~> echo $# $1 $2 $3 $4 $5 5 a b c d e tux@earth:~> IFS= : tux@earth:~> set $x tux@earth:~> echo $# $1 $2 $3 $4 $5 1 a b c d e tux@earth:~> x= a b c:d e tux@earth:~> set $x tux@earth:~> echo $# $1 $2 $3 $4 $5 2 a b c d e tux@earth:~> 76
O sistema X Window Interface gráfica padrão do Unix - MIT, 1984 modelo cliente/servidor X clients X servers Protocolo X11 Rede TCP/IP Nome do display: Endereço : servidor:display.tela (localhost: :0.0) 77
Arquitetura do X Window Servidor X xorg - X11R7.1 Gerenciadores de desktop (Desktop Managers) xdm kdm gdm... Gerenciadores de janelas (Window Managers) twm fvwm fvwm2 mlwm qvwm cdwsim kwin plasma gnome kwin WindowMaker Enlightment... 78
Gerenciadores de arquivos do KDE Dolphin Diversos modos de visualização Manipulação completa de arquivos e suas propriedades Preview de arquivos e diretórios 79
Konqueror : Gerenciador de Arquivos Browser WEB completo Diversos modos de visualização Manipulação completa de arquivos e suas propriedades Múltiplas janelas horizontais e/ou verticais 80
Outros aplicativos X Office, multimedia, bancos de dados,... 81
Iniciando/Finalizando o Linux Boot sector MBR (floppy, HD, CD, DVD,...) Carga do kernel Detecção e inicialização do hardware Montagem dos sistemas de arquivos Disparo do processo 1 : /sbin/init Niveis de execução /etc/inittab earth:~# 0 = halt earth:~# 1 = monousuário 2 = multiusuário sem rede 3 = multiusuário com rede 4 = não utilizado 5 = multiusuário com rede e xdm 6 = reboot init Q 82
reboot / shutdown / halt Parada controlada pelo sistema halt poweroff shutdown reboot Comportamento de  /etc/inittab ca::ctrlaltdel:comando earth:~# shutdown +5 O novo disco chegou 83
Do boot ao login 84
Scripts de inicialização Processo init scripts em /etc/init.d/* script rc scripts no subdiretório rci.d para cada runlevel i Sxx* Knn* links para /etc/init.d/* parâmetros start e stop - start - kill scripts boot* iniciar serviços dependentes de outros /etc/sysconfig/* configurações de serviços network/*, pcmcia, hotplug,... apache, firewall, nfs,... 85
Adicionando hardware Módulos do kernel (drivers para os dispositivos) Discos, placas de rede, som, modems,... Discos fdisk particionamento mkfs criação de sistema de arquivos ext2, ext3, ext4, xfs, jfs, reiserfs, minix,... mount integração ao sistema de arquivos Arquivo /etc/fstab dispositivo ou arquivo ponto de montagem tipo do sistema de arquivos opções de montagem backup e verificação 86
Impressoras Padronização CUPS Common Unix Printing System PostScript apsfilter ou lpdfilter Definição padrão de impressoras /etc/cups/printers.conf /etc/printcap Controle de filas de impressão lpc Controle de impressão de arquivos pr lpr lprm 87
O kernel do Linux kernel e módulos do kernel /boot/vmlinuz /lib/modules/versão/* suporte a hardware e serviços protocolos IP, IPX, SMB sistemas de arquivos Comandos lsmod insmod rmmod modprobe Recompilação do kernel adequação ao hardware otimização de uso de memória parametrização de serviços 88
Recompilação do kernel Linux Fontes do kernel /usr/src/linux link para linux-versão Makefile Configuração make config make menuconfig make xconfig make cloneconfig Compilação make make modules Instalação make install make modules-install Outras opções make help make rpm-pkg make binrpm-pkg make deb-pkg make tar-pkg make targz-pkg make tarbz2-pkg... 89
Instalação de software Gerenciadr de pacotes Instalação e atualização CD, DVD, NFS, SMBFS, FTP Atualização on-line Arquivos.rpm rpm (RedHat Package Manager) pacotes binários pacotes com códigos fonte Outros formatos arquivos comprimidos.z.gz.bz2 arquivos tar.tar.tar.z.tar.gz.tgz.tar.bz2 90
Monitoração do Sistema Processos Carga do(s) processador(es) Número de processos em execução Uso de memória e swap Comandos ps free top swapon vmstat sensors iostat... Informações interessantes (ps, top,...) PID USER PRI NI RSS SHARE %CPU %MEM SWAP COMMAND SIZE TIME 91
Arquivos de log syslog registro de eventos do sistema processo syslogd /etc/syslog.conf /etc/syslog ng/syslog ng.conf facilities auth authpriv cron daemon kernel lpr mail mark news syslog user uucp local0 a local7 priorities debug info notice warning err crit alert emerg Diretorio /var/log arquivos messages mail warn firewall serviços/*... 92
Visualização de logs Ferramentas básicas tail -f /var/log/arquivo_de_log dmesg Jan 5 13:45:12 earth sshd[31234]: error: PAM: Authentication failure for root from 200.117.252.38 Jan 5 13:45:13 earth kernel: BAD IP IN=eth0 OUT= MAC=00:00:e8:4d:4f:a7:00:13: 5f:05:67:05:08:00 SRC=58.223.240.115 DST=201.17.146.157 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=43341 DF PROTO=TCP SPT=53654 DPT=22 WINDOW=5648 RES=0x00 SYN URGP=0 Jan 5 14:07:42 earth kernel: [ 1720.408936] lp0: using parport0 (interrupt-driven). Jan 5 14:07:42 earth udev-configure-printer: add /module/lp Jan 5 14:07:42 earth udev-configure-printer: add /devices/pci0000:00/0000:00:04.0/printer/lp0 Jan 5 14:07:42 earth udev-configure-printer: SERN fields match Jan 5 14:07:42 earth udev-configure-printer: URI match: usb://hp/psc%201500%20series? serial=br5881r00n0498 Jan 5 14:07:42 earth udev-configure-printer: SERN fields match Jan 5 14:07:42 earth udev-configure-printer: URI match: hp:/usb/psc_1500_series? serial=br5881r00n0498 93
Cron: agendamento de tarefas Processo crond Tabelas crontab modificadas pelo comando crontab crontab [ -u usuário ] arquivo crontab [ -u usuário ] -l crontab [ -u usuário ] -r crontab [ -u usuário ] -e lista o crontab remove o crontab edita o crontab Campos minutos 0-59 horas 0-23 dia do mês 1-31 mês 1-12 ou nome dia da semana 0-7 (0 ou 7 é domingo) ou nome comando e argumentos Exemplos : 0 8-18 * * 1-5 ~/bin/dothis 0,15 */5 * * * ~/bin/dothat 94
95
Distribuições GNU/Linux Composição de uma distribuição Kernel Linux Aplicativos e Utilitários Ferramentas de Instalação e Configuração Ferramentas de Administração e muito mais! 96
Processos em background Operador & Sinais para os processos kill PID kill %job kill -l tux@earth:~> jobs lista os sinais [1]- Stopped du -s / Suspensão de processo tecla - Z suspenção tecla - C interrupção Comandos do shell bg [ % job ] fg [ % job ] jobs [2]+ Stopped tux@earth:/work> [1]- du -s / & tux@earth:/work> [1]- Running [2]+ Stopped tux@earth:/work> [1]+ Terminated tux@earth:/work> top bg %1 jobs du -s / & top kill %1 du -s / 97
Executando vários comandos Separador de comandos ; Sub shell tux@earth:~> (date ; w) > quando.quem tux@earth:~> Operadores lógicos && earth:~# tar cvfz /dev/st0 /home && mt -f /dev/st0 rewind earth:~# tar cvfz /dev/st0 /home echo "Error!" mail root earth:~# 98
Expressões regulares no shell Metacaracteres? * [ conjunto ] [! conjunto ] Exemplos de conjuntos [a-z] [!abc] [a-ek-s] *x* [abcdefg] *.[Bb][Aa][Kk] Cuidado com comandos que removem arquivos utilizando expressões regulares! tux@earth:~> ls especificacao.pdf planilha.xls proposta.bak planejamento.bak proposta.doc planejamento.od tux@earth:~> rm *.bak rm: cannot remove '.bak' : No such file or directory tux@earth:~> ls tux@earth:~> 99
Login gráfico Início da sessão X ~/.xsession ~/.xinitrc Segurança: xhost xauth ssh -X 100
Iniciando o servidor X O servidor X /usr/bin/x link para o /usr/lib/x11/x link para o /usr/bin/xorg Sessão e desktop xdm, kdm, gdm,... autenticação e seleção do window manager twm fvwm cde kde gnome... /usr/bin/startx [ wm ] script que inicializa o X a partir do modo texto Automático após o boot runlevel default : 5 /etc/inittab Id:5:initdefault 101
O KDE Gerenciador completo do computador aparência, fonts, temas, layout de teclado, data e hora,... área de trabalho, comportamento de janelas,... mouse, som, rede,... aplicativos,... 102
Administração de usuários Arquivo /etc/passwd tux:x:500:100:linux user:/home/tux:/bin/bash Arquivo /etc/shadow tux:$1$ixogdktt$j6tcbivazvr0.lctfawsg/:11509:0:99999:7::: Arquivo /etc/group dialout:x:16:root,tux users:x:100 Criando, alterando e removendo usuários e grupos YaST Comandos de linha useradd groupadd userdel groupdel usermod groupmod passwd gpasswd 103
Sendo outro usuário Executando comandos como root comando sudo /etc/sudoers Abrindo sub-sessão como outro usuário comando su tux@earth:~> sudo shutdown -h now 104
Controlando o uso de disco Quotas por sistema de arquivos opções usrquota e grpquota em /etc/fstab arquivos quota.user e quota.group Comandos edquota quotastats quotaon repquota quotacheck quotaoff setquota earth:~# quotacheck -avug 105
Backups Cópias de segurança defeitos de hardware discos e controladoras CPU e memória erros de software Ferramentas tar backup padrão do Unix compressão com gzip ou bzip2 cpio utilizado em cópias de hierarquias de diretórios dump backup multi-camada verifica atributo d do sistema de arquivos ext2 permite backup remoto computador:dispositivo restore restaura backup feito pelo dump 106
Backups compressão Compressão por harware ou por software Sensibilidade a erros no meio físico Ferramentas de compressão gzip bzip2 zip rar compress lzma... Redução de tempo de transferência de dados Redução de espaço ocupado pelo backup em média, menor que 50% 107
Recuperação de desastre Desastre total O sistema não inicializa em modo multiusuário não completa o boot Excluir a possibilidade de falha de hardware Dá boot de disquete, CD/DVD,... Acessa o(s) disco(s) rígido(s)? Problemas no Linux??? Itens de verificação LILO ou GRUB Integridade dos sistemas de arquivos verificação com fsck verificação dos arquivos configurações principais Login /etc/passwd e /etc/shadow Reinstalação ou continuar procurando Reinstalação : Último recurso! 108
Sistema de Arquivos Definições Estrutura diretórios e arquivos Atributos Nome, tamanho, datas e horários permissões e controle de acessos Operações no sistema de arquivos Criar/Remover/Abrir/Ler/Escrever/Fechar Posicionar/Travar/Destravar Obter/Definir atributos Formato no dispositivo de armazenamento blocos, clusters, grupos, listas,... 109
Sistema de Arquivos no Linux Estrutura hierárquica Locais ou remotos Ortogonal Virtual File System Abstração Em rede Servidor Unix NFS Windows SMBFS ou CIFS Novell NCPFS Macintosh HFS Em dispositivo local Nativo Linux minix, ext2, ext3, reiser, reiser4, Não nativo fat, vfat, ntfs, hpfs, qnx,... 110
Coleção de sistemas de arquivos root file system usr bin jose / mount etc bin opt init ls cp mounted file system / D A B E F C G Pode ser local ou remoto! 111
Após o mount / usr bin jose etc init bin ls opt cp A D E B F C G 112
Arquivos no Linux Sequência de bytes identificadas por um inodo Inodo (inode) tipo do arquivo normal, diretório, dispositivo, socket, named pipe, symbolic link permissões e flags rwx para dono, grupo e outros SUID, SGID e STICKY dono (UID) e grupo (GID) tamanho datas e horas criaçao, modificação, último acesso 113
Dispositivos Arquivos especiais Normalmente no diretório /dev tipos b = bloco p = named pipe l = symbolic link c = caracter s = socket tux@earth:~> ls -l /dev/lp0 /dev/ttys1 /dev/hda brw-rw---- 1 root disk 3, 0 abr 30 19:50 /dev/hda crw-rw---- 1 root lp 6, 0 abr 30 19:50 /dev/lp0 crw-rw-rw- 1 uucp uucp 4, 65 ago 28 18:45 /dev/ttys1 tux@earth:~> 114
Diretórios Conjunto de nomes de arquivos nome e número de inodo múltiplos nomes para o mesmo arquivo links e symbolic links hmarx@thor:~/arqs > ls -lai total 15 538203 drwxr-xr-x 3 hmarx 98768 drwxr-xr-x 111 hmarx 538204 -rw-r--r-1 hmarx 538207 drwxr-xr-x 2 hmarx 538208 crw-r--r-1 hmar 538211 prw-r--r-1 hmarx 538213 lrwxrwxrwx 1 hmarx hmarx@thor:~/arqs > starix 1024 starix 6144 starix 6526 starix 1024 starix 30, 40 starix 0 starix 11 feb feb feb feb feb feb feb 23 23 23 23 23 23 23 18:11 18:07 18:08 18:08 18:11 18:09 18:09... Arquivo Normal Diretorio Dispositivo FIFO Link p sh -> /usr/bin/sh 115
Nomes especiais / diretório raiz. diretório corrente.. diretório anterior ou diretório pai ~ diretório pessoal (home) ~hmarx é o diretório pessoal do usuário hmarx Arquivos ocultos Arquivos / Diretórios com nomes começados por. Normalmente só aparecem com opção -a no comando ls (para usuários normais) 116
Alguns arquivos padrão /boot/vmlinuz /var/spool/mail/usuário /etc/passwd /etc/shadow /etc/group /etc/inittab /etc/fstab /boot/grub/* /etc/syslog.conf /etc/inetd.conf /etc/xinetd.conf /etc/profile o kernel do Linux caixa postal do usuário descrição dos usuários senhas dos usuários descrição de grupos serviços para cada runlevel sistema de arquivos montáveis configuração do GRUB configuração do SYSLOGD configuração do INETD configuração do XINETD perfil global para o shell 117
Alguns diretórios padrão / /bin /usr/bin /dev /etc /usr /tmp /var/spool /sbin /usr/sbin /etc/init.d /boot /lib/modules/* /opt diretório raiz utilitários padrão outros aplicativos não padrão dispositivos configuração do sistema utilitários da plataforma arquivos temporários spool de impressão, mail, fax,... configuração e administração outros aplicativos administrativos scripts de inicialização e serviços boot e kernel módulos do kernel aplicativos opcionais 118
O sistema X Window Interface gráfica padrão para Unix Protocolo X11 DEC (Digital Equipment Corporation) MIT (Massachusetts Institute of Tecnology) primeira versão : setembro de 1987 orientado a rede Modelo cliente servidor cliente : aplicações que usam recursos gráficos servidor : provê a interface gráfica ao usuário dispositivos de entrada e saída 119
Arquitetura do sistema X Window Modelo cliente-servidor Host 1 Host 2 Client A Client B X Protocol X Terminal ou PC Servidor XTerminal Rede local Workstation Workstation Servido r Client C Existem servidores X para diversos sistemas operacionais Xwin32 http://www.starnet.com MI/X http://www.microimages.com/mix Cygwin/X http://x.cygwin.com 120
Os componentes do X Window X Server Usuário interface com interfaces gráficas desenho de primitivas pontos, retas, planos Desktop Manager Aplicações (X Clients) controle de sessões Window manager Window Manager X Server decoração das janelas ícones, menus Hardware sobreposição fundo de tela desktops virtuais 121
Gerenciadores de Janelas - 1 FVWM e FVWM2 F* Virtual Window Manager F* : Free, Fantastic, Fabulous, Final, Flexible,... Veja http://www.fvwm.org para os possíveis significados para o F* KDE K Desktop Environment GNOME GNU Network Object Model Environment CDEsim simula o Common Desktop Environment da SUN twm Tiny Window Manager mlvwm Macintosh Like Virtual Window Manager 122
Gerenciadores de Janelas - 2 AfterStep look and feel da interface do NeXT amiwm look and few da interface do Amiga qvwm look and few da interface do Windows 9x e Me enlightenment uma interface bem diferente e configurável windowmaker outra interface similar ao NextStep... e muito mais 123
GNOME 124
QVWM similar a Windows 9x 125
Enlightenment 126
Amiwm similar ao Amiga 127
WindowMaker 128
CDEsim simula o CDE do SunOS/Solaris 129
Interface Gráfica KDE K Desktop Environment Componentes Gerenciador de sessões K Desktop Manager kdm Barra de menus e tarefas kicker e o plasma-desktop Gerenciador das áreas de trabalho kdesktop e o plasma-desktop Gerenciador de janelas kwin e o plasma-desktop Gerenciador de arquivos konqueror e o dolphin Centenas de aplicações gerais Ver http://www.kde.org 130
Componentes do KDE O kdm controle de sessões O kwin e o plasma-desktop gerenciador de janelas O kicker e o plasma-desktop barra de tarefas 131
A área de trabalho do KDE O kdesktop e o plasma-desktop Icones e menus na área de trabalho 132
Algumas aplicações KDE Office e Internet konqueror Browser e gerenciador de arquivos koffice Office suite completa kmail Interface MUA completa kaddressbook Agenda de endereços kopete Sistema de mensagens completo suporta MSN, ICQ, AOL, GroupWise, IRC, Jabber,... e muito mais 133
Konqueror Konqueror como gerenciador de arquivos 134
Konqueror Konqueror como browser WEB 135
Office suite Koffice Integrado ao KDE OpenOffice Mais compatível com o MS Office Também disponível para Windows Applixware (http://www.vistasource.com) Ambiente Unix Importa arquivos do MS Office e outros... 136
OpenOffice Documentos Planilhas Apresentações 137
KMail 138
Kopete vários serviços em um! 139
Ambientes de Desenvolvimento Modelagem Umbrello UML Programação e testes Kdevelop Interface similar ao Visual Studio e ao Delphi Múltiplas linguagens C, C++, Fortran, Java, PHP, Perl, Bash,... Integrado a sistemas de controle de versão CVS e Cervisia kdevdesigner Qt (Trolltech) multiplas plataformas Unix, Windows, MacOSX, PDAs e telefones celulares Eclipse Ambiente de desenvolvimento JAVA 140
Ambientes de Desenvolvimento Controle de Versões rcs Revision Control System cvs Concurrent Versions System subversion Cervisia Interface para o CVS 141
Umbrello Diagramas de estados, classes, ERD,... 142
KDevelop e Qt Designer 143
Eclipse Desenvolvendo em JAVA 144
Sessões Identificação do usuário username e password UID grupo GID Shell padrão Diretório pessoal Sessões locais ou remotas telnet ssh xterm 145
Sessão em modo gráfico kdm Identificação do usuário Escolha do gerenciador de janelas KDE Mais que um simples gerenciador de janelas Totalmente configurável Padrão de fato no Linux Look and feel similar ao do MS Windows 146
Interpretador de comandos Shell Interpretador de comandos originalmente sh no Unix Linguagem de programação Vários disponíveis bash, csh, tcsh, ksh, pdksh, Login shell definido no arquivo /etc/passwd Bash Bourne Again Shell Shell padrão do Linux No linux, o /bin/sh é um link para o /bin/bash Diversas melhorias em relação ao sh e ao ksh 147
Interoperabilidade PC MS-DOS / Windows sistemas de arquivos suportados pelo kernel FAT, VFAT, NTFS emuladores dosemu, wine, VMware, qemu, bochs,... O VMware emula uma arquitetura x86 ou x64 Macintosh MacOS sistema de arquivos suportado pelo kernel emulador Basilisk II Outros ambientes dezenas de emuladores 148
DOSEMU 149
Wine, Paint Brush e Clock 150
VMware com Windows 95 151
MacOS? e PalmOS? Basilisk II rodando MacOS 7.5.5 POSE rodando PalmOS 3.5 152
Mini? Mainframe? SimH PDP-11 rodando RT-11 Hercules IBM 370 rodando VM/370 153
Instalação do Linux Planejamento Definição da função do equipamento Servidor ou Estação de trabalho Serviços a serem instalados Aplicativos a serem instalados Quantidade de memória RAM working set Capacidade de discos Definição dos sistemas de arquivos Rede Protocolos e interconectividade Nomes e endereços 154
Instalação do Linux Particionamento dos discos Criação dos sistemas de arquivos Seleção e instalação dos pacotes RPM : RedHat, SuSE, Fedora, CentOS,... DEB: Debian,... TAR: Slackware,... Configuração usuários e senhas dispositivos serviços 155
Instalação do Linux Particionamento dos discos Criação dos sistemas de arquivos Seleção e instalação dos pacotes Configuração usuários e senhas dispositivos serviços SuSE Linux YaST Yet Another Setup Tool Instalação, configuração e administração Módulo de atualização on-line : YOU Integrado ao KDE Control Center 156
Instalação de software via YaST 157
Linux em rede Rede TCP/IP protocolos pelo kernel Redes Microsoft Windows NBT (NetBIOS over TCP/IP) endereços IPv4 e/ou IPv6 protocolo smbfs suportado pelo kernel Máscaras smbclient Gateway servidor samba Rotas aplicativos padrão Domain logons, profiles, shares,... ifconfig, ip, route, netstat, ping, arp, dig,... 158
Linux em rede Rede Novell / Netware protocolo IPX suportado pelo kernel protocolo ncpfs suportado pelo kernel pacote ncpfs com utilitários nw* e ncp* Rede Macintosh protocolo appletalk suportado pelo kernel pacote netatalk com utilitários atalkd, afpd, papd, timelord,... e outros 159
Interfaces de rede Interfaces ethernet placas PCI, ISA, PC-MCIA, USB, WiFi,... conexões PPP (modem, DSL,...) módulos do kernel Identificação interfaces lo, ethi, siti, rausbi, pppi, tapi, dsli,... apelidos (interfaces virtuais) ethi:ident parâmetros: MAC, IP, máscara, broadcast, métrica, MTU,... 160
TCP/IP Modelo de referência OSI da ISO Open Systems Interconnection International Organization for Standardization Suite de protocolos TCP/IP Transmission Control Protocol / Internet Protocol 4 camadas Application: DNS, HTTP, FTP, SMTP, POP,... Transport: TCP, UDP Network: IPv4, IPv6, ICMP, IGMP,... Data Link: ARP, RARP, OSPF, NDP,... 161
RM/OSI da ISO Comunicação entre as camadas 162
Internet Protocol IP IPv4 número de 32 bits (4 bytes) representado por 4 números separados por '.' NetId e HostId => x.y.z.w Ex: 3373372061= 0xC911929D = 201.17.146.157 Classes Classe valor de x NetId HostId Redes Hosts A 1-126 x y.z.w 126 16.777.214 B 128-191 x.y z.w 16.384 65.534 C 192-223 x.y.z w 1.097.151 254 D 224-239 Endereços de multicast E 240-247 Reservada F Experimentais ou reservadas 163
Endereçamento IPv4 Classes e subclasses 32 bits R bits H bits NetId HostId 2H IPs : 0 <= HostId <= 2H-1 2H-2 endereços disponíveis HostId 0 : endereço de rede HostId 2H-1 : endereço de broadcast Endereço de Rede NetId/R Bloco CIDR Máscara Classless Inter-Domain Routing NetId com todos os bits em 1 HostId com todos os bits em 0 164
Endereços IPv4 especiais Rede local 0.0.0.0/8 Loopback 127.0.0.0/8 Redes privadas 10.0.0.0/8 1 classe A 172.16.0.0/12 16 classes B 192.168.0.0/16 256 classes C 165
Subclasses Seja uma classe X do IPv4 N bits do HostId são adicionados ao NetId 2N Subclasses com R+N bits no NetId e H-N bits no HostId 2H- - N IPs disponíveis em cada subclasse Exemplo Classe: 200.100.50.0/24 4 Subclasses com 64 IPs cada uma: 200.150.50.0/26 200.150.50.64/26 200.150.50.0 a 200.150.50.63 200.150.50.64 a 200.150.50.127 200.150.50.128/26 200.150.50.128 a 200.150.50.191 200.150.50.192/26 200.150.50.192 a 200.150.50.255 166
Exercício Um provedor possui o bloco CIDR 180.90.0.0/16 Qual a classe que ele possui? Quantos IPs ele possui? Ele decide criar subclasses com 512 IPs Quantas subclasses ele criou? Qual a máscara para as subclasses? Cite 3 subclasses (rede e máscara). 167
Roteamento Tabela de roteamento Endereço de destino Máscara Endereço do gateway Interface Métrica Rota default destino 0.0.0.0 Ferramentas de configuração e diagnóstico ifconfig route netstat ip ping bing traceroute tracepath tcpdump iptraf wireshark 168
A Internet Rede global de computadores Suite de protocolos TCP/IP Órgãos reguladores IAB Internet Architecture Board IETF - Internet Engineering Task Force IESG Internet Engineering Steering Group IANA Internet Assign Numbers Authority ISOC Internet Society 169
Serviços de redes DNS - Domain Name System Software BIND resolução de nomes zones (domínios e domínios reversos) Servidor WEB Software Apache páginas HTML, CGIs, SSIs,... sites : virtual hosts proxy Proxy Software SQUID cache e controle de acesso (ACLs) plugins como o squidguard 170
Serviços de redes - cont. Correio eletrônico e-mail Recebimento e envio de e-mails Software Sendmail, Postfix, Exim, qmail,... qpopper, cucipop, dovecot,... imapd,... 171
Serviços de rede - cont. Sessões remotas Telnet, rlogin, ssh Xterminals Transferências de arquivos NFS, FTP, SCP, SMB, NCP,... Segurança SSL (SSH, SCP, SFTP) VPN PGP (autenticação e privacidade) 172
DNS Domain Name System Resolução de nomes e endereços Base hierárquica distribuida ARPANET, 1970, HOSTS.TXT ==> /etc/hosts DNS e DNS reverso www.suse.de 195.135.220.3 173
Software de DNS BIND - Berkeley Internet Domain - http://www.bind9.net /etc/named.conf opções globais zonas (nomes e endereços) e opções específicas /var/lib/named/* definição das zonas diretivas e registros RR Resolver library /etc/resolv.conf servidor de nomes domínios 174
BIND Diretivas $ORIGIN subdomínio $INCLUDE arquivo $TTL ttl $GENERATE faixa lhs [ ttl ] [ classe ] tipo rhs [ comentários ] Registros RR [ domínio ] [ ttl] [ classe ] tipo dados classe : IN tipo : HS CH tipo do RR SOA NS RP HINFO... MX A LOC WKS PTR TXT CNAME SRV DNSKEY NSEC 175
DNS - Exemplo Domínio: meudominio.com.br Rede local: 192.168.0.0/24 Em /etc/named.conf zone meudominio.com.br { zone 0.168.192.in-addr.arpa { type master; type master; file master/meudominio.com.br.zone ; file master/192.168.0.zone ; allow_update { none }; allow_update {none }; notify yes; notify yes;... # outras opções...... # outras opções... }; } 176
DNS Exemplo - cont. Em /var/lib/named/master/meudominio.com.br.zone $TTL 1D $ORIGIN com.br. meudominio IN SOA meudominio.com.br. root.meudominio.com.br. { 2010011501 ; serial 4H ; refresh 1H ; retry 1W ; expire 1D ; minimum ttl } IN NS ns.meudominio.com.br. IN NS ns.outrodominio.com.br. ; DNS secundário IN MX 10 mail.meudominio.com.br. IN A 192.168.0.5 $ORIGIN meudominio.com.br. ns IN A 192.168.0.1 mail IN A 192.168.0.2 www IN A 192.168.0.5 177
DNS reverso Exemplo - cont. Em /var/lib/named/master/192.168.0.zone $TTL 1D @ IN SOA meudominio.com.br. root.meudominio.com.br. { 2010011501 ; serial 4H ; refresh 1H ; retry 1W ; expire 1D ; minimum ttl } IN NS ns.meudominio.com.br. IN NS ns.outrodominio.com.br. ; DNS secundário IN MX 10 mail.meudominio.com.br. $ORIGIN 0.168.192.in-addr.arpa. 1 IN PTR ns.meudominio.com.br. 2 IN PTR mail.meudominio.com.br. 5 IN PTR www.meudominio.com.br. 178
DNS - ferramentas Servidor named Pesquisas por nomes / IPs dnsdomainname host nslookup dig dnsquery Informações sobre os domínios (nomes ou IPs) whois Transferência de zonas named-xfer 179
Servidor WEB Apache - http://www.apache.org HTML, SSI, CGI Módulos php, perl, python,... Características Suporte a hosts virtuais Proxy Redirecionamento de URLs Configurações /etc/apache2/* /etc/httpd/* Sites /srv/www/* /var/www/* 180
Apache - configuração Parâmetros Importantes DocumentRoot diretório Listen [ip:]porto NameVirtualHost { * ip } [ : porto ] user usuário group grupo DirectoryIndex arquivo_indice... Outros parâmetros (server tuning) StartServers MaxClients MinSpareServers MaxSpareServers Timeout KeepAlive MaxKeepAliveRequests MaxRequestPerChild... 181
Sites - VirtualHost - exemplo <VirtualHost meudominio.com.br> ServerName www.meudominio.com.br ServerAlias meudominio.com.br DocumentRoot /srv/www/meudominio.com.br/htdocs ErrorLog /srv/www/logs/meudominio.com.br-error.log AccessLog /srv/www/logs/meudominio.com.br-access.log ScriptAlias /cgi-bin/ /srv/www/meudominio.com.br/cgi-bin/ Alias /icons/ /srv/www/meudominio.com.br/icons/ <Directory /srv/www/meudominio.com.br/htdocs > AllowOverhide None Options -Indexes Order Allow,Deny Allow from all </Directory> </VirtualHost> 182
Logs do Apache Logs de erros e de acessos Definidos em ErrorLog e AccessLog para cada site Relatórios e estatísticas de acesso aos sites através de interface WEB webalizer 183
Proxy Squid - http://www.squid-cache.org acelerador de acesso à WEB (cache) controle de acesso controle de banda Configuração /etc/squid/squid.conf Parâmetros importantes cache_peer max_open_disk_fds maximum_object_size_in_memory http_port https_port cache_dir cache_mem acl http_access icp_access htcp_access memory_replacement_policy miss_access reply_body_max_size maximum_object_size... 184
Controle de Acesso ACL Access Control Lists acl nome tipo argumentos acl nome tipo arquivo Tipos src dst port myport myip proto method browser user time maxconn http_status ident url_regex urlpath_regex proxy_auth srcdomain srcdom_regex snmp_community dstdomain dstdom_regex... Redirecionamento para programas filtros redirect_program programa [ argumentos ] squidguard 185
Squid Uso de ACLs Acesso a páginas WEB http_access { allow deny } [! ] nome_acl... AND para as ACLs na linha OR entre as linhas Se a regra bate, executa a ação (allow ou deny) Regra para escrita de ACLs ACLS : O que será controlado! Não preocupar com permissão ou negação! http_access: Verificar o que é genérico e o que é específico! 186
ACLs - exemplos Definição das ACLs acl all src all acl local_net src 192.168.0.0/24 acl bad_words urlpath_regex /etc/squid/bad_words.txt acl forbidden_sites dstdomain /etc/squid/forbiden_sites.txt acl worktime time M-F 08:00-17:59 Uso das ACLs http_access deny bad_words http_access deny! local_net http_access allow worktime! forbidden_sites http_access deny all 187
Logs do squid Logs de acesso, cache e armazenamento Em /var/log/squid/ access.log cache.log store.log Relatórios e estatísticas calamaris sarg (entre centenas...) 188
Sistema de e-mails Correio eletrônico Componentes MUA Mail User Agent interface com o usuário kmail, webmail, thunderbird, xfmail, mutt, pine,... MTA Mail Transport Agent agente de envio de e-mail sendmail, postfix, exim, qmail,... MDA Mail Delivery Agent entrega final do e-mail procmail Protocols [E]SMTP POP3[S] IMAP[S] qpopper, cucipop, dovecot,... imapd, cyrus-imapd, courier-imap,... 189
O caminho de um e-mail MUA MTA1 MTA2 MTAk MDA MUA Email p/ usuário@destino MUA MTA1 [E]SMTP MTA1 MTA2, MTAi MTAj [E]SMTP : smart host ou MX(destino) MTAk MDA No MX(destino) MDA caixa postal do usuário MUA lê a caixa postal POP ou IMAP Em qualquer componente (MUA, MTA ou MDA) Filtros anti-virus, anti-spam, black list,... 190
O e-mail Formato padrão (como armazenado no /var/spool/mail) From hmarx@linuxtech.com.br Fri Dec 25 14:39:40 2009 Return Path: <hmarx@linuxtech.com.br> Received: (from hmarx@atlas.linuxtech.com.br>) by atlas.linuxtech.com.br (8.14.3/8.14.3) id o0b3rjxc027009 for diana; Fri, 25 Dec 2009 14:39:38 0200 Date: Fri, 25 Dec 2009 14:39:30 0200 From: Helio Marques<hmarx@linutech.com.br> Message Id: <200912251639.o0B3Rjxc027009@atlas.linuxtech.com.br> To: diana@linuxtech.com.br Subject: Feliz Natal Oi Diana! Um Feliz Natal para você, minha princesinha! Beijos, Papai. 191
O protocolo SMTP Ethernet TCP/IP MUA ou MTA MTA connect Greetings Hello Hello mail from sender Ok mail to recipient Ok @ Ok quit close close 192
Filtros de e-mail Conexão IP ou domínio (DNS reverso) Negociação do Hello Remetente usuário e/ou domínio Destinatário usuário e/ou domínio Conteúdo Filtros: SPAM, virus, listas cinzas ou negras,.. Cabeçalho: Assunto Conteúdo: Corpo, anexos 193
Software para filtrar e-mails Amavis Separa o e-mail em componentes e anexos Anexos banidos Executa outros filtros nestes componentes Antivirus antivir uvscan clamav avg f-prot kaspersky... Anti-spam spamassassin junkfilter spamfilter Blakmail... Expressões regulares, listas DNSBL milter-regexp milter-greylist... 194
Configuração do sistema de e-mails Planejamento Servidor dos protocolos SMTP, POP, IMAP Software e serviços anti-virus e anti-spam MTA, MDA, webmail,... Domínios locais local delivery : MDA Domínios MX secundário (relay) Configuração dos componentes MTA, MDA e MUA Software de filtros 195
Sendmail Arquivo principal /etc/sendmail.cf Arquivos auxiliares em /etc/mail/ aliases access local-host-names virtusertable mailertable domaintable userdb genericstable relay-domains trusted-users Outros arquivos (filtros) spamassassin/* milter-regex milter-greylist... Configuração manual linux.mc linux.submit.mc linux.nullclient.mc submit.cf Makefile para criar.db a partir dos arquivos texto modificados ou executar para cada arquivo texto: makemap hash arquivo.db < arquivotexto newaliases ou sendmail -bi 196
Reencaminhamento de mensagens Conceitos: e-mails, contas e caixas postais /etc/mail/aliases ~usuário/.forward lista de destinos separados por ',' usuário \usuário programa parâmetros Exemplos carlos@dominio-externo.com \jose, maria, pedro@outrodominio.com.br. sendsms 9999-1234 \joao, /usr/bin/vacation joao 197
Sendmail Filter : Milter http://www.milter.org amavisd-milter /etc/sendmail.cf O InputMailFilters=milter-amavis Xmilter-amavis, S=local:/var/run/amavis/amavis-milter.sock, T=S:10m;R:10m;E:10m Detecção semi automática dos antivirus instalados Uso do spamd /etc/amavisd.conf 198
Segurança Questão de confiança Usuários, Grupos e suas senhas Permissões de acesso Cuidados especiais: usuário root programas SUID Links de comunicação Acesso (links dedicados ou discados) Serviços disponíveis 199
Formas de ataque Man in the middle escuta em conexões rede, modem, serial, wireless,... Ativo e Passivo Denial of Service (DoS) Distributed (DDoS) IP spoofing engana o TCP/IP alterando origem dos pacotes 200