Sistema Operacional GNU/Linux® Instalação, Configuração, Utilização e Administração Hélio Marques Sobrinho Sistema Operacional GNU/Linux: Instalação, Configuração, Utilização e Administração Hélio Marques Sobrinho Flávia de Castro Mendes Marques Frederico Machado Bastos Breno Silveira Soares Edição: Hélio Marques Revisão de texto: Starix Informática, R2M Studio Design, Hélio Marques Editoração eletrônica: InterLinux, Hélio Marques Produção gráfica: Capa: Marques, Hélio. Sistema Operacional GNU/Linux:Instalação, Configuração, Utilização e Administração / Hélio Marques [e] Flávia Marques [e] Frederico Bastos [e] Breno Soares. - Belo Horizonte - MG: - 2008. Direitos autorais i Copyright © 2001-2008 Helio Marques Sobrinho Este material é de propriedade de Hélio Marques é utilizado nos cursos ministrados por ele, sendo proibida sua reprodução sem sua autorização por escrito. Foi produzido utilizando o ApplixWare 5.0 no SuSE Linux. Linux é marca registrada de Linus Torvalds. SuSE e YaST são marcas registradas de Novell Inc. Unix é marca registrada de X/Open Company Limited. XFree86 é marca registrada de The XFree86 Project. Xorg é marca registrada do XConsortion. MS-DOS, Windows, Windows NT, Windows 95, Windows 98, Windows Me, Windows 2000, Windows XP e outros são marcas registradas da Microsoft Corporation. Outros produtos citados neste material podem ter suas marcas registradas por seus respectivos fabricantes. Hélio Marques Sobrinho http://www.linuxsupport.com.br e-mail: [email protected] ii Revisões Revisões 1.00 1.01 1.02 1.03 1.04 2.00 2.01 3.00 3.01 3.02 3.03 3.04 3.05 3.06 4.00 abril/2001 maio/2001 junho/2001 julho/2001 junho/2002 julho/2002 novembro/2002 janeiro/2003 abril/2003 maio/2003 fevereiro/2004 julho/2004 setembro/2005 novembro/2006 novembro/2008 Starix Interlinux (http://www.interlinux.com.br) Starix Starix Starix Starix - reformatação e atualização R2M Studio Design Starix Starix - inclusão capítulo gerenciamento Starix - configuração do apache Starix - atualização e mais tópicos Starix - atualizações e mais tópicos Starix - atualizações e mais tópicos HMarx - atualizações e mais tópicos HMarx - remoção de referências à Starix Sobre os autores Sobre os autores Hélio Marques Sobrinho Engenheiro Eletricista pela EE-UFMG Ênfase em Eletrônica Industrial Mestre em Ciência da Computação pelo DCC-UFMG Ênfase em Tecnologia de Hardware Flávia de Castro Mendes Marques Bacharel em Ciência da Computação pelo DCC-UFMG Ênfase em Software Básico Frederico Machado Bastos Bacharel em Ciência da Computação pela PUC-MG Mestrando em Ciência da Computação pelo DCC-UFMG Ênfase em Gerenciamento de Redes Breno Silveira Soares Bacharel em Ciência da Computação pela PUC-MG LPI Certified iii iv Convenções tipográficas Convenções tipográficas Neste livro são utilizadas as seguintes convenções: Convenção negrito itálico reticências ( ... ) colchetes ( [ ] ) chaves ( { } ) asterisco ( { }*) barra vertical ( | ) courier itálico-sublinhado ¦+D Uso indica um comando a ser digitado ou de uma função palavras em um idioma diferente do português indica repetição dos argumentos itens opcionais itens alternativos permite mais de uma alternativa separador das opções alternativas nome de um arquivo ou diretório valor ou opção que deve ser substituído pelo valor real ou por uma constante pressionar as teclas dadas simultaneamente Exemplo man ls startx() O kernel do Linux ls [ opcões ] [ arq ... ] ls [ opcões ] [ arq ... ] route { add | del } ... { u | g | o | a}* route { add | del } ... /usr/src/linux --radix=r ¦+D Prefácio v Prefácio Este livro começou a ser escrito como uma apostila dos cursos de SuSE Linux® ministrados na minha ex-empresa Starix Informática®. Muitos perguntam o que significa o nome Starix. Este nome surgiu em torno de 1988 como nome do sistema operacional Unix-like para o supermicrocomputador DCC-2600, a ser desenvolvido como trabalho de mestrado da Flávia no Departamento de Ciência da Computação da UFMG - DCC. O DCC-2600 foi meu projeto de mestrado no DCC, iniciado em 1982 e concluido em 1986 sob a orientação do Dr. Wilson P. Pádua, e consistia de um sistema multiprocessado SMP utilizando processadores 8086 em um barramento Intel Multibus. O sistema suportava até 16 processadores, compartilhando memória, discos e barramentos de E/S. Durante o projeto, construção e testes deste sistema foi utilizado o sistema operacional IBM PC-DOS, no qual foram desenvolvidos diversos programas para depuração do hardware. Foi projetado e implementado um ROM-BIOS compatível com o IBM PC BIOS, apesar das grandes diferenças no hardware, para que o PC-DOS (até a versão 3.30) e alguns de seus aplicativos fossem suportados. Foi implementado também um subconjunto dos aplicativos da Micnet® do SCO Xenix®, permitindo troca de arquivos, mail e execução remota entre o DOS e o Xenix. Adquirimos em 1985, o PCNX® da Wendin Inc., que era um ambiente Unix-like que rodava sobre o PCDOS e incluia fontes de diversos aplicativos básicos do Unix como o shell, ls, ps, cp, etc. Após alterações nos fontes do PCNX (devido ao hardware), ele funcionou bem em modo monoprocessado no DCC-2600 com 512KB de memória e com 5 terminais seriais. Houve também no DCC, o projeto de mestrado de Alberto Avritzer definindo um sistema operacional, DCC-ix, em Modula-2, baseado nos fontes originais em C do Unix versão 7 para o micnicomputador DEC PDP-11, e posteriormente, por falta de um compilador Modula-2, traduzido para Turbo Pascal. As compilações e testes eram feitas durante o desenvolvimento do hardware do DCC-2600. vi Prefácio Os projetos do DCC-2600 (hardware) e do DCC-ix (software) foram apresentados no 1o Simpósio Brasileiro de Processamento Paralelo (I-SBPP) da SBC em 1987, na cidade de Gramado, RS. Este ano foi também o da minha saída dos projetos do então chamado LAC - Laboratório de Arquitetura de Computadores do DCC. Prefácio vii Como a implementação em Pascal do DCC-ix não permitia a exploração do hardware multiprocessado do DCC-2600, além de ter baixo desempenho e pouca estabilidade, eu e a Flávia iniciamos em 1988 um projeto para criar um sistema operacional em C a partir dos fontes originais do Unix com alterações devido ao multiprocessamento e às grandes diferenças de hardware do DCC-2600 em relação ao DEC PDP-11. Este projeto foi batizado como *-ix ou simplesmente Star-ix, sugerindo multiplicidade (*) e Unix, e foi apresentado como proposta de dissertação de mestrado da Flávia em março de 1989. Infelizmente não houve interesse dos doutores do DCC pelo projeto. Além da dificuldade de encontrar um orientador para o projeto, o DCC-2600 teve um problema de hardware que, por desinteresse, não foi solucionado pela equipe do Laboratório Professor Dr. Newton A. C. Lages (novo nome do LAC em homenagem ao falecido professor). Caso fosse dado continuidade pelo DCC, o sistema operacional Star-ix e diversos aplicativos estariam rodando no DCC-2600, ou mesmo no DCC-2800 (que seria uma evolução do DCC-2600 utilizando processadores Intel 80386) no início de 1990 e estaria entre os sistemas open source como o Linux e o FreeBSD. Após diversas atividades como consultores autônomos, analistas, pesquisadores e gerentes de algumas empresas, eu e a Flávia decidimos em 1998 abrir nossa própria empresa focando em soluções Unix/Linux e de interconectividade. Nada mais sugestivo do que o *-ix, gerando então o nome Starix. Como já utilizávamos Linux desde 1992 e o SuSE Linux desde a sua versão 5.0, o escolhemos como ambiente operacional da empresa para desenvolvimento de aplicativos e sistemas. A Starix, além do desenvolvimento de sistemas, também atuava nas áreas de suporte, consultoria e treinamento. Nos tornamos então a primeira revenda da empresa alemã SuSE no Brasil, importando o kit com os manuais em inglês, a partir da versão SuSE Linux 6.0. viii Prefácio O trabalho de criação deste livro começou quando a equipe da Starix decidiu traduzir o manual do SuSE Linux 6.2. Após traduzir 8 capítulos, o material foi apresentado a um representante da SuSE GmbH na LinuxExpo 2000 em São Paulo. Este representante nos informou que o trabalho de tradução já havia iniciado com a participação de uma das então revendas da SuSE no Brasil. Assim, cancelamos o trabalho de tradução e resolvemos produzir uma apostila para os cursos de SuSE Linux ministrados pela Starix. A apostila inicial com cerca de 100 páginas era impressa por demanda em uma impressora laser HP. Com o aumento da demanda, a apostila foi revisada chegando a 130 páginas e assim optamos por imprimí-la na Engesoft com o auxílio da editoração e formatação da empresa Interlinux. A partir da versão 7.1, a SuSE alemã decidiu não mais produzir o manual em português. Resolvemos então transformar a apostila dos cursos em um livro que pudesse suprir a necessidade dos nossos clientes e também complementasse o kit SuSE Linux. Na Inforuso 2002, feira de informática que ocorre em Belo Horizonte, aliada a parceria com a Livraria Livro Arbítrio, decidimos então terminar este livro de forma que ele fosse produzido e distribuído em livrarias. Isto nunca chegou a se concretizar. A Starix saiu da rede de revendas da SuSE Linux, e manteve seu foco em desenvolvimento, consultoria e treinamento, utilizando soluções de alta tecnologia, principalmente para a plataforma Linux. Em 2005, a Starix encerrou suas atividades e este material passou a ser atualizado por mim e utilizado ocasionalmente como apostila de referência para alguns cursos Linux para empresas. Este material também pode ser utilizado nos estudos preparatórios para exames de certificação em Linux. Ele contém informações que cobrem desde a utilização até tópicos de administração avançada de redes e servidores. Hélio Marques nov/2008 Conteúdo ix Conteúdo Prefácio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v Conteúdo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix 1. Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 O que é Linux ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Histórico da Computação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Histórico - do Unix ao Linux . . . . . . . . . . . . . . . . . . . . . . . . . 7 2. Hardware e Arquitetura . . . . . . . . . . . . . . . . . . 11 Arquitetura dos Sistemas Unix-Like. . . . . . . . . . . . . . . . . . . Dispositivos de armazenamento . . . . . . . . . . . . . . . . . . . . . . Sistema de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diretórios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alguns diretórios padrão do SVR4 e do Linux. . . . . . . . . . . Alguns arquivos padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . O sistema de arquivos /proc . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos Padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 15 16 20 21 22 23 25 26 26 3. Iniciando o Linux . . . . . . . . . . . . . . . . . . . . . . 29 Do boot ao Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabela de ações utilizadas no initttab . . . . . . . . . . . . . . . . . . Níveis de execução padrão . . . . . . . . . . . . . . . . . . . . . . . . . . Sessões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 30 31 34 4. Utilizando o Linux . . . . . . . . . . . . . . . . . . . . . . 37 Interpretador de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . 37 x SuSE Linux: Instalação, Configuração, Utilização e Administração Metacaracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 O Bash - Bourne-Again Shell . . . . . . . . . . . . . . . . . . . . . . . . 40 Comandos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Operadores do bash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Comandos Administrativos. . . . . . . . . . . . . . . . . . . . . . . . . 121 Tratamento dos Sistemas de Arquivos . . . . . . . . . . . . . . . . 127 Módulos de dispositivos e serviços. . . . . . . . . . . . . . . . . . . 140 Mensagens do sistema Linux . . . . . . . . . . . . . . . . . . . . . . . 148 5. Instalando o Linux . . . . . . . . . . . . . . . . . . . . . 153 Instalação do Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O Boot do Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instalação do SuSE Linux. . . . . . . . . . . . . . . . . . . . . . . . . . Instalação de outros aplicativos no Linux. . . . . . . . . . . . . . Utilizando o RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 155 156 164 165 6. O Sistema X Window. . . . . . . . . . . . . . . . . . . 175 O Sistema X Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O X Window no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuração do XFree86. . . . . . . . . . . . . . . . . . . . . . . . . . Gerenciadores de janelas . . . . . . . . . . . . . . . . . . . . . . . . . . O KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 179 181 183 186 7. Redes em Unix . . . . . . . . . . . . . . . . . . . . . . . . 197 Redes em Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Servidores, Estações e Terminais . . . . . . . . . . . . . . . . . . . . Endereçamento IPv4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Subclasses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Roteamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ferramentas para configuração e diagnóstico. . . . . . . . . . . Endereçamento IPv6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internet e Intranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 205 206 209 210 212 221 225 8. Serviços de Redes . . . . . . . . . . . . . . . . . . . . . 227 Conteúdo Domínios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DNS - Domain Name System. . . . . . . . . . . . . . . . . . . . . . . Software DNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NIS - Network Information System . . . . . . . . . . . . . . . . . . Servidor de páginas HTML . . . . . . . . . . . . . . . . . . . . . . . . Servidor de proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Correio eletrônico - e-mail . . . . . . . . . . . . . . . . . . . . . . . . . Protocolos de e-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuração do sistema de e-mail. . . . . . . . . . . . . . . . . . . Configuração do sendmail . . . . . . . . . . . . . . . . . . . . . . . . . FTP - File Transfer Protocol. . . . . . . . . . . . . . . . . . . . . . . . Sessões remotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PPP - Point to Point Protocol . . . . . . . . . . . . . . . . . . . . . . . Comunicação e Telefonia . . . . . . . . . . . . . . . . . . . . . . . . . . Interconectividade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interconectividade DOS/Windows . . . . . . . . . . . . . . . . . . . Interconectividade Novell® Netware® . . . . . . . . . . . . . . . Interconectividade Apple® Macintosh® . . . . . . . . . . . . . . xi 227 229 233 245 251 261 264 267 269 270 274 275 276 282 283 283 288 289 9. O Kernel do Linux . . . . . . . . . . . . . . . . . . . . . 291 Configuração do kernel do Linux . . . . . . . . . . . . . . . . . . . . 291 10. Segurança . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Segurança no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VPN - Virtual Private Network. . . . . . . . . . . . . . . . . . . . . . PGP - Pretty Good Privacy . . . . . . . . . . . . . . . . . . . . . . . . . Critérios de segurança do DoD . . . . . . . . . . . . . . . . . . . . . . Mantendo o sistema seguro. . . . . . . . . . . . . . . . . . . . . . . . . 297 304 317 323 326 329 11. Gerência de Redes em Linux . . . . . . . . . . . . 331 Instalação física . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Gerenciamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 SNMP e MIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 xii SuSE Linux: Instalação, Configuração, Utilização e Administração 12. Ambiente de Execução e Desenvolvimento de Aplicativos em Linux . . . . . . . . . . . . . . . . . . . . . 351 Formato de arquivos executáveis . . . . . . . . . . . . . . . . . . . . Executando programas para Windows no Linux . . . . . . . . Emuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compilando fontes de aplicativos no Linux . . . . . . . . . . . . Os arquivos Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 357 358 363 364 13. Expressões Regulares . . . . . . . . . . . . . . . . . . 367 Expressões Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 14. O Editor de Textos VI . . . . . . . . . . . . . . . . . 371 O editor de textos vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Opções do vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 15. Criando Disquetes de Boot. . . . . . . . . . . . . . 377 Criando Disquetes de Boot . . . . . . . . . . . . . . . . . . . . . . . . 377 16. Sistemas de Numeração . . . . . . . . . . . . . . . . 381 17. Introdução à Computação Forense . . . . . . . . 385 Conceitos iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Procura por evidências . . . . . . . . . . . . . . . . . . . . . . . . . . . . Plano de batalha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reconstrução das fábulas . . . . . . . . . . . . . . . . . . . . . . . . . . Quem contactar ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Investigação na prática . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 386 387 387 387 388 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Livros e outras publicações. . . . . . . . . . . . . . . . . . . . . . . . . 391 Sites na Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 Glossário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Índice Remissivo . . . . . . . . . . . . . . . . . . . . . . . . . 401 Introdução 1 1. Introdução O que é Linux ? Quando falamos de ‘‘Linux’’, precisamos definir exatamente o que queremos dizer com o termo. O ‘‘Linux propriamente dito’’ é o kernel, o ‘‘coração’’ de todo sistema operacional GNU, mas o kernel sozinho não é um sistema operacional utilizável. Na verdade, o Linux (kernel) é parte do projeto GNU, idealizado por Richard Stallman, cujo objetivo era criar todo um sistema free, e não somente o kernel do sistema operacional, e dar aos usuários de computadores a liberdade que muitos haviam perdido. Deste ponto de vista, o Linux deveria ser chamando de GNU/Linux. GNU é a sigla para GNU is Not Unix. A base legal dos aplicativos GNU é a GPL - GNU General Public License da Free Software Foundation, FSF. Para um sistema Unix® existe uma série de pacotes de software conhecidos como ferramentas Unix. No Linux, bem como em outros sistemas operacionais, estes programas estão disponíveis como pacotes de software gratuitos em suas versões GNU. A maioria deles oferece características melhoradas em relação aos originais. Destes, o compilador GNU C/C++, que algumas pessoas acreditam ser um dos melhores compiladores disponíveis atualmente, é provavelmente o programa mais famoso, talvez com a exceção do Emacs. 2 SuSE Linux: Instalação, Configuração, Utilização e Administração O que torna o Linux completo é sua interface gráfica através do XWindow. As primeiras versões utilizavam o XFree86 (atualmente na versão 4.6.0). Este é um Sistema X Window X11R6.6) para sistemas UNIX para PCs. As versões mais recentes das distribuições Linux estão adotando o X.org. Este é o porte da distribuição oficial do Sistema X Window X11R7.1 do X Consortium, Inc. e, portanto, completamente compatível com o padrão. Todos estes componentes, juntos com muitas outras ferramentas, aplicativos e entretenimentos, criam o sistema conhecido como Linux. Existe uma grande quantidade de software gratuito disponível, e muitas maneiras de montar uma distribuição do sistema Linux. Uma distribuição irá conter o kernel do Linux, aplicativos e utilitários, ferramentas para instalação, configuração e administração do Linux. Existem diversas distribuições do Linux. Entre as mais conhecidas estão Slackware, Debian, Red Hat, Corel, Turbo Linux, Caldera (hoje Linux), SuSE e, no Brasil, a Conectiva (derivada da Red Hat). Em 2003 a Red Hat descontinuou o Red Hat Linux e passou a manter apenas o Red Hat Enterprise Linux e o Projeto Fedora. A distribuição Debian é a única distribuição GNU pura porque só contém aplicativos com licença GPL. Esta distribuição já possui mais de 8700 pacotes. No final das contas, a escolha de uma distribuição do Linux é uma decisão filosófica que divide a comunidade Linux em diversas ideologias. A distribuição Linux criada pela empresa alemã SuSE tem sido considerada a melhor, por ser a mais completa, mais estável e mais fácil de administrar. Ela se tornou a base do United Linux. Hoje o SuSE Linux é propriedade da Novell. O projeto openSuSE pode ser encontrado em http://opensuse.org. São disponibilizadas as imagens de CD ou DVD e muita documentação.