Вы находитесь на странице: 1из 366

Sistema Operacional GNU/Linux

Hlio Marques Sobrinho

Sistema Operacional GNU/Linux

Sistema Operacional GNU/Linux

Sistema Operacional GNU/Linux:


Instalao, Configurao, Utilizao e Administrao

Hlio Marques Sobrinho

Belo Horizonte

Sistema Operacional GNU/Linux Edio: Hlio Marques Reviso de texto: Starix Informtica, R2M Studio Design, e Hlio Marques Editorao eletrnica: InterLinux, Hlio Marques Produo grfica: Capa:

Marques Sobrinho, Hlio. Sistema Operacional GNU/Linux:Instalao, Configurao, Utilizao e Administrao / Hlio Marques . Belo Horizonte - MG - 2010.

Sistema Operacional GNU/Linux Copyright 2001-2010 Helio Marques Sobrinho

Este material de propriedade de Hlio Marques utilizado nos cursos ministrados por ele, proibida sua reproduo sem sua autorizao por escrito. Foi produzido utilizando o ApplixWare SuSE Linux.

Linux marca registrada de Linus Torvalds. SuSE, openSuSE e YaST so 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 Windows XP e outros so marcas registradas da Microsoft Corporation.

Outros produtos citados neste material podem ter suas marcas registradas por seus respectivos fabricantes.

Hlio Marques Sobrinho

http://www.linuxsupport.com.br e-mail: hmarx@linuxsupport.com.br

Sistema Operacional GNU/Linux Revises 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 4.01 4.02 4.03 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 junho/2009 dezembro/2009 janeiro/2010 Starix - verso inicial c/ ~ 100 pginas Interlinux ( http://www.interlinux.com.br) Starix - incluso de captulos Starix - incluso de captulos Starix - incluso de captulos Starix - reformatao e atualizao R2M Studio Design - reviso e imagens Starix - incluso de captulos Starix - incluso captulo gerenciamento Starix - configurao do apache Starix - atualizao e mais tpicos Starix - atualizaes e mais tpicos Starix - atualizaes e mais tpicos HMarx - atualizaes e mais tpicos HMarx - remoo de referncias Starix HMarx - atualizaes e mais captulos HMarx - incluso captulo jogos HMarx - reviso e mais picos

Sistema Operacional GNU/Linux

Sobre os autores
Hlio Marques Sobrinho Engenheiro Eletricista pela EE-UFMG nfase em Eletrnica Industrial Mestre em Cincia da Computao pelo DCC-UFMG nfase em Tecnologia de Hardware

Agradecimentos Agradeo a colaboraco dos seguintes profissionais, que me auxiliaram na concepco deste livro:
Flvia de Castro Mendes Marques Bacharel em Cincia da Computao pelo DCC-UFMG nfase em Software Bsico Frederico Machado Bastos Bacharel em Cincia da Computao pela PUC-MG Mestre em Cincia da Computao pelo DCC-UFMG nfase em Gerenciamento de Redes Breno Silveira Soares Bacharel em Cincia da Computao pela PUC-MG LPI Certified

Sistema Operacional GNU/Linux

Convenes tipogrficas
Neste livro so utilizadas as seguintes convenes:

Conveno negrito itlico reticncias ( ... ) colchetes ( [ ] ) chaves ( { } ) asterisco ( { }*) barra vertical ( | ) courier itlico-sublinhado

Uso indica um comando a ser digitado ou de uma funo palavras em um idioma diferente do portugus indica repetio dos argumentos itens opcionais itens alternativos permite mais de uma alternativa separador das opes alternativas nome de um arquivo ou diretrio valor ou opo que deve ser substitudo pelo valor real ou por uma constante pressionar as teclas dadas simultaneamente

Exemplo man ls startx() O kernel do Linux ls [ opces ] [ arq ... ] ls [ opces ] [ arq ... ] route { add | del } ... { u | g | o | a}* route { add | del } ... /usr/src/linux --radix=r

+D

+D

Sistema Operacional GNU/Linux

Prefcio
Este livro comeou a ser escrito como uma apostila dos cursos de SuSE Linux ministrados na minha ex-empresa Starix Informtica. 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 Flvia no Departamento de Cincia da Computao da UFMG - DCC. O DCC-2600 foi meu projeto de mestrado no DCC, iniciado em 1982 e concluido em 1986 sob a orientao do Dr. Wilson P. Pdua, e consistia de um sistema multiprocessado SMP utilizando processadores 8086 em um barramento Intel Multibus. O sistema suportava at 16 processadores, compartilhando memria, discos e barramentos de E/S. Durante o projeto, construo e testes deste sistema foi utilizado o sistema operacional IBM PC-DOS, no qual foram desenvolvidos diversos programas para depurao do hardware. Foi projetado e implementado um ROM-BIOS compatvel com o IBM PC BIOS, apesar das grandes diferenas no hardware, para que o PC-DOS (at a verso 3.30) e alguns de seus aplicativos fossem suportados. Foi implementado tambm um subconjunto dos aplicativos da Micnet do SCO Xenix, permitindo troca de arquivos, mail e execuo 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 PC-DOS e incluia fontes de diversos aplicativos bsicos do Unix como o shell, ls, ps, cp, etc. Aps alteraes nos fontes do PCNX (devido ao hardware), ele funcionou bem em modo monoprocessado no DCC-2600 com 512KB de memria e com 5 terminais seriais. Houve tambm 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 verso 7 para o micnicomputador DEC PDP-11, e posteriormente, por falta de um compilador Modula-2, traduzido para Turbo Pascal. As compilaes e testes eram feitas durante o desenvolvimento do hardware do DCC-2600. Os projetos do DCC-2600 (hardware) e do DCC-ix (software) foram apresentados no 1o Simpsio Brasileiro de Processamento Paralelo (I-SBPP) da SBC em 1987, na cidade de Gramado, RS. Este ano foi tambm o da minha sada dos projetos do ento chamado LAC - Laboratrio de Arquitetura de Computadores do DCC. Como a implementao em Pascal do DCC-ix no permitia a explorao do hardware multiprocessado do DCC-2600, alm de ter baixo desempenho e pouca estabilidade, eu e a Flvia iniciamos em 1988 um projeto para criar um sistema operacional em C a partir dos fontes originais do Unix com alteraes devido ao multiprocessamento e s grandes diferenas de hardware do DCC-2600 em relao ao DEC PDP-11. Este projeto foi batizado como *-ix ou simplesmente Starix, sugerindo multiplicidade (*) e Unix, e foi apresentado como proposta de dissertao de mestrado da Flvia em maro de 1989. Infelizmente no houve interesse dos doutores do DCC pelo projeto. Alm da dificuldade de encontrar um orientador para o projeto, o DCC-2600 teve um problema de hardware que, por desinteresse, no foi solucionado pela equipe do Laboratrio 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 evoluo do DCC-2600 utilizando processadores Intel 80386) no incio de 1990 e estaria entre os sistemas open source como o Linux e o FreeBSD.

Sistema Operacional GNU/Linux

10

Aps diversas atividades como consultores autnomos, analistas, pesquisadores e gerentes de algumas empresas, eu e a Flvia decidimos em 1998 abrir nossa prpria empresa focando em solues Unix/Linux e de interconectividade. Nada mais sugestivo do que o *-ix, gerando ento o nome Starix. Como j utilizvamos Linux desde 1992 e o SuSE Linux desde a sua verso 5.0, o escolhemos como ambiente operacional da empresa para desenvolvimento de aplicativos e sistemas. A Starix, alm do desenvolvimento de sistemas, tambm atuava nas reas de suporte, consultoria e treinamento. Para os cursos de SuSE Linux, foi produzida uma apostila de cerca de 100 pginas. A Starix tornou-se ento a primeira revenda brasileira da empresa alem SuSE GmbH (Software und System-Entwicklung - Desenvolvimento de software e sistemas), importando o kit com os manuais em ingls, a partir da verso SuSE Linux 6.0.

Sistema Operacional GNU/Linux

11

O trabalho de criao deste livro comeou quando a equipe da Starix decidiu traduzir o manual do SuSE Linux 6.2. Aps traduzir 8 captulos, o material foi apresentado a um representante da SuSE GmbH na LinuxExpo 2000 em So Paulo. Este representante nos informou que o trabalho de traduo j havia iniciado com a participao de uma das ento revendas da SuSE no Brasil. Assim, cancelamos o trabalho de traduo e resolvemos produzir uma apostila para os cursos de SuSE Linux ministrados pela Starix. A apostila inicial (com cerca de 100 pginas) era impressa por demanda em uma impressora laser HP. Com o aumento da demanda, a apostila foi revisada chegando a mais de 130 pginas e assim optamos por imprim-la na Engesoft com o auxlio da editorao e formatao da empresa Interlinux. A partir da verso 7.1, a SuSE alem decidiu no mais produzir o manual em portugus. Resolvemos ento transformar a apostila dos cursos em um livro que pudesse suprir a necessidade dos nossos clientes e tambm complementasse o kit SuSE Linux. Na Inforuso 2002, feira de informtica que ocorre em Belo Horizonte, aliada a parceria com a Livraria Livro Arbtrio, decidimos ento terminar este livro de forma que ele fosse produzido e distribudo 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 solues 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 referncia para alguns cursos Linux para empresas. Este material tambm pode ser utilizado nos estudos preparatrios para exames de certificao em Linux. Ele contm informaes que cobrem desde a utilizao at tpicos de administrao avanada de redes e servidores. Hlio Marques jam/2010

Sistema Operacional GNU/Linux

12

Sistema Operacional GNU/Linux

13

Contedo
Prefcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Contedo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1. Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . 15
O que Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Histrico da Computao . . . . . . . . . . . . . . . . . . . . . . 16 Histrico - do Unix ao Linux . . . . . . . . . . . . . . . . . . . 20

2. Hardware e Arquitetura . . . . . . . . . . . . . . . . 23
Arquitetura dos Sistemas Unix-Like . . . . . . . . . . . . . . Dispositivos de armazenamento . . . . . . . . . . . . . . . . . Sistema de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . Diretrios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alguns diretrios padro do SVR4 e do Linux . . . . . . Alguns arquivos padro. . . . . . . . . . . . . . . . . . . . . . . . O sistema de arquivos /proc . . . . . . . . . . . . . . . . . . . . Dispositivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos Especiais. . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos Padro. . . . . . . . . . . . . . . . . . . . . . . . . . . Do boot ao Login. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabela de aes utilizadas no initttab . . . . . . . . . . . . . Nveis de execuo padro . . . . . . . . . . . . . . . . . . . . . Sesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 26 26 29 30 30 31 33 33 34 37 38 38 40

3. Iniciando o Linux . . . . . . . . . . . . . . . . . . . . 37

4. Utilizando o Linux. . . . . . . . . . . . . . . . . . . . 43
Interpretador de comandos . . . . . . . . . . . . . . . . . . . . . 43 Metacaracteres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 O Bash - Bourne-Again Shell . . . . . . . . . . . . . . . . . . . 46 Comandos bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Meta-teclas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Backup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Operadores do bash . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Comandos Administrativos . . . . . . . . . . . . . . . . . . . . 106

Sistema Operacional GNU/Linux

14

Tratamento dos Sistemas de Arquivos . . . . . . . . . . . 110 Mdulos de dispositivos e servios . . . . . . . . . . . . . . 120 Mensagens do sistema Linux . . . . . . . . . . . . . . . . . . 126

5. Instalando o Linux . . . . . . . . . . . . . . . . . . . 129


Instalao do Linux . . . . . . . . . . . . . . . . . . . . . . . . . . O Boot do Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instalao do SuSE Linux . . . . . . . . . . . . . . . . . . . . . Instalao de outros aplicativos no Linux . . . . . . . . . Utilizando o RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . O Sistema X Window . . . . . . . . . . . . . . . . . . . . . . . . O X Window no Linux . . . . . . . . . . . . . . . . . . . . . . . Configurao do XFree86 . . . . . . . . . . . . . . . . . . . . . Gerenciadores de janelas . . . . . . . . . . . . . . . . . . . . . . O KDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Redes em Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Servidores, Estaes e Terminais . . . . . . . . . . . . . . . Endereamento IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . Subclasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ferramentas para configurao e diagnstico . . . . . . Endereamento IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . Internet e Intranet . . . . . . . . . . . . . . . . . . . . . . . . . . . Domnios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DNS - Domain Name System . . . . . . . . . . . . . . . . . . Software DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NIS - Network Information System . . . . . . . . . . . . . LDAP - Lightweight Directory Access Protocol. . . . Servidor WEB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Servidor de proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . Correio eletrnico - e-mail . . . . . . . . . . . . . . . . . . . . Protocolos de e-mail . . . . . . . . . . . . . . . . . . . . . . . . . Configurao do sistema de e-mail . . . . . . . . . . . . . . Configurao do sendmail. . . . . . . . . . . . . . . . . . . . . 129 130 131 138 139 149 152 153 154 156 165 171 172 174 175 176 184 186 187 189 193 207 211 219 227 234 236 238 238

6. O Sistema X Window . . . . . . . . . . . . . . . . 149

7. Redes em Unix. . . . . . . . . . . . . . . . . . . . . . 165

8. Servios de Redes . . . . . . . . . . . . . . . . . . . 187

Sistema Operacional GNU/Linux

15

FTP - File Transfer Protocol . . . . . . . . . . . . . . . . . . . Sesses remotas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . PPP - Point to Point Protocol . . . . . . . . . . . . . . . . . . Comunicao e Telefonia . . . . . . . . . . . . . . . . . . . . . Interconectividade . . . . . . . . . . . . . . . . . . . . . . . . . . . Interconectividade DOS/Windows . . . . . . . . . . . . . . Interconectividade Novell Netware. . . . . . . . . . . Interconectividade Apple Macintosh. . . . . . . . . .

243 244 245 250 251 251 255 256

9. O Kernel Linux . . . . . . . . . . . . . . . . . . . . . 257


Configurao do kernel Linux. . . . . . . . . . . . . . . . . . 257

10. Segurana . . . . . . . . . . . . . . . . . . . . . . . . 261


Segurana no Linux. . . . . . . . . . . . . . . . . . . . . . . . . . Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VPN - Virtual Private Network . . . . . . . . . . . . . . . . . PGP - Pretty Good Privacy . . . . . . . . . . . . . . . . . . . . Critrios de segurana do DoD . . . . . . . . . . . . . . . . . Mantendo o sistema seguro . . . . . . . . . . . . . . . . . . . . 261 265 274 278 281 283

11. Gerncia de Redes em Linux . . . . . . . . . . 285


Instalao fsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Gerenciamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 SNMP e MIB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

12. Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux . . . . . . . . . . . . . . . . . . . 299


Formato de arquivos executveis . . . . . . . . . . . . . . . Executando programas para Windows no Linux. . . . Emuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compilando fontes de aplicativos no Linux . . . . . . . Os arquivos Makefile . . . . . . . . . . . . . . . . . . . . . . . . Gerando pacotes RPM. . . . . . . . . . . . . . . . . . . . . . . . Exemplo de pacote RPM . . . . . . . . . . . . . . . . . . . . . . 303 304 305 310 311 312 314

13. Expresses Regulares . . . . . . . . . . . . . . . 319


Expresses Regulares . . . . . . . . . . . . . . . . . . . . . . . . 319

14. O Editor de Textos VI . . . . . . . . . . . . . . . 321


O editor de textos vi . . . . . . . . . . . . . . . . . . . . . . . . . 321 Opes do vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Sistema Operacional GNU/Linux

16

15. Criando Disquetes de Boot . . . . . . . . . . . 327


Criando Disquetes de Boot . . . . . . . . . . . . . . . . . . . . 327

16. Sistemas de Numerao . . . . . . . . . . . . . . 331 17. Introduo Computao Forense . . . . . . 332


Conceitos iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . Procura por evidncias . . . . . . . . . . . . . . . . . . . . . . . Plano de batalha . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reconstruo das fbulas . . . . . . . . . . . . . . . . . . . . . Quem contactar ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . Investigao na prtica . . . . . . . . . . . . . . . . . . . . . . . 333 334 334 334 335 335

18. Entretenimento e Aprendizado . . . . . . . . . 337


Linux tambm cultura e diverso ! . . . . . . . . . . . . . 337

Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Livros e outras publicaes . . . . . . . . . . . . . . . . . . . . 349 Sites na Internet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

Glossrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 ndice remissivo . . . . . . . . . . . . . . . . . . . . . . . 356

Sistema Operacional GNU/Linux

17

1. Introduo
O que Linux ?
Quando falamos de Linux, precisamos definir exatamente o que queremos dizer com o termo. O Linux propriamente dito o kernel, o corao de todo sistema operacional GNU, mas o kernel sozinho no um sistema operacional utilizvel. Na verdade, o Linux (kernel) parte do projeto GNU, idealizado por Richard Stallman, cujo objetivo era criar todo um sistema free, e no somente o kernel do sistema operacional, e dar aos usurios 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 srie de pacotes de software conhecidos como ferramentas Unix. No Linux, bem como em outros sistemas operacionais, estes programas esto disponveis como pacotes de software gratuitos em suas verses GNU. A maioria deles oferece caractersticas melhoradas em relao aos originais. Destes, o compilador GNU C/C++, que algumas pessoas acreditam ser um dos melhores compiladores disponveis atualmente, provavelmente o programa mais famoso, talvez com a exceo do Emacs. O que torna o Linux completo sua interface grfica atravs do XWindow. As primeiras verses utilizavam o XFree86 (atualmente na verso 4.6.0). Este um Sistema X Window X11R6.6) para sistemas UNIX para PCs. As verses mais recentes das distribuies Linux esto adotando o X.org. Este o porte da distribuio oficial do Sistema X Window X11R7.1 do X Consortium, Inc. e, portanto, completamente compatvel com o padro. Todos estes componentes, juntos com muitas outras ferramentas, aplicativos e entretenimentos, criam o sistema conhecido como Linux. Existe uma grande quantidade de software gratuito disponvel, e muitas maneiras de montar uma distribuio do sistema Linux. Uma distribuio ir conter o kernel do Linux, aplicativos e utilitrios, ferramentas para instalao, configurao e administrao do Linux. Existem diversas distribuies do Linux. Entre as mais conhecidas esto 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 distribuio Debian a nica distribuio GNU pura porque s contm aplicativos com licena GPL. Esta distribuio j possui mais de 8700 pacotes. No final das contas, a escolha de uma distribuio do Linux uma deciso filosfica que divide a comunidade Linux em diversas ideologias.

Sistema Operacional GNU/Linux

18

A distribuio Linux criada pela empresa alem SuSE tem sido considerada a melhor, por ser a mais completa, mais estvel e mais fcil 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. So disponibilizadas as imagens de CD ou DVD e muita documentao.

Histrico da Computao
A necessidade do ser humano de um sistema de numerao surgiu ainda na pr-histria. Os homens da caverna comearam a associar pedras s suas posses. Com o passar dos anos, o aumento das posses tornou o transporte de suas "economias" bastante difcil, e assim foram criados smbolos para representar uma determinada quantidade de elementos. Um exemplo tpico a escrita cuneiforme dos babilnios e assrios h mais de 5000 anos.

Provavelmente o primeiro computador feito pelo homem foi Stonehenge (Salisbury, UK). Sua construo estimada entre 2600 e 1799 AC.

A partir de 300 AC, surgiram os primeiros bacos. So instrumentos de clculo simples e altamente eficientes. So utilizados at hoje no Japo e China.

Em 1617, John Napier, inventor dos logaritmos, projetou uma mquina de multiplicar atravs de cilindros.

m 1642, Blaise Pascal construiu uma mquina de somar e subtrair utilizando engrenagens.

Em 1673, Gottfried Willhelm Leibniz projetou uma mquina para realizar multiplicaes atravs de somas sucessivas, que s pde ser construda em 1694.

Em 1728, Basile Bouchon construiu um tear mecnico com folha giratria de papel perfurado. Em 1801, Joseph Jacquard criou a mquina de tecer com cartes perfurados.

Sistema Operacional GNU/Linux

19

Em 1812, Charles Babbage projetou uma mquina de clculos de tabelas matemticas. Em 1859, ele projetou uma mquina diferencial. Ela apenas foi construda em 1991.

Em 1890, W. S. Burroughs construiu a primeira mquina com teclado para somar e imprimir. Neste mesmo ano, Hollerith construiu uma mquina tabuladora com cartes de papel perfurados para realizar o censo dos EUA. Sua empresa foi transformada na IBM em 1924.

Em 1937, Howard Aiken construiu uma avanada mquina para clculos integrais e diferenciais, o Mark I. Este seria o primeiro computador programvel . Em 1941, Konrad Zuse criou Z3, primeiro computado controlado por um programa, armazenado em fita perfurada. Ele tambm projetou a primeira linguagem de programao de alto nvel, Plakalkl. Em 1943, Alan Turing participou da construo do Colossus, um computador com 1800 vlvulas. Seu projeto para quebrar criptografia foi to bem feito que sua velocidade no poderia ser batida por programas convencionais rodando nos processadores Pentium atuais.

Em 1946, surge o ENIAC (Electronic Numeric Integrator And Calculator). Com 18800 vlvulas, ocupava 3 salas em um total de 72 m2, pesava 30 toneladas e era refrigerado por dois ventiladores movidos por motores Crysler de 12 CV. Tinha uma avaria a cada 6 horas. Surge, ento, o conceito da arquitetura Von Newman (processador de instrues tratando uma entrada e produzindo uma sada).

E 1948, surge o EDVAC (Electronic Discrete Variable Automatic Computer). Em 1951, produzido o primeiro computador comercial: o UNIVAC I.

Von Newman e o EDVAC

Sistema Operacional GNU/Linux

20

Em meados de 1960, lanado o IBM System/360, um marco na histria dos mainframes. Sua arquitetura evoluiu at o atual S/390, que executa Linux utilizando o modelo de mquinas virtuais.

Em 1970, a Digital Equipment Corporation, DEC, lana a linha PDP. A arquitetura do minicomputador PDP-11 influenciou significativamente a criao dos primeiros microcomputadores.

Em 1972, a Intel lana o 8080 no microcomputador Altair. Surgem os microcomputadores de 8 bits rodando o sistema CP/M-80.

Em 1970, surge o UNIX escrito em linguagem de montagem do DEC PDP-7. Em 1973, o Unix foi reescrito em C, linguagem criada por Dennis Ritchie. O Unix se espalhou por diversos mainframes e minicomputadores. Em 1979, a Intel lana o 8086 e o 8088. Comea a era do IBM PC, executando o PC-DOS. Este sistema operacional herdou milhares de programas do CP/M-80, porque sua arquitetura interna foi baseada nele. Em 1983, a Intel produz o 80286 e a IBM lana o IBM PC/AT. Em 1985, com o lanamento do Intel 80386, o Unix pode ento encontrar seu lugar em microcomputadores. A verso SCO Xenix foi a mais marcante.

Em 1990, foi definido o Unix System V Release 4. Atravs do documento System V Interface Definition (ou simplesmente SVID), diversas verses de Unix foram convergindo para um padro (SCO Unix, HP-UX, IBM AIX, Dec Ultrix, e outros).

Sistema Operacional GNU/Linux

21

O finlands Linus Torvalds cria o Linux em 1991. Tendo os fontes disponveis gratuitamente, o Linux acompanha ento a evoluo dos processadores, utilizando o mximo dos recursos do computador. Hoje, alm da plataforma x86, o Linux disponvel para os processadores MIPS, PowerPC, Sparc, DEC Alpha, Motorola 68xxx, e mesmo o S/390 da IBM

Em 1992, a Intel lana o processador Pentium. A Microsoft comea a linha de seus sistemas Win32 (Windows NT 3.x em 1993, Windows 95 em 1995, Windows NT 4.0 em 1996). A Intel cria o Pentium II em 1997 e o Pentium III em 1999, ao mesmo tempo que apresenta a arquitetura IA64. Em 2000 so lanados o Windows 2000 e o Windows Me. Surge ento o Pentium IV. Em 2001 lanado o Windows XP. Em 2003 so lanados o Windows 2003 e a verso 64 bits do Windows XP, cuja verso Professional s liberada em 2005. Tambm em 2005 anunciado o Windows Vista, lanado em 2006. Em 2009 foi lanado o Windows 7.

Sistema Operacional GNU/Linux

22

Histrico - do Unix ao Linux


O sistema operacional Unix teve sua origem no projeto MULTICS - Multiplexed Information and Computing Service - da Bell Labs, MIT e General Electric, iniciado em 1964. O MULTICS rodava originalmente em um GE645, tendo explorado o uso de segmentao e paginao no gerenciamento de memria e informao. Ken Thompson, Dennis Ritchie e Brian Kernigham, direita, divertiam-se com o jogo Space Travel no GE645, para o qual pagavam US$75 por jogada. Utilizando um PDP-7 rejeitado pela Bell, os trs programadores portaram o jogo para ele e escreveram um pequeno sistema operacional, que Brian denominou UNICS - Uniplexed version of MULTICS. Inicialmente escrito em linguagem de montagem do PDP-7, em 1973 ele foi praticamente todo reescrito em C (no padro definido por Kernigham e Ritchie). A Bell Labs gostou da idia e Peter Neumann sugeriu que o nome fosse modificado para Unix.

Abaixo, uma foto histrica de Dennis Ritchie (em p) e Ken Thompson utilizando um PDP11.

Sistema Operacional GNU/Linux

23

A partir da, aps a liberao dos fontes para as universidades, apareceram diversas verses de sistemas compatveis com o Unix. Por ser de extrema portabilidade, o Unix passou a rodar em diversas mquinas de diversos fabricantes. Em 1977 o Unix j rodava em mais de 500 entidades em mais de 10 paises. Verses comerciais, como o Xenix da SCO, o HP-UX da HP, o AIX da IBM, BSD de Berkeley, SunOS da Sun, o AT&T Unix, entre outros, rapidamente dominaram o mercado de servidores. Em 1990, a AT&T (antiga Bell Labs) escreveu o documento SVID (System V Interface Definition), criando o padro SVR4 (System V Release 4). Em 1991, Linus Torvalds ( esquerda), inspirado no sistema operacional Minix de Andrew Tanenbaum ( direita), decidiu escrever um sistema operacional "melhor que o Minix". Em 5 de outubro, liberou a primeira verso na Internet. Hoje o kernel do Linux conta com milhares de analistas e programadores do mundo inteiro. Incluindo aplicativos GNU e outros comerciais, existem hoje distribuies com mais de 3.000 aplicativos. O Linux possui caractersticas bsicas do BSD e do Unix System V. Em 2001, o kernel Linux, em sua verso 2.4 na distribuio SuSE 8.0 com mais de 4.000 aplicativos, j est sendo utilizado facilmente por usurios de diversos nveis. Ele substitui, com muitas vantagens, qualquer ambiente operacional (redes Novell, Unix, Windows, e outros), ou mesmo se integra a redes com estes ambientes, transparentemente. Paralelamente, eram desenvolvidas as verses 2.5 e 2.6 do kernel Linux. Em dezembro de 2003 a verso 2.6 do kernel foi liberada trazendo ao Linux a verdadeira capacidade para aplicaes empresariais. O United Linux Em 25 de julho de 2002, os lderes da indstria do Linux (Caldera, Conectiva, SuSE Linux e TurboLinux) anunciaram o planejamento do UnitedLinux e o provvel lanamento para novembro. Este sistema operacional, seguindo a especificao tcnica definida pelas 4 distribuidoras de Linux, dever ser o padro adotado pelas empresas, facilitando sua manuteno e administrao. Diversas empresas, como a AMD, Borland, Fujitso, IBM, NEC e SAP, j manifestaram seu apoio comentando a facilidade para a criao de um ambiente Linux de alto desempenho e a facilidade para o desenvolvimentro de hardware e software. A Caldera foi adquirida pela SCO que substituiu a Caldera no grupo UnitedLinux. Devido s aes da SCO contra a IBM relativas a supostas propriedades intelectuais de cdigos fornecidos pela IBM aos desenvolvedores do Linux, o grupo UnitedLinux foi dissolvido em 2004. Posio das SuSE: "A SuSE Linux continuar a suportar incondicionalmente o UnitedLinux, honrando os compromissos com os clientes". O SuSE Linux e a Novell A empresa alem SuSE foi adquirida em janeiro de 2004 pela Novell. A distribuio Novell/SuSE Linux considerada uma das mais completas e seguras do mundo. So oferecidas diversas solues Linux variando do uso pessoal at o uso corporativo.

Alm das soluces corporativas da linha SuSE Linux Enterprise, h a distribuio openSuSE, projeto criado para disponibilizar soluces de cdigo aberto para a comunidade Linux.

Sistema Operacional GNU/Linux Linha de produtos da Novell A Novell disponibiliza diversos produtos baseados em SuSE Linux Enterprise. Alguns deles so descritos abaixo. SuSE Linux Enterprise Server Servidor corporativo altamente estvel, seguro e escalvel SuSE Linux Enterprise High availability extesion Conjunto de aplicativos para a implementao de clusters de alta disponibilidade SuSE Linux Enterprise Enterprise Real Time Extension Extenso do SuSE Linux Enterprise Server para aplicaces de tempo real

24

SuSE Linux Enterprise Desktop Ambiente seguro e fcil de usar para as estaes de trabalho suportando ampla gama de dispositivos e diversos aplicativos. SuSE Linux Enterprise Thin Client Soluo Linux corporativa segura e de baixo custo para a utilizao de estaes leves. SuSE Linux Enterprise JeOS Uma verso reduzida do SuSE Linux Enterprise (Just-enough Operating System) adequada para a utilizaoem solues virtuais ou aplicaes embutidas. A Novell, a IBM, a HP, a SGI, a Nokia e muitas outras empresas, esto apoiando e incentivando o uso do Linux e de solues de cdigo aberto.

Sistema Operacional GNU/Linux

25

2. Hardware e Arquitetura

O sistema operacional Linux est disponvel para diversas plataformas, cada qual com suas idiossincrasias de configurao e gerenciamento de dispositivos. A plataforma mais comum a da famlia de processadores Intel e seus similares (AMD e Cyrix). H ainda verses para processadores RISC, como o Alpha da Compaq (anteriormente DEC) e o HP PA, processadores Motorola 68K, Sun Sparc, ARM, MIPS, PowerPC, e para o IBM S/390. Vrios barramentos so suportados. Os mais comuns so: ISA, VLB, EISA, PCI, MCA do PS/2, e VME. Veja os comandos lspci, lsusb e pnpdump no captulo 4, Utilizando o Linux. Vamos considerar neste captulo a famlia Intel e computadores baseados na arquitetura do IBM PC, o Personal Computer. Muitos servidores, mesmo os multiprocessados (SMP - Symetric Multi Processing), possuem a arquitetura do IBM PC. Nestes computadores existe o BIOS (Basic Input/Output System), que prov a interface entre o hardware e os sistemas operacionais. Normalmente, o BIOS tambm oferece uma interface para a configurao das caractersticas do hardware instalado no computador. Muitas das configuraes do BIOS podem afetar o comportamento do computador e do sistema operacional. As informaes fornecidas pelo BIOS ao sistema operacional podem influir no funcionamento correto e no desempenho de todo o ambiente computacional. Configuraes tpicas incluem data e hora, tipos e geometrias de discos IDE e SCSI, a configurao de portas seriais e paralelas padro e portas USB.

O kernel Linux possui mdulos (drivers) para a grande marioria dos dispositivos encontrados nos computadores tradicionais. Estes drivers fazem parte do kernel e normalmente so compilados como mdulos dinamicamente carregados quando da identificao do hardware, durante a carga do kernel ou da primeira utilizao do dispositivo. Devem ser evitados dispositivos como os WinModems. Para realizar sua funo, estes dispositivos utilizam programas geralmente s disponveis para Windows, que fazem uso intensivo da CPU. Para o caso dos WinModems, especificamente, h o site http://www.linmodems.org onde podem ser encontradas implementaes de mdulos para Linux de drivers de algumas marcas.

Sistema Operacional GNU/Linux

26

O hardware detectado pode ser visto atravs das informaes disponibilizadas pelo kernel no sistema de arquivos virtual proc montado no diretrio /proc. Veja ainda o comando lsdev do SuSE Linux. Alguns exemplos so: Arquivo /proc/cpuinfo /proc/ioports /proc/interrupts /proc/dma /proc/meminfo /proc/devices /proc/scsi/* /proc/ide/* /proc/modules /proc/iomem /proc/bus/* /proc/driver/* Informao Modelo e caractersticas do(s) processadore(s) Portos de E/S Interrupes e dispositivos associados Canais de DMA utilizados Memria principal e swap Dispositivos tipo caracter e bloco Barramentos e dispositivos SCSI Barramentos e dispositivos IDE Mdulos carregados Mapa de memria principal e de dispositivos Barramentos e dispositivos (USB, PCI, PCMCIA, ISA, ...) Dispositivos especiais (RTC, nvidia, thinkpad, ...)

Sistema Operacional GNU/Linux

27

Arquitetura dos Sistemas Unix-Like


Um sistema Unix-like (como o FreeBSD, o Solaris, e o Linux) se caracteriza basicamente pela portabilidade. Somente o kernel deve fazer acesso ao hardware. Um sistema Unix-like implicitamente multitarefa e multiusurio. O kernel trata de coordenar as execues dos processos e as operaes sobre o hardware. Os kernels dos sistemas Unix-like atuais no so mais monolticos. Alguns deles, como o Linux, possuem mdulos que podem ser adicionados e removidos dinamicamente. Assim, drivers para dispositivos novos podem ser includos no sistema de acordo com a demanda, ou excludos conforme a necessidade.

Em equipamentos que suportam componentes hot-swap, a troca de dispositivos pode ser feita sem deslig-lo. Por exemplo, se o equipamento permite placas de rede hot-swap, a placa nova poder ser de fabricante diferente da anterior. O administrador dever apenas reconfigurar os parmetros da nova interface de rede e, s vezes, reiniciar os servios de rede. Sobre o kernel h uma biblioteca de funes bem definida para que aplicativos nativos ou scripts interpretados pelo shell possam ser executados e, independentemente do hardware, prover uma interface uniforme para o usurio.

Quando se desenvolve um aplicativo para Unix, os analistas e programadores raramente se preocupam com o tipo de processador e com a arquitetura bsica do computador no qual este aplicativo ser executado. As bibliotecas do sistema criam uma arquitetura nica virtual que, atravs do kernel, e de seus mdulos, utiliza todos os recursos disponveis no hardware e arquitetura real. At mesmo ambientes operacionais no Unixlike como o Microsoft Windows permitem, atravs de subsistemas POSIX, criar um ambiente de programao e execuo virtual de aplicativos que seguem a arquitetura ortogonal do Unix. Isto permite a alta portabilidade de aplicativos, alm da facilidade de execuo no Linux de arquivos binrios compilados para outros Unix como o SCO Xenix, o SCO Unix, o SCO Unixware e o Sun Solaris.

Sistema Operacional GNU/Linux 28 Em termos de arquitetura de hardware, um programa POSIX no precisa preocupar com tipos de interface de discos, redes, mouse, placas de som, placas grficas, monitores e as resolues de vdeo (veja o captulo 6 - O Sistema X Window).

Sistema Operacional GNU/Linux

29

Dispositivos armazenamento

de

Para utilizar qualquer dispositivo de armazenamento no Linux, este dever conter um sistema de arquivos reconhecvel pelo Linux. Um dispositivo de armazenamento pode ser um disco, uma partio do disco, um disquete, um CD, um DVD, um ZIP ou mesmo um arquivo dentro de um sistema de arquivos. Alm dos tipos sistemas de arquivos nativos do Linux como o minix, ext, ext2, ext3 e o reiserfs, so suportadas uma grande variedade de sistemas de arquivos de outros sistemas operacionais. Entre eles esto os tipos msdos (FAT12 e FAT16), vfat (FAT32), ntfs, ncpfs, smbfs, umsdos, nfs, adfs, affs, hfs, hpfs, xenix, sysv, coherent, qnx4, jfs, xfs, xiafs, udf, ufs, iso9660 e romfs. Normalmente o suporte a estes tipos feito atravs de mdulos do kernel. Note que um sistema de arquivos remoto ser visto virtualmente atravs de seu protocolo, independente do tipo de formatao do dispositivo. Assim, um sistema de arquivos ext2 ou reiserfs ser tratado de forma transparente por mquinas remota utilizand, por exemplo, o tipo nfs - Network File System.Para mquinas Windows, qualquer tipo de sistema de arquivos pode ser compartilhado atravs do smbfs. Aps a formatao do dispositivo de armazenamento, deve ser gerado o sistema de arquivos utilizando o programa mkfs que um front-end para programas mkfs.tipo. O mkfs ir criar no dispositivo as informaes de controle para que o Linux encontre o sistema de arquivos hierrquico e os atributos de arquivos e diretrios. Para os sistemas de arquivos mais utilizados ext2, msdos e reiserfs existem os programas mke2fs, mkdosfs e mkreiserfs para facilitar a utilizao. Veja os comandos de tratamento de sistemas de arquivos no captulo 4. Alguns discos possuem a tecnologia S.M.A.R.T., ou simplesmente SMART (Self-Monitoring, Analysis and Reporting Technology) que um sistema de monitoramento para detectar e reportar vrios indicadores de confiabilidade e possivelmente antecipar falhas dos discos. O Linux possui o servio smartd que controla e monitora estes discos. Ele totalmente configurvel. Os eventos selecionados podem ser enviados para um e-mail.

Sistema de Arquivos
O Linux, assim como qualquer sistema Unix-like, no impe nenhum formato para um arquivo. Para ele, um arquivo apenas um conjunto de bytes armazenados em algum dispositivo. Para os usurios, um arquivo identificado pelo seu nome.

Independente do tipo do sistema de arquivos no dispositivo de armazenamento, os aplicativos trataro de forma ortogonal os arquivos e diretrios nele presente. Este sistema denominado Virtual File System ou simplesmente vfs e prov a transparncia entre os tipos de sistemas de arquivos nos dispositivos de armazenamento, incluindo os compartilhamentos de rede. Um arquivo uma sequncia de bytes em, identificada por um nmero chamado inode ou inodo. O nome (ou os nomes) deste arquivo estar(o) armazenado(s) em um arquivo de tipo diretrio. Isto permite que um mesmo arquivo (conjunto de bytes) possua diversos nomes localizados em diversos diretrios.

Sistema Operacional GNU/Linux Um inodo contm informaes referentes aos bytes armazenados, tais como: Tipo do arquivo: normal, diretrio, dispositivo, socket, named pipe (FIFO), link, ... Permisses de acesso para o dono, grupo e outros links : nmero de nomes para este inode UID (User ID) e GID (Group ID) do dono tamanho datas e horas de criao, ltima modificao e ltimo acesso As informaes do inodo podem ser vistas atravs do comando ls:
hmarx@thor:~ > ls -lid Diretorio 8392 drwxr-xr-x 2 hmarx starix hmarx@thor:~ > ls /home analia breno flavia fred hmarx@thor:~ > 1024 Mar 24 10:07 Diretorio hmarx www

30

No exemplo acima, o inodo de Diretorio 8392, que um diretrio (d), tem permisso de leitura, escrita e "execuo" para o dono (rwx) e apenas leitura e "execuo" (r-x) para o grupo e para os outros, tem 2 links, pertence ao usurio hmarx e ao grupo starix, tem o tamanho de 1024 bytes e foi modificado em 24 de maro s 10:07. Veja mais detalhes do comando ls no Captulo 4.

@ Um diretrio recm criado ter 2 links, isto 2 nomes. Voc seria capaz de identificar quais
so os dois nomes dados ao inodo que armazenar o diretrio ? Dica: Para cada sub-diretrio que voc criar neste diretrio recm criado, o nmero de links do diretrio ser incrementado. Os arquivos so organizados de forma hierrquica, isto , em uma rvore de diretrios e arquivos. O diretrio raiz designado pelo smbolo "/". Em um dispositivo (real ou virtual), seja ele um disco, disquete, partio primria ou lgica, um conjunto de diretrios, sub-diretrios e arquivos denominado sistema de arquivos ou file system.

A partir de um sistema de arquivos inicial (denominado root filesystem) que montado na raiz "/", outros sistemas de arquivos podem ser montados em sub-diretrios. Isto formar uma coleo de file systems. Nesta coleo, os diretrios e arquivos sero acessveis de forma ortogonal pelas aplicaes, como se estivessem em um nico dispositivo. Um ou mais sistemas de arquivos nesta coleo pode at mesmo residir em um outro computador, executando outro sistema operacional.

Sistema Operacional GNU/Linux

31

O sub-diretrio sob o qual montado um sistema de arquivos denominado mount point. Um mount point (ou ponto de montagem) normalmente um diretrio vazio. Caso um sistema de arquivos seja montado sobre um diretrio no vazio, isto ocultar temporariamente seus arquivos e subdiretrios at que o sistema de arquivos seja desmontado. No exemplo abaixo, o diretrio /opt o mount point para o segundo sistema de arquivos.

O sistema de arquivos montado pode estar em qualquer unidade de armazenamento e at em um arquivo dentro de um sistema de arquivos. Ele pode tambm em outro computador em uma rede (que pode estar executando outro sistema operacional). O Linux pode ainda montar compartilhamentos de mquinas Windows, Novell e Apple Macintosh. Esta montagem pode ser feita atravs de protocolos como NFS, SMBFS (ou CIFS), NCPFS, HFS, entre outros. Mais detalhes sero vistos no captulo 8, Servios de Rede - Interconectividade.

Sistema Operacional GNU/Linux

32

Diretrios
Um diretrio basicamente um conjunto de nomes para arquivos. De forma simples, ele associa um nmero de inode a um nome de arquivo. Isto permite que um arquivo possua diversos nomes. Os nomes podero estar em diretrios diferentes. Os diversos nomes de um mesmo arquivo so chamados de links (ou hard links) ou de symbolic links. Quando h necessidade de colocar um nome de um arquivo em um diretrio que reside em um sistema de arquivos diferente do arquivo em si (outra partio, disco ou mesmo computador), cria-se um link simblico, symbolic link. Um link ou hard link apenas ir incrementar o campo links do inodo. Um symbolic link alocar um inodo no sistema de arquivos que conter o nome do arquivo referenciado. Um arquivo pode ser referenciado por um caminho ou path. O caminho pode ser absoluto ou relativo. O caminho absoluto contm todos os sub-diretrios desde a raiz at o nome do arquivo. O caminho relativo faz referncia ao diretrio de trabalho corrente. Se o caminho no comea com "/", ele relativo.

hmarx@thor:~/arqs > ls -la total 15 drwxr-xr-x 2 hmarx starix 1024 drwxr-xr-x 111 hmarx starix 6144 -rwxr-xr-x 2 hmarx starix 8273 drw-r--r-2 hmarx starix 1024 crw-r--r-1 hmarx starix 30, 40 prw-r--r-1 hmarx starix 0 lrwxrwxrwx 1 hmarx starix 11 hmarx@thor:~/arqs >

Feb Feb Feb Mar Mar Mar Mar

11 11 11 24 24 24 24

13:22 09:34 13:22 08:35 08:35 08:40 09:08

. .. Arquivo Normal Diretorio Dispositivo FIFO Link p sh -> /usr/sh

Alguns nomes so especiais, como: / . .. ~ diretrio raiz Tambm utilizado para separar sub-diretrios em um path diretrio corrente diretrio anterior ou diretrio pai diretrio pessoal ou home directory Exemplo: ~hmarx o diretrio pessoal do usurio hmarx

Sistema Operacional GNU/Linux

33

Alguns diretrios padro do SVR4 e do Linux


/ /bin /boot /dev /etc /usr /tmp /usr/bin /usr/spool ou /var/spool /sbin /etc/rc.d ou /etc/init.d /opt ou /usr/local /var/log /proc diretrio raiz utilitrios padro arquivos utilizados no boot do Linux dispositivos configurao do sistema utilitrios da plataforma, interface X Window, ... arquivos temporrios outros utilitrios gerais spool de impresso, mail, fax, ... boot, configurao e administrao scripts de inicializao

utilitrios ou arquivos opcionais arquivos de log do sistema (kernel e servios) diretrio virtual com informaes do kernel Linux

Alguns arquivos padro


/vmlinuz ou boot/vmlinuz /var/spool/mail/username /etc/passwd /etc/shadow /etc/group /etc/inittab /etc/fstab /etc/printcap /etc/syslog.conf /etc/lilo.conf /boot/initrd /boot/grub/menu.lst kernel do Linux (o z indica que o kernel est comprimido) caixa postal do usurio username descrio dos usurios locais do sistema senhas dos usurios locais do sistema descrio dos grupos servios definidos para cada nvel de execuo sistemas de arquivos montveis configurao das impressoras configurao do syslogd configurao do LILO (LInux LOader) RAM disk para a inicializao do Linux configurao do GRUB (GRand Unified Bootloader)

 possvel ter diversas verses de kernel instalados no GNU/Linux. Desta forma, cada arquivo do kernel e do initrd tero seus nomes seguidos da verso, como por exemplo, /boot/vmlinuz-2.6.22.19-0.1-default /boot/initrd-2.6.22.19-0.1-default E os mdulos de cada kernel sero instalados em diretrios diferentes, por exemplo, em: /lib/modules/2.6.22.19-0.1-default/

Sistema Operacional GNU/Linux

34

Sistema Operacional GNU/Linux

35

O sistema de arquivos /proc


Alm dos mapeamentos de hardware, no diretrio /proc montado o sistema de arquivos virtual proc que possui informaes sobre o sistema operacional, seus servios e processos. As informaes mais importantes so: Arquivos /proc/sys/* /proc/net/* /proc/filesystems /proc/swaps /proc/stat /proc/slabinfo /proc/pid/* /proc/self/* /proc/partitions /proc/config.gz /proc/version /proc/cmdline Informaes Parmetros do kernel e servios Parmetros de rede Sistemas de arquivos suportados pelo kernel reas de swap em uso Estatsticas do kernel Informaes sobre gerenciamento de recursos Informaes sobre o processo de PID pid Informaes sobre o processo corrente Parties de disco reconhecidas pelo kernel Configurao geral do kernel na compilao Verso do kernel e dados sobre a compilao Argumentos passados no boot

Algumas informaes em /proc so apenas de leitura. Outras informaes podem ser escritas e alteram o comportamento do kernel. Tome muito cuidado ao alterar o valor de algum parmetro do kernel. O sistema poder funcionar de forma errtica ou mesmo travar ! Por exemplo, para obter a informaes sobre quais sistemas de arquivos o kernel suporta, com os mdulos carregados no momento, utilizamos:
hmarx@thor:~> cat /proc/filesystems nodev rootfs nodev bdev nodev proc nodev sockfs nodev tmpfs nodev shm nodev pipefs ext2 minix iso9660 nodev nfs nodev devpts vfat hmarx@thor:~>

Sistema Operacional GNU/Linux Para saber as informaes sobre o prprio processo cat durante sua execuo, utilizamos:
hmarx@thor:~> cat /proc/self/status Name: cat State: R (running) Tgid: 9267 Pid: 9267 PPid: 7779 TracerPid: 0 Uid: 3001 3001 3001 3001 Gid: 3000 3000 3000 3000 FDSize: 256 Groups: 3000 6 14 16 VmSize: 1544 kB VmLck: 0 kB VmRSS: 520 kB VmData: 36 kB VmStk: 24 kB VmExe: 12 kB VmLib: 1224 kB SigPnd: 0000000000000000 SigBlk: 0000000080000000 SigIgn: 8000000000000000 SigCgt: 0000000000000000 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 hmarx@thor:~>

36

Sistema Operacional GNU/Linux

37

Dispositivos
Os dispositivos do computador, tais como memria, portas paralelas, portas seriais, discos IDE, discos SCSI, CD-ROMs, cmeras, pen drives, interfaces de vdeo, mouse, entre outros, so representados por arquivos especiais, normalmente localizados no diretrio /dev. Estes arquivos so basicamente de dois tipos: b - bloco Indica que as transferncias de dados so em blocos (como os setores de um disco) c - caracter Indica que podem ser feitas transferncias byte a byte (como as impressoras)

A eles so designados dois nmeros: major e minor. O major number indica a classe do dispositivo (porta paralela, porta serial, disco IDE, ...) e o minor number indica o ndice do dispositivo (primeira porta, segundo disco, ...)

hmarx@thor:~/arqs > ls brw-rw-rw1 root crw-rw-rw1 root crw-rw-rw1 uucp hmarx@thor:~/arqs >

-l /dev/lp0 /dev/ttyS1 /dev/hda disk 3, 0 Feb 04 19:50 /dev/hda lp 6, 0 Feb 04 09:50 /dev/lp0 uucp 5, 65 Mar 22 18:45 /dev/ttyS1

No diretrio /dev podem existir tambm links para outros arquivos no diretrio /dev ou para diretrios virtuais em /proc, como ocorre com o diretrio /dev/snd que possui dispositivos diferentes para cada modelo de placa de som.

Dispositivos Especiais
H diversos dispositivos especiais que mapeiam estruturas de dados ou processos do kernel. Entre eles esto o socket, representado pelo tipo s e o pipe, representado pelo tipo p.

hmarx@thor:~/arqs > ls -l /dev/xconsole /dev/log srw-rw-rw1 root root 0 Oct 25 01:44 pr-------1 hmarx tty 0 Oct 28 17:50 hmarx@thor:~/arqs >

/dev/log /dev/xconsole

Sistema Operacional GNU/Linux

38

Dispositivos Padro
Os dispositivos de armazenamento (tipo bloco), como disquetes, discos e CD-ROMs (que possuem arquivos e diretrios), devem ser montados para que possam ser utilizados pelos aplicativos tpicos do Linux. Dispositivos com sistemas de arquivos FAT ou VFAT (formatados para DOS e Windows) podem ser utilizados, sem a necessidade da montagem, atravs dos utilitrios mtools. Na console (vdeo e teclado do computador), so criados 12 terminais texto virtuais acessveis atravs das teclas + a +. Normalmente, o terminal virtual 7 (/dev/tty7) desabilitado, dando lugar ao terminal grfico do sistema X Window. Os terminais 8 a 12 no esto habilitados por default. O terminal 10 (/dev/tty10) utilizado normalmente para a sada de logs do sistema. Para comutar para um terminal texto virtual estando em uma sesso grfica no X Window, utiliza-se as combinaces ++ a ++. Sesses grficas adicionais iro utilizar os terminais a partir do terminal virtual 8.

Exemplos de dispositivos mais comuns :


Tipo Discos IDE em kernels antigos Discos (SCSI, USB, IDE ou SATA) Parties nos discos Portas seriais (COM1, COM2, ...) Portas paralelas (LPT1, LPT2, ...) Terminais texto virtuais Disquetes (A:, B:, ...) XTerms ou terminais virtuais e remotos Arquivos em /dev /dev/hda, /dev/hdb, /dev/hdc, ... /dev/sda, /dev/sdb, /dev/sdc, .... /dev/hda1, /dev/sdc2, ... /dev/ttyS0, /dev/ttyS1. ... /dev/lp0, /dev/lp1, ... /dev/tty1, /dev/tty2, ... /dev/fd0, /dev/fd1, ... /dev/pts/0, /dev/pts/1, ...

Sistema Operacional GNU/Linux O comando lsdev pode ser utilizado para ver as informaes sobre o hardware instalado:

39

hmarx@thor:~ > lsdev Device DMA IRQ I/O Ports -----------------------------------------------acpi 9 cascade 4 2 dma 0080-008f dma1 0000-001f dma2 00c0-00df eepro100 1440-147f ES1938 5 ESS 1400-1407 14b0-14bf 14c0-14cf 14d8-14db 14dc14df eth0 11 fpu 00f0-00ff i82365 11 ide0 14 01f0-01f7 03f6-03f6 14a0-14a7 ide1 15 0170-0177 0376-0376 14a8-14af keyboard 1 0060-006f parport0 0378-037a 037b-037f PCI 0cf8-0cff 1000-10ff 1400-143f 1440-147f 1480149f 14a0-14af 14b0-14bf 14c0-14cf 14d0-14d7 14d8-14db 14dc-14df 2180-219f 8000-803f 9000-9fff 9000-90ff pic1 0020-003f pic2 00a0-00bf PS/2 Mouse 12 rtc 8 0070-007f serial 03f8-03ff timer 0 0040-005f vesafb 03c0-03df usb-uhci 11 1480-149f hmarx@thor:~ >

O comando lsusb pode ser utilizado para ver as informaes sobre o barramento USB e dispositivos conectados instalado:
hmarx@thor:~ > Bus 002 Device Bus 002 Device Bus 001 Device Bus 001 Device hmarx@thor:~ > lsusb 002: ID 001: ID 002: ID 001: ID

05e3:070e Genesys Logic, Inc. 0000:0000 05a9:a511 OmniVision Technologies, Inc. OV511+ WebCam 0000:0000

Veja mais detalhes destes comandos no captulo 4, Utilizando o Linux.

Sistema Operacional GNU/Linux

40

Sistema Operacional GNU/Linux

41

3. Iniciando o Linux
Do boot ao Login
Ao ser ligado (ou reiniciado) um computador do tipo PC, o primeiro programa a ser executado o BIOS, localizado em uma memria ROM ou Flash. Da o nome ROM BIOS ou Flash BIOS. Este programa realiza o teste do hardware (Power On Self Test, ou simplesmente POST). So verificados o processador, memria, dispositivos bsicos de E/S e armazenamento. A seguir, ele carrega o primeiro setor do dispositivo de boot (normalmente disquete, CD ou disco rgido). Este setor, denominado master boot record (MBR), contm um pequeno programa (ou parte inicial dele) cujo objetivo carregar o sistema operacional. Alguns setores de boot contm programas que permitem a seleo do sistema operacional a ser carregado. Na realidade, ele ir carregar o setor de boot da partio do sistema operacional escolhido. Para o Linux existe o LILO (LInux LOader), o GRUB (GRand Unified Bootloader), e outros. O openSuSE Linux utiliza como padro o LILO nas verses at 7.3, e o GRUB a partir da verso 8.x.. No caso de um sistema Unix-like, como o Linux, o setor de boot carrega o kernel, que responsvel por inicializar o hardware e executar o processo inicial do sistema operacional, o init, e controlar todo o ambiente operacional do computador. O processo init recebe o process ID (PID) 1. Ento, atravs das definies no arquivo /etc/inittab, ele ir disparar os outros processos.

O Linux, como todo Unix, possui diferentes nveis de execuo, chamados de runlevels. O runlevel identificado por um caracter, que pode ser de 0 a 6, A, B, C, I ou S. O nvel inicial o definido pela linha initdefault do arquivo /etc/inittab.

No arquivo /etc/inittab h entradas no seguinte formato: id:runlevels:ao:processo O id uma sequncia nica de 1 a 4 caracteres que identifica a entrada no arquivo /etc/inittab, runlevels a lista de nveis de execuo para o qual a ao tomada, e processo o processo a ser executado.

Sistema Operacional GNU/Linux

42

Tabela de aes utilizadas no initttab


Ao respawn wait once boot bootwait off ondemand initdefault sysinit powerwait powerfail powerokwait powerfailnow resume ctrlaltdel kbrequest Significado O processo ser redisparado se terminar. O init esperar o processo terminar. O processo ser executado na entrada do runlevel. O processo ser executado durante o boot. O init esperar, no boot, o processo terminar. No ser executado. O processo ser executado sob demanda sem alterar o runlevel. Runlevel inicial aps o boot. O processo ser executado antes dos processos de boot. O processo ser executado quando h queda de energia. O init ir esperar o processo terminar. O processo ser executado quando h queda de energia. O init no ir esperar o processo terminar. O processo ser executado quando do retorno da energia. O processo ser executado quando a bateria de uma UPS estiver quase descarregada. O processo ser executado quando o kernel informar ao init que a mquina foi restaurada de um Suspend por software. O processo ser executado quando for pressionada a sequncia + + . O processo ser executado quando for pressionada a sequncia definida no keymap como KeyboardSignal. O default +.

Nveis de execuo padro


runlevel 0 1 2 3 4 5 6 A B C I S Significado Pra o sistema (halt) Modo monousurio (single) Multiusurio sem rede Multiusurio com rede - no utilizado Multiusurio, com rede e interface grfica Reinicializa o sistema (reboot) \ > Sob demanda / Inicializao Modo supervisor - single (usado por scripts)

Sistema Operacional GNU/Linux Por exemplo, considerando a linha: id:5:initdefault: o init ir executar o definido pela linha do nvel 5: l5:5:wait:/etc/init.d/rc 5 e demais linhas que contiverem 5 na segunda coluna, como: 1:2345:respawn:/sbin/mingetty --noclear tty1 que habilita o terminal 1 (/dev/tty1) , ativando um processo para login.

43

O script /etc/init.d/rc utilizado sempre que o nvel de execuo alterado. Para iniciar os servios do runlevel 5, ir executar os scripts Sxx* existentes no diretrio /etc/init.d/rc5.d. Na mudana de um runlevel i para o j, ele ir executar os scripts Kxx* do diretrio /etc/init.d/rci.d para os servios que esto em execuo no nvel i e no sero executados no nvel j, e os scripts Sxx* do diretrio /etc/init.d/rcj.d para os servios que no esto em execuo no nvel i e que devero ser executados no nvel j. Essencialmente, estes scripts so na realidade links para os arquivos em /etc/init.d. O rc passar o argumento start para os scripts Sxx* e stop para os scripts Kxx*. O nmero xx ir definir a ordem de execuo dos scripts. Assim, por exemplo, o servio httpd em um servidor WEB, disparado pelo script /etc/init.d/apache. No diretrio /etc/init.d/rc3.d estaro, por exemplo, os links simblicos K03apache e S21apache para o script ../apache. O super usurio poder mudar o nvel de execuo do sistema utilizando o programa init, passando o novo runlevel. O programa init (PID 1) em execuo ser sinalizado para que seja feita a mudana de runlevel. thor:~# init 5 Quando feita uma alterao no arquivo /etc/initab, para a insero, remoo ou alterao de um servio, o programa init dever ser tambm informado, utilizando init Q. O init tambm reage a alguns sinais: Sinal SIGHUP SIGUSR1 SIGINT SIGWINCH Ao Muda o runlevel para o contido no arquivo /etc/initrunlvl ou /var/log/initrunlvl Fecha e reabre o /dev/initctrl (til em scripts de inicializao que remontam o /dev) Ativa a ao ctrlaltdel (tambm quando pressionadas as teclas + + ) Ativa a ao kbrequest

Sistema Operacional GNU/Linux

44

Alguns dos processos disparados pelo init sero responsveis pelo tratamento dos "terminais", atravs dos quais os usurios iro interagir com o sistema operacional. Classicamente, os processos que iro tratar esses terminais so chamados de getty. Cada "terminal", real ou virtual, ter um processo getty associado. Dependendo da forma da interface com o usurio, o getty ir executar o processo de login, disparando a seguir o chamado login shell.

No Linux, existem diversos tipos de getty. O mais simples utilizado nos terminais virtuais acessveis via + a +. Os terminais ativos so definidos no /etc/inittab. Este getty ir mostrar uma tela de login, identificando o sistema e o terminal. Quando o usurio comea a digitar seu username, o processo login entra em ao. Aps a identificao do usurio, o login ir executar o login shell, normalmente o /bin/bash. O shell ir ento exibir algumas mensagens e o prompt, indicando ao usurio que ele est pronto para receber comandos. Quando se instala a interface grfica X Window, o processo de login semelhante. Ele chamado genericamente de XDM (X Desktop Manager). No KDE ele o KDM. Aps a identificao do usurio (username/password), o login shell ser o gerenciador de janelas escolhido (KDE, fvwm2, gnome, ...). O KDE no apenas um gerenciador de janelas. Ele um ambiente de trabalho completo (K Desktop Environment), com muitas caractersticas semelhantes s encontradas no Microsoft Windows e no MacOS.

Sesses
Para utilizar os recursos do Linux, um usurio precisa abrir uma sesso. Para isto, ele deve se identificar atravs de um cdigo (username) e de uma senha (password). A cada usurio esto associados dois nmeros: o user id, UID e o group id, GID. Estes dois nmeros, gerados ou assinalados na criao do usurio, sero utilizados pelo Linux para verificar as permisses de acesso deste usurio.

Sistema Operacional GNU/Linux

45

Um usurio pode pertencer a diversos grupos, sendo que um deles o primrio. H um usurio especial, o super usurio, chamado root, que possui privilgios especiais. Um sistema Unix-like como o Linux possui um esquema de segurana que permite a um usurio normal utiliz-lo sem medo. No h riscos de danificar o sistema apagando arquivos essenciais. Ao contrrio, nenhuma verificao feita se o usurio o root. Assim, procure utilizar sempre um usurio normal para suas tarefas. Apenas utilize o usurio root quando precisar instalar, configurar ou administrar o sistema. Um usurio pode iniciar uma sesso em modo texto, em um terminal ou console virtual (local ou remoto), ou ainda uma sesso em modo grfico utilizando a interface X Window (veja o captulo 6).

No modo texto, um incio de sesso tpico :


Welcome to SuSE Linux 9.3 (i586) - Kernel 2.6.11.4-21.14-smp (tty3). thor login: hmarx Password: Last login: Wed Oct 11 17:31:50 from thor.starix.br Have a lot of fun... Were deep into the holiday gift-giving season, as you can tell from the fact that everywhere you look, you see jolly old St. Nick urging you to purchase things, to the point where you want to slug him right in his bowl full of jelly. -- Dave Barry, "Simple, Homespun Gifts" hmarx@thor:~ >

O kdm (KDE Desktop Manager) ir exibir uma tela de login mais agradvel.

Note que, por default, a senha no ecoada. O administrador poder configurar o KDM para ecoar 1 ou 3 caracteres.

Sistema Operacional GNU/Linux

46

Um usurio deve sempre fechar a sua sesso aps o trmino de suas atividades. Por motivo de segurana, sempre que ausentar-se ou afastar-se do terminal, ele deve travar ou fechar sua sesso. Em um terminal texto, basta apenas terminar o shell utilizando o comando exit, logout ou simplesmente digitando +D (sequncia padro para fim de arquivo ou EOF - veja o comando stty). Para desligar o computador, deve-se dar shutdown. Assim, o sistema ir terminar todos os processos, fechar os arquivos, garantindo a integridade dos dados nos discos. O shutdown tem a opo de parar (-h) ou reiniciar (-r) o computador. Em computadores com fonte ATX, o Linux desligar automaticamente o computador aps parado (atingido o nvel de execuo 0).

Dependendo da configurao, apenas o super usurio poder realizar o shutdown. Na interface grfica do KDM, ao selecionar Logout, aparecer uma janela na qual o usurio dever, normalmente, informar a senha do root para poder confirmar a operao de Shutdown, desligando ou reiniciando o computador.

Sistema Operacional GNU/Linux

47

4. Utilizando o Linux
Interpretador de comandos
O interpretador de comandos em modo texto do Linux, como em qualquer sistema Unix-like, denominado shell.

Existem diversos tipos sua escolha: bash, sh, ksh, csh, tcsh, pdksh, zsh, ash. O shell padro do Linux o bash - Bourne Again Shell. O shell no apenas um simples interpretador de comandos: ele tambm uma poderosa linguagem de programao. Normalmente, aps o login, disparado o shell definido no /etc/passwd para o usurio. Ele exibe o seu prompt, indicando estar pronto para aceitar comandos. O prompt diferente para cada shell, e pode ser alterado pelo usurio.

Utilizaremos o

prompt genrico $ a partir de agora. Textos entre os smbolos [ e ] so opcionais. Textos da forma opo devem ser substitudos pelo valor real. Se for necessrio executar o comando como usurio root, utilizaremos o prompt #. Nos exemplos, o prompt ser hmarx@thor:path > indicando o usurio hmarx utilizando a mquina thor no diretrio corrente path.

A sintaxe geral de um comando a ser digitado no prompt de um shell : $ comando [ opes ] [ argumentos ] O comando pode ser um built-in (comando reconhecido e interpretado pelo shell), um nome de um programa ou de uma funo definida. Um mesmo comando pode existir na instalao como um built-in do bash, um programa ou uma funo, e podem produzir sadas diferentes. Um exemplo o comando time e o executvel /usr/bin/time .

Sistema Operacional GNU/Linux

48

As opes so normalmente da forma -caracter ou --texto. Os argumentos so informaes a serem tratadas pelo comando, como nomes de arquivos ou diretrios. Assim, para o comando: $ ls -l --inode /bin /tmp Temos: comando opes argumentos

= ls = -l --inode = /bin /tmp

A opo --inode equivalente opo -i ! Atravs do comando alias pode ser definido um sinnimo para um comando. Este pode ser removido atravs do comando unalias.
hmarx@thor:~> alias ver=uname -s -r hmarx@thor:~> ver Linux 2.4.10-64GB-SMP hmarx@thor:~> unalias ver hmarx@thor:~>

Digitando apenas alias, sero exibidos os sinnimos definidos. As definies so volteis. Para criar definies permanentes crie o arquivo ~/.alias com os comandos alias desejados.

Sistema Operacional GNU/Linux

49

Metacaracteres
Alguns caracteres ou seqncias de caracteres so tratados pelo shell e substitudos antes de serem passados para o <comando>. Alguns exemplos:

* ? [ <conjunto> ] [ ! <conjunto> ]

qualquer cadeia de caracteres O shell expande conforme os arquivos presentes no diretrio qualquer caracter um caracter do conjunto Exemplo: [a-z] : letras minsculas um caracter que no esteja presente no conjunto Exemplo: [!0-9] : no seja um dgito

Exemplos:
hmarx@thor:~/docs> ls * chap1 chap2 chap3 programA hmarx@thor:~/docs> ls *[1-3] chap1 chap2 chap3 programB1 hmarx@thor:~/docs> ls *[!1-3] programaA hmarx@thor:~/docs> ls *[A-B]? programB1 programB2 hmarx@thor:~/docs>

programB1 programB2

programB2

Veja mais detalhes no captulo Expresses Regulares.

Sistema Operacional GNU/Linux

50

O Bash - Bourne-Again Shell


O bash um shell poderoso com sintaxe semelhante linguagem de programao C. Ele foi baseado no shell original do Unix Bourne shell, ou simplesmente sh.

Variveis
Variveis so definidas a partir de uma atribuio: varivel=texto Caso texto contenha caracteres especiais como os metacaracteres ou espaos em branco, voc dever coloc-lo entre aspas (") ou apstrofos (). Ou, ainda, preceder o caracter especial por \. O valor de uma varivel pode ser obtido atravs de $varivel. Por conveno, os nomes das variveis so dados em letras maisculas. O bash no ir expandir textos da forma $varivel em cadeias utilizando apstrofos ().

hmarx@thor:~/arqs> PESSOA=Helio hmarx@thor:~/arqs> EMPRESA="Starix Informatica" hmarx@thor:~/arqs> echo $PESSOA da $EMPRESA Helio da Starix Informatica hmarx@thor:~/arqs> echo "$PESSOA" Helio hmarx@thor:~/arqs> echo $PESSOA $PESSOA hmarx@thor:~/arqs>

Variveis padro
O bash possui algumas variveis pr-definidas e que podem ser redefinidas pelo usurio. Exemplos: PATH PS1 PS2 PS3 HOSTNAME HOME USER TERM LANG CDPATH IFS caminho default para procura de executveis prompt primrio prompt de continuao, indica que o comando anterior precisa de complemento prompt do comando select nome do computador diretrio pessoal do usurio, ou home directory username ou login do usurio modelo do terminal do usurio (linux, xterm, ansi, ...) lngua para mensagens e determinao de formatos de data e nmeros caminho para procura utilizado pelo comando cd caracter separador de argumentos para $*

Sistema Operacional GNU/Linux O bash possui ainda variveis que no podem ser redefinidas pelo usurio, como: ? ! 0 1 .. 9 @ * # $ status do ltimo comando executado, em decimal PID do ltimo comando executado em background primeira palavra da linha de comando (o comando) opes e argumentos da linha de comando todas as opes e argumentos da linha de comando todos as opes e argumentos separados por $IFS nmero de argumentos PID do shell

51

O comando env pode ser utilizado para exibir as variveis do ambiente. O comando set pode ser utilizado para alterar opes do shell ou visualizar as variveis e funes definidas. Este comando possui diversas opes que alteram o comportamento do shell. O comando unset serve para remover a definio de uma varivel ou funo. Variveis podem ser exportadas para sub-shells atravs do comando export. Utilizando somente export ou export -p voc pode visualizar as variveis exportadas. Uma varivel pode ser definida no escopo da execuo de um programa.
hmarx@thor:~> date Fri Sep 23 20:39:37 BRT 2005 hmarx@thor:~> LANG=pt_BR date Sex Set 23 20:39:39 BRT 2005 hmarx@thor:~> date Fri Sep 23 20:39:42 BRT 2005 marx@thor:~>

Sistema Operacional GNU/Linux Expanso de parmetros

52

O sinal $ introduz a expanso de parmetros, a substituio de comandos e a expanso aritmtica do bash. O parmetro pode estar entre chaves { } evitando que caracteres especiais sejam tratados como nomes de variveis. O valor retornado normalmente o valor do parmetro. Utilizando operadores extras podemos ainda aumentar o poder desta expanso, como visto abaixo: Formato ${parmetro} ${parmetro:-palavra} ${parmetro:=valor} ${parmetro:?erro} ${parmetro:+palavra} ${parmetro:offset} ${parmetro:offset:tamanho} ${#parmetro} ${parmetro#padro} ${parmetro##padro} ${parmetro%valor} ${parmetro%%valor} Valor retornado valor do parmetro palavra se parmetro nulo se parmetro nulo atribui valor ao parmetro Exibe erro se parmetro for nulo palavra se o parmetro no for nulo substring do parmetro comeando em offset substring de tamanho caracteres do parmetro comeando em offset nmero de caracteres do parmetro remove o menor texto, que bate com o padro, do incio do valor do parmetro remove o maior texto, que bate com o padro, do incio do valor do parmetro remove o menor texto, que bate com o padro, do fim do valor do parmetro remove o maior texto, que bate com o padro, do fim do valor do parmetro

Operadores extras (cont.) Formato ${parmetro/padro/texto} Valor retornado substitui a primeira ocorrncia do padro no valor do parmetro por texto substitui todas as ocorrncias de padro no valor do parmetro por texto indireo : valor do valor do parmetro

${parmetro//padro/texto}

${!parmetro}

Sistema Operacional GNU/Linux Exemplos:

53

hmarx@thor:~> unset A hmarx@thor:~> echo ${A:-texto} texto hmarx@thor:~> echo ${A:?Varivel no definida} bash: A: Varivel no definida hmarx@thor:~> A="Um texto muito longo" hmarx@thor:~> echo ${#A} 20 hmarx@thor:~> echo ${A:3:11} texto muito hmarx@thor:~> echo ${A/muito/quase} Um texto quase longo hmarx@thor:~> A=/x/y/z/w/x hmarx@thor:~> echo ${A%/x} /x/y/z/w hmarx@thor:~> echo ${A#/x} /y/z/w/x hmarx@thor:~> A=B hmarx@thor:~> B=1234 hmarx@thor:~> echo $A B hmarx@thor:~> echo ${!A} 1234 hmarx@thor:~>

Sistema Operacional GNU/Linux

54

Comandos bsicos
Ao ser digitado um comando, o bash ir verificar se ele um comando intrnseco, uma funo definida ou um programa executvel (script ou compilado) que esteja em algum diretrio especificado na varivel PATH. Os diretrios so separados por ":". A procura no PATH feita da esquerda para a direita. Para tornar a procura eficiente, obash utiliza uma tabela hash para guardar o caminho dos programas executados. Veja os comandos hash e rehash. Mostraremos a seguir os principais comandos do Linux. A maioria deles possui muitas opes. Sero dadas algumas das opes mais utilizadas. Para os comandos do bash, a sintaxe geral pode ser vista atravs de $ help [ comando ]
hmarx@thor:~> help case case: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac Selectively execute COMMANDS based upon WORD matching PATTERN.The | is used to separate multiple patterns. hmarx@thor:~>

A maioria dos comandos externos aceita ainda a opo --help, que mostra um sumrio da sintaxe e opes. Para uma explicao mais detalhada, utilize o man: $ man [ opes ] [ seo ] comando Para se obter uma lista das sees dos manuais que se referem a um comando, utilize o man com a opo -k (ou apenas o comando apropos): $ man -k comando
hmarx@thor:~> man -k gzip gzip (1) - compress or expand files zforce (1) - force a .gz extension on all gzip files MIME::Decoder::Gzip64 (3pm) - decode a "base64" gzip stream hmarx@thor:~>

Alm da opo -k, outras opes interessantes do man so: -h, --help -a, --all -w, --where -T disp -V, --version Exibe a ajuda das opes Exibe todas as pginas referentes ao comando Exibe o diretrio do arquivo do manual do comando Utiliza o groff para formatar as pginas para o dispositivo disp. Exibe a verso do man.

Sistema Operacional GNU/Linux

55

Outra forma de obter auxlio atravs do comando info que permite caminhar por pginas de menus referentes ao comando escolhido. $ info [ opes ] comando hash [ opes ] [ comando ] ... Exibe ou atualiza a tabela hash que contm o caminho dos comandos. Algumas opes: -l Exibe a tabela hash -d Esquece o caminho dos comandos -t Exibe a tabela com o nmero de utilizaes -r Limpa a tabela hash rehash Limpa a tabela hash do bash forando assim a procura dos executveis no PATH. pwd Mostra corrente. o diretrio
hmarx@thor:~> pwd /home/hmarx hmarx@thor:~>

echo [ -n ] texto Imprime a linha de texto, opcionalmente (-n) sem mudar de linha. read [ opes ] [ varivel ...] L uma linha da entrada padro, atribuindo cada palavra s variveis dadas. As palavras restantes so atribuidas ltima varivel dada. O separador entre as palavras , por default, o valor da varivel IFS. Se nenhuma varivel for dadas, utilizada a varivel REPLY. Algumas opes: -t timeout em segundos -p prompt Exibe o prompt antes de ler L at encontrar o primeiro -d delimitador caracter de delimitador -s No ecoa -n nmero de caracteres Nmero de caracteres a ler
hmarx@thor:~> echo -n "Qual o seu nome ? " ; read NAME Qual o seu nome ? Hlio hmarx@thor:~ > echo Seu nome $NAME. Seu nome Hlio. hmarx@thor:~> hmarx@thor:~> echo $MACHINE i686 hmarx@thor:~>

Sistema Operacional GNU/Linux source arquivo . arquivo

56

L e executa os comandos do arquivos arquivo. Este comando muito utilizado nos scripts de inicializao dos servios do Linux para ler os parmetros de configurao definidos em varveis do bash. Por exemplo, no script /sbin/SuSEfirewall2 encontramos: test -e /etc/sysconfig/network/config && . /etc/sysconfig/network/config

que processa o arquivo /etc/sysconfig/network/config caso ele exista.

Sistema Operacional GNU/Linux ls [ opes ] ... [ arquivos | diretrios ] Lista o contedo dos diretrios ou atributos dos arquivos e diretrios. Algumas opes: -l Formato longo -i, --inode Exibe o nmero do inodo -s, --size Exibe o tamanho do arquivo -a, --all Exibe arquivos "ocultos" (iniciados por .) -A, --almost-all Exibe arquivos "ocultos", exceto o . e o .. -d, --directory Exibe informaes sobre o diretrio e no sobre seu contedo -R, --recursive Recursivo -F, --classify Mostra *, /, =, * ou | conforme o tipo do arquivo -c Ordena e mostra pela data de modificao -x Exibe entradas por linhas -C Exibe entradas por colunas -1 Exibe entradas em 1 coluna -q Exibe ? no lugar de caracteres de controle -Q Lista os nomes entre aspas (") --si Lista tamanhos em potncia de 1000 --full-time Exibe data/hora no formato completo -h, --human-readable Lista tamanhos em potncia de 1024

57

Na listagem longa exibido um caracter representando o tipo do inodo antes dos caracteres rwx das permisses:
Tipo do inodo diretrio arquivo normal dispositivo bloco dispositivo caracter pipe ou FIFO symbolic link socket caracter d b c p l s

Exemplos:
hmarx@thor:/usr/src> ls -l total 4 drwxr-xr-x 10 root root 1024 Mar 14 18:51 epca lrwxrwxrwx 1 root root 17 Nov 8 06:46 linux -> linux-2.4.19.SuSE drwxr-xr-x 15 root root 4096 Jan 26 14:30 linux-2.4.19.SuSE drwxr-x--7 root root 1024 Dec 22 2001 packages hmarx@thor:/usr/src> ls -la total 6 drwxr-xr-x 5 root roor 1024 Sep 22 2001 . drwxr-xr-x 31 root root 1024 Jul 25 11:02 .. drwxr-xr-x 10 root root 1024 Mar 14 18:51 epca lrwxrwxrwx 1 root root 17 Nov 8 06:46 linux -> linux-2.4.19.SuSE drwxr-xr-x 15 root root 4096 Jan 26 14:30 linux-2.4.19.SuSE drwxr-x--7 root root 1024 Dec 22 2001 packages hmarx@thor:/usr/src> ls -F epca/ linux@ linux-2.4.19.SuSE/ packages/ hmarx@thor:/usr/src> ls -QF "epca"/ "linux"@ "linux-2.4.19.SuSE"/ "packages"/ hmarx@thor:/usr/src> ls --full-time -d drwxr-xr-x 7 root root 1024 2001-12-22 09:33:07.000000000 -0300 packages/ hmarx@thor:/usr/src>

Sistema Operacional GNU/Linux mkdir [ opes ] diretrio [ diretrio ] ... Cria diretrios. Algumas opes: -p, --parents -v, --verbose -m, --mode=modo

58

Cria todos os diretrios do path Exibe cada diretrio criado Permisso como em chmod

hmarx@thor:~/test> ls -l total 0 hmarx@thor:~/test> mkdir sub1 hmarx@thor:~/test> ls -l total 1 drwxr-xr-x 2 hmarx starix 1024 Mar 26 23:54 sub1 hmarx@thor:~/test> mkdir -p X/Y/Z hmarx@thor:~/test> ls -R .: X sub1 ./X: Y ./X/Y: Z ./X/Y/Z: ./sub1: hmarx@thor:~/test>

rmdir [ opes ] diretrio ... Remove diretrios. Algumas opes: -v, --verbose -p, --parents

Imprime mensagem a cada diretrio Remove todo o path.

No SuSE Linux so definidos os apelidos: alias md=mkdir -p alias rd=rmdir para simplificar a migrao de ambientes MS-DOS/Windows para Linux.

Sistema Operacional GNU/Linux cd [ diretrio ]

59

Muda para o diretrio especificado, ou para o home directory caso diretrio no seja fornecido. Pode-se utilizar o diretrio - para voltar ao diretrio anterior.
hmarx@thor:~/test> pwd /home/hmarx/test hmarx@thor:~/test> cd sub1 hmarx@thor:~/test/sub1> pwd /home/hmarx/test/sub1 hmarx@thor:~/test/sub1> cd /home/hmarx/test hmarx@thor:~/test> cd hmarx@thor:~> pwd /home/hmarx hmarx@thor:~>

O bash possui diversos comandos para facilitar o caminhamento pelos diretrios do Linux. Os mais comuns so: pushd [ -n ] [ diretrio | +n |-n ] Muda para o diretrio salvando o anterior em uma pilha (varivel DIRSTACK) Algumas opes: -n No muda de diretrio, apenas manipula a pilha em DIRSTACK Utiliza o n-simo diretrio da contado a +n partir da esquerda na lista mostrada pelo comando dirs -n Utiliza o n-simo diretrio da contado a partir da direita na lista mostrada pelo comando dirs popd [ -n ] [ +n | -n ] Remove o n-simodiretrio da pilha em DIRSTACK. Algumas opes: -n No muda de diretrio, apenas manipula a pilha em DIRSTACK Utiliza o n-simo diretrio da contado a +n partir da esquerda na lista mostrada pelo comando dirs -n Utiliza o n-simo diretrio da contado a partir da direita na lista mostrada pelo

Sistema Operacional GNU/Linux comando dirs dirs [ -clp ] [ +n | -n ] Algumas opes: -c -l -p -v +n -n Limpa a pilha Imprime a lista no formato longo (no usa o caracter ~ para o diretrio pessoal). Imprime um diretrio por linha Imprime um diretrio por linha prefixado pelo ndice posicional Imprime o n-simo diretrio da contado a partir da esquerda na lista mostrada pelo comando dirs utilizado sem argumentos Imprime o n-simo diretrio da contado a partir da direita na lista mostrada pelo comando dirs utilizado sem argumentos

60

cp [ opes ] fonte ... destino Copia arquivo(s) fonte para o destino. Mltiplos arquivos podem ser copiados para um diretrio destino. Algumas opes: -v, --verbose Exibe mensagens durante a cpia -p Preserva os atributos do arquivo -R, --recursive Copia diretrios recursivamente -d, --no-dereference No segue links simblicos -f, --force Fora a cpia -P, --parents Concatena diretrio de origem ao destino -s, --symbolic-link Cria links simblicos -i, -- interactive Pergunta antes de sobrescrever arquivos -x, --one-file-system Permanece no sistema de arquivos origem -l, --link Cria hard links
hmarx@thor:~/test> ls -l total 1 drwxr-xr-x 2 hmarx starix 1024 Mar 26 23:54 sub1 hmarx@thor:~/test> cp /etc/passwd . hmarx@thor:~/test> ls -l total 1 -rw-r--r-1 hmarx starix 4094 Mar 27 00:00 passwd drwxr-xr-x 2 hmarx starix 1024 Mar 26 23:54 sub1 hmarx@thor:~/test>

Tome cuidado com os meta-caracteres e com as expresses regulares. Voc poder sobrescrever arquivos no intencionalmente.

Sistema Operacional GNU/Linux cat [ opes ] [ arquivo ] ... Concatena o(s) arquivo(s) ou a entrada padro para a sada padro. Algumas opes: -A, --show-all Equivalente a -vET -n, --number Numera as linhas -v, --show-nonprinting Exibe caracteres especiais usando ^ e M(exceto para CR/LF e TAB) -E, --show-ends Mostra $ no fim das linhas -T, --show-tabs Mostra TABs como ^I
hmarx@thor:~/test> cat -TE Texto$ ^IAps um tab$ Aps brancos$ $ hmarx@thor:~/test>

61

tee [ opes ] ... [ arquivos ] ... Copia a entrada padro para a sada padro e para o(s) arquivo(s). Algumas opes: -a, --append Adiciona ao fim do(s) arquivo(s) -i, --ignore-interrupts Ignora sinais de interrupo head [ opes ] [ arquivos ] ... Exibe as primeiras 10 linhas (ou o nmero especificado) do(s) arquivo(s). Algumas opes: Exibe as primeiras n linhas -n n, ---lines=n Exibe os primeiros n bytes -c n, --bytes=n -v, --verbose Exibe cabealhos com os nomes dos arquivos tail [ opes ] [ arquivos ] ... Exibe as ltimas10 linhas (ou o nmero especificado) do(s) arquivo(s). Algumas opes: -n n, ---lines=n Exibe as ltimas n linhas -f, --follow Exibe continuamente o(s) arquivo(s) crescentes Exibe os ltimos n bytes -c s, --bytes=n -v, --verbose Exibe cabealhos com os nomes dos arquivos Este comando muito utilizado para acompanhar mensagens de log (utilizando a opo -f).

Sistema Operacional GNU/Linux od [ opes ] [ arquivos ] ... Exibe o(s) arquivo(s) em octal e/ou outros formatos Algumas opes: -A, --address-radix=r Muda a base dos offsets do(s) arquivo(s) para r -t t, --format=t Usa formato t -N n, --read-bytes=n Exibe apenas n bytes de cada arquivo Salta n bytes de cada arquivo -j n, --skip-bytes=n Formatos: -a, -t a -b, -t oC -c, -t c -d, -t u2 -f, -t fF -h, -t x2 -i, -t d2 -l, -t d4 -o, -t o2 -x, -t x2 -t x4 -t f4 -t f8 char octal ASCII ou escaped chars unsigned short em decimal float unsigned short em hexadecimal short em decimal long em decimal short em octal short em hexadecimal long em hexadecimal float de 4 bytes float de 8 bytes

62

patch [ opes ] [ arquivo original [ patchfile ] ] patch -pn < pathfile Aplica alteraes em um arquivo. Algumas opes: -b, --backup Cria backups --binary L arquivos em modo binrio -e, --ed Usa o pathfile como script ed -l, --ignore-whitespace Ignora espaos -pn, --strip=n Elimina prefixo contendo n barras wc [ opes ] [ arquivos ] ... Conta linhas, palavras e caracteres dos arquivos ou a entrada padro. Algumas opes: -l, --lines Exibe nmero de linhas -w, --words Exibe nmero de palavras -c, --bytes Exibe nmero de bytes -m, --chars Exibe nmero de caracteres -L, --max-line-length Exibe tamanho da maior linha

hmarx@thor:~> ps aux | wc 120 1509 11862 hmarx@thor:~>

Sistema Operacional GNU/Linux strings [ opes ] [ arquivo ] ... Imprime as cadeias de caracteres existentes no(s) arquivo(s). Algumas opes: -a, --all Percorre todo o arquivo -f, --print-file-name Imprime o nome do arquivo -m, -nm, --bytes=m Considera cadeias de no mnimo m caracteres (o default 4) Imprime o offset na base definida por r -t r, --radix=r (d: decimal, o: octal, x:hexadecimal) antes das cadeias de caracteres encontradas tr [ opes ] conjunto1 [ conjunto2 ] Traduz, comprime ou exclui caracteres da entrada padro. Algumas opes: -c, --complement Complementa primeiro o conjunto1 -d, --delete No traduz. Remove os caracteres do conjunto1 -s, --squeeze-repeats Substitui caracteres repetidos por um nico -t, --truncate-set1 Trunca o conjunto1 para o tamanho do conjunto2 Os conjuntos so cadeias de caracteres como: \NNN \\ \a \b \r \n \t \v c1-c2 [c*] [c*n] [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] [=c=] Caracter com cdigo octal NNN Barra invertida beep backspace CR LF tabulao horizontal tabulao vertical Todos os caracteres de c1 at c2 No conjunto1, repete o caracter c at o tamanho do conjunto2 Repete n vezes o caracter c Todas as letras e dgitos Todas as letras Todos os espaos horizontais em branco Todos os caracteres de controle Todos os dgitos Todos os caracteres imprimveis, exceto o espao em branco Todas as letras minsculas Todos os caracteres imprimveis, incluindo o espao em branco Todos os caracteres de pontuao Todos os espaos horizontais e verticais Todas as letras maisculas Todos os dgitos hexadecimais Todos os caracteres equivalentes a c

63

Sistema Operacional GNU/Linux O comando

64

hmarx@thor:~> tr "[A-Z]" "[a-z]" < arq.orig > arq.novo

passar todo o texto do arq.orig para minsculas gerando arq.novo. grep [ opes ] padro [ arquivo ] ... Imprime linhas do(s) arquivo(s) que contm (ou no) o padro. O padro uma expresso regular. Para mais detalhes veja o captulo "Expresses Regulares". Algumas opes: -i, --ignore-case Ignora maisculas/minsculas -l, --files-with-match Imprime apenas nomes de arquivos -n, --line-number Numera as linhas encontradas -r, --recursive Procura recursiva em diretrios -v, --invert-match Mostra as linhas que no contm o padro -c, --count Imprime o nmero de linhas Usa re como expresso regular -e re, --regexp=re Por exemplo, o comando
hmarx@thor:~> grep -v "^[ ^I]*$" arquivo.txt

mostrar as linhas que no estejam em branco ou que no estejam vazias do arquivo arquivo.txt.

Sistema Operacional GNU/Linux sed [ opes ] [ arquivo ] ... O sed um Stream Editor. Ele utilizado para transformar textos em um arquivo ou em um pipeline. Algumas opes: -q, --quiet, --silent S imprime se explicitamente especificado (comando p) -e s, --expression=s Utiliza o script s para processar a entrada Usa os comandos contidos no arquivo de -f sf, --file=sf nome sf para processar a entrada Alguns comandos do sed : label #comentrio { } a i d q b label t label D h H g G x s/regexp/substituto/ y/origem/destino/ w arquivo Label para comandos b e t Comentrios Incio de bloco Fim de bloco Append - adiciona texto no final Insert - insere texto Delete - apaga o padro Quit - abandona imediatamente Branch - salta para label Salta para label em caso de uma substituio com sucesso Apaga at o fim da linha Hold - copia o padro p/ o buffer Adiciona o padro ao buffer Copia o buffer para o padro Adiciona o buffer ao padro Troca os contedos do buffer c/ o padro Substitui a expresso regexp pelo substituto Traduz os caracteres de origem para os correspondentes em destino Escreve o padro no arquivo de nome arquivo

65

Os comandos do sed podem ser dados para uma determinada faixa de endereos. Caso no seja dada nenhuma faixa, os comandos sero executados para todas as linhas da entrada. A faixa de endereos da forma endereo1[, endereo2]. Cada endereo pode ser: $ n linha~passo /regexp/ ltima linha do texto Especifica a linha de nmero n Linha inicial e passo. Assim, 1~2 indica todas as linhas mpares Linha que contm um padro para a expresso regular regexp

hmarx@thor:~> cat ARQ AAAAA 1111111 BBBBB 2222222 CCCCC 3333333 DDDDD 4444444 hmarx@thor:~> sed -e "s/ ^\([^ ]*\)[ ]*\(.*\)$/\2 | \1" < ARQ 1111111 | AAAAA 2222222 | BBBBB 3333333 | CCCCC 4444444 | DDDDD hmarx@thor:~>

Sistema Operacional GNU/Linux awk [ opes ] [ arquivo ] ...

66

Linguagem de processamento de padres. Awk so as iniciais de seus autores: Alfred Aho. Weinberger e Brian Kernigham. Algumas opes: -f arq, --file arq Arquivo de programa Separador de campos -F fs, --field-separator fs -v var=val, --assign var=val Assinalamento do valor val varivel var -W help, --help Ajuda sumria Imprime as variveis globais e seus -W dump=arq valores finais no arquivo arq Um programa awk consiste de uma sequncia de comandos de aes sobre padres e de definies opcionais de funes: padro { comandos } function nome ( parmetros ) { comandos } Um padro pode ser: BEGIN END /regexp/ padro1 && padro2 padro1 || padro2 padro1 ? padro2 : padro3 ( padro ) ! padro padro1, padro2 Executado antes de ler o arquivo Executado aps tratar o arquivo Uma expresso regular

So definidas diversas classes POSIX como [:alpha:], [:alnum:], [:lower:], [:upper:], e [:digit:] que representam os caracteres alfabticos, alfanumricos, letras minsculas, letras maisculas e os dgitos, respectivamente. Podem ser utilizados operadores semelhantes aos da linguagem C, como: ++, --, ^, +, -, *, /, %, <, >, <=, >=, !=, ==, ~, !~, &&, ||, ?, :, =, +=, -=, *=, /=, %= e ^=, listados em ordem de precedncia. Comandos de assinalamento so da forma: l-value operador expresso l-value pode ser uma varivel ou uma referncia a um elemento de um arranjo. O awk permite definio de arranjos multidimensionais.

Sistema Operacional GNU/Linux Os comandos de controle so: if ( condio ) comando [ else comando ] while ( condio ) comando do comando while ( condio ) for ( varivel in arranjo ) comando break continue delete arranjo [ indice ] delete arranjo exit [ expresso ] { comandos } Os comandos de e entrada e sada so close ( arquivo [, { to | from } ]) getline [ < arquivo ] getline var next nextfile print [ lista de expresses > arquivo ] print [ lista de expresses >> arquivo ] print [ lista de expresses | arquivo ] print [ lista de expresses >& arquivo ] printf formato, lista de expresses [ > arquivo ] printf formato, lista de expresses [ >> arquivo ] printf formato, lista de expresses [ | arquivo ] printf formato, lista de expresses [ >& arquivo ]

67

Podem ser utilizadas as especificaes de formato conhecidas da linguagem de programao C: %d, %c, %i, %e, %E, %f, %g, %G, %o, %u, %s, %x, %X e %%. Entre o % e o caracter do formato podem estar: largura Largura do campo . preciso Preciso ou nmero mximo de caracteres Ajuste esquerda Espao para nmeros positivos e - para espao negativos + Sinal: + para nmeros positivos e - para negativos # Controle alternativo para preencher com zeros 0 Preenche com zeros fflush ( [ arquivo ] ) system ( comando ) So suportadas funes matemticas como: atan2(y, x), cos(expr), exp(expr), int(expr), log(expr), rand(), sin(expr), sqrt(expr) e srand([expr]).

Sistema Operacional GNU/Linux

68

E ainda as funes sobre cadeias de caracteres: asort(s [, d]), gensubr(r, s, h [, t ]), gsub(r, s, [ t, ] ), index(s, t), length([s]), match(s, r [ , a ]), split(s, a [ ,r]), sprintf(formato, lista-deexpresses), strtonum(str), sub(r, s [, t]), substr(s, i [, n ]), tolower(str), toupper(str). Para processar data e hora, o awk fornece: mktime(data), strftime([ formato[ , timestamp] ]), systime(). A data um string no formato "YYYY MM DD HH MM SS [tz]" Para manipulao bit a bit, awk ainda fornece: and(v1, v2), compl(x), lshift(val, n), or(v1, v2), rshift(val, n), e xor(v1, v2). Um programa bem conhecido pode ser escrito em awk:
hmarx@thor:~> awk BEGIN { print "hello world !" } hello world ! hmarx@thor:~>

expr expresso Avalia expresses aritmticas e lgicas, imprimindo o resultado na sada padro. Uma expresso pode conter os operadores |, &, <, <=, =, !=, >=, >, +, -, *, /, % e ainda estar entre parenteses: ( expresso ). Para tratamento de cadeias de caracteres, podem ser utilizados: string : expresso-regular ou match string expresso-regular substr string posio tamanho index string caracteres length string quote token O comando expr muito til quando operamos com variveis que representam nmeros no bash:

hmarx@thor:~> I=135 hmarx@thor:~> I=expr $I + 1 hmarx@thor:~> echo $I 136 hmarx@thor:~>

Sistema Operacional GNU/Linux bc [ opes ] [ arquivo ] ... Calculadora de preciso arbitrria. Algumas opes: -l, --mathlib Define biblioteca matemtica padro -w, --warn Exibe avisos de incompatibilidade POSIX -q, --quiet No exibe o texto introdutrio

69

O bc trabalha com nmeros inteiros e fracionrios de preciso arbitrria, em qualquer base. So aceitos os operadores padro: ++, --, ^, +, -, *, /, %, <, >, <=, >=, !=, ==, ~, !~, &&, ||, ?, :, =, +=, -=, *=, /=, %= e ^=. Uma expresso pode estar entre parenteses. Esto disponveis as funes padro: length(expresso), read(), scale(expresso) e sqrt(expresso). So ainda aceitos os comandos if ( expresso ) comando [ else comando ] while ( expresso ) comando for ( [ expresso1 ] ; [ expresso1 ] ; [ expresso1 ] ) comando break continue halt return [ ( expresso ) ] { comandos } As funes matemticas seno, cosseno, arcotangente, logaritmo, exponencial e bessel so representadas, respectivamente, por s(expresso), c(expresso), a(expresso), l(expresso), e(expresso), j(n, expresso). Uma nova funo pode ser definida utilizando: define nome (parmetros) { [ auto nome ... ; ] comandos } As variveis especiais scale, ibase, obase e last podem ser utilizadas para representar a preciso, a base de entrada, a base da sada e o ltimo valor, respectivamente.

Sistema Operacional GNU/Linux

70

Por exemplo, a funo exponencial da biblioteca matemtica pode ser definida no bc padro POSIX como:
scale = 20 /* * Usa o fato de que e^x = (e ^ (x/2))^2 * Se x um valor pequeno, usamos a srie * e^x = 1 + x + x^2/2! + x^3/3! + ... */ define e(x) { auto a, d, e, f, i, m, v, z; /* Verifica o sinal de x */ if (x < 0) { m = 1; x = -x; } /* Pre-condiciona x. */ z = scale; scale = 4 + z + .44*x; while (x > 1) { f += 1; x /= 2; } /* Inicializa as variveis */ v=1+x a=x d=1 for (i = 2; 1; i++) { e = (a *= x) / ( d *= i) if (e == 0) { if (x > 0) while (f--) v = v*v; scale = z if (m) return(1/v); return(v/1); } v += e } }

Sistema Operacional GNU/Linux mv [ opes ] [ arquivo ] ... Renomeia um arquivo ou move arquivos para outro diretrio, se o ltimo arquivo for um diretrio. Algumas opes: -f, --force -v, --verbose -i, --interactive
hmarx@thor:~/test> ls total 1 -rw-r--r-- 1 hmarx drwxr-xr-x 2 hmarx hmarx@thor:~/test> mv hmarx@thor:~/test> ls total 1 -rw-r--r-- 1 hmarx drwxr-xr-x 2 hmarx hmarx@thor:~/test> -l starix 4094 starix 1024 passwd PassWord -l starix starix 4094 1024 Mar 27 00:00 passwd Mar 26 23:54 sub1

71

Mar 27 00:00 PassWord Mar 26 23:54 sub1

Se os argumentos so 2 nomes arquivos e o segundo existe, o comando mv ir sobrescrev-lo com o contedo do primeiro rm [ opes ] [ arquivo ] ... Remove arquivos ou diretrios. Um arquivo removido no pode ser recuperado. Algumas opes: -f, --force Ignora arquivos no existentes e erros -v, --verbose Exibe mensagens durante a remoo -i, --interactive Modo interativo CUIDADO !!! -r, --recursive Recursivo Para evitar remoes no intencionais, pode-se definir um alias rm=rm -i . ln [ opes ] [ destino ] ... [ nome ] Cria um link para o arquivo destino com nome nome. Com vrios destinos, nome deve ser um diretrio onde os links sero criados. Algumas opes: -f, --force Remove arquivo destino existente -s, --symbolic Cria symbolic link em vez de hard link -v, --verbose Imprime o nome de cada arquivo -i, --interactive Confirma remoo de destino -n, --no-dereference Trata symbolic link para diretrio como se fosse um arquivo
hmarx@thor:~> ln -s /bin/bash shell hmarx@thor:~> ls -li /bin/bash shell 56230 -rwxr-xr-x 1 root root 432000 Aug 5 2000 /bin/bash 2104 lrwxrwxrwx 1 hmarx starix 9 Apr 4 13:29 shell -> /bin/bash hmarx@thor:~>

Sistema Operacional GNU/Linux touch [ opes ] [ arquivo ] ... Atualiza data e hora de acesso e modificao de arquivos. Cria arquivos caso no existam. Algumas opes: -a Altera apenas data/hora de acesso -m Altera apenas data/hora de modificao -c, --no-create No cria arquivos -d str, --date=str Usa data/hora em str em vez da corrente str no formato padro de data e hora -t str Usa data/hora em str em vez da corrente str no formato [CC[YY]]MMDDhhmm -r arq, --reference=arq Usa data/hora do arquivo arq em vez da corrente
hmarx@thor:~> touch -d "Dec 25 2002 23:59:59" Natal hmarx@thor:~> ls -l --full-time Natal -rw-r--r-- 1 hmarx starix 0 Wed Dec 25 23:59:59 2002 Natal hmarx@thor:~>

72

more [ opes ] [ arquivo ] ... Pagina arquivo(s) para a sada padro. Algumas opes: -num Nmero de linhas da tela -s Agrupa mltiplas linhas em branco em uma nica linha +num Comea a exibir a partir da linha num less [ opes ] [ arquivo ] ... Equivalente ao more mas permite caminhar pelo(s) arquivo(s) para frente e para trs e scroll lateral com as setas. Permite ainda marcar posio no texto, procurar por padres e abrir outros arquivos. Para ver o sumrio dos comandos do less pode ser usado o comando h ao caminhar por um arquivo. Algumas opes: -c, --clear-screen Limpa a tela -e, --quit-at-eof Sai aps atingir o fim de arquivo pela segunda vez -g, ---hilite-search Ressalta apenas o texto atual na procura -i, --ignore-case Ignora maisculas e minsculas vi [ opes ] [ arquivo ] ... Poderoso editor de textos disponvel em qualquer Unix. Veja mais no captulo 13: O editor de textos VI. ex [ opes ] [ arquivo ] ... Editor de textos em modo linha. o mesmo editor vi em modo linha. O comando Q no vi o faz comutar para o modo ex. Utilize o comando :visual para voltar ao modo normal.

Sistema Operacional GNU/Linux cut [ opes ] [ arquivo ] ... Imprime na sada padro as partes selecionadas do(s) arquivo(s). Algumas opes: Usa c como delimitador em vez de TAB -d c, --delimiter=c -b lista, --bytes=lista Extrai os bytes especificados pela lista -c lista, --characters=lista Extrai os caracteres especificados pela lista -f lista, --fields=lista Extrai os campos especificados pela lista -s, --only-delimited S imprime as linhas que contenham os delimitadores As opes -c, -b e -f no podem coexistir. A lista pode conter uma ou mais faixas separadas por , e cada faixa pode ser: N N-simo byte, caracter ou campo Do N-simo byte, caracter ou campo at o Nfim da linha N-M Do N-simo at o M-simo byte, caracter ou campo, inclusive Do incio da linha at o M-simo byte, -M caracter ou campo, inclusive paste [ opes ] [ arquivo ] ...

73

Imprime linhas utilizando informaes sequencialmente correspondentes s linhas dos arquivos. Algumas opes: -d c, --delimiter=c Usa c como delimitador em vez de TAB -s, --serial Processa um arquivo por vez

Sistema Operacional GNU/Linux join [ opes ] arquivo1 arquivo2

74

Imprime uma linha para cada par de linhas dos arquivos com campos de juno idnticos. O campo de juno default o primeiro delimitado por espao. Algumas opes: -a n Imprime linhas no casadas do arquivo do lado n -i, --ignore-case Ignora maisculas e minsculas Usa o campo do arquivo1 como juno -1 campo -2 campo Usa o campo do arquivo2 como juno Usa o caracter c como separator de campos -t c -v n Imprime somente as linhas no casadas do arquivo do lado n -o f Usa o formato f para construir a linha O formato composto por uma lista de especificaes n.campo separadas por vrgula ou branco.
hmarx@thor:~> cat Nomes 1:Amlia 2:Beatriz 3:Cludia 4:Dbora hmarx@thor:~> cat Fones 1:3441-2233:Santa Lcia 2:3228-1234:Anchieta 3:3429-8723:Pampulha hmarx@thor:~> cut Nomes -d: -f2 Amlia Beatriz Cludia Dbora hmarx@thor:~> paste -d: Nomes Fone 1:Amlia:1:3441-2233:Santa Lcia 2:Beatriz:2:3228-1234:Anchieta 3:Cludia:3:3429-8723:Pampulha 4:Dbora: hmarx@thor:~> join -t: Nomes Fone -o1.2,2.3,2.2 Amlia:Santa Lcia:3441-2233 Beatriz:Anchieta:3228-1234 Cludia:Pampulha:3429-8723 hmarx@thor:~>

Sistema Operacional GNU/Linux sort [ opes ] [ arquivo ] ... Ordena as linhas dos arquivos concatenados. Algumas opes: Usa chave que comea em pos1 e termina -k pos1 [, -pos2 ] em pos2 -b Ignora brancos no incio das chaves -c Verifica se os arquivos j esto ordenados -M Compara JAN < ... < DEC -n Ordena pelo valor numrico -t sep Usa sep como separador -r Inverte o resultado de comparaes -f Converte minsculas para maisculas na comparao -i Considera apenas caracteres imprimveis nas chaves -d Considera apenas brancos e caracteres alfanumricos nas chaves -m Apenas junta os arquivos (merge)

75

pos dado no formato f[.c][opts], onde f o nmero do campo, c a posio do caracter no campo e opts uma combinao das opes Mbdfinr. uniq [ opes ] [ entrada [ sada ] ] Imprime apenas linhas nicas do arquivo entrada ordenado, no arquivo sada ou na sada padro. Algumas opes: -c, --count Mostra o nmero de ocorrncias no incio de cada linha -d, --repeated Exibe apenas linhas duplicadas -n, -f n, --skip-fields=n No compara os primeiros n campos -i, --ignore-case Ignora maisculas e minsculas -u, --unique Exibe apenas linhas nicas No compara os primeiros n caracteres +n, -s n, --skip-chars=n -w n, --check-chars=n Compara no mximo n caracteres na linha diff [ opes ] arquivo arquivo Compara dois arquivos. Algumas opes: -a, --text -v -B, --ignore-blank-lines -i, --ignore-case -e, --ed -r, --recursive -t -y, --side-by-side -W cols, --width=cols

Trata os arquivos como texto Ignora diferena em nmero de espaos Ignora linhas em branco inseridas ou removidas Ignora maisculas e minsculas Gera um script ed como sada Compara diretrios recursivamente Expande TABs na sada Exibe em duas colunas Usa cols colunas para exibir a sada

Sistema Operacional GNU/Linux diff3 [ opes ] arquivo arquivo Compara trs arquivos Algumas opes: -a, --text -v, --version -E, --show-overlap -A, --show-all -e, --ed -i -m, --merge -T, --initial-tab

76

Trata os arquivos como texto Mostra a verso do diff3 Mostra alteraes sobrepostas, ressaltando conflitos Mostra todas as alteraes, ressaltando os conflitos Gera um script ed como sada Gera os comandos w e q ao final do para o script ed. Produz o arquivo em vez do script ed. Alinha TABs inserindo TABs nas linhas.

who [ opes ] [ arquivo ] [ arg1 arg2 ] Mostra quem est logado ou quem voc (arg1 e arg2 so "am I" ou "mom likes"). Algumas opes: -H, --heading Exibe cabealho -q, --count Exibe o nmero de usurios -T, --message, --writable Exibe + se envio de mensagem est habilitada -i, --idle Exibe tempo ocioso hh:mm
hmarx@thor:~> who hmarx :0 hmarx pts/0 root pts/5 hmarx pts/6 hmarx@thor:~>

Mar 30 Mar 30 Apr 4 Apr 4

16:02 (console) 22:30 14:39 (acer.starix.br) 16:03

w [ opes ] [ usurio ] Mostra quem est logado e o que est fazendo. Algumas opes: -h No mostra o cabealho -l Listagem longa (default) -s Listagem curta -V Mostra a verso last [ opes ] [ nome ... ] [ tty ... ] Mostra a lista das ltimas sesses de usurios de nome nome nos terminais tty. O usurio especial reboot mostra as reinicializaes. Algumas opes: -n, -n n Mostra n linhas -a Mostra o nome da mquina na ltima coluna -R No mostra o nome da mquina

Sistema Operacional GNU/Linux id [ opes ] [ usurio ] Imprime informaes sobre o usurio (ou o corrente) Algumas opes: -g, --group Exibe o ID do grupo do usurio -G, --groups Exibe os IDs grupos do usurio -n, --name Exibe o nome em vez do(s) ID(s) -u, --user Exibe o ID do usurio
hmarx@thor:~> id -G -n hmarx starix root uucp users disk trusted develop audio hmarx@thor:~> id -g -n hmarx starix hmarx@thor:~>

77

finger [ opes ] [ usurio ... ] Imprime informaes sobre usurio(s) locais ou remotos Algumas opes: -l Formato longo -s Formato curto -o Exibe escritrio (com -s) -p No imprime o .plan e .project -m No imprime os nomes (apenas login) -M Imprime os nomes

hmarx@thor:~> finger -p hmarx Login: hmarx Name: Helio Marques Sobrinho Directory: /home/hmarx Shell: /bin/bash Office: Starix, 3284-3001 On since Wed Jul 10 18:40 (BRT) on pts/5 (messages off) No Mail. hmarx@thor:~>

Sistema Operacional GNU/Linux passwd passwd passwd passwd [ -f | -s ] [ usurio ] [ -g ] [ -r | -R ] grupo [ -x max ] [ -n min ] [ -w aviso ] [ -i inativo ] usurio { -l | -u | -d | -S } usurio

78

Altera a senha ou atributos de usurio ou grupo. Apenas o root pode alterar a senha de outros usurios e os atributos de uma senha. Algumas opes: -f Altera todas as informaes do usurio -s Altera o shell do usurio -g Altera informaes de grupo -r Remove a senha do grupo -R Restringe o grupo a todos os usurios -x max Nmero mximo de dias com a mesma senha -n min Nmero mnimo de dias para a alterao da senha Nmero de dias antes da expirao da -w aviso senha -i inativo Nmero de dias para desabilitar o usurio aps a expirao da senha -l Desabilita o usurio atravs de uma senha impossvel -u Reabilita um usurio restaurando sua senha -d Remove a senha do usurio -S Exibe status da senha do usurio su [ opes ] ... [ - ] [ usurio ] Executa um shell como um usurio substituto (ou como root). Algumas opes: - , -l, --login Transforma o shell no login shell -c, --command=comando Passa o comando para o shell -f, --fast Passa o -f para o shell -m Preserva o ambiente do shell Executa o shell especificado -s, --shell=shell
hmarx@thor:~> su Password: thor:~ #

newgrp [ -l ] [ grupo ] sg grupo -c comando - , -l, --login Transforma o shell no login shell Passa o comando para o shell -c, --command=comando Executa um shell como um grupo substituto (ou como root). O comando sg no substitui o shell do usurio.

Sistema Operacional GNU/Linux sudo [ opes ] ... comando

79

Executa um comando como outro usurio (ou como root). O usurio dever ser incluido em /etc/sudoers. Algumas opes: -l Lista os comandos executveis via sudo -L Lista as opes definveis para o sudo -u usurio Executa como usurio (nome ou UID) e no o root -p prompt Exibe o prompt para pedir a senha -b Executa em background -k Invalida a temporizao da senha do usurio gpasswd grupo gpasswd -a usurio grupo gpasswd -d usurio grupo gpasswd -R grupo gpasswd -r grupo gpasswd [ -A usurio, ... ] [ -M usurio, ... ] grupo Administra grupos de usurios. utilizado sem opes para alterar a senha de um grupo. Opes: -a Adiciona o usurio ao grupo grupo -d Remove o usurio do grupo grupo -r Remove a senha do grupo grupo -R Inibe o acesso ao grupo atravs de newgrp -A Define administradores do grupo grupo -M Define membros do grupo grupo uname [ opes ] Exibe informaes sobre o sistema. Algumas opes: -s, --sysname Exibe o nome do sistema operacional -r, --release Exibe o release do sistema operacional -v, --version Exibe a verso do sistema operacional -m, --machine Exibe o tipo da CPU -n, --nodename Exibe o nome da mquina na rede -p, --processor Exibe o modelo do processador -a, --all Exibe todas as informaes

hmarx@thor:~> uname -a Linux thor 2.4.10-64GB-SMP #1 SMP Fri Sep 28 17:26:36 GMT 2001 i686 unknown hmarx@thor:~>

Sistema Operacional GNU/Linux tty [ opes ] Exibe o nome do terminal ou apenas retorna cdigo de erro. Algumas opes: -s, --silent, ---quiet Apenas retorna o cdigo de erro --help Exibe uma ajuda sumria --version Exibe a verso do tty
hmarx@thor:~> tty /dev/pts/2 hmarx@thor:~>

80

setterm [ opes ] Altera atributos de um terminal definido na varivel TERM atravs de uma cadeia de caracteres definida pelas suas caractersticas no terminfo. Caractersticas no suportadas so ignoradas. Algumas opes: -term nome Usa nome em vez do contedo de TERM -clear Limpa a tela e coloca o cursor na primeira linha e coluna. -reset Reinicializa o terminal -cursor [on | off ] Habilita ou desabilita o cursor -repeat [on | off ] Habilita ou desabilita repetio do teclado Salva o contedo da tela da console virtual -dump n n no arquivo screen.dump ou no definido pela opo -file -append n Adiciona o contedo da tela da console virtual n no arquivo screen.dump ou no definido pela opo -file -file arq Define o arquivo de sada para as opes -dump e -append -msg [ on | off ] Habilita ou desabilita mensagens do kernel no terminal Muda o nvel de log das mensagens para n -msglevel n (de 1 a 8). -powersave on | vsync Colocar o monitor no modo de suspenso VESA vsync -powersave hsync Colocar o monitor no modo de suspenso VESA hsync -powersave powerdown Colocar o monitor no modo de suspenso VESA powerdown -powesave off Inibe o modo de suspenso do monitor -powerdown n Define em n minutos (1 a 60) o tempo de desligamento do monitor, ou inibe o desligamento do monitor se n = 0

Sistema Operacional GNU/Linux stty [ opes ] Exibe ou altera as caractersticas e modo de operao do terminal. Algumas opes: -a, --all -g, --save -F dispositivo, --file dispositivo caracterstica valor As caractersticas mais comuns so: Caracterstica eof c eol c erase c intr c lnext c kill c quit c rprnt c start c stop c susp c werase c cols N columns N N ispeed N ospeed N speed Significado Caracter para fim de arquivo Caracter para fim de linha Caracter para apagar tecla digitada Caracter para enviar o sinal SIGINT Para enviar o prximo caracter sem tratar Caractrer para limpar a linha corrente Caracter para enviar o sinal SIGQUIT Caracter para reimprimir a linha Caracter para resumir a sada Caracter para suspender a sada Caracter para enviar o sinal SIGSUSP Caracter para apagar a ltima palavra Informa ao kernel que o terminal tem N colunas Muda o baud rate para N Muda o baud rate de recepo para N Muda o baud rate de transmisso para N Mostra a velocidade do terminal default

81

+D

no definido +? ou

+C +V +U +\ +R +Q +S +Z +W

no definido no definido no definido no definido no definido

O modo de operao pode ser alterado atravs de caractersticas especiais denominadas modo. Um modo pode ser precedido ou no por um hfen. O uso de um hfen complementa o significado do modo de operao.

Sistema Operacional GNU/Linux Os modos mais comuns so: Modo clocal cread crtscts cstopb hup parenb parodd brkint icrnl igncr ignpar inlcr inpck istrip ixoff ixon ocrnl onlcr onlret onocr crterase echo iuclc olcuc ixany icanon Significado Desabilita o controle de modem Permite a entrada de caracteres (no pode ser usado na entrada padro) Habilita o controle de fluxo atravs de CTS e RTS Usa 2 bits de stop (ou 1 se desabilitado) Envia hangup quando o ltimo processo fechar o terminal Gera e testa o bit de paridade Gera paridade mpar Envia um break na linha Traduz CR (carriage return) para LF (line feed) na entrada ignora o CR Ignora caracteres com erro de paridade Tarduz LF para CR na entrada Habilita verificao de paridade Zera o bit 7 na entrada Habilita o envio de XON/XOFF Habilita o controle de fluxo XON/XOFF Traduz CR para LF na sada Traduz LF para LF-CR na sada O caracter LF gera a volta do cursor (CR) No imprime CR na primeira coluna Apaga caracteres usando backspace-espao-backspace Ecoa os caracteres digitados Converte maisculas para minsculas Converte minsculas para maisculas Permite qualquer caracter resumir a saida (e no apenas o definido em start) Habilita os caracteres especiais definidos em erase, kill, werase, e rprnt

82

E, em especial, para restaurar as caractersticas do terminal: sane o mesmo que cread -ignbrk brkint -inlcr -igncr icrnl -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke, e todos os caracteres especiais para os valores default.

Sistema Operacional GNU/Linux Pode ser utilizado ainda o comando reset ou o comando tset.
hmarx@thor:~> stty -a speed 9600 baud; rows 36; columns 79; line = 0; intr = ^C; quit = \^; erase = ^?; kill = ^U; eof = ^D; eol = <undef>: eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext - ^V; flush = ^O; min = 1; time = 0; -parenbl -parodd cs8 ignpar -hupcl -cstopb cread -clocal -crtscts -ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel opost -olcuc-ocrnl onlcr -onocr -onlret -ofill -odel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke hmarx@thor:~> stty -g 2506:5:bd:8a3b:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:2f:0:0:0:0:0: 0:0:0:0:0:0:0:0 hmarx@thor:~>

83

pr [ opes ] [ arquivos ] ... Prepara arquivos (ou a entrada padro) para a impresso. Algumas opes: +primeira pgina [ :ltima pgina] --columns=nmero de colunas --width=largura da pgina --header=cabealho lpr [ opes ] [ arquivo ] ... Envia os arquivo(s) (ou a entrada padro) para a fila de impresso definida. Algumas opes: Definida a fila de impresso (local -Pimpressora[@mquina] ou remota -K nmero de cpias -w largura da pgina -Z opes para o filtro -m e-mail para status de erro lpq [ opes ] Mostra itens na(s) fila(s) de impresso. Algumas opes: -Pimpressora[@mquina] -L -V -c -a -t tempo entre atualizaes

Informaes mais detalhadas Mostra a verso do lpq Limpa a tela antes de exibir Todas as impressoras Intervalo entre exibies repetidas

Sistema Operacional GNU/Linux lprm [ opes ] ( jobid | usurio | all ) Retira iten(s) da(s) fila(s) de impresso. Algumas opes: -Pimpressora [ @mquina] -V Mostra a verso -a Todas as impressoras -U usurio Roda como <usurio> -D nvel de depurao a2ps [ opes ] [ arquivo ] ... Formata arquivo(s) para impresso em uma impressora PostScript. Algumas opes: -M papel, --medium=papel Tamanho do papel (A4, letter, ...) -r, --landscape Paisagem -R, --portrait Retrato --columns=n Imprime em n colunas Nmero de linhas por pgina --rows=n -1, -2, ..., -9 Tamanho de fonts pr-definidos -j, --borders Imprime bordas -f n, --font-size=n Tamanho do font Cabealho -b texto, --header=texto -B, --no-header No imprime cabealho --footer=texto Rodap Rodap de cada pgina -u texto, --underlay=texto -a pginas, --pages=pginas Pginas a imprimir Nmero de cpias -n n, --copies=n --toc=texto Gera ndice Envia sada para a fila de impresso -P impr, --printer=impr impr

84

Sistema Operacional GNU/Linux df [ opes ] arquivos Mostra as informaes sobre o sistema de arquivos onde os arquivos esto. Algumas opes: -h, --human-readable Exibe tamanhos em potncia de 1024 -k, --kilobytes Utiliza bloco de 1024 bytes -H, --si Exibe tamanhos em potncia de 1000 -l, --local Limita aos sistemas de arquivos locais -m, --megabytes Exibe tamanhos em Megabytes -T, --print-type Exibe o tipo dos sistemas de arquivos -i, --inodes Exibe informaes sobre inodos

85

du [ opes ] arquivos Resume a utilizao do disco de cada arquivo e diretrios. Algumas opes: -a, --all Contabiliza todos os tipos de arquivos -h, --human-readable Exibe tamanhos em potncia de 1024 -k, --kilobytes Utiliza bloco de 1024 bytes -H, --si Exibe tamanhos em potncia de 1000 -b, --bytes Exibe tamanho em bytes -c, --total Exibe total -m, --megabytes Exibe tamanho em Megabytes -s, --sumarize Exibe sub-totais -L, --dereference Dereferencia os symbolic links free [ opes ] Exibe o total de memria fsica e de swap livre, incluindo a memria compartilhada e buffers usados pelo kernel. Algumas opes: -b Total em bytes -k Total em kilobytes -m Total em megaytes -o Inibe impresso da linha de ajuste de buffers (subtraido/adicionado memria) -t Exibe o total Exibe continuamente de segundos em -s segundos segundos

Sistema Operacional GNU/Linux ps [ opes ] [ PID ] ... Mostra os processos (de identificao PID) e seus estados. Algumas opes: -A Todos os processos -u usurio Processos do usurio usurio -t tty Processos do terminal tty -V Mostra a verso -w Sada mais ampla -l Sada longa -r Mostra apenas processos em execuo v Memria virtual u Orientado a usurio x Processos sem tty a Inclui outros terminais e processos g Inclui lderes de grupo e Mostra variveis de ambiente pstree [ opes ] [ PID | usurio ] Mostra a rvore de processos (a partir do processo PID). Algumas opes: -a Mostra a linha de comandos -p Mostra os PIDs -u Mostra a transio de usurio -l No trunca linhas longas -h Ressalta processo corrente e antecessores Ressalta o processo pid e antecessores -H pid -G Utiliza caracteres semi-grficos VT-100 pidof [ opes ] programa ... Mostra o PID de cada programa especificado Algumas opes: -s Mostra apenas 1 PID -x Mostra PIDs de scripts -o PID Omite o PID especificado fg [ job ] % [ job ] Coloca o job especificado (nome do processo ou nmero) em foreground. bg [ job ]

86

Coloca o job especificado em background. muito til quando um processo em foreground suspenso por +Z (que gera o sinal SIGSTOP).

Sistema Operacional GNU/Linux jobs [ opes ] [ job ] Lista os processos ativos, disparados em background. Algumas opes: -l Exibe o PID e outras informaes -p Exibe apenas o PID -r Exibe apenas os jobs em execuo -s Exibe apenas os jobs parados (stopped) at [ -V ] [ -q fila ] [ -f arq ] [ -mldbv ] hora atq -c job [ job ] ... atrm [ -V ] job [ job ] ... Enfilera, lista ou remove processos para execuo Algumas opes: -q fila Usa a fila fila.Deve ser uma letra do conjunto [a-zA-Z]. -m Envia um e-mail ao usurio quando o job terminar -d Apelido para atrm (remove processos) -l Apelido para atq (lista processos) -v Mostra a hora que o job ser executado L o job do arquivo arq e no da entrada -f arq padro crontab [ -u usurio ] arquivo crontab [ -u usurio ] { -l | -r | -e} Manipula os arquivos do cron dos arquivos Algumas opes: -u usurio Edita a tabela do usurio -l Lista a tabela -r Remove a tabela -e Edita a tabela

87

Os arquivos crontab contm instrues para o comando cron para que este execute um determinado comando em uma determinada hora de uma determinada data. Os comandos so executados como os usurios donos dos arquivos. Uma linha do arquivo crontab pode ser uma atribuio a uma varivel de ambiente na forma: nome = valor ou um comando para o cron na forma com 6 campos: minutos horas dias-do-ms ms dia-da-semana comando 0-59 0-23 0-31 0-12 (ou nomes) 0-7 (0 ou 7 domingo ou nomes)

Cada um dos primeiros cinco campos pode conter uma lista de faixas separadas por vrgula. Uma faixa pode ser seguida por /nmero que significa saltar o nmero dentro da faixa. Por exemplo, 0-8/2 significa 0, 2, 4, 6, 8.

Sistema Operacional GNU/Linux top [ opes ]

88

Mostra os processos em execuo. Permite enviar um sinal a um processo ou ainda alterar a prioridade dele. Algumas opes: d atraso em segundos Tempo entre exibies Nmero de processos a exibir p nmero do processo b Modo batch s Modo seguro (inibe comandos perigosos) C Totaliza estado das CPUs k Envia um sinal a um processo r Altera a prioridade (renice) de um process

11:11pm up 1 day, 18:53, 4 users, load average: 0.46, 0.49, 0.67 67 processes: 65 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 8.7% user, 2.8% system, 0.0% nice, 88.4% idle Mem: 126448K av, 121332K used, 5116K free, 0K shrd, 2476K buff Swap: 104412K av, 70488K used, 33924K free 27848K cache PID 851 11572 720 7610 11422 1 2 4 5 6 7 8 9 360 363 445 USER hmarx hmarx root hmarx hmarx root root root root root root root root root root bin PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 5 0 2360 1164 736 S 7.9 0.9 166:50 kdeinit 18 0 1092 1092 868 R 2.1 0.8 0:00 top 20 0 32736 22M 920 S 1.1 18.5 128:59 X 20 0 1640 60 44 R 0.2 0.0 3:29 kdeinit 20 0 4664 4664 3284 S 0.2 3.6 0:01 kvt 20 0 76 64 44 S 0.0 0.0 0:03 init 20 0 0 0 0 SW 0.0 0.0 0:03 keventd 20 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0 19 0 0 0 0 SW 0.0 0.0 0:14 kswapd 2 0 0 0 0 SW 0.0 0.0 0:00 bdflush 20 0 0 0 0 SW 0.0 0.0 0:00 kupdated 20 0 0 0 0 SW 0.0 0.0 0:02 kinoded 0 -20 0 0 0 SW< 0.0 0.0 0:00 mdrecoveryd 20 0 256 216 144 S 0.0 0.1 0:00 syslogd 20 0 640 4 0 S 0.0 0.0 0:00 klogd 20 0 88 4 0 S 0.0 0.0 0:00 portmap

Teclando-se h exibida uma tela com os comandos para alterar a exibio.

Sistema Operacional GNU/Linux kill [ -s nome do sinal | -n nmero do sinal | -sinal] pid ... kill -l [ sinal ] Envia um sinal para o(s) processo(s) ou lista o(s) sinai(s) definidos. Algumas opes: -l, --list Exibe os sinais disponveis Envia o sinal de nome dado -s nome do sinal -n nmero do sinal Envia o sinal de nmero dado -p Apenas imprime os PIDs Normalmente, as teclas +Z, +\ e SIGQUIT e SIGINT respectivamente (veja stty). killall [ opes ] nome

89

+C so definidas para os sinais SIGSTOP,

Envia um sinal para o(s) processo(s) de nome nome, comparando por default, os 15 primeiros caracteres. Algumas opes: -l, --list Exibe os sinais disponveis -e, --exact Compara todo o nome do processo. Envia o sinal especificado -s nome do sinal -i, --interactive Pede confirmao -v, -verbose Exibe informaes sobre o envio do sinal -w, --wait Espera o(s) processo(s) terminar(em) nice [ opes ] [ comando ] [ argumentos ] Executa o comando comando com ajuste de prioridade selecionada. O ajuste pode ser de -20 (maior prioridade) at 19 (menor prioridade). O default 10. Algumas opes: -n ajuste, --adjustment=ajuste --version --help renice prioridade [ [-p] pid ... ] [ [-g] pgid ... ] [ [-u] users ... ] Altera a prioridade de um comando em execuo. Algumas opes: -p pid Nmero(s) do(s) processo(s) GID dos processos -g pgid -u user Nome(s) do(s) usurio(s)

Sistema Operacional GNU/Linux time [ -p ] comando [ argumentos ]

90

Temporiza a execuo de um comando. Algumas opes: -p Imprime no formato POSIX /usr/bin/time [ opes ] comando [ argumentos ]

Temporiza a execuo de um comando. Algumas opes: -p Imprime no formato POSIX -f frmt, --format=frmt Usa o formato frmt -o arq, --output arq Envia a sada para o arquivo arq -a, --append Adiciona a sada no arquivo -v, --verbose Imprime informaes adicionais xargs [ opes ] [ comando [ argumentos ] ]

Cria e executa linhas de comandos a partir da entrada padro. O comando default o echo. Algumas opes: -p, -- interactive Modo interativo -t, --verbose Modo verboso Define a cadeia para fim de arquivo -e [ eof-str ], --eof [=eof-str ] Usa no mximo n linhas para cada -l [ n ], --max-lines [=n ] linha de comando (default = 1). -n n, --max-args=n Usa no mximo n argumentos para cada linha de comando -s n, --max-chars=n Usa no mximo n caracteres para cada linha de comando -r, --no-run-if-empty No executa o comando se a entrada padro gerar uma linha em branco. Limita ao mximo de n processos -P n, --max-procs=n por vez (default 1) -x, --exit Termina se o tamanho definido na opo -s excedido

hmarx@thor:~> echo A B C D E | xargs -n 2 echo "Argumentos = " Argumentos = A B Argumentos = C D Argumentos = E hmarx@thor:~> ls *.aw | xargs -n 1 wc 10650 56164 439209 ApostilaLinux.aw 15870 84192 651345 apcaixa.aw 15870 84192 651345 apcaixa.orig.aw 229 914 8309 apcapa.aw 1098 5414 35950 appendix.aw 734 3897 26070 apresentacao_starix.aw hmarx@thor:~>

Sistema Operacional GNU/Linux find [ caminho ] [ expresso ] Encontra arquivos e executa a expresso. O caminho default o diretrio corrente. A expresso pode ser: ( expr ) ! expr expr1 -a expr2 expr1 -o expr2 ou ou ou -not expr expr1 -and expr2 expr1 -or expr2

91

E pode incluir opes como: -name padro -links nmero -atime nmero -ctime nmero -mtime nmero -cnewer arquivo -type tipo -uid UID -printf formato -inum nmero -print -empty -true -false -size nmero [ b | c | k | w ] -ok comando ; -exec comando ; A cadeia de caracteres {}, no comando, ser substituda pelo nome de cada arquivo encontrado. Note que dever ser utilizado \; no prompt do bash para que o ; no seja interpretado como separador de comandos. locate [ opes ] padro ... Lista os arquivos da base de dados /var/lib/locatedb que combinam com o(s) padres fornecidos Algumas opes so: -e. --existing Imprime os arquivos que existem -i, --ignore-case Ignora maisculas e minsculas O programa /usr/bin/updatedb atualiza a base de dados do locate. Normalmente ele disparado pelo cron. chown [ opes ] dono [ { . | : } grupo ] arquivos chown [ opes ] { . | : } grupo arquivos chgrp [ opes ] grupo arquivos Muda o dono e/ou o grupo de arquivo(s) e diretrios. Algumas opes: -R, --recursive Modo recursivo -f, --silent Suprime mensagens de erro -v, --verbose Exibe mensagens durante o processo -h, --no-dereference Altera o symbolic link e no o arquivo -c, --changes Exibe mensagens apenas quando h alguma alterao

Sistema Operacional GNU/Linux chmod [ opes ] modo [, modo ] ... arquivos chmod [ opes ] modo em octal ... arquivos Altera a permisso de arquivos e diretrios Algumas opes: -v, --verbose Exibe mensagens durante o processo -R, --recursive Modo recursivo -f, --silent, --quiet modo { u | g | o | a }* { + | - | = } { r | w | x | X | s | t | u | g | o }* r = read w = write x = execute t = stick s = SUID ou SGID modo em octal um nmero na base 8 representando os modos. Este nmero poder variar de 0000 a 7777. Normalmente apenas os modos rwx so modificados. Bits 11 10 9 8 7 6 5 4 3 2 1 0 sticky SGID SUID r para w para x para r para w para x para r para w para x para Significado bit o dono o dono o dono o grupo o grupo o grupo os outros os outros os outros

92

O comando ls ir mostrar, no lugar do x correspondente: S s T t p/ SUID ou SGID p/ SUID ou SGID e execute p/ Sticky bit para Sticky bit e execute

hmarx@thor:~/test> ls -l arquivo -rw------- 2 hmarx starix 1736 Mar 26 12:27 arquivo hmarx@thor:~/test > chmod 644 arquivo hmarx@thor:~/test> ls -l arquivo -rw-r--r-- 2 hmarx starix 1736 Mar 26 12:27 arquivo hmarx@thor:~/test> chmod g+w,o-r arquivo hmarx@thor:~/test> ls -l arquivo -rw-rw---- 2 hmarx starix 1736 Mar 26 12:27 arquivo hmarx@thor:~/test>

Um diretrio "executvel" permite caminhar para ele. Um diretrio com sticky s permite que seus arquivos sejam apagados por seus respectivos donos. Um diretrio SGID faz com que os arquivos nele criados herdem o grupo do diretrio.

Sistema Operacional GNU/Linux which [ opes ] [ programa ] ... type [ opes ] [ programa ] ... Mostra o caminho completo de programas. Algumas opes: -a Identifica aliases e programas -t Mostra o tipo
hmarx@thor:~/test> type -a ls ls is aliased to ls $LS_OPTIONS ls is /bin/ls hmarx@thor:~/test> which passwd /usr/bin/passwd hmarx@thor:~/test>

93

file [ opes ] [ arquivo ] ... Determina o tipo dos arquivos utilizando as definies em /usr/share/misc/magic. Algumas opes: -f arq L os nomes dos arquivos de arq -z Pesquisa em arquivos comprimidos -L Segue symbolic links basename nome [ sufixo ] Imprime o nome retirando os diretrios e opcionalmente o sufixo

hmarx@thor:~/test> basename /x/y/z/w/arquivo.dat arquivo.dat hmarx@thor:~/test> basename /x/y/z/w/arquivo.dat arquivo hmarx@thor:~/test>

.dat

dirname nome Imprime o nome retirando o ltimo componente do diretrio.

hmarx@thor:~/test> dirname /x/y/z/w/arquivo.dat /x/y/z/w hmarx@thor:~/test> dirname ~hmarx /home hmarx@thor:~/test>

Sistema Operacional GNU/Linux history [ -c ] [ -d offset ] [ n ] history [ -w ] [ -r ]

94

Mostra os ltimos n comandos executados, ou apaga o comando de nmero n do histrico. Um comando anterior pode ser referenciado utilizando o operador !, seguido do nmero do comando. Algumas opes: -w arquivo Salva o histrico no arquivo arquivo -r arquivo L o histrico do arquivo arquivo -a arquivo Adiciona o histrio ao arquivo arquivo -c Apaga o histrico Apaga a entrada offset do histrico -d offset

hmarx@thor:~> history 5 512 cd 513 basename /x/y/z/w/arquivo.dat 514 basename /x/y/z/w/arquivo.dat .dat 515 dirname /x/y/z/w/arquivo.dat 516 dirname ~hmarx hmarx@thor:~> !514 basename /x/y/z/w/arquivo.dat .dat arquivo hmarx@thor:~>

Utilize as setas para cima e para baixo para percorrer os comandos no histrico. Pode-se comear a digitao de um comando e pressionar a tecla . O bash tentar completar o comando utilizando os executveis encontrados no PATH. Caso sejam encontrados mais de um nome, soar um beep. Pressionando novamente, far com que o bash liste os comandos encontrados. Utilizando as teclas e , pode-se caminhar pelos comandos que iniciam com os caracteres digitados.

Sistema Operacional GNU/Linux

95

Meta-teclas
A tecla indica que a prximo caracter teclado ser uma meta-tecla. So representadas por M-x nas documentaes do bash. As mais utilizadas so:

+t +* +{ +b +f +d + +< +> ++E +u +l +c

troca as duas palavras anteriores expande os nomes de arquivos iniciados pela palavra anterior expande os nomes de arquivos iniciados pela palavra anterior usando expresses regulares volta para o incio da palavra anterior avana para o fim da palavra apaga a palavra da frente apaga a palavra de trs volta ao incio do history vai para o fim do history expande a linha (variveis e aliases) passa a palavra seguinte para maisculas passa a palavra seguinte para minsculas passa a primeira letra da palavra seguinte para maiscula e as demais para minsculas.

Sistema Operacional GNU/Linux dd [ opes ] ... Copia um arquivo, convertendo ou formatando de acordo com as opes. (Note que um arquivo pode ser um dispositivo.) Algumas opes: bs=tamanho do bloco em bytes para leitura e escrita cbs=nmero de bytes a converter de cada vez conv=lista de converses separadas por vrgulas ascii de EBCDIC para ASCII ebcdic de ASCII para EBCDIC lcase transforma em minsculas ucase transforma em maisculas swab troca cada par de bytes ibs=nmero de bytes do bloco para leitura if=arquivo de entrada obs=nmero de bytes do bloco para escrita of=arquivo de sada skip=nmero de blocos a saltar na entrada seek=nmero de blocos a saltar na sada Os blocos e bytes podem ser dados com sufixos multiplicativos como: 10c 10 caracteres de 1 byte 5w 5 palavras (2 bytes) 8b 8 blocos de 512 bytes 15k 15 blocos de 1024 bytes 3M 3.145.728 bytes (3 Mbytes)

96

hmarx@thor:~/test> dd if=/dev/fd0 of=floppy.image 2880+0 records in 2880+0 records out hmarx@thor:~/test> ls -l floppy.image
-rw-r--r-1 hmarx starix

hmarx@thor:~/test>

1474560 Jun 12 15:29 floppy.image

Sistema Operacional GNU/Linux split [ opes ] [ entrada [ prefixo ] ]

97

Gera partes da entrada em arquivos comeando com o prefixo e terminando sequencialmente em aa, ab, ac, ... Algumas opes: -b tam, --bytes=tam Gera arquivos de tamanho tam bytes Gera no mximo tam bytes sem quebrar -C tam, --line-bytes=tam linhas -n, -l n, --lines=n Gera n linhas por arquivo O tamanho pode ter um sufixo multiplicador: b para 512, k para 1K e m para 1 Mega. Para reunir as partes recompondo o arquivo original utiliza-se o comando cat. Veja o exemplo abaixo:

hmarx@venus:~/test> ls -lh file.dat -rw-r----- 1 hmarx linuxtech 2.8M 2009-07-20 13:10 file.dat hmarx@venus:~/test> split -b 1024k file.dat parthmarx@venus:~/test> ls -lh part-a* -rw-rw---- 1 hmarx linuxtech 1.0M 2009-07-20 13:12 part-aa -rw-rw---- 1 hmarx linuxtech 1.0M 2009-07-20 13:12 part-ab -rw-rw---- 1 hmarx linuxtech 775K 2009-07-20 13:12 part-ac hmarx@venus:~/test> cat part-aa part-ab part-ac > all-parts.dat hmarx@venus:~/test> ls -lh all-parts.dat -rw-rw---- 1 hmarx linuxtech 2.8M 2009-07-20 13:12 all-parts.dat hmarx@venus:~/test> diff all-parts.dat file.dat hmarx@thor:~/test>

Sistema Operacional GNU/Linux

98

Backup
tar opes [ arquivos ] ... TAR : Tape Archive and Restore o programa padro de backups do Unix. Algumas opes: t Lista o backup x Extrai o contedo do backup c Cria um backup z Faz backup comprimido com gzip j Faz backup comprimido bzip2 f Informa arquivo ou dispositivo de backup v Prolixo (verbose) u Atualiza o backup zip opes [ arquivos ] ... Cria arquivos .ZIP Algumas opes: -T -v -c -r -f -m -u unzip opes [ arquivos ] ... Extrai contedo de arquivos .ZIP Algumas opes: -t Testa o arquivo.ZIP -v Prolixo (verbose) -q Modo silencioso -p Extrai para sada padro (til em pipes) gzip [ opes ] [ arquivos ] ... gunzip [ opes ] [ arquivos ] ... zcat [ opes ] [ arquivos ] ... Comprime ou expande arquivos utilizando o algoritmo LZW. Cada arquivo substitudo pela verso comprimida ou expandida. Algumas opes: -c, --stdout Comprime ou expande para a sada padro -d, --decompress Expande os arquivos (bunzip2) -t, --test Testa a integridade dos arquivos -l, --list Exibe informaes sobre os arquivos -1, --fast Comprime mais rpido -9, --best Comprime melhor -r, --recursive Opera recursivamente em diretrios Utiliza o sufixo .suf na compresso -S .suf, --suffix .suf -v, --verbose Modo verboso

Testa o arquivo.ZIP Prolixo (verbose) Cria comentrios Recursivo Apenas arquivos alterados (freshen) Move os arquivos Apenas arquivos alterados ou novos

Sistema Operacional GNU/Linux

99

bzip2 [ opes ] [ arquivos ] ... bunzip2 [ opes ] [ arquivos ] ... bzcat [ -s ] [ arquivos ] ... Comprime ou descomprime arquivos Algumas opes: -c, --stdout Descomprime para sada padro (bzcat) -d Descomprime (bunzip2) -t, --test Testa a integridade dos arquivos -k, --keep Mantm os arquivos originais compress opes [ arquivos ] ... uncompress opes [ arquivos ] ... Comprime ou descomprime arquivos Algumas opes: -d Descomprime -c Apenas mostra na sada padro -v Imprime estatstica de compresso -r Recursivo mt [ opes ] operao [ contador ] MT : Magnetic Tape Operaes com fita magntica Algumas opes: -f dispositivo, --file=dispositivo -V, --version Operaes: rewind retension weof bsf status erase datcompression offline setdensity tell seek ...

fsf eom

H ainda diversos aplicativos para comprimir/descomprimir arquivos como lha, rar, unace, freeze e zoo.

Sistema Operacional GNU/Linux

100

Operadores do bash
Redirecionamento de E/S O bash permite que a entrada ou a sada de um processo seja redirecionada para um arquivo. Para isto, so utilizados os operadores abaixo: < > >> 2> >&n m>&n <<texto redireciona a entrada padro redireciona a sada padro concatena a sada padro redireciona a sada de erros redireciona a sada padro e a de erros, opcionalmente para a sada do descritor n redireciona a sada do descritor m para a mesma sada do descritor n trata a entrada padro at encontrar texto.

Os descritores padro so: 0 - entrada padro 1 - sada padro 2 - sada de erros


hmarx@thor:~/arqs> echo Este um teste. > mensagem hmarx@thor:~/arqs> cat mensagem Este um teste. hmarx@thor:~/arqs> echo Mais testes. >> mensagem hmarx@thor:~/arqs> cat mensagem Este um teste. Mais testes. hmarx@thor:~/arqs> cat <<_fim_do_texto_ > mensagem > Uma linha de texto > Duas linhas de texto > _fim_do_texto_ hmarx@thor:~/arqs> cat mensagem Uma linha de texto Duas linhas de texto hmarx@thor:~/arqs>

Pipeline A sada de um programa pode se tornar a entrada para outro. Basta utilizar o operador "|". Pode-se ento gerar um pipeline ou linha de montagem: $ programa1 | programa2 | programa 3 | ... Cada programa processa a sada do anterior e fornece a entrada para o prximo. Tarefas complexas podem ser feitas utilizando diversos aplicativos simples com funes especficas.

hmarx@thor:~/arqs> echo "Maria e Jos" | soJ e airaM hmarx@thor:~/arqs>

rev

Sistema Operacional GNU/Linux Separador de comandos Voc pode digitar diversos comandos em uma nica linha: basta separ-los por ";".

101

hmarx@thor:~/arqs> pwd /home/hmarx hmarx@thor:~/arqs> date Fri Mar 30 19:38:39 BRT 2001 hmarx@thor:~/arqs> pwd ; date ; who /home/hmarx Fri Mar 30 19:38:48 BRT 2001 root :0 Mar 30 18:12 (console) root ttyp0 Mar 30 18:45 hmax ttyp1 Mar 30 16:06 hmarx@thor:~/arqs>

Disparando processos em background Um processo que vai demorar muito tempo, ou que no requer interatividade com o usurio, pode ser disparado em background. Basta incluir um "&" aps o comando. O bash ir execut-lo em background, informando o nmero do job e seu PID.
hmarx@thor:~> cc -o programa programa.c & [1] 22851 hmarx@thor:~> ps 22768 p7 S 0:33 bash 22773 p1 S 0:27 bash 22851 p1 S 0:00 cc -o programa programa.c 22853 p1 R 0:00 ps hmarx@thor:~>

Agrupando comandos Um conjunto de comandos pode ser agrupado para que o resultado seja equivalente a um s utilizando chaves, "{" e "}". Um uso tpico o redirecionamento da sada de todos os comandos do conjunto. Os comandos sero executados pelo mesmo shell. $ { comando1 ; comando2 ; ... }
hmarx@thor:~> A=outer ; { A=inner; echo $A } ; echo $A inner inner hmarx@thor:~>

Sistema Operacional GNU/Linux Agrupando processos em um subshell

102

Algumas vezes necessrio disparar um subshell para executar uma sequncia de comandos (para criar um novo ambiente ou para trabalhar temporriamente em outro diretrio). Para isto basta colocar os comandos entre parntesis, "(" e ")". $ ( comando1 ; comando2 ; ... )
hmarx@thor:~> pwd; (cd /usr/local/bin; pwd); pwd /home/hmarx /usr/local/bin /home/hmarx hmarx@thor:~>

Note a diferena do agrupamento de comandos:


hmarx@thor:~> A=outer ; ( A=inner; echo $A ) ; echo $A inner outer hmarx@thor:~>

Substituio de comandos A sada de um comando pode substituir um comando utilizando as formas $(comando) ou comando (crases). A primeira forma mais interessante por permitir aninhamento. Isto muito utilizado em avaliaes de expresses a serem assinaladas a variveis.

hmarx@thor:~> A=123 hmarx@thor:~> A=expr $A + 1 hmarx@thor:~> echo $A 124 hmarx@thor:~> echo Estamos no ano de $(date +%Y) \! Estamos no ano de 2009 ! hmarx@thor:~> echo "$(host -t A $(uname -n) | > sed s/^[^0-9]*//) o IP da minha mquina" 192.168.200.3 o IP da minha mquina hmarx@thor:~>

Sistema Operacional GNU/Linux Expresses aritmticas O comando: $ (( expresso ))

103

retornar 0 se a expresso retornar um valor diferente de 0. Podem ser utilizados tambm os operadores da linguagem C. Abaixo so listados os operadores aceitos pelo bash em ordem de precedncia descendente. Operadores id++ id-++id --id + ! ~ ** * / % + << >> <= >= < > == != & ^ | && || expr ? expr : expr = *= /= += -= <<= >>= &= ^= |= expr1 , expr2 Exemplos:
hmarx@thor:~> 51 hmarx@thor:~> 512 hmarx@thor:~> hmarx@thor:~> hmarx@thor:~> A=11 hmarx@thor:~> 45 hmarx@thor:~> 31 hmarx@thor:~> 2 hmarx@thor:~> echo $((( 3 * 17 ))) echo $((( 2 ** 9 ))) A=10 (( ++A )) echo A=$A B=34; echo $((( A + B ))) echo $((( 012 | 027 ))) echo $((( 012 & 027 )))

Significado Ps-incremento e Ps-decremento da varivel id Pr-incremento e Pr-decremento da varivel id Sinais unrios mais e menos Negao lgica bit a bit, AND Exponenciao Multiplicao, diviso e mdulo (resto da diviso) Adio e subtrao Deslocamento para a esquerda e direita Comparao de desigualdade Comparao de igualdade Operador E bit a bit (AND) Operador OU exclusivo (XOR) Operador OU inclusivo bit a bit (OR) Operador E lgico (AND) Operador OU lgico (OR) Expresso condicional Assinalamentow Execuo sequencial

Sistema Operacional GNU/Linux Expresses condicionais O comando: $ [[ expresso ]]

104

TRUE = Verdade zero ! FALSE = Falso qualquer valor diferente de 0 !

retornar 0 se a expresso for verdadeira ou 1 se a expresso for falsa. Podem ser utilizadas as seguintes opes e operadores na montagem das expresses: Opo -a arquivo -b arquivo -c arquivo -d arquivo -e arquivo -f arquivo -g arquivo -h arquivo -k arquivo -p arquivo -r arquivo -s arquivo -t fd -u arquivo -w arquivo -x arquivo -O arquivo -G arquivo -L arquivo -S arquivo -N arquivo -o opo -z string -n string string Significado O arquivo de nome arquivo existe O arquivo existe e dispositivo tipo bloco O arquivo existe e dispositivo tipo caracter O arquivo arquivo diretrio O arquivo arquivo existe O arquivo arquivo existe e um arquivo normal O arquivo arquivo existe e tem atributo SGID O arquivo arquivo existe e um link simblico O arquivo arquivo existe e tem atributo sticky O arquivo arquivo existe e um named pipe O arquivo arquivo existe e tem permisso de leitura O arquivo arquivo existe e tem tamanho maior que zero O descritor de arquivos fd est aberto e um terminal O arquivo arquivo existe e tem atributo SUID O arquivo arquivo existe e tem permisso de escrita O arquivo arquivo existe e tem permisso de execuo O arquivo arquivo existe e pertence ao usurio O arquivo arquivo existe e pertence ao grupo O arquivo arquivo existe e um link simblico O arquivo arquivo existe e um socket O arquivo arquivo existe e foi modificado aps a ltima vez que foi lido A opo opo do shell est habilitadas O tamanho do string zero O tamanho do string no zero O tamanho do string no zero Significado O arquivo1 mais novo que o arquivo2 O arquivo1 mais antigo que o arquivo2 Os arquivos arquivo1 e arquivos2 so o mesmo inodo do mesmo dispositivo O string1 igual ao string2 O string1 diferente do string2 O string1 lexicograficamente menor que o string2 O string1 lexicograficamente maior que o string2 Os argumentos arg1 e arg2 so aritmeticamente iguais Os argumentos arg1 e arg2 so aritmeticamente diferentes arg1 aritmeticamene menor que arg2 arg1 aritmeticament menor ou igual a arg2 arg1 aritmeticament maior que arg2 arg1 aritmeticament maior ou igual a arg2

Operador arquivo1 -nt arquivo2 arquivo1 -ot arquivo2 arquivo1 -ef arquivo2 string1 == string2 string1 != string2 string1 < string2 string1 > string2 arg1 -eq arg2 arg1 -ne arg2 arg1 -lt arg2 arg1 -le arg2 arg1 -gt arg2 arg1 -ge arg2

Sistema Operacional GNU/Linux Exemplos:


hmarx@thor:~> [[ ! -a DIR ]] && mkdir DIR && echo Diretrio DIR criado Diretrio DIR criado hmarx@thor:~> [[ abacate < abacaxi ]] && echo Abacate precede Abacaxi Abacate precede Abacaxi hmarx@thor:~> [[ laranja > banana ]] || echo Laranja precede Banana hmarx@thor:~> [[ -N /var/spool/mail/hmarx ]] && eho Tenho e-mail novo Tenho e-mail novo hmarx@thor:~>

105

Comandos condicionais Como uma linguagem de programao, o bash possui mecanismos para tomadas de deciso ao executar os comandos. Convenciona-se que verdade 0 (zero) e falso qualquer valor diferente de 0. Isto vem do fato que a condio pode ser, e normalmente , o resultado da execuo de um programa. O valor 0 (zero) significa nenhum erro. Condicional simples: if condio ; then comandos ; fi Lembre-se:

TRUE = Verdade zero ! FALSE = Falso qualquer valor diferente de 0 !

Condicional composto tipo 1: if condio ; then comandos1 ; else comandos2 ; fi


hmarx@thor:~> true ; echo $? 0 hmarx@thor:~> false ; echo $? 1 hmarx@thor:~> if expr 3 \> 4 > then > ls > else > ps > fi 22768 p7 S 0:33 bash 27773 p1 S 0:27 bash 28003 p1 R 0:00 ps hmarx@thor:~>

Sistema Operacional GNU/Linux Condicional composto tipo 2: if condio1 ; then comandos1 ; elif condio2 then comandos2 ; else comandosn ; fi Execuo condicional

106

Testes repetidos !

Podem ser utilizados os operadores lgicos && e ||, significando E e OU, respectivamente. Assim, em: $ comando1 && comando2 o comando2 s ser executado se o comando1 retornar 0 (execuo OK). equivalente ao comando: if comando1 ; then comando2 ; fi E em: $ comando1 || comando2 o comando2 s ser executado se o comando1 retornar um valor diferente de 0 (falhar). equivalente ao comando: if ! comando1 ; then comando2 ; fi

Sistema Operacional GNU/Linux Comandos iterativos Teste de continuao do loop while condio do comandos done Teste de fim do loop until condio do comandos done Loop controlado for nome [ in lista de palavras ] do comandos done Comando de seleo mltipla
hmarx@thor:~> cat que_e #!/bin/bash case $1 in [a-z]) echo $1 letra minscula ;; [A-Z]) echo $1 letra maiscula ;; [0-9]) echo $1 numrico ;; *) echo $1 caracter especial;; esac hmarx@thor:~ > que_e R R letra maiscula hmarx@thor:~>

107

hmarx@thor:~> for i in A B C D > do > echo $i > done A B C D hmarx@thor:~>

case valor padro-1 ) comandos-1 ;; padro-2 ) comandos-2 ;; ... esac

Sistema Operacional GNU/Linux

108

Diversos padres podem ser separados por | em um tem do case. Exemplo:


... case $OPT in help|ajuda) Help ;; start|iniciar) StartService ;; stop|parar) StopService ;; *) echo "Use $0 {help | start | stop}" echo " $0 {ajuda | iniciar | parar}" ;; esac ...

Sistema Operacional GNU/Linux Comando para gerao de menu select nome [ in lista de palavras ] do comandos; done

109

hmarx@thor:~> PS3="Escolha a fruta :" hmarx@thor:~> 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 1) uva 2) ma 3) pera 4) nenhuma Escolha a fruta :4 hmarx@thor:~>

test [ expresso ] test [ --help | --version ] [ expresso ] Comando interno do bash que avalia a expresso condicional expresso retornando o resultado. O comando [ um sinnimo para o comando test mas que obriga a existncia do ] para fechar o comando. Veja Expresses condicionais para as opes e operadores utilizados na expresso.
hmarx@thor:~> [ -e /etc/named.conf ] && echo O BIND est instalado O BIND est instalado hmarx@thor:~>

Sistema Operacional GNU/Linux

110

Comandos Administrativos
A seguir so mostrados alguns comandos principais utilizados para a administrao do sistema Linux. Alguns deles s pode ser executado pelo super usurio. umask [ -p ] [ -S ] [ modo ] Comando interno do bash exibe ou define a mscara de criao de arquivos. O modo pode ser dado na forma de um nmero octal ou utilizando uma lista utilizando o formato u=rwx,g=rwx, o=rwx Algumas opes: -S Exibe a mscara no formato t=rwx -p Exibe apenas a mscara no formato octal ulimit [ opes ] [ limite ] Comando interno do shell exibe ou altera os limites impostos na utilizao dos recursos do sistema pelos processos disparados pelo shell. Algumas opes: -S Utiliza o limite soft -H Utiliza o limite hard -a Exibe todos os limites -c Tamanho do arquivo core -d Tamanho mximo do segmento de dados -f Tamanho mximo dos arquivos criados -l Tamanho da memria travada -m Tamanho mximo da memria residente -n Nmero mximo de arquivos abertos -p Tamanho do buffer do pipe -s Tamanho mximo da pilha -t Tempo mximo de uso de CPU -u Nmero mximo de processos -v Tamanho da memria virtual

Sistema Operacional GNU/Linux useradd [ opes ] login Cria um usurio. Algumas opes: -c comentrio -d dir -e data -f tempo -g grupo -G grupo, ... -m -p senha -s shell -u uid -k skel-dir -o

111

Campo de comentrio do /etc/passwd. Define dir como diretrio pessoal. Define a data de expirao no formato YYYY-MM-DD. Define em quantos dias a conta do usurio ser desabilitada aps a expirao da senha. Define o grupo inicial (de login). Define a lista de grupos adicionais. Cria o diretrio pessoal e copia o esqueleto para ele, se no existir. Senha criptografada. O default desabilitar a conta. Define o login shell. Define o nmero do usurio UID (maior que 99 e que qualquer outro UID existente Define o diretrio do esqueleto. O default o /etc/skel. Em conjunto com -u fora a criao do UID, mesmo que no nico.

As informaes so armazenadas nos arquivos /etc/passwd e /etc/shadow. O arquivo /etc/passwd tem o seguinte formato: usurio:x:uid:gid:Nome[,outras informaes]:diretriopessoal:shell O x indica o uso do shadow suite, armazenando informaes sobre as senhas no arquivo /etc/shadow. Em sistemas antigos, no lugar do x era colocada a prpria senha criptografada do usurio. Um usurio poder ser desabilitado substituindo o x por !. O arquivo /etc/shadow tem o seguinte formato: usurio:senha criptografada:t1:t2:t3:t4:t5:t6:t7 onde: a senha criptografada utilizando DES - Data Encryption Standard, ou opcionalmente MD5 - Message Digest 5. t1 o data da ltima alterao da senha t2 o nmero de dias at que a senha possa ser trocada t3 o nmero de dias at que a senha deva ser trocada t4 o nmero de dias anterior a expirao da senha t5 o nmero de dias para desabilitar a conta aps a expirao da senha t6 o data de desabilitao da conta t7 um campo reservado

Sistema Operacional GNU/Linux

112

Uma entrada com a senha criptografada em MD5 tem o formato parecido com o abaixo:
usuario:$1$BziEuHN8$doX0S7wNN5U7bm5fQI1RR/:11697:0:99999:7:::

Uma entrada com a senha criptografada em Blowfish tem o formato parecido com o abaixo:
usuario:$2a$10$bAo0qgHv61OYmYdkqscQN.wew4h4mgYVcY5Uj.fuXQI1RNgHYFO6G:13313:0:99999:7:::

J uma entrada com senha criptografada em DES tem o formato parecido com o abaixo:
usuario:Ak9K.CWRx7Fnk:11697:0:99999:7:::

O mtodo de criptografia (des, md5, blowfish) pode ser definido no arquivo /etc/default/passwd. Parmetros adicionais de segurana podem ser definidos em /etc/security/pam_pwcheck.conf. useradd -D [ opes ] Exibe ou atualiza a informao default para usurio novo. Estas informaes so armazenadas em /etc/default/useradd. Algumas opes: -D Exibe as informaes default atuais -b dir Prefixo para o diretrio pessoal. O login ser adicionado automaticamente. -e data Data de expiraoda conta. -f dias Nmero de dias para desabilitar a conta aps a expirao da senha. -g grupo Grupo inicial. Define o login shell. -s shell userdel [ -r ] login Remove o usurio local login, e, se -r for especificado, todo o diretrio pessoal dele e sua caixa postal. O sistema no permite remover um usurio que est logado. groupadd [ -g gid [ -o ]] grupo Cria um grupo com nome grupo e valor numrico gid, que deve ser nico se a opco -o no for especificada. groupdel grupo Remove o grupo de nome grupo.

Sistema Operacional GNU/Linux usermod [ opes ] login Modifica um usurio. Algumas opes: -c comentrio -d dir -e data -f tempo -g grupo -G grupo, ... -m -p senha -s shell -u uid -l novo-login -L -U

113

Campo de comentrio do /etc/passwd. Define dir como diretrio pessoal. Define a data de expirao no formato YYYY-MM-DD. Define em quantos dias a conta do usurio ser desabilitada aps a expirao da senha. Define o grupo inicial (de login). Define a lista de grupos adicionais. Cria o diretrio pessoal e copia o esqueleto para ele, se no existir. Senha criptografada. O default desabilitar a conta. Define o login shell. Define o nmero do usurio UID (maior que 99 e que qualquer outro UID existente Define o novo login. Bloqueia o usurio (colocando ! no campo de senha) Desbloqueia o usurio (retirando o ! do campo o de senha)

groupmod [ -g gid [ -o ]] [ -n novonome ] grupo Altera a identificaco do grupo grupo para gid e/ou o nome do grupo grupo para novonome . chfn [ opes ] login Altera as informaes do usurio login no arquivo /etc/passwd. Se no for dada nenhuma opo, o chfn exibir ps valores de cada campo, permitindo que seja alterado ou no. Algumas opes: -f nome completo Nome do usurio Telefone do trabalho -w telefone -r sala Nmero da sala Telefone pessoal -h telefone Outra informao no definida pelo campo -o info GCOS. chsh [ -s shell ] [ login ] Altera o login shell do usurio login ou do usurio corrente. O shell deve estar definido em /etc/shells. Se no for informado o shell, chsh ir exibir o corrente e permitir que seja alterado ou no.

Sistema Operacional GNU/Linux

114

Tratamento dos Sistemas de Arquivos


mknod [ opes ] nome tipo major minor Cria um arquivo especial (nodo), chamado nome, e tipo tipo. Major e minor so os nmeros que definem o arquivo especial (entrada na tabela de estratgia do kernel e identificador do dispositivo). Estes nmeros no podem ser informados para o tipo p. Os tipos so: b arquivo tipo bloco (com buffer) c, u arquivo tipo caracter (sem buffer) p arquivo tipo FIFO Algumas opes: -m, --mode=modo Define modo de permisso --help Exibe uma ajuda --version Apenas exibe a verso fdisk [ -u ] [ -b tam ] disp fdisk -l [ -u ] [ -b tam ] disp ... fdisk -s partio ... Exibe ou manipula as parties dos discos. Algumas opes: -u Mostra tamanho em setores e no em cilindros. -l Apenas lista a tabela de partio dos dispositivos especificados. Exibe o tamanho da partio em blocos. -s partio -b tam Define o tamanho do setor (512, 1024 ou 2048). Obs: kernels atuais j sabem o tamanho do setor -v Exibe a verso do fdisk.

thor:~ # fdisk -l /dev/sdc Disk /dev/sdc: 255 heads, 63 sectors, 1116 cylinders Units = cylinders of 16065 * 512 bytes Device Boot /dev/sdc1 /dev/sdc2 /dev/sdc3 /dev/sdc5 /dev/sdc6 /dev/sdc7 /dev/sdc8 /dev/sdc9 thor:~ # Start 1 18 82 82 74 66 721 913 End 17 81 1116 273 465 720 912 1116 Blocks 136521 514080 8313637+ 1542208+ 1542208+ 2048256 1542208+ 1638598+ Id 82 83 5 83 83 83 83 83 System Linux swap Linux Extended Linux Linux Linux Linux Linux

Sistema Operacional GNU/Linux mkfs [ -V ] [ -t tipo ] [ opes ] disp [ blocos ]

115

Cria o sistema de arquivos de tipo tipo no dispositivo disp utilizando blocos blocos, com as opes especficas do tipo definido. O nmero de blocos por default o tamanho de disp. Algumas opes: -V Modo verboso. Existem ainda comandos especficos para alguns sistema de arquivos como o ext2, o msdos e o reiserfs. mke2fs [ opes ] disp [ blocos ]

Cria um sistema de arquivos ext2. Algumas opes: -c Verifica o dispositivo por setores defeituosos no dispositivo (bad-blocks). -b tam Usa tam (1024, 2048 ou 4096) como tamanho do bloco. Usa b bytes por inodo. -i b -L label Define o label do volume. -j Cria um sistema journal ext3. -J opes Opes para o sistema journal ext3. -n No cria o sistema de arquivos, apenas exibe o que vai ser feito. Define manualmente o nmero de inodos do -N n sistema de arquivos (que normalmente baseado no nmero de blocos e no nmero de bytes por inodo). -f tam Define o tamanho do fragmento em bytes. -v Modo verboso.

Sistema Operacional GNU/Linux mkdosfs [ opes ] disp [ blocos ]

116

Cria um sistema de arquivos MS-DOS. Algumas opes: -A Cria uma variante do Atari. -b setor Define o setor de backup do setor de boot para FAT32. -c Verifica se h setores defeituosos no dispositivo. -C Cria um arquivo -f n Cria n (1 ou 2) FATs (default 2). Tamanho da FAT (12, 16 ou 32). Pelo tamanho -F tam do sistema de arquivos, ser automaticamente selecionado 12 ou 16. O tamanho de FAT 32 deve ser definido explicitamente, caso desejado. -i volid Define o identificador de volume (32 digitos em hexadecimal). Define o label do sistema de arquivos (no mximo -n label 11 caracteres). -r rootdir Nmero de entradas do diretrio raiz. O default 112 ou 224 para disquetes e 512 para discos rgidos. Usa spc setores por cluster. Deve ser potncia de -s spc 2 (1, 2, 4, 8, ..., 128). -S bps Nmero de bytes por setor lgico (512, 1024, 2048, 8192, 16384 ou 32768). -R reserva Nmero de setores reservados. O default 32 para FAT 32, e 1 para FAT 12 ou 16. -v Modo verboso. mkreiserfs [ opes ] disp [ blocos ] Algumas opes: -h { r5 | tea | rupasov} Especifica a funo hash para os nomes de arquivos. O default r5. -v { 3.5 | 3.6} Verso do formato do reiserfs. -j path, --jounal-device path Caminho para o local de armazenamento do jornal. -s tam, --journal-size tam Tamanho em blocos do jornal. -t max, --transaction-max-size max Tamanho mximo do jornal de transaes.

mkswap [ opes ] disp [ tamanho ] Cria uma rea de swap no dispositivo ou arquivo disp. Algumas opes: -c Verifica o dispositivo por blocos defeituosos. Define o tamanho da pgina. -p tam -v0 Cria uma rea de swap com estilo antigo. -v1 Cria uma rea de swap com estilo novo.

Sistema Operacional GNU/Linux swapon [ -h | -V ] Algumas opes: -h -V swapon -a [ -v ] Ativa todas os dispositivos definidos como swap em /etc/fstab. Algumas opes: -v Modo verboso. swapon [ -v ] [ -p pri ] disp ... Exibe uma ajuda. Exibe a verso

117

Ativa a rea de swap em disp com prioridade pri. A prioridade um nmero inteiro de 0 a 32767. Algumas opes: -v Modo verboso. swapon -s Exibe o sumrio de uso da(s) reas de swap ativas.
thor:~ # swapon -s Filename /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 thor:~ #

Type partition partition partition partition

Size 530104 506008 506008 506008

Used 51976 51852 51736 52036

Priority 42 42 42 42

swapoff [ -h | -V ] Algumas opes: -h -V swapoff -a Desativa todas os dispositivos definidos como swap em /etc/fstab. swapoff disp Desativa a rea de swap em disp. Exibe uma ajuda. Exibe a verso

Sistema Operacional GNU/Linux quota [ -F formato ] [ { -g | -u | -v | -s } | -q ] quota [ -F formato ] [ { -u | -v | -s } | -q ] usurio quota [ -F formato ] [ { -g | -v | -s } | -q ] grupo Exibe a utilizao e os limites do uso do disco e sistema de arquivos. Algumas opes: -F formato Exibe a quota para o formato especificado, (vfsold, vfsv0, rpc e xfs) -g Exibe a quota para grupos dos quais o usurio membro -u Exibe a quota dos usurios -v Exibe a quota em sistemas de arquivos que no possuem rea alocada -s Tenta escolher unidades para exibio das quotas -q Exibe mensagens apenas para quotas excedidas quotaon [ -v | -u | -g | -f ] fs quotaon -a [ -v | -u | -g | -f ]

118

Habilita o sistema de quotas no sistema de arquivos fs (ou em todos os definidos em /etc/fstab). Os arquivos de controle de quotas devem existir no diretrio raz do sistema de arquivos. Algumas opes: -a Habilita quota para todos os sistemas de arquivos no remotos (no NFS) automaticamente montados -v Exibe mensagem para cada sistema de arquivos tratado -u Trata quota de usurios -g Trata quota de grupos -f Equivale a quotaoff quotaoff [ -v | -u | -g ] fs quotaoff -a [ -v | -u | -g ] Desabilita o sistema de quotas no sistema de arquivos fs (ou em todos os definidos em /etc/fstab). Os arquivos de controle de quota devem existir no diretrio raz do sistema de arquivos. Algumas opes: -a Habilita quota para todos os sistemas de arquivos no remotos (no NFS) automaticamente montados -v Exibe mensagem para cada sistema de arquivos tratado -u Trata quota de usurios -g Trata quota de grupos

Sistema Operacional GNU/Linux repquota [ -v | -u | -g | { -t | -n } ] [ -F formato ] fs repquota -a [ -v | -u | -g | -s | { -t | -n } ] [ -F formato ] Sumariza as quotas de um sistema de arquivos. Algumas opes: -a Reporta todos os sistemas de arquivos em /etc/mtab -v Exibe todas as quotas e de forma mais verbosa -u Trata quota de usurios -g Trata quota de grupos -F formato Exibe a quota para o formato especificado, (vfsold, vfsv0, rpc e xfs) -t Trunca nome com mais de 9 caracteres -n No resolve UID e GID -s Tenta exibir a quota em unidades mais apropriadas edquota [ -p prottipo | -u | -g | -r ] [ -F formato ] usurio ... edquota [ -u | -g ] [ -F formato ] -t Edita a quota de usurios. Algumas opes: -r -u -g -F formato -p prottipo -t

119

Edita as quotas em mquinas remotas Trata quotas de usurios Trata quotas de grupos Exibe a quota para o formato especificado, (vfsold, vfsv0, rpc e xfs) Duplica a quota do usurio prottipo para os usurios especificados Edita os limites de tempo soft.

setquota [ -r | -u | -g ] [ -F formato ] nome bsl bhl isl ihl { -a | fs} setquota [ -r | -u | -g ] [ -F formato ] [ -p prottipo ] nome { -a | fs} setquota -t [ -r | -u | -g ] [ -F formato ] bgrl igrl nome { -a | fs} Estabelece quotas para usurios ou grupos para o sistema de arquivos fs. Os limites so: bsl Limite de blocos soft Limite de blocos hard bhl isl Limite de inodos soft Limite de inodos hard ihl bgrl Limite de blocos grace Limite de inodos grace igrl Algumas opes: -r Edita as quotas em mquinas remotas -u Trata quotas de usurios -g Trata quotas de grupos -F formato Exibe a quota para o formato especificado, (vfsold, vfsv0, rpc e xfs) -p prottipo Duplica a quota do usurio prottipo para os usurios especificados -t Edita os limites de tempo soft. -a Trata todos os sistemas de arquivos em /etc/mtab

Sistema Operacional GNU/Linux quotacheck [ -u | -g | -b | -c | -f | -i | -n | -v | -d | -M | -m | -R ] [ -F formato ] -a quotacheck [ -u | -g | -b | -c | -f | -i | -n | -v | -d | -M | -m | -R ] [ -F formato ] fs Verifica o sistema de arquivos, cria e repara os arquivos de quota Algumas opes: -b Fora a criao de arquivos de backup -v Modo verboso -d Modo de depurao -u Verifica apenas usurios em /etc/mtab -g Verifica apenas grupos em /etc/mtab -c Cria novos arquivos de quota -f Fora a verificao de sistemas com o o sistema de quotas j habilitado -M Fora a verificao de sistemas de arquivos montados read/write -m No tenta montar um sistema read-only -i Modo interativo -n Duplica entradas para um usurio ou grupo na reparao dos arquivos de quotas -a Verifica todos os sistemas de arquivos no remotos (no NFS) -R Exclui o sistema de arquivos raiz Exibe a quota para o formato especificado, -F formato (vfsold, vfsv0, rpc e xfs) -p prottipo Duplica a quota do usurio prottipo para os usurios especificados -t Edita os limites de tempo soft.

120

Sistema Operacional GNU/Linux mount [ { -l | -h | V } ] Exibe os sistemas montados, uma ajuda ou a verso. Algumas opes: -l Exibe o label se existir -h Ajuda sumria -V Verso do mount --help Exibe uma ajuda mount -a [ { -f | -F | -n | -r | -s | -v | -w } ] [ -t tipo ]

121

Monta todos os sistemas de arquivos definidos em /etc/fstab, opcionalmente do tipo tipo, que no possuam a opo noauto. Algumas opes: -f Simula (fake). til com -v para ver o que o mount ir fazer. -F Executa um fork, montando os sistemas de arquivos simultaneamente. -n Monta os sistemas de arquivos sem gravar as informaes no arquivo /etc/mtab. -r Monta apenas para leitura (read-only). Equivalente a -o ro -s Ignora opes no suportadas pelo sistema de arquivos. -v Modo verboso. -w Monta em modo normal de leitura e escrita (read/write). Equivalente a -o rw. O Linux suporta atualmente diversos tipos de sistemas de arquivos. Entre eles esto: adfs, affs, coherent, coda, devpts, ext, ext2, ext3, fat, hfs, hpfs, iso9960, jffs, jfs, minix, msdos, ncp, nfs, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, udf, ufs, umsdos, vfat, xenix, xfs, e xiafs. possvel ainda montar uma parte do sistemas de arquivos em outra com a opo --bind. As informaes ficaro disponvis em dois lugares: mount --bind diretrio1 diretrio2

Sistema Operacional GNU/Linux mount [ { -f | -n | -r | -s | -v | -w } ] [ -o opes ] { disp | dir }

122

Monta o sistema de arquivos definido em /etc/fstab pelo dispositivo disp, ou pelo diretrio dir utilizando as opes opes. Algumas opes de -o (que podem ser definidas em /etc/fstab): rw Normal de leitura e escrita. ro Apenas leitura. [no]async (No) realiza operaes de E/S de forma assncronas. [no]auto (No) faz a montagem automtica com a opo -a [no]exec (No) permite execuo de arquivos binrios. defaults Equivale a rw, suid, dev, exec, auto, nouser, e async. [no]atime (No) atualiza tempo de acesso dos inodos. [no]dev (No) interpreta arquivos especiais [no]suid (No) permite atributos SUID e SGID nos inodos. [no]user (No) permite que usurios comuns montem o sistema de arquivos remount Tenta remontar um sistema de arquivos j montado. Utiliza o loop device dev loop[=dev] Dependendo do tipo do sistema de arquivos, h outras opes disponveis. Utilize man mount para verificar as opes para cada tipo suportado pela verso do kernel do Linux que esteja utilizando. mount [ { -f | -n | -r | -s | -v | -w } ] [ -t tipo ] [ -o opes ] disp dir Monta o sistema de arquivos do tipo tipo no dispositivo disp no diretrio dir, utilizando as opes opes. umount [ { -h | -V } ] Exibe uma ajuda ou a verso. Algumas opes: -h Ajuda -V Verso do mount umount -a [ { -n | -r | -v | -f } ] [ -t tipo ] Desmonta todos os sistemas de arquivos, opcionalmente do tipo tipo, definidos em /etc/fstab. Algumas opes: -n Desmonta sem escrever em /etc/mtab. -r Em caso de falha, tenta remontar somente para leitura. -f Fora a desmontagem. -v Modo verboso.

Sistema Operacional GNU/Linux umount [ { -n | -r | -v | -f} ] { disp | dir } ... Desmonta os sistemas de arquivos montados do dispositivo disp ou no diretrio dir. Algumas opes: -n Desmonta sem escrever em /etc/mtab. -r Em caso de falha, tenta remontar somente para leitura. -f Fora a desmontagem. -v Modo verboso.

123

Sistema Operacional GNU/Linux

124

Mdulos de dispositivos e servios


lspci [ opes ] Lista todos os dispositivos do barramento PCI Algumas opes: -v Verboso -n Mostra a identificao numrica -t Mostra a rvore dos dispositivos -x Mostra um dump em hexadecimal da rea de configurao do dispositivo Mostra apenas os dispositivos especidicado -s [[bus]:[slot]].[funo]] pelo barramento bus, slot e funo, onde o sinal * siginifica qualquer valor -d [fornecedor]:[dispositivo] Mostra apenas os dispositivos identificados com o ID do fornecedor e dispositivo. Especifica outro diretrio, o default o -P diretrio /proc/bus/pci -M Habilita o mapeamento do barramento -G Habilita depurao do acesso ao PCI lsusb [ opes ] Lista todos os dispositivos do barramento USB Algumas opes: -v, -vv Verboso e mais verboso -t Mostra a rvore dos dispositivos -p diretrio Especifica outro diretrio, o default o /proc/bus/usb -s [[bus]:[dispositivo]] Mostra apenas os dispositivos especidicado pelo barramento bus, e dispositivo. -d [fornecedor]:[dispositivo] Mostra apenas os dispositivos identificados com o ID do fornecedor e dispositivo. -D dispositivo Mostra apenas as informaes sobre o dispositivo especificado

Sistema Operacional GNU/Linux

125

usbview Lista todos os dispositivos USB em modo grfico.

pnpdump [ opes ] [ [ n ] porto ] Mostra as informaes sobre os n dispositivos Plug-And-Play do barramento ISA atravs do porto porto. O porto deve estar na faixa 0x203 a 0x3ff. Algumas opes: -h, --help Ajuda -c, --config Procura determinar a melhor configurao -d, --dumpregs Exibe o contedo de todos os registradores de configurao -i, --ignorecsum Ignora erros de checksum. -v, --version Exibe a verso do pnpdump -m, --mask Exibe a mscara de DMAs e IRQs no lugar da lista de nmeros de DMA e IRQ -o arq, --outpputfile=arq Gera a sada no arquivo arq e no na sada padro

Sistema Operacional GNU/Linux isapnp [ opes ] arq Configura dispositivos do barramento ISA PnP a partir do arquivo de configurao arq. Algumas opes: -h, --help Ajuda -c, --config Procura determinar a melhor configurao lsdev Lista as informaces sobre o hardware instalado (DMA, IRQ e portos de I/O).

126

thor:~ # lsdev Device DMA IRQ I/O Ports -----------------------------------------------0000:00:04.1 0170-0177 01f0-01f7 0376-0376 03f6-03f6 d800d80f 0000:00:04.2 d400-d41f 0000:00:04.3 d000-d01f 0000:00:04.4 e800-e80f 0000:00:06.0 b800-b8ff 0000:00:08.0 b400-b4ff 0000:00:09.0 b000-b0ff 0000:00:0a.0 a800-a83f acpi 9 ACPI e400-e403 e404-e405 e408-e40b e410-e415 e420e423 aic7xxx 10 cascade 4 2 dma 0080-008f dma1 0000-001f dma2 00c0-00df Ensoniq a800-a83f Ensoniq AudioPCI 11

lsmod [ opes ] Lista os mdulos carregados. Algumas opes: -h, --help Ajuda -V, --version Exibe a verso do lsmod

Sistema Operacional GNU/Linux insmod [ opes ] mdulo [ symbol=valor ... ] Insere um mdulo carregvel no kernel em execuo. Algumas opes: -f, --force Tenta carregar o mdulo independente da verso do kernel -k, --autoclean Torna o mdulo auto removvel quando no utilizado por um perodo de tempo pelo kerneld (normalmente 1 minuto) -L, --lock Utiliza o flock para evitar a carga simultneas do mesmo mdulo -m, --map Exibe um mapa da carga -n, --noload No carrega o mdulo -p, --probe Testa se o mdulo foi carregado com sucesso -s, --syslog Envia a sada para o syslog -X, --export Exporta os smbolos externos do mdulo -x, --noexport No exporta os smbolos externos do mdulo -o nome, --name=nome Define explicitamente o nome do mdulo, no utilizando o nome do arquivo objeto -h, --help Ajuda sumria -V, --version Exibe a verso do insmod rmmod [ { -a | -e | -r | -s | -h | -v | -V } ] [ -o opes ] { disp | dir } Remove mdulos carregados do kernel em execuo Algumas opes: -a, --all Marca os mdulos no utilizados como auto-removveis e remove os j marcados -r, --stacks Remove uma pilha de mdulos -s, --syslog Envia a sada para o syslog -e, --persist Salva os dados persistentes do mdulo sem remover o mdulo -h, --help Ajuda sumria -v, --verbose Modo verboso -V Exibe a verso do rmmod

127

Sistema Operacional GNU/Linux depmod { -a | -A } [ opes ] depmod [ opes ] mdulo1.o mdulo2.o ... Trata a descrio de dependncia entre mdulos carregveis Algumas opes: -a Pesquisa por mdulos em todos os diretrios especificados no arquivo de configurao /etc/modules.conf ou /etc/modprobe.conf -A Compara a data/hora dos arquivos e, se for necessrio, opera como -a -e Exibe os smbolos no definidos -n Exibe a lista de dependncias na sada padro em vez de gravar no diretrio /lib/modules -s Envia os erros para o syslog -q Modo silencioso -r Permite a carga de mdulos que no sejam do usurio root -h Ajuda Usa o diretrio dir em vez do diretrio -b dir /lib/modules Usa o arquivo de configurao arquivo, em -C arquivo vez de /etc/modules.conf -F simbolos Define o arquivo com o mapa de smbolos do kernel. -V Exibe a verso do depmod modprobe [ { -a | -d | -n | -q | -v } ] [ -C arq ] mdulo [ symbol=valor ... ] modprobe [ { -a | -d | -n | -q | -v } ] [ -C arq ] [ -t tipo ] padro modprobe -l [ -C arq ] [ -t tipo ] padro modprobe -c [ -C arq ] modprobe -r [ { -d | -n | -q | -v } ] [ -C arq ] [ mdulo ... ] modprobe -V Tratamento de alto nvel dos mdulos carregveis. Algumas opes: -a, --all Carrega todos os mdulos definidos -c, --showconfig Mostra a configurao corrente utilizada -d, --debug Mostra informaes sobre a representao interna da pilha de mdulos -k, --autoclean Marca os mdulos como auto removveis -l, --list Exibe os mdulos definidos no padro -n, --show Apenas exibe o que seria feito -q, --quiet Modo silencioso -r, --remove Remove os mdulos ou faz a auto remoo -s, --syslog Envia a sada para o syslog -t tipo, --type tipo Considera apenas os mdulos do tipo encontrados em qualquer subdiretrio /tipo/ -C arq, --config arq Utiliza o arquivo arq em vez do arquivo /etc/modules.conf -h Ajuda -V, --version Exibe a verso do lsmod

128

Sistema Operacional GNU/Linux modinfo [ opes ] mdulo Exibe informaes sobre mdulos carregveis. Algumas opes: -a, --author Exibe o autor do mdulo -d, --description Exibe a descrio do mdulo -l, --license Exibe a forma de licena do mdulo -n, --filename Exibe o nome do arquivo do mdulo -f str, --format str Exibe as informaes definidas no formato str -p, --parameters Exibe os parmetros do mdulo -V, --version Exibe a verso do modinfo -h, --help Exibe ajuda O formato str pode conter as especificaes: %l licensa %a autor %d descrio %p parmetros
thor:~ # modinfo -n ne /lib/modules/2.4.10-smp/kernel/drivers/ne.o thor:~ # modinfo ne filename: /lib/modules/2.4.21-99-default/kernel/drivers/net/ne.o description: "NE1000/NE2000 ISA/PnP Ethernet driver" author: <none> license: "GPL" parm: io int array (min = 1, max = 4), description "I/O base address(es),required" parm: irq int array (min = 1, max = 4), description "IRQ number(s)" parm: bad int array (min = 1, max = 4), description "Accept card(s) with bad signatures" thor:~ # modinfo -f "A licenca do mdulo %d %p\n" ne A licena do mdulo "NE1000/NE2000 ISA/PnP Ethernet driver" "GPL" thor:~ #

129

Sistema Operacional GNU/Linux

130

Mensagens do sistema Linux


Normalmente, um sistema Unix-like e seus servios no exibem mensagens diretamente na console. Em vez disto eles utilizam o servio syslogd. Este servio configurvel atravs do arquivo /etc/syslog.conf. O arquivo syslog.conf contm a definio dos tipos de mensagens e a ao a ser tomada. Os tipos so definidos por uma lista de seletores compostos por um servio (ou facility) e uma prioridade (ou priority), separados por um ponto (.). Um servio pode ser: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (o mesmo que auth), syslog, user, uucp e local0 at local7. O smbolo asterisco (*) representa todos os servios. Uma prioridade, em ordem crescente, pode ser debug, info, notice, warning, warn (o mesmo que warning), err, error (o mesmo que err), crit, alert, emerg, panic (o mesmo que emerg). De forma semelhante ao servio, o smbolo asterisco (*) representa todas as prioridades e a palavra none representa nenhuma prioridade para o servio especificado. As palavras error, warn e panic so obsoletas. Sero registradas as mensagens com prioridade maior ou igual especificada. Uma prioridade pode ser precedida por = para especificar apenas aquela prioridade ou por ! para excluir prioridades maiores ou igual especificada. Podem ser inseridas linhas com comentrios, comeadas por #. Mltiplos servios com uma mesma prioridade podem ser separados por , e mltiplos seletores podem ser utilizados separados por ;. Uma ao pode ser um arquivo normal, um named pipe, um terminal, uma mquina remota, uma lista de usurios ou *. Um arquivo normal especificado pelo caminho (path) completo (iniciado por /). Quando precedido por -, a escrita assncrona (informaes podem ser perdidas se ocorrer um crash no sistema antes da escrita no disco). Quando precedida por |, a ao um named pipe que deve ser criado por mkfifo antes de iniciar o syslogd. Isto til para depurao. Se o arquivo do tipo tty, ele um terminal como /dev/console. Ele tratado de forma especial. O log ser feito em uma mquina remota quando a ao for da forma @nome da mquina. Na mquina remota, o syslogd deve ser disparado com a opo de aceitar mensagens remotas (-r) Se a ao for uma lista de usurios separados por ,, o syslogd enviar a mensagem para os terminais onde aqueles usurios estiverem logados. Um * representa todos os usurios logados.

Sistema Operacional GNU/Linux

131

Por exemplo, para mostrar todas as mensagens no terminal virtual tty12, gravar as mensagens do sistema de mail em /var/log/mail e as mensagens crticas (exceto as do kernel) no arquivo /var/log/critical, enviar as mensagens crticas do kernel para o servidor logserver, e enviar as mensagens do servio LOCAL6 para os terminais onde esto sesses dos usurios jose e pedro, podemos utilizar:

*.* mail.* *.=crit;kern.none kern.crit local6.*

/dev/tty12 -/var/log/mail /var/log/critical @logserver jose, pedro

Atravs do cron.daily, os arquivos de log sero comprimidos quando atingirem um determinado tamanho ou idade. At o SuSE Linux 7.3, a definio de quais arquivos devem ser comprimidos feita atravs do arquivo /etc/logfiles. Neste arquivo so tambm especificados o modo de criao do novo arquivo e seu dono e grupo, alm de opcionalmente o servio para o qual deve ser chamado o reload.
(exemplos do logfiles) /var/log/messages +4096k 640 root.root /var/squid/logs/access.log +4096k 640 squid.root squid

A partir do SuSE Linux 8.0, o cron.daily roda o /usr/sbin/logrotate que utiliza o arquivo de configuraco /etc/logrotate.conf, que inclui arquivos do diretrio /etc/logrotate.d/. Neste diretrio esto arquivos com sesses para cada arquivo. Um arquivo de log pode ser comprimido, apagado e at mesmo enviado por e-mail.
(exemplo

de uma entrada em /etc/logrotate.d/aaa_base)

/var/squid/logs/access.log { compress dateext maxage 365 rotate 99 size=+4096k notifempty missingok create 640 squid.root postrotate /etc/init.d/squid reload endscript }

dmesg [ -c | -n nvel | -s tamanho ] [ -C arq ] Examina ou controla o buffer de mensagens do kernel. Algumas opes: -c Limpa o buffer aps a impresso Define um buffer de tamanho bytes -s tamanho -n nvel Define o nvel das mensagens exibidas

Sistema Operacional GNU/Linux syslogd [ -a socket | -d | -f arq | -h | -l lista | -m intervalo | -n | -p socket | -r | -s domnios | -t | -v ] Utilitrio de log do sistema linux. Algumas opes: -a socket Define sockets adicionais a serem utilizados pelo syslogd. -d Modo de depurao Utiliza o arquivo arq em vez do arquivo -f arq /etc/syslog.conf -h Reencaminha mensagens remotas para as mquinas definidas -l lista Definio de mquinas separadas por ; -m intervalo Intervalo entre marcas (-- MARK --). O default 20 minutos. O valor 0 desabilita a gerao de marcas. Especifica socket alternativo ao /dev/log -p socket -r Habilita a recepo de mensagens da rede -s domnios Especifica a lista de domnios a serem eliminado dos nomes das mquinas, separados por ;para o log . -t Marca as mensagens reencaminhadas com o nome da mquina que a enviou. -v Exibe a verso do syslogd O syslogd reage a alguns sinais (veja o comando kill): SIGHUP SIGTERM SIGINT, SIGQUIT SIGUSR1 SIGCHLD Reinicializa o syslogd Termina o syslog Se habilitado, ignora o modo debug, seno termina o syslog Habilita/desabilita o modo debug Espera pelos processos gerados por mensagens enviadas para todos

132

Sistema Operacional GNU/Linux

133

5. Instalando o Linux
Instalao do Linux
Como j dito anteriormente, existem diversas distribuies do Linux. O processo de instalao pode variar um pouco dependendo da distribuio utilizada. Os princpios, entretanto, so vlidos para qualquer uma delas. Das distribuies mais conhecidas internacionalmente (SuSE, Red Hat, Debian, Slackware, Caldera, Turbo Linux, ...), utilizaremos a Novell SuSE Linux, criada pela empresa alem SuSE Linux AG. Ela considerada a melhor distribuio por sua estabilidade, facilidade de instalao e variedade de hardware suportado. Ela possui tambm uma das maiores quantidades de aplicativos. O Linux e os aplicativos podem ser instalados a partir de diversos meios: CD-ROM, site FTP, diretrio acessvel do disco, disquete, ou servidor NFS. Antes de iniciar a instalao propriamente dita, deve ser feito um planejamento da instalao. Este planejamento consiste em: Definio da funo do equipamento Servidor ou Estao de trabalho * isto ir definir quais pacotes voc deve instalar Servios a serem instalados * ftp, http, e-mail, DNS, telnet, ... Aplicativos a serem instalados * office, desktop publishing, desenvolvimento de aplicativos, processamento de imagens, ... Definio dos parmetros de rede protocolos e interconectividade * TCP/IP, IPX, SMB, AppleTalk, ... nomes e endereos * domnio e mquina. Definio do espao em disco Parties do disco * primrias e secundrias * nativa Linux x DOS FAT partio e mount points * discos lgicos * rea de swap funo do tamanho da memria principal e dos servios e aplicativos em execuo

Sistema Operacional GNU/Linux

134

O Linux poder ser instalado em qualquer partico acessvel pelo BIOS. Utilizando-se o LILO (Linux Loader), ou o GRUB, apenas o primeiro estgio do LILO(ou do GRUB) precisar estar em uma partio fsica acessvel pelo BIOS. Isto , o Linux e seus aplicativos podero estar em uma partio lgica, em outro disco que no o primrio e at mesmo em um disco de um servidor. Se voc tiver um disco com Windows em que no haja partio livre (no alocada), o processo de instalao do SuSE Linux ir automaticamente sugerir a reduo da partio Windows e a criao de parties para o Linux no espao livre gerado. Voc poder modificar a sugesto redefinindo o particionamento do disco.

Lembre-se de que os dados de uma partio alterada manualmente sero perdidos !

O Boot do Linux
Voc pode compartilhar o disco de seu computador entre diversos sistemas operacionais. Isto quer dizer que voc poder optar entre carregar o Linux ou o Windows ou o DOS ou qualquer outro sistema operacional que esteja instalado em seu computador. Para que o seu computador rode Linux, o BIOS - Basic Input/Output System - deve ser capaz de carregar o kernel (ou o o primeiro estgio do LILO ou do GRUB) a partir de um disquete, CD, DVD ou do disco rgido. Existem duas formas bsicas: o BIOS carrega o loader do kernel o BIOS carrega o LILO - LInux LOader ou o GRUB - GRand Unified Bootloader.

Quando o BIOS carrega o kernel do Linux diretamente, voc no ter a chance de escolher o boot de outro sistema operacional que porventura esteja instalado em seu computador. Atravs do LILO ou do GRUB, voc poder facilmente escolher o sistema operacional a ser carregado. O LILO poder ser instalado no master boot record, no boot record da partio raiz, ou em um disquete. O master boot record o primeiro setor do disco de boot de seu computador. Nele est um pequeno programa que ir carregar o sistema operacional. Caso decida instalar o LILO no boot record da partio raiz, o seu disco j dever conter um programa de boot no master boot record. Este pode ser, por exemplo, o setor de boot do Windows NT, o MultiBoot do OS2. Aps carregado, o kernel do Linux ir identificar o hardware, carregar os mdulos necessrios e inicializar os servios instalados e configurados.

Sistema Operacional GNU/Linux

135

Instalao do SuSE Linux


O SuSE Linux poder ser instalado de diversas formas. Supondo a instalao a partir de um kit, ele pode ser feito atravs de boot de CD/DVD ou de disquete (quando o computador no possui CD/DVD ou o BIOS no consegue dar boot de CD/DVD). Tanto o CD/DVD quanto o disquete possuem o LILO (ou o GRUB a partir da verso 8.1). Ele ser carregado e exibir um menu em uma tela grfica. Em verses antigas, o LILO exibe o prompt: LILO Boot: Nas verses mais recentes (a partir da 7.0), h um menu grfico com a opo de instalao, boot do sistema j instalado ou recuperao de uma instalao. Voc poder escolher se a instalao ser feita em modo texto ou modo grfico em modo VGA (640x480) ou compatvel com SuperVGA (800x600 ou 1024x768). As resolues suportadas so automaticamente detectadas.

Deve-se garantir o perfeito funcionamentto em equipamentos novos. Sugere-se execuo do teste de memria (selecionvel no menu da tela inicial mostrada acima) por pelo menos umas 14 horas (considerando equipamentos atuais com cerca de 2 a 4 GB de RAM), Selecione o modo de instalao no menu, e simplesmente tecle

Sistema Operacional GNU/Linux

136

Ser ento carregado o kernel do Linux, que executar o linuxrc. Este programa standalone ir permitir que voc configure a lngua de instalao (portugus, ingls, alemo, francs, ...), o tipo de monitor (colorido ou monocromtico), o fuso horrio e o modelo do teclado. No SuSE Linux, a maioria dos dispositivos ser detectada automaticamente. Caso o CD/DVD esteja acessvel diretamente, ser carregado o YaST. Em alguns casos voc poder adicionar mdulos para dispositivos que o kernel no detectou automaticamente (como placa de rede, controladoras SCSI e CD-ROMs especiais). Alguns mdulos de dispositivos podero requerer parmetros, como porta de I/O e IRQ. Para a instalao atravs de uma rede, fornea os parmetros necessrios: endereo IP local, mscara, endereos IP dos servidores de nome e NFS, e caso necessrio, o gateway para acesso ao servidor NFS. Selecione ento a fonte de instalao (CD-ROM, NFS, FTP, ou diretrio em disco). O linuxrc ir ento carregar o YaST - Yet Another Setup Tool. Esta ferramenta ser utilizada para instalar, configurar e administrar o sistema Linux. At a verso SuSE Linux 7.3 existiam duas verses do YaST: a interface em modo texto, YaST1, e a interface texto/grfica, YaST2. A partir da verso 8.0, h apenas o YaST2, que ir automaticamente detectar o modo de execuo (texto ou grfico). No incio da instalao, voc poder definir o modo em que o YaST2 ir trabalhar (incluindo a resoluo em modo grfico). Os modos de operao texto ou grfico seguem a mesma semntica. Textos com caracteres ressaltados "simulam" os botes, menus e checkboxes da interface grfica. Tanto a interface grfica quanto a texto so muito simples e intuitivas, possuindo a mesma funcionalidade.

Sistema Operacional GNU/Linux

137

Com o YaST, voc pode instalar a partir do zero ou atualizar uma verso de Linux j existente em seu computador. Se voc est fazendo uma atualizao, o YaST detectar a instalao prvia. Em alguns casos voc precisar informar qual a partio raiz. Em uma instalao inicial, voc precisa definir os discos e as parties e seus mount points a serem utilizados pelo Linux. O YaST poder fazer automaticamente o particionamento se voc quiser. O YaST possui uma ferramenta para redimensionar parties do disco, muito til quando o disco j possui, por exemplo, o Windows ocupando todo o disco. O YaST j ir apresentar uma sugesto para o redimencionamento.

Sistema Operacional GNU/Linux

138

Mesmo tendo uma memria principal de bom tamanho, crie uma rea de swap. O tamanho desta rea depender dos tipos de aplicaes a serem executadas concorrentemente no equipamento, e do tamanho da memria real instalada. Uma estao de trabalho tem tipicamente entre 128 e 512MB de memria, sendo sugerida uma rea de swap de no mnimo 128 MB. Servidores podem tipicamente ter entre 256 MB e 4 GB de memrio, dependendo da aplicao. Sugerimos uma rea de swap de no mnimo 512 MB. A exigncia de memria das recentes aplicaes grficas e de banco de dados poder exigir mais memria principal e adicionar rea de swap maior pode permitir que a aplicao rode em detrimento da velocidade. Lembre-se que um equipamento com uma CPU rpida (acima de 700MHz) poder parecer muito lento se o sistema necessitar da utilizao constante da rea de swap porque a velocidade de acesso a disco muitssimo inferior s velocidades da CPU e da memria. A deciso de criar apenas uma partio raiz ou dividir a instalao em parties como /, /boot, /opt, /var, /usr, /home e outras, s depende da forma que voc prefere trabalhar e gerenciar seus arquivos e backups. Em servidores, sugerimos dividir em parties para a melhor administrao e controle do uso do espao em disco pelos servios e usurios. Para melhor expansibilidade existe a opo do LVM - Logical Volume Manager - que permite adicionar parties ou discos dinamicamente aos sistemas de arquivos. Durante a criao das parties, o YaST ir criar o sistema de arquivos. Os sistemas de arquivos sero ento montados nos mount points escolhidos. Para selecionar os pacotes, voc pode optar por carregar uma configurao pr-definida pela SuSE ou alterar e criar a sua prpria configurao. As configuraes pr-definidas contm pacotes previamente marcados conforme o tipo de uso do computador (Estao de trabalho, servidor, sistema multimedia, ...). Voc poder tambm utilizar uma destas como base e incluir ou excluir pacotes individualmente. Voc ter disponvel mais de 8000 aplicativos nos mais de 3000 pacotes RPMs contidos nos CDs ou DVDs do SuSE Linux 10.1. Dependncias entre pacotes sero verificadas automaticamente pelo YaST e aps sua seleo, ele provavelmente marcar outros pacotes para a instalao.

Sistema Operacional GNU/Linux

139

Quando estiver satisfeito com a seleo, basta aceitar para iniciar a instalao. O YaST ir pedir para trocar os CDs quando necessrio. Em alguns equipamentos, o YaST instalar o bsico e deixar para completar a instalao aps carregar o kernel instalado em seu disco. Para a instalao do kernel, o YaST poder pedir para colocar o CD 1. Escolha o kernel apropriado ao seu equipamento. A partir do SuSE Linux 8.0, o kernel adequado ser automaticamente instalado. Voc pode criar um disquete de boot, mas isto raramente necessrio. O YaST ir fazer tudo automaticamente. Ele pedir a senha do root e dar a opo para criar um usurio normal que deve ser utilizado para as tarefas rotineiras. Desta forma aps o trmino da instalao o sistema j estar pronto para ser utilizado. Os passos seguintes servem de guia para uma instalao e configurao totalmente manuais. Lembre-se que o YaST j faz isto para voc. Configurao do boot loader O prximo passo a configurao do boot loader. A voc vai definir as opes de boot em seu computador. Voc pode incluir uma nova configurao para cada opo de boot (Linux, Windows, SCO, ...). O nome escolhido (label) poder ser utilizado no prompt do LILO para selecionar o sistema a ser carregado. Na verso 8.0 do SuSE Linux, o LILO ser configurado automaticamente. Na verso 8.1, o GRUB tambm configurado automaticamente. Voc poder alterar a configurao sugerida. Os parmetros a definir para cada configurao so: a partio a carregar (o YaST ir identificar automaticamente as parties Linux e Windows/DOS) os parmetros adicionais para o kernel tamanho de memria, controladores de discos, placas de rede, CDs, ... o tempo para o boot automtico

Escolhe-se ento o local para a instalao do LILO: master boot record ou boot record da partio raiz. Aps a confirmao, o YaST salvar as configuraes em /etc/lilo.conf e executar o programa lilo, que instalar o LInux LOader.
(exemplo de arquivo /etc/lilo.conf) # LILO configuration file # Start of LILO global Section boot=/dev/hda vga=normal timeout=100 # End LILO global Section image = /boot/vmlinuz root = /dev/hda1 label = Linux other = /dev/hda2 label = Windows table = /dev/hda

A primeira imagem definida ser o boot default. Existem diversas opes que podero ser incluidas no arquivo /etc/lilo.conf para personalizar o LILO.

Sistema Operacional GNU/Linux Caso utilize o GRUB, o arquivo com a configurao o /boot/grub/menu.lst.
(exemplo de arquivo /boot/grub/menu.lst) color white/blue black/light-gray default 0 timeout 8 gfxmenu (hd0,0)/message title Linux kernel (hd0,0)/vmlinuz root=/dev/hda3 vga=0x317 splash=silent desktop showpts initrd (hd0,0)/initrd title Floppy chainloader +1 title Failsafe kernel (hd0,0)/vmlinuz root=/dev/hda3 showopts ide=nodma apm=off acpi=off vga=normal nosmp noapic maxcpus=0 3 initrd (hd0,0)/initrd

140

O YaST, ento, recarregar o kernel definido e comear a configurar a instalao. Ser pedido o timezone (regio de fuso horrio). Voc poder definir se o relgio da mquina est com o horrio local ou com o GMT. Com certeza, voc dever selecionar horrio local. So ento pedidos o nome da mquina e o nome do domnio. Pode-se ento configurar o ambiente de rede TCP/IP: Endereo IP, mscara e gateway Servidor de nomes (DNS) Se ser servidor de NFS (compartilhamento de recursos para a rede) Utilizao do sendmail (servio de e-mail)

Agora voc dever escolher a senha do root. Este o usurio mais importante dos sistemas Unix-like. Escolha uma senha que seja difcil de ser descoberta. Qualquer um que possuir esta senha ter acesso total e irrestrito aos seus arquivos ! Caso no tenha sido detectado automaticamente, configure o seu mouse. Voc apenas precisa definir em que porta ele est conectado, e o tipo de protocolo a ser utilizado (normalmente Microsoft). O YaST sugerir a criao de um usurio comum local. Isto no ser necessrio caso voc esteja configurando uma estao de uma rede que trabalhe com domnios NIS ou LDAP. Neste caso voc dever configurar o cliente NIS ou LDAP, fornecendo o nome do domnio e o IP do servidor NIS ou do servidor LDAP.

Sistema Operacional GNU/Linux

141

Diversos servios sero disparados e voc poder ento iniciar uma sesso no Linux.

Sistema Operacional GNU/Linux

142

Instalao de outros aplicativos no Linux


A instalao ou desinstalao de aplicativos contidos nos CDs ou no DVD da distribuio SuSE feita de forma semelhante feita durante a instalao inicial. Um aplicativo poder ser instalado, reinstalado ou removido facilmente atravs dos menus do YaST. Pode-se tambm obter um aplicativo atravs de outros fornecedores ou atravs da Internet. Deve-se, em primeiro lugar, verificar a compatibilidade do aplicativo com a distribuio SuSE, sua verso, verso do kernel e de aplicativos de suporte como o XFree86, KDE e outros. Um aplicativo poder ser obtido em formato objeto e/ou com seus fontes, normalmente na linguagem C ou C++. Os arquivos que compem o aplicativo so colocados em pacotes. Os pacotes podem estar em diversos formatos. Os mais comuns (e indicados) so o TAR (comprimido ou no) e o RPM. Um pacote RPM mais simples de instalar porque possui informaes de dependncias e rotinas de pr e ps instalao. Pacotes binrios em formato TAR podem estar com os arquivos distribuidos em diretrios relativos raiz (/) ou em diretrios temporrios a partir do qual dever ser executado um programa de instalao. No caso de pacotes com os fontes, estes devem ser extrados para um diretrio onde devero ser compilados. Sugerimos utilizar sempre o gcc para compilar estes fontes. Os pacotes RPM com fontes de aplicativos no formato GNU, colocar um ou mais arquivos no formato TAR comprimido com bzip2, no diretrio /usr/src/packages/SOURCES e os arquivos SPEC no diretrio /usr/src/packages/SPECS. Pode-se gerar o pacote RPM binrio utilizando o comando rpmbuild --rebuild arquivo.src.rpm Para a compilao manual, utilize o comando tar com opo xj para extrair os fontes do arquivo com extenso .tar.bz2. Os arquivos fontes sero extrados para um subdiretrio, normalmente com o nome no formato aplicativo-verso. Neste subdiretrio dever existir arquivos como INSTALL, README, CREDITS, README.txt, entre outros, com instrues para a compilao, instalao e utilizao do aplicativo. Normalmente utilize o script configure para a gerao do arquivo Makefile com as opes corretas para a sua plataforma e a instalao de SuSE Linux. O arquivo Makefile ser utilizado pelo programa make para a gerao e instalao dos objetos. Veja no captulo 11 como utilizar o ambiente de desenvolvimento gcc e o make.

Sistema Operacional GNU/Linux

143

Utilizando o RPM
O RPM (Red Hat Package Manager) um gerenciador de pacotes que permite a administrao da instalao de aplicativos compatveis com o LSB- Linux Standard Base. Os arquivos .rpm possuem, alm dos componentes do pacote, programas e informaes para a instalao e remoo do pacote. O rpm guarda informaces sobre pacotes instalados em uma base de dados localizada em /var/lib/rpm. O programa rpm possui trs modos bsicos de operao: 1) criao de pacotes a partir de seus fontes para a instalao; 2) instalao, atualizao e remoo de pacotes; e 3) consultas de informaes sobre os pacotes. As opes gerais mais importantes do rpm so: --help --version --rcfile arquivo -v -vv Exibe uma ajuda Exibe a verso do rpm Especifica arquivo alternativo ao /etc/rpmrc e ~/.rpmrc Verboso Mais verboso

Verificao de Pacotes
A verificao de um pacote provoca a comparao dos arquivos instalados de um pacote com as informaes localizadas nas bases de dados do RPM. A verificao compara tamanho, MD5 sum, permisses, tipo, dono e grupo de cada arquivo. Para esta verificao utilize a opo : -V pacote Verifica os arquivos do pacote

O modo de verificaco aceita as seguintes opes: --nopgp --nogpg --nomd5 Ignora assinaturas pgp Ignora assinaturas GPG Ignora assinaturas MD5

Este modo de verificao pode ser til caso haja alguma suspeita de que a base de dados RPM esteja corrompida. Esta verificao tem como sada para o usurio uma string de 8 caracteres, possivelmente um caracter c indicando um arquivo de configurao e depois o nome do arquivo. Cada um dos 8 caracteres significa um dos atributos do arquivo comparado com os valores definidos na base RPM, se ocorrer um ponto ., significa que o atributo est OK. A tabela abaixo mostra o significado dos caracteres : Cdigo 5 S L T D U G M Significado MD5 checksum Tamanho do arquivo Link simblico Modificao do arquivo Device Usurio Grupo Modo (inclui permisses e tipo de arquivo)

Sistema Operacional GNU/Linux

144

Verificao de Integridade
Vericando os arquivos do pacote netcfg :

hmarx@thor:~> rpm -V netcfg S.5....T c /etc/HOSTNAME S.5....T c /etc/aliases S.5....T c /etc/defaultdomain S.5....T c /etc/exports S.5....T c /etc/hosts S.5....T c /etc/hosts.lpd S.5....T c /etc/inetd.conf S.5....T c /etc/networks hmarx@thor:~>

Verificao de Autenticidade
Aps obter um pacote rpm a partir de um site na Internet ou de outra fonte qualquer, deve-se verificar sua autenticidade atravs da assinatura PGP do pacote. Para isto h a opo de verificao: -K pacote, --checksig pacote Verifica a assinatura do pacote

A SuSE inclui uma assinatura GPG em seus pacotes desde a verso 7.1. Exemplo: Verificando a assinatura do pacote telnet :
hmarx@thor:~> rpm -v --checksig /cdrom/suse/i586/telnet-1.0-291.i586.rpm telnet-1.0-291.i586.rpm: MD5 sum OK: 901045fd4c9fee03c03e33f310c603b9 gpg: Warning: unsafe permissions on directory "/usr/lib/rpm/gnupg" gpg: Warning: unsafe permissions on file "/usr/lib/rpm/gnupg/pubring.gpg" gpg: Signature made Mon Sep 9 19:27:35 2002 BRT using DSA key ID 9C800ACA gpg: Good signature from "SuSE Package Signing Key <build@suse.de>" gpg: Warning: unsafe permissions on file "/usr/lib/rpm/gnupg/trustdb.gpg" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Fingerprint: 79C1 79B2 E1C8 20C1 890F 9994 A84E DAE8 9C80 0ACA hmarx@thor:~>

Sistema Operacional GNU/Linux

145

Instalao de Pacotes
A instalao de pacotes feita atravs da opo -i ou, --install, seguida pelos nomes dos arquivos .rpm. Uma instalaopode ser feita utilizando simplesmente o comando rpm -i
pacote.rpm.

Alm das opes globais, podem ser utilizadas: --excludepath caminho --relocate velho=novo --prefix dir --dbpath dir --excludedocs --force --allfiles --ignorearch --ignoresize --ignoreos --includedocs --justdb --nodeps --noorder --noscripts --notriggers --percent --replacefiles --replacepkgs --test --root dir --hash, -h Exemplo: thor:~ # rpm -ivh apache-1.3.26-57.i586.rpm apache ############################ thor:~ # Ignora os arquivos do caminho dado Reloca os arquivos do caminho velho para o novo Reloca o pacote para o diretrio dir Usa o diretrio dir como base de dados No instala a documentao Um sinnimo para o uso das opes --replacefiles e --replacepkgs Instala todos os arquivos No verifica a arquitetura No verifica o espao em disco No verifica o sistema operacional Instala a documentao Apenas atualiza a base de dados No verifica a dependncia No reordena a instalao do pacote para satisfazer as dependncias No executa qualquer script de instalao No executa qualquer script que for disparado por este pacote Exibe percentuais enquanto instala Instala mesmo se o pacote substitua arquivos instalados Reinstala se j estiver instalado No instala, apenas verifica se a instalao iria funcionar ou no Usa dir como diretrio raiz Imprime # durante o tratamento do pacote

Sistema Operacional GNU/Linux

146

Atualizao de Pacotes
A atualizao de pacotes feita atravs da opo -U ou, --upgrade, seguida pelos nomes dos arquivos .rpm. Uma atualizao pode ser feita utilizando simplesmente o comando rpm -U
pacote.rpm.

Alm das opes globais, podem ser utilizadas as mesmas opes disponveis para a instalao, alm de: --oldpackage Exemplo: thor:~ # rpm -Uvh apache-1.3.26-57.i586.rpm apache ############################ thor:~ # Atualiza para uma verso anterior

Remoo de Pacotes
A remoo de pacotes feita atravs da opo -e ou, --erase, seguida pelos nomes dos arquivos .rpm. Uma remoo pode ser feita utilizando simplesmente o comando rpm -e pacote. Alm das opes globais, podem ser utilizadas: --allmatches --dbpath dir --justdb --nodeps --noorder --noscripts --notriggers --root dir Remove todos os pacotes que combinam com o pacote Usa o diretrio dir como base de dados Apenas atualiza a base de dados No verifica a dependncia No reordena a instalao do pacote para satisfazer as dependncias No executa qualquer script de desinstalao No executa qualquer script que for disparado por este pacote Usa dir como diretrio raiz

Sistema Operacional GNU/Linux

147

Consulta de Pacotes
A consulta de pacotes feita atravs da opo -q ou, --query, seguida por nomes completos de arquivos ou por pacotes.rpm. Alm das opes globais, podem ser utilizadas: -a, --all --root dir --dbpath dir --queryformat fmt -f arquivo -p pacotes --triggeredby pkt --whatprovides atrib --whatrequires atrib -i --changelog -l -s -d -c --provides -R, --requires --scripts --triggers Consulta todos os pacotes instalados Usa dir como diretrio raiz Usa o diretrio dir como base de dados Usa fmt para exibir as informaes Consulta pelo pacote contendo o arquivo arquivo Consulta o pacote pacote (no instalado) Consulta pacotes disparados por pkt Consulta pacotes que provm o atributo virtual atrib Consulta pacotes que requerem o atributo virtual atrib Exibe informaes sobre o pacote Exibe log de alteraes Exibe a lista de arquivos do pacote Exibe o status dos arquivos Exibe apenas os arquivos de documentao do pacote Exibe apenas os arquivos de configurao do pacote Lista atributos providos pelo pacote Lista as dependncias do pacote Lista os scripts de (des)instalao Lista os scripts disparado

O formato fmt uma verso modificada do formato do printf que aceita ainda o campo %{nome}, onde nome um dos tags reconhecveis pelo rpm. Utilize o comando rpm -querytags para obter uma lista destes tags. Exemplos: Consulta se o pacote apache est instalado e qual sua verso :

hmarx@thor:~> rpm -q apache apache-1.3.26-57 hmarx@thor:~>

Sistema Operacional GNU/Linux Consulta os arquivos do pacote inetd instalado :

148

hmarx@thor:~> rpm -ql inetd /etc/init.d/inetd /usr/sbin/inetd /usr/sbin/rcinetd /usr/share/doc/packages/inetd /usr/share/doc/packages/inetd/AUTHORS /usr/share/doc/packages/inetd/COPYING /usr/share/doc/packages/inetd/NEWS /usr/share/doc/packages/inetd/README /usr/share/doc/packages/inetd/THANKS /usr/share/man/man5/inetd.conf.5.gz /usr/share/man/man8/inetd.8.gz hmarx@thor:~>

Consulta qual pacote possui o arquivo /etc/inittab : hmarx@thor:~> rpm -qf /etc/inittab aaa_base-2002.9.12-1 hmarx@thor:~>

Consulta as informaes do pacote lsb :

hmarx@thor:~> Name : Version : Release : Install date: Group : Size : Packager : URL : Summary : Description : For the Linux Distribution: hmarx@thor:~>

rpm -qip /cdrom/suse/i586/lsb-1.2-31.i586.rpm lsb Relocations: /usr 1.2 Vendor: SuSE Linux AG, Nuernberg, Germany 31 Build Date: Mon Sep 9 16:59:155 2002 (not installed) Build Host: Bloembergen.suse.de System/Fhs Source RPM: lsb-1.2-31.src.rpm 16214 License: GPL http://www.suse.de/feedback http://www.linuxbase.org/ Linux Standard Base tools

Standard Base (LSB) necessary tools, links and dependencies. SuSE Linux 8.1 (i386)

Sistema Operacional GNU/Linux

149

No SuSE Linux, a atualizao de pacotes (para novas implementaes, correes de bugs e vulnerabilidades) pode ser feita atravs do YOU (Yast On-line Update), zypper ou smart.

Utilizando o zypper
O zypper utiliza os repositrios cadastrados no Yast. Os comandos mais comuns do zypper so: Ajuda zypper { help | ? | --help } Listar repositrios zypper { repos | lr } [ repositrio ] Procurar pacotes zypper { search | se } padro Instalar pacotes zypper { install | in } padro Remover pacotes zypper { remove | rm } padro Atualizar pacotes zypper { update | up } [ padro ]

Utilizando o Smart
O smart tem seus repositrios cadastrados nos arquivos com extenso .channel no diretrio

/etc/smart/channels/

Os comandos mais comuns do smart so: Ajuda smart { -h | --help } Listar repositrios smart channel --show Procurar pacotes smart search padro Instalar pacotes smart install padro Remover pacotes smart remove padro Atualizar pacotes smart upgrade [ pacote ] Atualizar lista de pacotes de canais smart update [ canal ]

Sistema Operacional GNU/Linux

150

Criando pacotes RPM


Para se criar um pacote RPM necessrio criar o arquivo de especificao que contm diversas informaes sobre o pacote RPM e arquivos que o compe. Seja o arquivo simple-package-1.0.tar.bz2 com os sequintes arquivos:
simple-package-1.0/Makefile simple-package-1.0/arq.txt simple-package-1.0/prog.c simple-package-1.0/img.png

O arquivo simple-package.spec :
Name: simple-package Version: 1.0 Release: 0.1 Source: simple-package-1.0.tar.bz2 Summary: Simple Package License: GPL Distribution: openSuSE Group: Applications %description Simple package to demonstrate the RPM build process %description -l pt_BR Pacote simples para demonstrar o processo de criar RPM %prep %setup -q %build make %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/local/pacote install -m 755 prog $RPM_BUILD_ROOT/usr/local/pacote/prog install -m 644 arq.txt $RPM_BUILD_ROOT/usr/local/pacote/arq.txt install -m 644 img.png $RPM_BUILD_ROOT/usr/local/pacote/img.png %clean rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root) %dir %attr(755,root,root) /usr/local/pacote /usr/local/pacote/prog /usr/local/pacote/arq.txt /usr/local/pacote/img.png %changelog * Tue Dec 8 2009 Helio Marques <hmarx@linuxtech.com.br> * Simple package - initial version

Sistema Operacional GNU/Linux Para criar o arquivo simple-package-1.0-0.1.i586.rpm no diretrio

151

/usr/src/packages/RPMS/i58
para a instalao do binrio, use o comando: rpmbuild -bb simple-package.spec Para criar o arquivo simple-package-1.0-0.1.src.rpm no diretrio

/usr/src/packages/SRPMS/
para a instalao dos fontes, use o comando: rpmbuild -bs simple-package.spec E para criar os dois arquivos RPM para instalaco dos fontes e do binrio, use o comando: rpmbuild -ba simple-package.spec Utilizando o comando rpm -qpi simple-package-1.0-0.1.i586.rpm podemos ver as informaces do pacote gerado:
Name : simple-package Relocations: (not relocatable) Version : 1.0 Vendor: (none) Release : 0.1 Build Date: Tue 08 Dec 2009 02:12:01 PM BRST Install Date: (not installed) Build Host: venus.starix.br Group : Applications Source RPM: simple-package-1.0-0.1.src.rpm Size : 27517 License: GPL Signature : (none) Summary : Simple Package Description : Simple package to demonstrate the RPM build process Distribution: openSuSE

E com o comando rpm -qpl simple-package-1.0-0.1.i586.rpm podemos ver o contedo do pacote gerado:
/usr/local/pacote /usr/local/pacote/arq.txt /usr/local/pacote/img.png /usr/local/pacote/prog

Sistema Operacional GNU/Linux

152

Sistema Operacional GNU/Linux

153

6. O Sistema X Window
O Sistema X Window
O sistema X Window a interface grfica padro dos sistemas Unix-like. Ele baseado no protocolo X11, definido pela DEC - Digital Equipment Corporation e pelo MIT (Massachusetts Institute of Technology). A primeira verso de 1987. Hoje, est na verso X11R7.4. Este sistema tambm deve ser chamado de: X X Window System X Version 11 X Window System, Version 11 X11 O protocolo X11 orientado a rede e segue o modelo cliente / servidor. Clientes: Aplicaes clientes so aquelas que utilizam recursos grficos. So as aplicaes que normalmente precisam de muito recurso de CPU e memria. Servidores: Equipamentos que provm a interface grfica ao usurio (entrada e sada grficas). Eles executam o X Server, e apenas tratam da leitura dos dispositivos de entrada (mouse, teclado, light pen, ...) e sada (vdeo, som, ...) enviando e recebendo, atravs do protocolo X11, os eventos do usurio e dos clientes. Podem ser utilizados computadores PC de baixo poder computacional que disponham de interface adequada (principalmente mouse, teclado e vdeo).

Assim, uma aplicao para X Window poder ser executada em qualquer mquina e ter sua sada grfica em qualquer tela de um computador que esteja executando um servidor X.

Sistema Operacional GNU/Linux

154

O X Window hierarquicamente formado pelo Xserver, pelo gerenciador de janelas (Window Manager), pelo gerenciador de rea de trabalho (Desktop manager), e pelas aplicaes X. O Xserver tem a funo de fazer a interface com o hardware (placas grficas, mouse, teclado,...), e desenhar as primitivas (ponto, reta e polgonos). O desktop manager (inicialmente o XDM) responsvel pelo controle de sesses. Atravs dele, o usurio se identifica e escolhe o gerenciador de janelas. O KDM, KDE desktop manager, e o GDM, Gnome desktop manager, so os padres no Linux. O window manager responsvel pela decorao das janelas, tratamento das sobreposies, menus, cones, fundos de tela, desktops virtuais, etc. Um X Server pode colocar disponvel, para a utilizao pelos clientes, um ou mais displays. Na rede, estes displays so endereados pelo endereo ou nome do equipamento e pelo nmero display. Assim, se uma mquina chamada tiger est executando um X Server para 1 display, ela ter disponvel o display tiger:0.0. A varivel de ambiente do shell DISPLAY contm o display corrente. Uma aplicao X pode ser disparada em qualquer mquina e exibir sua interface grfica na mquina tiger se os seguintes critrios forem observados: 1) A mquina tiger acessvel atravs do protocolo X. Devem ser verificados os endereos IP, as rotas, e a existncia de regras de firewall que podem filtrar os portos utilizados pelo X11. 2) Se a poltica de permisses do X Server permite aplicao da mquina cliente abrir o display na mquina tiger. Deve ser verificada a poltica de X authority. Se a mquina tiger uma estao de trabalho, o usurio dela deve permitir o acesso do cliente (por exemplo, phoenix), utilizando, por exemplo, o programa xhost para adicion-lo lista de acessos. Para isto, pode ser utilizado o Run Command do KDE (acessvel atravs do menu ou de +):

Sistema Operacional GNU/Linux

155

Abaixo vemos uma tela de uma mquina rodando o KDE no SuSE Linux, exibindo uma calculadora (dxcalc) rodando em Ultrix em uma Personal DECstation e os processos xosview de duas mquinas SuSE Linux diferentes.

A maioria das aplicaes grficas que utilizam o X Toolkit aceitam opes padres, como por exemplo: Especifica o servidor X a ser utilizado -display display -geometry geometria Especifica o tamanho e as dimenses da janela a ser exibida no formato: larguraxaltura+x+y -bg cor, --background cor Especifica a cor de fundo da janela Especifica a cor dos textos e grficos -fg cor, --foreground cor -bw n, --borderwidth n Define a borda com n pixels Define a cor da borda -bd cor, --bordercolor cor -title ttulo Especifica o ttulo da janela

Sistema Operacional GNU/Linux

156

O X Window no Linux
Em 1994, foi fundado o projeto XFree86. O objetivo era criar um servidor X gratuito para plataformas PC. gratuito, e est na verso 4.6.0 compatvel com X11R6.6. No final de 2003 foram inseridas algumas restries na licensa do xfree86 levaram o x.org como o sucessor do XConsortium. O x.org se tornou ento o padro para o Linux e est hoje na verso X11R7.4. O arquivo bsico de configurao do X.org o /etc/X11/xorg.conf. Nas verses atuais do SuSE Linux ele gerado automaticamente. Ajustes na configurao do Xorg no SuSE Linux pode ser facilmente realizada atravs do SaX2 - SuSE Advanced X Configurator. A partir do SaX, voc configura o mouse, teclado, placa de vdeo, monitor e resoluo dos desktops. Em caso de uma placa no existente na lista, verifique a compatibilidade com o padro SVGA. Se o modelo de seu monitor no for encontrado, voc pode informar as faixas de frequncias horizontal e vertical. Cuidado: certifique-se de informar valores corretos, que podem ser encontrados no manual de seu monitor. Valores incorretos podem danific-lo. Existem aindas diversas ferramentas para configurao manual do XFree86: SuperProbe Auxlio na identificao da placa de vdeo, chipset e tamanho da memria de vdeo xf86config Configurao em modo texto. Voc precisa conhecer aspectos tcnicos das interfaces grficas. XF86Setup Configurao em modo grfico. SAX2 - SuSE Advanced X Configuration Tool

Sistema Operacional GNU/Linux

157

Configurao do XFree86
O XFree86 4.x pode ser configurado atravs de parmetros definidos nos arquivos encontrados no diretrio /etc/X11. Neste diretrio, existem ainda subdiretrios para a configurao dos componentes da interface do X Window. Os principais arquivos so:

/etc/X11/Xmodmap /etc/X11/fs/config /etc/X11/xdm/Xservers /etc/X11/xdm/Xaccess /etc/X11/xdm/xdm-config /etc/X11/xdm/Xsetup /etc/X11/xdm/RunChooser /etc/X11/xdm/Xreset /etc/X11/xdm/Xresources /etc/X11/fvwm2/* /etc/X11/xkb/*

Configuraes do teclado do PC Configurao do servidor de fonts Definio dos displays a serem criados Controle de acesso a conexes XDMCP Configurao do XDM Trata das consoles locais e remotas Trata as consoles remotas Trata o logout de usurio remoto Definio do comportamento da interface X (incluindo o teclado) Configuraes do fvwm2 Configuraes dos teclados

Por exemplo, para que voc possua mais de um display, inclua uma linha para cada um deles no arquivo /etc/X11/xdm/Xservers, como as seguintes (opcionalmente com a definio de profundidade de pixel):
:0 :1 :2 local local local /usr/X11R6/bin/X :0 /usr/X11R6/bin/X :1 /usr/X11R6/bin/X :2 vt07 vt08 vt09 -bpp 16

Assim voc ter 3 displays nas consoles tty7, tty8 e tty9, endereados por :0, :1 e :2 respectivamente. Lembre-se de que cada Xserver necessita de pelo menos 32M memria para rodar eficientemente e que sua placa de vdeo e monitor dever suportar a profundidade de pixel. Abaixo, uma tela do sistema X Window com o gerenciador de janelas KDE verso 3.x.

Sistema Operacional GNU/Linux

158

Gerenciadores de janelas
Existem hoje mais de 14 gerenciadores diferentes para o Linux. Os mais conhecidos so: fvwm e fvwm2 Gerenciador original do XFree86 fvwm95 Configurao do fvwm para imitar a interface do Windows 95 KDE - K Desktop Environment Interface que se tornou o padro de fato do Linux. muito poderosa e possui muitas das caractersticas das interfaces encontradas nos sistemas Windows. GNOME - GNU Network Object Model Environment Outra interface famosa do Linux. Utiliza o ORBit, uma implementao CORBA da RedHat. mlvwm Interface semelhante ao Macintosh da Apple. cdesim Imita a interface CDE (Common Desktop Environment), muito utilizada pelas estaes Sun. afterstep Interface semelhante ao NeXTStep. amiwm Interface semelhante ao AMIGA. enlightenment Interface poderosa e configurvel. Faz uso intensivo do modo grfico. icewm Interface que pode emular as interfaces do Windows 95, OS/2 e Motif. twm Uma interface bem simples. qvwm Mais uma interface, com cones animados, emulando a interface do Windows 9x e Me. windowmaker Mais uma interface configurvel com uso intensivo de apelo visual. O gerenciador pode ser escolhido em alguns Desktop Managers, como o kdm do KDE e o gdm do GNOME. H um menu para escolha do tipo de sesso que inclui os gerenciadores instalados.

Sistema Operacional GNU/Linux

159

Um gerenciador de janelas (Window Manager) prov normalmente diversos desktops (reas de trabalho). Alguns gerenciadores incluem programas ou applets denominados pagers para a fcil seleo do desktop. O KDE permite a configurao de at 16 desktops. A barra de cones do KDE (chamada de kicker) exibe os desktops. Um desktop pode ser selecionado clicando sobre o boto correspondente. Este pode ser configurado para exibir o nmero, um texto (que pode ser alterado pelo usurio) ou um preview das janelas em cada desktop. Basta utilizar o boto da direita do mouse sobre a rea dos botes para configurar suas preferncias. Com duplo click em um dos botes, voc poder alterar o nome.

Seleo de Desktops no KDE O KDE tem ainda o kpager que exibe um excelente preview dos desktops e permite arrastar as janelas entre os desktops.

Sistema Operacional GNU/Linux

160

O KDE
O KDE - K Desktop Environment - est se tornando a interface grfica padro do Linux. A interface KDE totalmente configurvel. Ela baseada em URLs e MIME. O KDE inclui, alm do gerenciador de janelas, o gerenciador de displays e centenas de aplicaes integradas ao seu gerenciador. O gerenciador de displays, kdm, um login em modo grfico que substitui o xdm, o gerenciador padro do sistema X Window. A partir dele, o usurio poder escolher o gerenciador de janelas com o qual ir trabalhar. O kdm ir guardar o gerenciador de janelas escolhido por aquele usurio e, posteriormente, ele ser automaticamente selecionado por default quando o usurio se identificar. Entre as aplicaes do KDE, h um poderoso gerenciador de arquivos, o konqueror, que trata muitos formatos de arquivos diferentes. Ele possui caractersticas de drag-and-drop e cut-andpaste. Alm disto, ele tambm um browser WEB.

Atravs da barra do painel (gerado pelo kicker no KDE3 ou pelo plasma-desktop no KDE4), o usurio tem acesso fcil e rpido ao menus de aplicativos, aos desktops virtuais, e a alguns aplicativos utilizados com maior frequncia (configurveis pelo usurio), entre outros.

Painel do KDE3 no SuSE Linux

Sistema Operacional GNU/Linux

161

Outros aplicativos so bem semelhantes aos existentes no ambiente Windows, como o kolourpaint mostrado abaixo:

KolourPaint - o similar do PaintBrush do Windows Para multimedia, existem diversos aplicativos. Programas como o kscd, freeamp, xmss so includos no kit SuSE Linux.

KSCD - CD Player no KDE4

FREEAMP - Similar ao winamp

XMMS

Sistema Operacional GNU/Linux

162

Para exibio de filmes em DVD, pode ser obtido, do site http://sourceforge.net, o xine que possui personalizao atravs de diversos temas disponveis na internet.

XINE Para tocar audio (DVDs, CDs, MP3s, estaces de rdio, ...) h o Amarok com uma interface muito amigvel.

Amarok no KDE4

Sistema Operacional GNU/Linux

163

Na rea matemtica, encontramos diversos aplicativos grficos. Um aplicativo muito conhecido no mundo Unix, que possui porte para Linux, o Maple V da Universidade de Waterloo, Ontario, Canada. O Maple trata manipulao simblica de expresses matemticas complexas, permite avaliaes numricas e plotagens de funes e superfcies.

Sistema Operacional GNU/Linux

164

O kplot3d (do KDE2), que permite a exibio de superfcies a partir de sua equao. e ainda rod-la nos 3 eixos.

Sistema Operacional GNU/Linux

165

Alm dos pacotes tipo office gratuitos disponveis, como o KOffice, o StarOffice, e o OpenOffice, existem produtos comerciais como o Applixware, da Vistasource, disponvel para vrias plataformas Unix. Todos estes pacotes incluem editor de documentos, planilha eletrnica, editores grficos, software de apresentao, banco de dados, geradores de aplicativos, correio eletrnico. O Applixware permite ainda a criao de novas caractersticas atravs de macros e da linguagem ELF (Extended Language Facility). A maioria dos arquivos do Microsoft Office pode ser lida sem problemas (incluindo .DOC, .XLS, .PPT).

Tentando manter a compatibilidade com o pacote office da Microsoft, o OpenOffice est se sendo muito utilizado. A maioria dos documentos gerados pelo Word, Excell e Powerpoint podem ser abertos e modificados nele sem grandes problemas.

Sistema Operacional GNU/Linux

166

axcalc - Planilha do Applixware

oocalc - Planilha do OpenOffice

Sistema Operacional GNU/Linux

167

Voc poder ainda configurar e administrar o SuSE Linux atravs do KDE utilizando o KDE Control Center e os mdulos do YaST.

Sistema Operacional GNU/Linux

168

Sistema Operacional GNU/Linux

169

7. Redes em Unix
Redes em Unix
Colocar sistemas Unix-like em rede significa configurar a suite de protocolos TCP/IP. O TCP/IP define os servios das camadas de transporte e de rede do modelo OSI - Open Systems Interconnection da ISO - International Standard Organization, apesar de no seguir exatamente sua estrutura. TCP/IP a sigla para Transmission Control Protocol/Internet Protocol. Embora haja outros protocolos na suite TCP/IP, o TCP e o IP so os mais importantes. O modelo OSI define 7 camadas hierrquicas que realizam funes utilizando a camada inferior e provm servios para a camada superior. 7. 6. 5. 4. 3. 2. Aplicao Apresentao Sesso Transporte Rede Enlace Programas de aplicao que utilizam a rede Padroniza a representao dos dados para as aplicaes Gerencia as sesses entre as aplicaes Trata da deteco e correo de erro fim a fim Trata das conexes atravs da rede Trata da confiabilidade da transferncia dos dados pelo meio fsico. Define como as variaes da camada fsica formam os dados. Define as caractersticas fsicas do meio (mecnicas e eletromagnticas)

1. Fsica

A arquitetura do protocolo TCP/IP implementa 4 camadas do modelo OSI: Aplicao, Transporte, Internet e Controle de acesso ao meio fsico. O dado da aplicao no nodo de origem encapsulado por cada camada inferior para garantir sua integridade e adicionar informaes para que sejam recebidos pela aplicao no nodo destino. Na camada de aplicao, encontramos os servios comuns como http, telnet, ftp, smtp, DNS, RIP e NFS. Na camada de transporte o TCP/IP fornece, alm do TCP - Transmission Control Protocol, o UDP - User Datagram Protocol, que no faz verificaes de integridade fim a fim. Uma mensagem UDP composta por 2 palavras de 32 bits seguida pelos dados, como mostrado a seguir:
<-------------------------------------------- 32 bits ------------------------------------------> 0 15 16 31

Porto de origem Tamanho Dados

Porto de destino Checksum

Sistema Operacional GNU/Linux

170

Apesar de no haver verificao da integridade dos dados, este protocolo utilizado devido ao seu baixo overhead, tornando a comunicao eficiente. A verificaco feita pela aplicao. Na camada de rede est o IP - Internet Protocol (IPv4 - RFC 791 e IPv6 RFC 2460) que define os datagramas, o esquema de endereamento, o esquema de roteamento, a fragmentao e a recomposio dos datagramas. O datagrama do protocolo IPv4 composto de um cabecalho de 5 ou 6 palavras de 32 bits (definidas pelo campo IHL - Internet Header Length), seguidas pelos dados.
<----------------------------------------------- 32 bits ----------------------------------------------> 4 8 12 16 20 24 28 31 0 IHL ToS Tamanho total Verso Flags Offset de fragmentaco Identificao Protocolo Checksum do cabecalho TTL Endereo de origem Endereo de destino Opes Dados

Padding

O protocolo ICMP (Internet Control Message Protocol) faz parte do IP. Ele responsvel pelo controle de fluxo, pela deteco do alcance do destino, pelo redirecionamento de rotas e pela a verificao dos nodos. O comando ping utiliza este protocolo. Outros protocolos definidos em /etc/protocols so IGMP (Internet Group Multicast Protocol), BGP (Border Gateway Protocol), EGP (Exterior Gateway Protocol) e GGP (Gateway-gateway Protocol). Na camada de controle ao meio fsico so definidos os protocolos: RFC 826: Address Resolution Protocol ou ARP, que mapeia endereos IP em endereos Ethernet RFC 894: A Standard for the Transmission of IP Datagrams over Ethernet. RFC 903: Reverse Address Resolution Protocol ou RARP, variante do ARP que mapeia endereos Ethernet (MAC) em endereos IP.

Sistema Operacional GNU/Linux Abaixo podemos ver como o TCP/IP se encaixa no modelo OSI:

171

Na camada de enlace esto as tecnologias com fio ou sem fio. Podemos citar como exemplo a rede ethernet, a rede token ring, a FDDI (Fiber Distribution Data Interface), as redes 802.11 (wireless, Wi-Fi ou WiMax), ou mesmo interfaces seriais como RS-232C ou RS-422. So definidos parmetors como as temporizaes, nveis de sinal, frequncias, canais, protocolos de negociao do meio, etc. No TCP/IP, a camada de enlace possui 2 subcamadas: LLC (Logical Link Control) e MAC (Media Access Control). Esta diviso baseada no projeto 802 do IEEE que define muitas tecnologias de redes. A maioria das tecnologias de redes locais utilizam o protocolo LLC 802.2 do IEEE. Na camada MAC, uma rede ethernet usa o mtodo CSMA/CD, enquanto uma rede token ring usa token pass (passagem de ficha). Na camada fsica so definidos os tipos e formatos de conectores, cabos, antenas, pinagens, etc.

Sistema Operacional GNU/Linux

172

No TCP/IP so definidas diversas aplicaes, conhecidas como servios TCP/IP. Os mais comuns so: Servio correio eletrnico transferncia de arquivos login em mquinas remotas execuo remota de programas compartilhamento de arquivos compartilhamento de dispositivos Exemplo e-mail ftp telnet rsh ou rexec NFS impressora remota, fax, ...

Estes servios so tratados por aplicativos que podem rodar em modo standalone ou no modo inetd (ou atualmente) xinetd. No modo inetd, o servio includo no arquivo /etc/inetd.conf e o aplicativo ser executado quando uma conexo ao servio for realizada. Uma entrada no arquivo /etc/inetd.conf uma linha contendo as seguintes informaes: servio socket servio socket protocolo flags usurio aplicativo argumentos protocolo flags usuario aplicativo argumentos

nome do servio em /etc/services tipo do socket stream, dgram, raw, rdm ou seqpacket nome do protocolo em /etc/protocols tcp, udp, tcp4, udp4, tcp6, udp6, ... modo de utilizao do socket wait, nowait nome do usurio do processo que trata o servio caminho completo do aplicativo a ser executado argumentos a serem passados para o aplicativo

Por exemplo, o servio FTP pode ser disparado usando o inetd atravs de: ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l

O servio FTP utiliza o wrapper tcpd que verifica os arquivos /etc/hosts.allow e /etc/hosts.deny para controlar o acesso. Ser disparado como usurio root, com a opo -l (para registrar as sesses e as falhas de abertura de sesso FTP). Obviamente aps o disparo o socket poder aceitar novas conexes e no deve esperar a conexo terminar (flag nowait).

Sistema Operacional GNU/Linux

173

O inetd pode ser substituido pelo xinetd (extended inetd). O arquivo de configuraco o /etc/xinetd.conf, que no SuSE Linux inclui os arquivos no diretrio /etc/xinetd.d. Os servios so normalmente configurados em arquivos sob o diretrio /etc/xinetd.d. As entradas tm o formato service nome_do_servio { atributo operador valor valor ... ... } O operador de assinalamento pode ser =, += e -=. A maioria dos atributos somente suporta o operador =. Os atributos so: Atributo id type flags socket_type protocol wait user group instances nice server server_args only_from no_access access_times log_type Descrio / valores aceitos Identificao nica para o servio Qualquer combinao de RPC, INTERNAL ou UNLISTED Qualquer combinao de REUSE, INTERCEPT, NORETRY, IDONLY, NAMEINARGS, e NODELAY stream, dgram, raw ou seqpacket Qualquer protocolo descrito em /etc/protocols yes ou no Usurio para o processo que deve existir em /etc/passwd Grupo para o processo que deve existir em /etc/group Nmero mximo de servios que podem estar ativos Prioridade do servio Path completo do programa a executar para o servio Argumentos para o programa Lista de IPs de mquinas ou rede para os quais o servio estar disponvel Lista de IPs de mquinas para os quais o servio no estar disponvel Intervalo na forma h1:m1-h2:m2 no qual o servio estar disponvel Determina a forma do log: SYSLOG facility level FILE filename soft-limit hard-limit Determina as informaes que sero colocadas no log quando o servio iniciado e terminado. PID, HOST, USERID, EXIT, DURATION Determina as informaes que sero colocadas no log quando o servio no pode ser iniciado. HOST, USERID, ATTEMPT, RECORD Verso do RPC no formato nmero-nmero Nmero para servios UNLISTED RPC Lista de definies de variveis de ambientes, no formato nome=valor, que sero adicionadas ao ambiente ao iniciar o servio

log_on_success

log_on_failure

rpc_version rpc_number env

Sistema Operacional GNU/Linux

174 Atributos do xinetd (cont.)

passenv port redirect

bind interface banner banner_success banner_fail per_source cps max_load disable

Lista de variveis de ambiente do xinetd que sero passadas para o servio Porto do servio, listado em /etc/services Redireciona o servio para outra mquina em outro porto. Se for especificado um nome de mquina, o IP ser resolvido somente uma vez no disparo do xinetd. IP da interface pela qual o servio ser disponibilizado Sinnimo de bind Nome do arquivo com o texto a ser transmitido mquina remota aps a conexo ao servio ser estabelecida Nome do arquivo com o texto a ser transmitido mquina remota quando o servio permitido Nome do arquivo com o texto a ser transmitido mquina remota quando o servio negado Nmero de instncias do servio por IP ou UNLIMITED Limite de conexes por segundo Carga do sistema acima da qual conexes para o servio so recusadas Indica se o servio est desabilitado ou no

Por exemplo, o servio SWAT - Samba Web Administration Tool - pode ser disparado utilizando o xinetd atravs do arquivo /etc/xinetd.d/samba: # SWAT is the Samba Web Admin Tool service swat { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/swat only_from = 127.0.0.1 disable = no }

Nota: No SuSE Linux alguns servios vm desabilitados por motivo de segurana. Certifique-se de configur-los adequadamente antes de habilit-los (fazendo disable=no)

Sistema Operacional GNU/Linux

175

Servidores, Estaes e Terminais


Os diversos computadores conectados a uma rede podem ser classificados como: Terminais: Equipamentos que no executam aplicaes. Apenas fazem a interface com o usurio.

Estaes de trabalho: Equipamentos que podem executar aplicaes e podem utilizar recursos compartilhados de um servidor.

Servidores: Equipamentos que compartilham recursos computacionais para os terminais e estaes de trabalho.

Os primeiros compudadores executando UNIX eram utilizados atravs de terminais texto "burros" conectados a portas seriais (normalmente de placas multiseriais). O computador central era o servidor, compartilhando todos os seus recursos computacionais entre as aplicaes e usurios. Com a interface grfica surgiram as estaes de trabalho. As primeiras estaes eram baseadas em arquiteturas RISC ou MIPS, como a Sun SparcStation e a SGI (Silicon Graphics). Na era dos microcomputadores, ao surgir a rede local, os PCs foram se transformando em servidores e estaes de trabalho. Muitos servidores Linux so tambm estaes de trabalho. Isto permitido pelo uso eficiente do hardware e da estabilidade do kernel e dos aplicativos. Assim, o que distingue um servidor de uma estao de trabalho apenas a execuo ou no de aplicativos servidores (programas que atendem requisies de servios dos clientes da rede). A instalao e configurao dos aplicativos o que define se uma mquina Linux ser servidora ou estao de trabalho. Muitas distribuies oferecem kits diferenciados para a utilizao em servidores e estaes de trabalho. A diferena est, basicamente, na existncia ou no de pacotes de aplicativos para as funes de servidor.

Sistema Operacional GNU/Linux

176

Endereamento IPv4
A base do protocolo TCP/IP o endereo IP. A verso atualmente utilizada chamada de IPv4. O endereo IPv4 um nmero de 32 bits (4 bytes). Para facilitar sua leitura e a memorizao, este nmero expresso como 4 nmeros decimais separados por um ponto: w.x.y.z Para facilitar a administrao, o espao de endereos IPv4 foi dividido m classes. Considerando o valor de w, temos: Classe A B C D E F Endereos especiais O endereo 127.0.0.1 denominado loopback. o endereo IP que toda mquina possui. associado ao nome de mquina localhost. Se todos os bits do HostId forem iguais a 1, o endereo de broadcast. Isto , um pacote enviado para este endereo destinado a todos os nodos da rede. Se todos os bits do HostId forem iguais a 0, o endereo de rede. A mscara gerada colocando todos os bits do NetId em 1, e todos os bits do HostId em 0. Assim, a mscara para a classe A 255.0.0.0, para a classe B 255.255.0.0 e para a classe C 255.255.255.0. O endereo da rede pode ser especificado no formato endereo da rede/nmero de bits do NetId. Desta forma, podemos apenas informar um endereo de uma rede C como 192.168.1.0/24, e saberemos que a mscara 255.255.255.0 Endereos privados Foram reservadas algumas faixas do espao de endereamento IP para mquinas que nunca sero acessveis diretamente atravs da Internet. Eles devem ser utilizados em redes privadas. Mquinas com estes IPs somente conseguem acessar a Internet atravs de um gateway que faa a traduo do endereo de rede (NAT ou Masquerading). Classe A B C Faixa de endereos 10.0.0.0 a 10.255.255.255 172.16.0.0 a 172.31.255.255 192.168.0.0 a 192.168.255.255 Nome do bloco 24-bit block 20-bit block 16-bit block No. de redes 1 - 126 w x.y.z 126 128 - 191 w.x y.z 16.384 192 - 223 w.x.y z 2.097.151 224 - 239 Endereos de Multicast 240 - 247 Reservada para uso futuro experimentais e/ou reservados para uso futuro Valores de w Net Id HostId No. de nodos 16.777.214 65.534 254

Sistema Operacional GNU/Linux Utilizao de nomes de nodos

177

Para facilitar a identificao de nodos e de redes, os endereos IP podem ser colocados nos arquivos /etc/hosts e /etc/networks, ou ainda serem resolvidos pelo DNS. A deciso e ordem de pesquisa por nomes definida pelos arquivos /etc/host.conf e /etc/nsswitch.conf (utilizando, por exemplo, files, dns e nis). Quando utilizado o DNS, o(s) servidor(es) de nomes e o(s) domnio(s) default /so definidos no arquivo /etc/resolv.conf. Este arquivo pode ser dinamicamente alterado em conexes que utilizam PPP, DHCP ou por BOOTP.

Veja mais sobre DNS e NIS no captulo Servios de Rede.

Exemplos do contedo destes arquivos podem ser vistos abaixo. # /etc/host.conf order hosts bind multi on

# /etc/hosts 127.0.0.1 localhost 192.168.200.3 thor.starix.br thor

# /etc/networks loopback 127.0.0.0 starix.local 192.168.200.0

# /etc/resolv.conf nameserver 192.168.200.3 search starix.br

# /etc/nsswitch.conf passwd: compat group: compat hosts: files dns networks: files dns services: files protocols: files rpc: files ethers: files netmasks: files netgroup: files publickey: files bootparrms: files automout: files nis aliases: files

Sistema Operacional GNU/Linux

178

Subclasses
Um endereo IPv4 tem 32 bits. Para uma classe X qualquer, sendo H o nmero de bits do HostId, teremos sempre R = 32 - H bits para o NetId. Assim, para a classe A temos 8 bits para o NetId e 24 bits para o HostId, para a classe B, 16 bits para o NetId e 16 bits para o HostId e para a classe C, 24 bits para o NetId e 8 bits para o HostId. <-------------------------------- 32 bits ---------------------------------> <----------- R bits --------------> <-------------- H bits --------------> NetId HostId Uma classe X qualquer do IPv4 pode ser subdividida em subclasses. Na subclasse, N bits do HostId so acrescentados ao NetId. Logo teremos, em relao classe original, H-N bits para o HostId e R+N bits para o NetId. Como so N bits adicionais, criamos 2N subclasses X i da classe X com 2H - N IPs. <--------------------------------- 32 bits --------------------------------> <----------- R bits --------------> <-- N bits --> <--- H - N bits ---> NetId HostId Exemplo: Sendo a classe C 192.168.1.0/24, podemos criar uma subclasse acrescentando 2 bits ao NetId, formando 22 = 4 subclasses C da classe C com 28-2 = 26 = 64 IPs. A mscara de 24+2 = 26 bits
i

ser 255.255.255.192, e os endereos das 4 subclasses sero 192.168.1.0/26, 192.168.1.64/26, 192.168.1.128/26 e 192.168.1.192/26. Note que sempre podemos obter o ltimo nmero da mscara fazendo 2H - 2H - N = 28 - 26 = 256 - 64 = 192.

Sistema Operacional GNU/Linux

179

Roteamento
Para que um pacote chegue ao seu destino, necessrio saber a rota a ser utilizada. Para isto, so definidos: o endereo do destino, que pode ser uma rede ou um nodo; o gateway, equipamento roteador caso o destino no seja diretamente acessvel atravs da interface de rede; a mscara que define o endereo do destino; a mtrica, que o custo da rota. Exemplo Seja uma rede local com endereo classe C 192.168.201.0 e que tenha um gateway que possui uma interface de rede eth0 com endereo 192.168.201.1. O gateway tambm possui acesso a outras mquinas em outra rede local com endereo classe C 192.168.200.0. Nesta rede, ele possui uma interface de rede eth1 com endereo 192.168.200.222. H tambm um roteador com endereo 192.168.200.2 na segunda rede. Todos os endereos das redes locais so acessveis diretamente atravs das interfaces de rede, por exemplo, eth0.

Para endereos fora da rede local, os nodos devero utilizar o gateway. Para esta configurao, os nodos da rede 192.168.201.0 devero ter uma tabela de rota mnima como a seguinte: Destino 192.168.201.0 loopback default Gateway * * 192.168.201.1 Mscara 255.255.255.0 255.0.0.0 255.255.255.0 Interface eth0 lo eth0

O gateway nesta rede ter a seguinte tabela de roteamento: Destino 192.168.201.0 192.168.200.0 loopback default Gateway * * * 192.168.200.2 Mscara 255.255.255.0 255.255.255.0 255.0.0.0 255.255.255.0 Interface eth0 eth1 lo eth1

Sistema Operacional GNU/Linux

180

Ferramentas diagnstico

para

configurao

ifconfig [ opes ] [ interface ] [ parmetros ] Utilizada para configurao e verificao das interfaces de rede. Podem ser configurados endereos de memria/IO, interrupes, tipos de media, endereos IPv4, IPv6, IPX, X25, parmetros da interface, alm de ativao e desativao de protocolos e interfaces. Podem tambm serem visualizados os erros e os nmeros de pacotes recebidos e transmitidos pelas interfaces.
thor:~ # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:01:02:EC:22:9A inet addr:192.168.200.3 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::201:2ff:feec:229a/10 Scope:Link IPX/Ethernet II addr:00000022:000102EC229A UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:25772210 errors:60736 dropped:0 overruns:3 frame:91159 TX packets:36766592 errors:0 dropped:0 overruns:0 carrier:88 collisions:0 txqueuelen:100 RX bytes:2616349475 (2495.1 Mb) TX bytes:152546778 (145.4 Mb) Interrupt:18 Base address:0xb800 thor:~ #

Diversos IPs podem ser assinalados a uma nica interface utilizando o nome da interface seguida de :label, como por exemplo eth0:1 ou eth1:ext. ping [ opes ] destino Utiliza os pacotes ICMP ECHO REQUEST e ECHO REPLY e pode ser til na verificao da configurao de endereos IP, roteamento e tempos de resposta. muito utilizado para saber se um host est ativo e respondendo. Entretanto uma falta de resposta no indica necessariamente que o host est inativo ou inacessvel: um firewall poder barrar ou descartar pacotes ICMP. Podem ser definidos o tamanho do pacote, a quantidade de pacotes a serem enviados, intervalo entre pacotes, alm de diversos parmetros do protocolo IP. Algumas opes mais utilizadas so: nmero de pacotes a serem enviados -c num -n apena numrico (no resolver nomes) -i num intervalo entre pacotes em segundos pode ser fracionrio -w num timeout em segundos (pode ser fracionrio) -b permite ping em endereo de broadcast

thor:~ # ping -c 4 tiger PING tiger.starix.br (192.168.200.1) from 192.168.200.3 : 56(84) bytes of data. 64 bytes from tiger.starix.br (192.168.200.1): icmp_seq=1 ttl=32 time=950 usec 64 bytes from tiger.starix.br (192.168.200.1): icmp_seq=2 ttl=32 time=929 usec 64 bytes from tiger.starix.br (192.168.200.1): icmp_seq=3 ttl=32 time=978 usec 64 bytes from tiger.starix.br (192.168.200.1): icmp_seq=4 ttl=32 time=868 usec --- tiger.starix.br ping statistics --4 packets transmitted, 4 received, 0% loss, time 3023ms rtt min/avg/max/mdev = 0.868/0.931/0.978/0.045 ms thor:~ #

Sistema Operacional GNU/Linux

181

Sistema Operacional GNU/Linux route [ opes ] [ { add | del | flush } parmetros ]

182

Ferramenta para configurao e verificao da tabela de roteamento. Veja tambm netstat.

thor:~ # route -n Kernel IP routing table Destination Gateway Genmask 200.150.13.176 192.168.200.2 255.255.255.248 192.168.0.0 0.0.0.0 255.255.255.0 192.168.200.0 0.0.0.0 255.255.255.0 0.0.0.0 192.168.200.147 0.0.0.0 thor:~ #

Flags UG U U UG

Metric Ref 0 0 0 0 0 0 0 0

Use Iface 0 eth0 0 eth0 0 eth0 0 eth0

Ref o nmero de referncias a esta rota e no utilizada pelo kernel do Linux. Use numero de utilizaco desta rota. Os flags exibidos so: U - a rota est ativa (Up) H - a rota para uma mquina (Host) R - a rota refeita dinamicamente D - a rota dinmica M - a rota foi modificada por um daemon ou por redirecionamento A - a rota foi instalada por configuraco de endereco C - a entrada cache ! - a rota rejeitada ip [ opes ] { link | addr | route | rule | neigh | tunnel | maddr | mroute | monitor } { comando | flush } [ parmetros ] Poderosa ferramenta para configurao e verificao dos diversos parmetros dos protocolos de rede.

Sistema Operacional GNU/Linux netstat [ opes ] [ { sockets ... | Af } ]

183

Ferramenta genrica para verificao do status de conexes de rede, interfaces e roteamentos. Algumas opes mais utilizadas so: -r exibe a tabela de rotas -i exibe a tabela das interfaces -s [t | u] exibe estatsticas de protocolo TCP e/ou UDP -n no resolver os nomes Os sockets podem ser: { -t | --tcp } { -u | --udp } { -w | --raw } { -x | --unix } --ax25 --ipx --netrom A famlia de endereos Af pode ser: --inet DARPA --inet6 IPv6 --ax25 AMPR AX.25 --netrom AMPR NET/ROM ---ipx Novell IPX --ddp Appletalk --x25 CCITT X.25

thor:~ # netstat -su Udp: 11924335 packets received 2739 packets to unknown port received. 27 packet receive errors 11907991 packets sent thor:~ #

arp [ opes parmetros ] Manipula o cache de ARP (Address Resolution Protocol), mapeamento de endereos ethernet e IPs.
thor:~ # arp -a atlas.starix.br (192.168.200.31) at 00:01:02:EC:22:AD [ether] on eth0 wolf.starix.br (192.168.200.35) at 00:00:B4:A6:A1:CC [ether] on eth0 spider.starix.br (192.168.200.222) at 00:00:B4:A7:FF:1E [ether] on eth0 apollo.starix.br (192.168.200.2) at 00:E0:7D:A5:EB:21 [ether] on eth0 diana.starix.br (192.168.200.147) at 00:80:C8:7C:7E:16 [ether] on eth0 tiger.starix.br (192.168.200.1) at 00:40:C7:94:11:53 [ether] on eth0 thor:~ #

rarp [ opes parmetros ] Manipula a tabela RARP do sistema (Reverse Address Resolution Protocol).

Sistema Operacional GNU/Linux ipcalc [ opes ] endereo [ [ / ] mscara ] [ mscara ] Calcula endereos de broadcast, rede, mscaras, sub-redes

184

thor:~ # ipcalc 192.168.10.0 - 192.168.11.31 deaggregate 192.168.10.0 - 192.168.11.31 192.168.10.0/24 192.168.11.0/27 thor:~ # ipcalc 201.17.0.0/16 Address: 201.17.0.0 11001001.00010001. 00000000.00000000 Netmask: 255.255.0.0 = 16 11111111.11111111. 00000000.00000000 Wildcard: 0.0.255.255 00000000.00000000. 11111111.11111111 => Network: 201.17.0.0/16 11001001.00010001. 00000000.00000000 HostMin: 201.17.0.1 11001001.00010001. 00000000.00000001 HostMax: 201.17.255.254 11001001.00010001. 11111111.11111110 Broadcast: 201.17.255.255 11001001.00010001. 11111111.11111111 Hosts/Net: 65534 Class C thor:~ #

geoiplookup { ip | nome } Localiza geograficamente o endereo fornecido

thor:~ # geoiplookup linuxtech.com.br GeoIP Country Edition: BR, Brazil thor:~ # geoiplookup 201.17.146.157 GeoIP Country Edition: BR, Brazil thor:~ # geoiplookup suse.de GeoIP Country Edition: DE, Germany thor:~ # o

Sistema Operacional GNU/Linux traceroute [ opes ] destino

185

Mostra a rota seguida por um pacote TCP/IP da origem at o destino, incluindo os tempos de resposta. tcpdump [ opes ] [ expresso ] Poderosa ferramenta para exibir o trfego de pacotes na rede. Alm do TCP/IP, suporta protocolos SMB e IPX. Podem ser fornecidos filtros para os pacotes (origem, destino, protocolo, tipo) utilizando expresses booleanas.

thor:~ # tcpdump -n -l -i eth0 -c 4 tcpdump: listening on eth0 22:23:49.195111 arp who-has 192.168.200.41 tell 192.168.200.3 22:23:49.195275 arp reply 192.168.200.41 is-at 0:e0:7d:b7:88:4b 22:23:49.200012 192.168.200.41.405252435 > 192.168.200.3.2049:100 getattr [|nfs] (DF) 22:23:49.200432 192.168.200.3.2049 > 192.168.200.41.405252435: reply ok 112 getattr DIR 40700 ids 3009/100 [|nfs] (DF) thor:~ #

bing [ opes ] nodo1 nodo2 Variao do ping para medida de taxa de transferncia entre dois nodos de uma rede. Outros aplicativos como o snort, o tracepath, e iptraf podem auxiliar a anlise do fluxo de informaes nas diversas interfaces de rede. Aplicativos como socklist e rpcinfo mostram os servios e portos associados aos processos. O aplicativo nmap auxilia a identificaode portos abertos.

Sistema Operacional GNU/Linux Para o modo grfico existem diversas ferramentas, entre elas: xtraceroute

186

Interface para visualizao da rota atravs do globo terrestre, utilizando o traceroute. ethereal Poderoso analisador de protocolos com possibilidades de filtros e visualizao em tempo real do contedo dos pacotes.

Sistema Operacional GNU/Linux Redirecionamento de conexo TCP/IP

187

Em determinadas ocasies, necessrio que uma conexo para um determinado IP/porto seja redirecionada a outro IP/porto. Um exemplo tpico ter um servidor WWW em uma rede com IPs privados no acessveis pela Internet. O redirecionamento pode ser feito por meio do firewall ou de um software de redirecionamento. Entre os diversos pacotes, o mais simples o rinetd. Sua configurao feita no arquivo /etc/rinetd.conf. Neste arquivo so definidos os redirecionamentos e os controles de permisso. Redirecionamento: bindaddress bindport connectaddress connectport

Todas as conexes que forem feitas para bindaddress/bindport sero redirecionadas para connectaddress/connectport. Os argumentos bindaddress e connectaddress podem ser fornecidos como endereo IP ou por um nome de host. Os argumentos bindport e connectport podem ser fornecidos como nmero ou nomes de servios dados em /etc/services. No caso do servidor ter diversos IPs, pode ser utilizado o IP 0.0.0.0 como bindaddress. Permisses: allow padres de IPs deny padres de IPs Regras de permisses a serem subsequentemente seguidas. Os padres de IPs so formados por dgitos 0 a 9, ., ? e *. Os caracteres ? e * so utilizados como metacaracteres que combinam com um caracter ou com uma sequncia de caracteres qualquer.

Sistema Operacional GNU/Linux O rinetd pode gerar um log em um arquivo definido por: logfile arquivo de log Para um log no formato de um servidor WEB, basta adicionar a linha: logcommon Para a utilizao do syslog, adicione a linha: syslog facilidade prioridade A facilidade/prioridade default daemon/info.

188

Sistema Operacional GNU/Linux

189

Endereamento IPv6
Os enderecos IPv so nmeros de 128 bits, normalmente escritos como 16 nmeros em hexadecimal. No h classes como no IPv4. Os bits de mais alta ordem, denominados prefixo, definem o tipo do endereo. Tipo de endereo reservado no assinalado reservado para NSAP reservado para IPX no assinalado no assinalado no assinalado endereos de unicast global agregveis no assinalado no assinalado no assinalado no assinalado no assinalado no assinalado no assinalado no assinalado no assinalado no assinalado endereo de unicast local de link endereo de unicast local de site endereos de multicast prefixo 0000 0000 0000 0001 0000 001 0000 010 0000 011 0000 1 0001 001 010 011 100 101 110 1110 1111 0 1111 10 1111 110 1111 1110 0 1111 1110 10 1111 1110 11 1111 1111 Frao do espao de endereamento 1/256 1/256 1/128 1/64 1/32 1/16 1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/16 1/32 1/64 1/128 1/512 1/1024 1/1024 1/256

Notas: 1. Os endereos no especificados, o endereo de loopback, e os endereos IPv4 embutidos no IPv6 so assinalados com prefixo binrio 0000 0000. 2. O IANA limita, por enquanto, a alocao de endereos unicast faixa de endereos que comeam com o valor binrio 001. O espao restante (aprox. 85% do espao de endereamento IPv6) est reservado para definies futuras. Os enderecos mais importantes so os de unicast global agregveis, que iro substituir as classes A, B e C do IPv4. O formato destes endereos :
3 001 13 bits TLA ID 32 bits NLA ID 16 bits SLA ID 64 bits interface ID

topologia identificador <--------------- topologia pblica ------------> <-----------> <--------------------------------------> do site da interface

TLA ID o identificador do agregado de primeriro nvel, NLA o identificador do agregado do prximo nvel e SLA o identificador do agregado do nvel do site, ou tambm chamado de identificador da subrede (subnet ID). O identificador da interface um super conjunto do espaco de enderecos do MAC de 48 bits definidos pelo IEEE 802 que so assinalados marioria das placas de rede.

Sistema Operacional GNU/Linux

190

Para os testes dos protocolos IPv6 foi definido o 6bone. O byte de mais alta ordem 5F (0101 1111). Os prximos 2 bytes o ASN (Autonomous System Number) assinalado empresa ou ao seu ISP. O prximo campo, de 3 bytes, so os 24 bits de mais alta ordem do IPv4. O endereo da subrede definido pela empresa e o endereo da interface normalmente o endereo MAC de 48 bits. Mapeando endereos IPv4 em endereos IPv6 Os endereos IPv4 podem ser mapeados em endereos IPv6 colocando os 80 bits de mais alta ordem em 0, seguidos de 16 bits em 1 e ento o endereo IPv4 nos 32 bits de mais baixa ordem. Assim, na notaco IPv6, o IP 200.157.187.34 poder ser escrito como 0:0:0:0:FFFF:200.157.187.34, ou de forma abreviada ::FFFF:200.157.187.34.
0000 . . . . 80 bits . . . . . . 0000 16 bits FFFF 32 bits Endereo IPv4

Endereos IPv4 compatveis com endereos IPv6 Para a transio de IPv4 para IPv6, colocam-se os 96 bits de mais alta ordem em 0 e ento o endereo IPv4 nos 32 bits de mais baixa ordem. Estes endereos podem ser colocados na base DNS em registros AAAA, no formato semelhante a ::200.157.187.34.
0000 . . . . 80 bits . . . . . . 0000 16 bits 0000 32 bits Endereo IPv4

Um endereco IPv6 com 127 bits em 0 e 1 bit em 1, escrito como ::1 o endereco de loopback. Endereo no especificado um endereo IPv6 com todos os 128 bits em 0, escrito como 0::0 ou apenas ::. Endereos de link locais Um endereo em um link local utilizado quando no h necessidade de reencaminhamento (forward). Ele formado pelo prefixo de 10 bits 1111 1110 10, seguido de 54 bits em 0 e 64 bits da identificao da interface. Estes endereos sempre comeam com fe8 a feb. Assim, uma interface ethernet com endereo MAC 00:01:02:EC:22:9A, ter o IPv6 de escopo link local fe80::201:2ff:feec:229a.
10 bits 1111111010 54 bits 0000 . . . . . . . . . 0000 64 bits interface ID

Endereos de sites locais Os endereos IPv6 para sites locais so formados pelo prefixo de 10 bits 1111 1110 11, seguidos por 38 bits em 0, seguidos pela identificao da subrede de 16 bits, e pelos 64 bits da identificao da interface. Estes endereos sempre comeam com fec0 a feff. Os roteadores IPv6 no podem encaminhar datagramas com estes endereos para fora do site.
10 bits 11111111011 38 bits 0000 . . . . . 0000 16 bits SLA ID 64 bits interface ID

Endereos de multicast So endereos que possuem o prefixo 1111 1111, ou seja, comeam com ff.

Sistema Operacional GNU/Linux Ferramentas de diagnstico

191

Podem ser utilizadas ferramentas como o ping6, traceroute6 e tracepath6 para diagnstico de redes utilizando IPv6.

Internet e Intranet
Uma internet o termo utilizado para uma interligao de redes : interconnected networks. A Internet a rede global interligando milhes de computadores em todo o mundo. Uma intranet uma internet local com os servios tpicos da Internet. Com a necessidade de interligar computadores diferentes, com sistemas operacionais diferentes, foi criado o protocolo TCP/IP. Uma internet uma rede TCP/IP. A Internet definida e controlada por uma grande comunidade internacional aberta de projetistas de rede, operadores, vendedores e pesquisadores denominada IETF - Internet Engineering Task Force. Esta comunidade organizada em grupos de trabalho em diversas reas (como roteamento, transporte, segurana, ...). Em 1986 foi criado o IAB - Internet Architecture Board - que define a arquitetura da Internet. A gerncia das atividades tcnicas do IETF feita pelo IESG - Intenet Engineering Steering Group, que tambm define os padres da Internet. As polticas de uso da Internet so definidas pela ISOC - Internet Society, uma organizao de membros especialistas da Internet. O IANA - Internet Assigned Numbers Authority - responsvel pela atribuio de todos os parmetros nicos da Internet como endereos IP, protocolos e portos. No Brasil, as regras da Internet so definidas pelo Comit Gestor da Internet no Brasil (CGI.br), subordinado ao Ministrio de Cincia e Tecnologia. O CGI.br foi criado pelo decreto presidencial N 4.829, em 3 de setembro de 2003 e responsvel pelo domnio de primeiro nvel .br. Os servios padro de uma rede internet so: DNS - para servir nomes Pginas HTML - HyperText Markup Language - para divulgao de informaes e-mail, para comunicao entre os usurios ftp, para a transferncia de arquivos outros servios (chat, telnet, video-conferncia, ...)

A configurao bsica de uma internet (uma intranet ou um conjunto de redes a serem conectadas Internet) segue as mesmas regras de configurao dos parmetros da rede TCP/IP. No captulo seguinte sero estudados os mais importantes servios e suas configuraes.

Sistema Operacional GNU/Linux

192

8. Servios de Redes
Domnios
Para facilitar a administrao de mquinas em uma rede Unix, elas so agrupadas em domnios. Em um domnio podem existir servidores primrios e secundrios. Estes servidores iro prover as informaes para as mquinas do domnio. Uma mesma mquina poder pertencer a mais de um domnio.

Existem diversos tipos de domnios. Em redes Microsoft, por exemplo, existem os domnios SMB e AD; em redes Novell, os domnios Bindery e NDS. Em redes TCP/IP, os dois domnios mais comuns so o DNS, NIS (tambm chamado de YP) e LDAP. Todos eles tm funo bsica de identificar e/ou autenticar servios e usurios comuns em relao a um grupo (de mquinas ou usurios). Estudaremos aqui os domnios DNS, NIS e LDAP: DNS - Domain Name System Base hierrquica distribuda para resoluo de nomes. baseada na arquitetura cliente/servidor, onde seus componentes so chamados de resolvers e name servers. NIS - Network Information System Tambm conhecido como YP - Yellow Page1 - uma base de dados distribuda para configurao de usurios, grupos, senhas, permisses, ... bastante utilizado na administrao centralizada de usurios em uma rede local onde tambm h compartilhamento de diretrios atravs de NFS. LDAP - Lightweight Directory Access Protocol Baseado no protocolo X.500, o LDAP um servio de diretrio que armazena dados baseados em atributos. Utiliza o modelo cliente-servidor atravs do protocolo TCP. utilizado para a gerncia centralizada de usurios, grupos e outras informaes. _________________________ 1 YP marca registrada da British Telecom.

Sistema Operacional GNU/Linux

193

DNS - Domain Name System


No princpio da ARPANET, em 1970, os nomes dos computadores eram mantidos em um arquivo denominado HOSTS.TXT, que deu origem ao /etc/hosts. Com o crescimento da rede, em 1984 foi definido o DNS nos RFCs 882 e 883. As definies atuais esto nos RFCs 1034, 1035 e 3536 (as extenses para o IPv6) (veja http://www.faqs.org/rfcs). O DNS uma base hierrquica distribuda de nomes cuja raiz o .. Curiosidade: Crescimento da Internet desde os primeiros anos Data 1969 1971 01/1973 09/1973 1977 08/1981 05/1982 08/1983 10/1984 10/1985 02/1986 11/1986 12/1987 07/1988 10/1988 01/1989 07/1989 10/1989 Nmero de nodos 4 15 35 40 111 213 235 562 1.024 1.961 2.308 5.089 28.174 33.000 56.000 80.0007 130.000 159.000 Data 10/1990 01/1991 07/1991 10/1991 01/1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 Nmero de nodos 313.000 376.000 535.000 617.000 727.000 1.300.000 2.200.000 4.900.000 9.500.000 18.000.000 30.000.00 42.000.000 70.000.000 110.000.000 162.000.000 172.000.000 317.000.000 355.000.000

Em 2003 o nmero de domnios ultrapassou 31.000.000, dos quais 78% so .COM. Em 2004 o nmero de domnios ultrapassou 80.000.000 ! Dados do Internet Systems Consortium - www.isc.org No incio de 2010, o nmero de domnios ativos ultrapassou os 113 mihes. So registrados diariamente mais de 72 mil domnios. O registro.br reporta 1950064 domnios, dos quais 1753136 so .com.br. So registrados diariamente mais de 380 domnios no registro.br .

Sistema Operacional GNU/Linux

194

Em setembro de 2009, o nmero de usurios da Internet no mundo estimado em mais de 1.7 bilhes.

Sistema Operacional GNU/Linux Estrutura hierrquica do DNS

195

O IETF - Internet Engineering Task Force, atravs do IANA - Internet Assigned Numbers Authority, define os domnios de primeiro nvel (top level domains ou TLD) da Internet: Os TLDs genricos so, por exemplo, .com, .edu, .org, .mil, .int, net. Para cada pas, foram definidos os cdigos de TLD como, por exemplo: .br, .us, .uk, .ca, .au, .de, .fr, .. Em cada pas, h um rgo responsvel pelo registro de sub-domnios, como .com.br, .co.uk, .net.br, .net.au, ... No Brasil, o rgo responsvel o REGISTRO.BR (http://registro.br). Qualquer empresa que queira ter um domnio na Internet deve primeiramente consultar o REGISTRO.BR para verificar a disponibilidade do nome do domnio (Exemplo : minhaempresa.com.br). Caso esteja disponvel, dever configurar pelo menos 2 servidores de nome (um master e um slave), resolvendo o domnio para poder cadastr-lo no REGISTRO.BR. Aps um certo tempo, o cadastro ser publicado para a Internet. A informao ir aos poucos se propagar pelos diversos servidores de nome da Internet. Poder demorar alguns dias para que a maioria das mquinas da Internet conheam o novo domnio.

Sistema Operacional GNU/Linux Lendo nome de domnios

196

A leitura de um nome de mquina completo, incluindo o domnio, feita de trs para frente. Seja, por exemplo, o nome lithium.cchem.berkeley.edu. De .edu, sabemos que o domnio educacional de primeiro nvel (top-level domain). De berkeley.edu, sabemos que o domnio da Universidade da Califrnia em Berkeley . De cchem.berkeley.edu, sabemos que o sub-domnio do Departamento de Qumica E lithium o nome de uma mquina do Departamento de Qumica. Assim, lithium.cchem.berkeley.edu o nome completo (FQDN - Fully Qualified Domain Name) de uma mquina do departamento de qumica da Universidade da Califrnia em Berkeley e deve ser resolvido para um ou mais IPs: Uma consulta ao DNS usando o comando host revela o IP 128.32.198.12 :

hmarx@thor:~> host lithium.cchem.berkeley.edu. lithium.cchem.berkeley.edu has address 128.32.198.12 hmar@thor:~>

Servidores de Nomes Existem dois tipos de servidores de nome: o primrio e o secundrio ) ou escravo) (primary master e secondary master ou slave). As informaes sobre os domnios so feitas atravs de transferncias denominadas zone transfer. A resoluo dos nomes feita do topo para o nome da mquina, e dever resultar em um endereo IP. Assim, o nome www.suse.de resolvido: .de suse.de www.suse.de o domnio de primeiro nvel da Alemanha. o domnio da SuSE, hoje da empresa Novell, Inc. (provavelmente) a mquina servidora de pginas web do domnio suse.de Este nome ser mapeado para um endereo IP.

Resoluo de endereos Alm do domnio de nomes, os endereos tambm so resolvidos (mapeados para nome). Os endereos IP esto no sub-domnio in-addr.arpa. Seja, por exemplo, www.suse.de, que tem endereo 195.135.220.3. Logo, o mapeamento est no domnio reverso 3.220.135.195.in-addr.arpa.

Sistema Operacional GNU/Linux

197

Software DNS
O software mais utilizado para resoluo de nomes o BIND - Berkeley Internet Name Domain. Inicialmente desenvolvido para sistemas Unix, hoje disponvel para diversos sistemas operacionais. O programa o /usr/sbin/named. A configurao do BIND feita atravs de alguns arquivos. O arquivo principal o /etc/named.boot na verso BIND4, ou o /etc/named.conf na verso BIND8 ou superior. Este arquivo ir definir na sesso options o diretrio da base de dados do DNS e, nas sesses zone, os parmetros para definio dos domnios e sub-domnios (denominados zones). No diretrio definido (o default /var/named para as verses at o BIND8 e /var/lib/named para a verso BIND9 ou superior), esto os arquivos que descrevem os domnios. Estes arquivos so formados por entradas de controle e registros. Comentrios podem ser inseridos por ";".

Entradas de controle
$ORIGIN subdomnio Muda a origem do domnio para as definies subsequentes $INCLUDE arquivo Inclui o arquivo arquivo que deve conter entradas de controle e registros do DNS. $TTL ttl Define ttl o tempo de vida default em segundos. Podem ser utilizados os sufixos M, H, D, W para indicar minutos, horas, dias ou semanas. $GENERATE faixa lhs [ ttl ] [ classe ] tipo rhs [ comentrio ] Gera registros de acordo com a faixa fornecida. classe e tipo sero definidos no tpico Formato dos registros do DNS. lhs pode ser $ ou ${offset[,width[,base]]}. O $ representar o valor da iterao que pode ser somado a offset, com 3 posies e na base numrica base. rhs tratado da mesma forma do lhs.

Sistema Operacional GNU/Linux

198

Formato dos registros do DNS


O formato do registro (chamado de RR - Resource Record) : [ nome ] [ ttl ] [ classe ] tipo dados onde: nome ttl classe o objeto definido (domnio, servidor, ...) o tempo de vida da informaco (Time To Live) pode ser: IN Internet HS HesioId (MTI Service protocol) CH Chaos (MIT LAN protocol) Geralmente, apenas a classe IN utilizada. o tipo do registro.

tipo

O formato dos dados varia conforme o tipo do registro. O nome deve ser terminado por .. Caso contrario, ser concatenado com a origem: domnio que est sendo definido ou o alterado pelo controle $ORIGIN. @ o domnio que est sendo definido em zone no arquivo /etc/named.conf. Substitui-se ento o @ do email nos dados dos registros por .. Se nome no for especificado (deixado em branco), as informaes so relacionadas ao ltimo nome anteriormente definino.

Sistema Operacional GNU/Linux Os formatos dos principais tipos de registros so: 1. Start of Authority

199

SOA dominio email ( serial refresh retry expire minimum ) onde um nmero sequencial sempre crescente. usado para verificar serial alteraes nos dados definidos. comum usar a data de ltima alterao no formato AAAAMMDDss, onde ss incrementado a cada alterao do dia; o tempo entre atualizaes dos servidores de DNS secundrios; refresh retry o tempo entre tentativas de atualizao dos servidores de DNS secundrios em caso de falha na conexo com o primrio; o limite de validade das informaes sobre o domnio; expire minimum o tempo que respostas negativas (tipo domnio inexistente) pode estar no cache de servidores de DNS secundrios. meudominio.com. 2009110305 2D 4H 2W 1W ) IN SOA meudominio.com. root.dominio.com. ( ; serial Nov 3, 2009, revision #5 ; refresh in 2 days ; retry in 4 hours ; expire in 2 weeks ; minumin 1 week

2. Name server NS servidor onde o nome ou o IP do servidor de nomes do domnio.

IN

NS ns1.meudominio.com.

3. Name to address mapping A ipv4 onde ipv4 server.meudominio.com.

o IPv4, formado por 4 nmeros de 8 bits separados por .. IN A 192.168.10.17

Sistema Operacional GNU/Linux 4, Name to IPv6 address mapping AAAA ipv6 onde ipv6

200

o IPv6, de acordo com as regras definidas no captulo anterior, Rede em Unix.

IN

AAAA 2001:0780:0:1::1

5. Name to IPv6 address mapping (experimental) A6 prefixo ipv6 onde prefixo ipv6 nome [ nome ] o nmero de bits do prefixo; o IPv6; o nome de referncia.

www.meudominio.com. ipv6.provedor.com.

IN A6 96 ::fef7:6d2c ipv6.provedor.com. IN A6 0 3ffe:1900:4545:2:2d0:9ff::

6. Address to name mapping PTR nome onde nome

o nome.

17.10.168.192.in-addr.arpa. IN PTR server.meudominio.com.

7. Cannonical name (aliases) CNAME nome onde nome

o apelido para o objeto.

$ORIGIN meudominio.com. mail IN CNAME servidor

Sistema Operacional GNU/Linux 8. Textual information TXT "texto" onde texto

201

um texto livre.

mail IN TXT "Servidor de e-mails"

9. Responsible person RP email domnio onde email o e-mail do responsvel; domnio o domnio associado ao responsvel.

IN RP root.meudominio.com. meudominio.com.

10. Mail exchange MX ordem servidor onde o nmero de preferncia do servidor de email. Nmero menor ordem tem maior preferncia; servidor o nome do servidor que recebe e-mails para o o objeto (tipicamente um domnio). IN MX 10 mail.meudominio.com. IN MX 20 mail.provedor.com.

11. Host information HINFO hardware software onde hardware uma descrico do equipamento; software uma descrico do ambiente operacional do equipamento.

www IN HINFO "Quad Xeon" "SuSE Linux"

Sistema Operacional GNU/Linux 12. Mailbox or Mail list information MINFO admin error onde o e-mail do administrador; admin error o e-mail para onde vo os erros.

202

IN MINFO mailadm.meudominio.com. mailerr.meudominio.com.

13. Geographical location LOC lat-d [ lat-m [ lat-s ] ] N | S long-d [ long-m [ long-s ] ] E | W alt [ m] [ size [ m] [ hp [ m ] [ vp [ m ] ] ] ] onde lat-d so os graus da latitude; so os minutos da latitude; lat-m lat-s so os segundos da latitude; so os graus da longitude; long-d long-m so os minutos da longitude; so os segundos da longitude; long-s alt a altitude em metros; o dimetro do crculo representando a preciso em metros da size localizao; hp a preciso horizontal em metros; a preciso vertical em metros. vp

IN LOC 44 0 0.000 S 19 30 0.000 W 860.00m 0.00m 10000m 10m

14. Well known services WKS ip protocolo servio [ { servio } ] onde ip o IP do objeto; protocolo o protocolo dos servios (tcp ou udp); servio so os servios conhecidos neste objeto.

IN WKS tcp http pop3 smtp

Sistema Operacional GNU/Linux 15. SRV - Available Services srvce.proto [ .nome] [ ttl ] IN SRV ordem peso porto objeto onde nome simblico do servio como _http, _ftp, _sip e _ldap; srvce proto o nome simblico do protocolo como _tcp e _udp; nome do objeto ou o definido anteriormente ou em $ORIGIN; nome ttl o tempo de vida; o nmero de prioridade. Quanto mento maior a prioridade; ordem peso o peso relativo entre objetos; o nmero do porto do servio; porto objeto o nome do servidor destino.

203

IN SRV

0 5 80 www.meudominio.com.

16. DNSKEY - DNS Public key DNSKEY flags proto algo dados onde flags nmero de 16 bits (0, 256 ou 257): bits 0-6 no usados, devem ser 0 bit 7 indica assinatura de zona bits 8-14 no usados, devem ser 0 bit 15 indica ponto de segurana cdigo do protocolo (somente 3 atualmetne valido) proto algor cdigo do algoritmo 0: reservado 1: RSA-MD5 2: Diffie-Helmann 3: DSA-SHA-1 4: Elliptic curve 5: RSA-SHA-1 6-251: no assinalado 252: Indirect 253: URI privada 254: OID privada 255: reservado chave no codificada em base64 dados

linuxtech.com.br.

IN DNSKEY 256 3 5 (

AwEAAchq3AcolVSob3ZC3H4YwSYDx6R2V0I1ivfKff0SLWmTQklYjuAT uZZrZWqMMU3J5sXxSo7gT91vNONPvwNsRh089wjF0dJA3/rdGSVt8M0R 1O1wG/pLFiQTE8mjAjBY5TpOAlJgJNWUlQU6xkUmvgOCw+ysw8KFbrgN FyQm5p4T

Sistema Operacional GNU/Linux 17. RRSIG - Signature Record RRSIG tipo algo nome ottl expira inicio keytag dono assinatura onde registro RR tipo algo cdigo do algoritmo como em DNSKEY nmero de componentes no nome do objeto nomes ottl tempo de vida do objeto data de expirao do RRSIG expira inicio data inicial cdigo de verificao da assinatura keytag dono objeto dono da chave privada assinatura assinatura digital no formato base64 86400 RRSIG SOA 5 3 86400 20100202004030 ( 20100103004030 43461 linuxtech.com.br. KNZkSgaxBqf6kREdbegt+SaVLEgs4xlPBZ1d egRU1x3Gc12paIZ9426NxDT1yOhHrMz4lP1x dtc9jUEyDPXHxt+w7Rr/PbTYbxKS72SFQTgd uCWz1xexI2I511geITmr3mga8V5skgS08T0i lmt+8XKZ2V9WWVF5FK+OrCPCx/4= ) linuxtech.com.br. IN RRSIG SOA 5 3 86400 20100202004030 ( 20100103004030 43461 linuxtech.com.br. KNZkSgaxBqf6kREdbegt+SaVLEgs4xlPBZ1d egRU1x3Gc12paIZ9426NxDT1yOhHrMz4lP1x dtc9jUEyDPXHxt+w7Rr/PbTYbxKS72SFQTgd uCWz1xexI2I511geITmr3mga8V5skgS08T0i lmt+8XKZ2V9WWVF5FK+OrCPCx/4= )

204

18. NSEC - Next secure record NSEC prximo ( lista_rr ) onde prximo prximo nome de servidor no arquivo de zona lista de registros para o nome lista_rr

IN NSEC www ( A TXT MX NSEC RRSIG ) www IN A 192.168.10.15 IN TXT "Servidor WEB" IN MX 10 mail.meudominio.com. IN RRSIG

Sistema Operacional GNU/Linux

205

Exemplo de configurao
A resoluo de nomes utiliza o arquivo /etc/resolv.conf que define o(s) domnio(s) para nomes no qualificados e o(s) servidor(es) de nome default para o cliente do DNS.

# # /etc/resolv.conf # search meudominio.com nameserver 192.168.1.1

Seja o domnio meudominio.com. Neste domnio, temos diversas mquinas, cujos endereos e funes so vistos abaixo: Nome da mquina ns mail maq1 maq2 www Endereo IP 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 Funo servidor de nomes servidor de e-mail estao 1 estao 2 servidor web

Suponha que o servidor seja tambm escravo (um DNS secundrio) do domnio outrodominio.br, resolvido pelo servidor primrio com IP 192.168.2.1.

Sistema Operacional GNU/Linux O arquivo /etc/named.conf pode ento conter :

206

# # Arquivo de configurao exemplo, simplificado do BIND 9.2 # options { directory "/var/lib/named"; check-names master warn; pid-file "/var/run/named.pid"; files unlimited; recursion yes; multiple-cnames no; forwarders { 200.150.13.178; # Starix/LinuxSupport 200.150.4.5; # Way Internet }; }; zone "localhost" in { type master; file "localhost.zone"; check-names fail; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; check-names fail; allow-update { none; }; }; zone . in { type hint; file "root.hint"; }; zone "meudominio.com" in { type master; file "master/meudominio.com.zone"; allow-transfer { any; }; notify yes;

}; zone "1.168.192.in-addr.arpa" in { type master; file "master/192.168.1.zone"; check-names fail; allow-update {none;}; }; zone "outrodominio.br" in { type slave file "slave/outrodominio.zone"; masters { 192.168.2.1; }; };

Sistema Operacional GNU/Linux O arquivo meudominio.zone que define o domnio meudominio.com pode ser:
; Zone meudominio.com $ORIGIN br. $TTL 1D meudominio IN SOA meudominio.com. root.meudominio.com. ( 2001030101 ; serial 3H ; refresh 1H ; retry 1W ; expire 1D ) ; TTL minimo IN NS ns.meudominio.com. IN A 192.168.1.1 IN MX 10 mail.meudominio.com. IN RP root.meudominio.com. root.meudominio.com. IN LOC19 55 00.000 S 43 57 00.000 W 858.00m 0.00m 10000.00m 10.00m IN WKS192.168.1.1 tcp domain IN WKS192.168.1.1 udp domain $ORIGIN meudominio.com. ns IN A 192.168.1.1 mail IN A 192.168.1.2 maq1 IN A 192.168.1.3 maq2 IN A 192.168.1.4 www IN A 192.168.1.5

207

De forma semelhante, o arquivo 192.168.1.zone que define o domnio reverso 1.168.192.in-addr.arpa pode ser:
; Zone 1.168.192.in-addr.arpa $TTL 1D @ IN SOA meudominio.com. root.meudominio.com. ( 2001030101 ; serial 3H ; refresh 1H ; retry 1W ; expire 1D ) ; TTL minimo IN NS ns.meudominio.com. IN A 192.168.1.1 IN MX 10 mail.meudominio.com. IN RP root.meudominio.com. root.meudominio.com. $ORIGIN 1.168.192.in-addr.arpa. 1 IN PTRns.meudominio.com. 2 IN PTR mail.meudominio.com. 3 IN PTR maq1.meudominio.com. 4 IN PTR maq2.meudominio.com. 5 IN PTR www.meudominio.com.

Note que o smbolo @ utilizado no registro SOA acima substitudo pelo domnio do arquivo definido em /etc/named.conf. Assim, o @ equivalente a "1.168.192.in-addr.arpa.". O arquivo slave/outrodominio.zone ser criado automaticamente por transferncia de zona do servidor primrio. O servidor primrio 192.168.2.1, dever permitir a transferncia da zona utilizando a diretiva allow-transfer.

Sistema Operacional GNU/Linux

208

Segurana no DNS
Para a gerao das chaves utilizado o aplicativo dnssec-keygen. Para a gerao da assinatura utilizado o aplicativo dnssec-signzone. Para gerar a assinatura para o dominio meudominio.com, utilizamos, por exemplo, root@thor:/var/lib/named/master # dnssec-keygen -a RSASHA1 -b 512 -n zone neudominio.com Kmeudominio.com.+005+12906 root@thor:/var/lib/named/master # o

Sero gerados dois arquivos. O registro DNSSEC com a chave pblica est no arquivo com a extenso .key (Kmeudominio.com.*.key): meudominio.com. IN DNSKEY 256 3 5 ( AwEAAaPF9T2ArDW8xtD8fguk/x44WQTtB5rhwZv8LFugnzbtotJvhnmB RgNjtaS9N3e8crJ5LCu5+oxKiRDwcFceCkU= ) Este texto dever ser inserido no arquivo que descreve o domnio que fica normalmente no diretrio /var/lib/named/master/. E a chave privada est (Kmeudominio.com.*.private) no arquivo com a extenso .private

Private-key-format: v1.2 Algorithm: 5 (RSASHA1) Modulus: o8X1PYCsNbzG0Px+C6T/HjhZBO0HmuHBm/wsW6CfNu2i0m+GeYFGA2O1pL03d7xysnksK7n6jEqJEPBwVx4KRQ== PublicExponent: AQAB PrivateExponent: IVvAES/1Y9i40naroemQwXIOx88T/ns/eWtLCbrU01YOntZQdkWy/eb6DoviEf1JguBvEzCtlGuFpBytLZNfgQ== Prime1: 09YtwfUYEUl+S5/mkepX7pQbL5SOc6CFy1MeTKsUeWE= Prime2: xeqdaTijQEdUoAM6jKmToCI99hPPImj1AnsFB+EIh2U= Exponent1: sUX/LN0qsuzJ4AeEMH/n7iPLTFoJjAG9dZWtOYPBsoE= Exponent2: MQ10FCcgdwb2123VbhV9bDvwZXQFa37d8s5wscI5be0= Coefficient: 0pT8G7+m1148EqLEyg9UdFiPYtWm9bmznyUyVaRPpjc=

Para gerar os registros RRSIG com as assinaturas para um domnio utiliza-se o aplicativo dnssec-sigzone. Ser gerado o arquivo com extenso .signed que contm os registros RRSIG para todos os objetos definidos no domnio. root@thor:/var/lib/named/master # dns-signzone -o meudominio.com meudominio.com.zone Kstarix.br.+005+13026.key meudominio.com.zone.signed root@thor:/var/lib/named/master # o

Sistema Operacional GNU/Linux

209

Ferramentas de diagnstico
Para diagnosticar problemas no DNS, existem diversas ferramentas disponveis: dnsdomainname Exibe o domnio DNS nslookup Pesquisa interativa de nomes e IPs. O exemplo abaixo utiliza o nslookup do BIND verso 8 por ser mais completo. hmarx@thor: ~> nslookup Default Server: thor.starix.br Address: 192.168.200.3 > ls linuxtech.br [thor.starix.br] #$ORIGIN linuxtech.br. @ 1D IN A 192.168.200.3 thor 1D IN A 192.168.200.3 www 1D IN A 192.168.200.3 > server ns.linuxsupport.com.br Default Server: ns.linuxsupport.com.br Address: 201.17.146.157 > www.linuxsupport.com.br Server: ns.linuxsupport.com.br Address: 201.17.146.157 Name: www.linuxsupport.com.br AddressL 201.17.146.157 > ^D hmarx@thor: ~>

dnsquery Pesquisa em servidores de DNS


hmarx@thor: ~> dnsquery -n ns.linuxtech.com.br -t mx starix.com.br ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42483 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 4 ;; starix.com.br, type = MX, class = IN starix.com.br. 1D IN MX 10 mail.linuxsupport.com.br. starix.com.br. 1D IN MX 20 master.softaplic.com.br. starix.com.br. 1D IN NS ns.starix.com.br. starix.com.br. 1D IN NS ns2.starix.com.br. starix.com.br. 1D IN NS master.softaplic.com.br. mail.linuxsupport.com.br. 1D IN A 200.150.13.178 master.softaplic.com.br. 1D IN A 200.162.94.241 ns.starix.com.br. 1D IN A 200.150.13.178 ns2.starix.com.br. 1D IN A 200.150.13.177 hmarx@thor: ~>

Sistema Operacional GNU/Linux

210

traceroute Da mesma forma, o traceroute utilizar o DNS para exibir o nome dos nodos. dig Faz pesquisas em servidores de nome. dnsquery Pesquisa servidores de nome usando o resolver. host Exame de nomes de nodos no DNS.
hmarx@thor: ~> host linuxsupport.com.br linuxsupport has address 201.17.146.157 linuxsupport.com.br mail is handled (pri=10) by mail.linuxsupport.com.br linuxsupport.com.br mail is handled (pri=20) by master.softaplic.com.br hmarx@thor: ~>

named-xfer Transferncia de definio de domnios.


thor:~ # named-xfer -z starix.com.br -f starix.zone ns.starix.com.br named-xfer[30426]: send AXFR query 0 to 201.17.146.157 thor:~ # head starix.zone ; BIND version named 8.2.4-REL Thu Sep 20 04:20:40 GMT 2001 ;BIND version root@knox:/usr/src/packages/BUILD/bind8-8.2.4/bin/named ;zone starix.com.br first transfer ;from 201.17.146.157:53 (local 192.168.200.3) using AXFR at Wed Nov 18 14:08:24 2009 $ORIGN com.br. starix 86400 IN SOA starix.com.br. hmarx.starix.com.br. ( 2002091201 43200 3600 3600000 86400 ) 86400 IN NS ns.starix.com.br. 86400 IN NS ns2.starix.com.br. 86400 IN NS master.softaplic.com.br. thor:~ #

Sistema Operacional GNU/Linux

211

NIS - Network Information System


Em um sistema de computao distribudo, sempre existe um problema de ter cpias de arquivos de configurao comuns nas diversas mquinas. Arquivos como os de password, grupo, hosts, etc., podem ser mantidos em uma base de dados com administrao centralizada. A base de dados do NIS contm informaes dos arquivos /etc/passwd, /etc/group, /etc/ethers, etc., que sero recuperadas pelas mquinas que esto utilizando NIS. O NIS segue o modelo cliente/servidor. Um servidor NIS uma mquina que possui os arquivos de dados do NIS, denominados maps. Clientes so mquinas que fazem requisies aos servidores. Os servidores so divididos em mestre (master) e escravos (slaves). O servidor mestre o nico que contm a base de dados e pode modific-la. Os escravos no modificam a base, apenas tratam as requisies dos clientes. Utilizando o SuSE Linux at a verso 7.3, a configurao bsica do NIS pode ser feita pelo YaST ou alterando manualmente o arquivo /etc/rc.config. A partir da verso 8.0, voc pode configurar o servidor NIS atravs do arquivo /etc/sysconfig/ypserv, e o cliente NIS atravs do arquivo /etc/sysconfig/ypbind. Voc pode utilizar os scripts rcypserv e rcypclient (ou rcypbind a partir do SUSE Linux 8.0) para iniciar ou parar o servio NIS. Para configurar um NIS master, voc deve inicialmente definir o nome do domnio. Note que este nome nada tem a ver com o nome do domnio do DNS. Voc pode utilizar o programa domainname para isto. Note que este programa equivalente ao ypdomainname ou nisdomainname e no o dnsdomainname. Para que usurios da base NIS no tenham acesso local ao servidor NIS, certifique-se de que o /etc/passwd no NIS master no contenha a linha: +::0:0::

A base de dados NIS normalmente colocada sob o diretrio /var/yp. Neste diretrio voc encontrar um arquivo Makefile que utilizado para a construo da base de mapas. Voc poder edit-lo para definir quais mapas sero colocados na base NIS. Procure pelo destino all: e utilize as dependncias que desejar. Abaixo voc pode ver o trecho do arquivo Makefile onde sero criados os mapas para passwd, group, rpc, services, netid e ypservers.
#all: passwd group hosts rpc services netid protocols netgrp mail \ # shadow publickey # networks ethers bootparams printcap \ # amd.home auto.master auto.home auto.local passwd.adjunct \ # timezone locale netmasks all: passwd group rpc services netid ypservers

Utilize o make. Automaticamente sero criados os mapas sob o diretrio com o nome do domnio definido pelo comando ypdomainname. Os mapas criados possuem nomes como passwd.byname, passwd.byuid, services.byname, services.byservicename, hosts.byaddr, ... Estes mapas ficam no diretrio /var/yp/domnio em arquivos com o mesmo nome do mapa. Alguns mapas podem ser referenciados por um apelido. O mapa passwd.byname pode ser referenciado simplesmente como passwd.

Sistema Operacional GNU/Linux Nos clientes, inclua nos arquivos base (por exemplo, /etc/passwd) a linha: +::0:0:: Habilite o cliente NIS atravs do programa ypbind ou pelo script rcypbind.

212

Para permitir que os clientes NIS possam alterar suas senhas no servidor NIS, h o servio yppasswdd. Ele disparado no servidor mestre. Existem diversas ferramentas para a manipulao das informaes da base do NIS. ypdomainname [ domnio ] domainname Exibe ou altera o domnio NIS.
hmarx@thor: ~> ypdomainname TREINAMENTO hmarx@thor: ~>

ypwhich [ -d domnio ] [ [ -t ] -m [ mapa ] | [ -Vn ] mquina ] | -x Exibe o nome do servidor NIS de um domnio ou o servidor mestre de um mapa, opcionalmente para uma determinada mquina. Algumas opes: -d domnio -t -m mapa -Vn -x Especifica o domnio NIS desejado Evita a traduo do nome do mapa para o apelido Procura o servidor NIS para o mapa especificado Define a verso do NIS (default 2) Exibe a tabela de traduo de apelidos de mapas

hmarx@thor: ~> ypwhich spider.starix.br hmarx@thor: ~>

Sistema Operacional GNU/Linux yppasswd [ -f ] [ -l ] [ -p ] usurio ypchfn usurio ypchsh usurio

213

O programa yppasswd utilizado para alterar a senha de usurio ou informaes na base NIS. O usurio dever ter aberto uma sesso validada pelo NIS. Note que apenas o root pode alterar as informaes de outro usurio. Algumas opes: -f -l -p Altera os campos GECOS (equivalente a ypchfn) Altera o login shell (equivalente a ypchsh) Altera a senha

hmarx@thor: ~> yppasswd -f Changing NIS account information for hmarx on thor.starix.br. Please enter password: Changing full name for hmarx onm thor.starix.com.br. To accept the default, simply press return. To enter an empty field, type the word "none". Name: [Helio Marques Sobrinho]: Location [Starix]: Office Phone [3284-3001]: Home Phone []: The GECOS information has been changed on thor.starix.br. hmarx@thor: ~>

ypcat [ -kt ] [ -d domnio ] mapa | -x Exibe valores das chave de uma base NIS. Algumas opes: -d domnio -k -Vn -x
hmarx@thor: ~> ypcat -x Use "ethers" for map Use "aliases" for map Use "services" for map Use "protocols" for map Use "hosts" for map Use "networks" for map Use "group" for map Use "shadow" for map Use "passwd" for map hmarx@thor: ~>

Especifica o domnio NIS desejado Exibe as chaves do mapa Define a verso do NIS (default 2) Exibe a tabela de traduo de apelidos de mapas

"ethers.byname" "mail.aliases" "services.byname" "protocols.bynumber" "hosts.byname" "networks.byaddr" "group.byname" "shadow.byname" "passwd.byname"

Sistema Operacional GNU/Linux ypmatch [ -d domnio ] [ -kt ] chave ... mapa | -x Exibe as informaes de uma ou mais chaves de um mapa NIS. Algumas opes: -d domnio -k -t -x Especifica o dominio NIS desejado Mostra aas chaves do mapa Evita a traduo do nome do mapa para o apelido Evita a traduo do nome do mapa para o apelido

214

hmarx@thor: ~> ypmatch hmarx flavia passwd hmarx:$1$pYJmDsRl$5Nzq713I0x5G60nYW7hfh/:1000:3000:Helio Marques Sobrinho,Starix,3284-3001:/home/hmarx:/bin/bash flavia:$1$m4ZTl.qN$/1xPFnxJhtYwPi9t4oNVL.:502:3000:Flavia de Castro Mendes Marques,,3284-3001:/home/flavia:/bin/bash

Manualmente, a base de dados poder ser inicializada pelo aplicativo ypinit: /usr/lib/yp/ypinit -m O ypinit ir criar um diretrio para o domnio em /var/yp, com os mapas e pedir os nomes dos servidores NIS. Voc s pode ter um servidor mestre. Caso queira aumentar o desempenho em uma rede grande, voc poder criar servidores escravos. Dispare o servidor NIS utilizando o aplicativo ypserv ou o script rcypserv. Os servidores escravos so inicializados utilizando o comando: /usr/lib/yp/ypinit -s mestre

Sistema Operacional GNU/Linux

215

LDAP - Lightweight Directory Access Protocol


Originalmente o LDAP foi criado como um front end para o protcolo X.500, pela Universidade de Michigan, implementando a maioria das suas funcionalidades com menor custo. Foram removidas as redundncias e as operaces raramente utilizadas. O protocolo LDAP otimizado para leitura e no possui controle de transaes ou rollbacks. estensvel atravs de modificaes em seus esquemas. Ele permite a distribuio de servidores e replicao de informaes em mltiplos locais. As informaes so armazenadas em atributos. O LDAP melhor no tratamento de informaes pequenas e normalmente com transaes simples em uma nica entrada.

Definies
DN RDN DIT LDIF OID Distinguished Name Relative Distinguished Name Directory Information Tree LDAP Data Interchange Format Object Identifier

Um DN composto por 2 partes. A parte mais esquerda um RDNe o restante um DN base. O DNS utilizado para gerar o DN base. Por exemplo, em uid=hmarx,ou=People,dc=linuxtech,dc=com,dc=br O RDN uid=hmarx e o DN base ou=People,dc=linuxtech,dc=com,dc=br

Sistema Operacional GNU/Linux

216

Estrutura hierrquica
As entradas so armazenadas em uma estrutura em rvore chamada Directory Information Tree. O DIT similar ao sistema de arquivos hierrquivo do Unix. Cada entrada pode conter dados e/ou conter informaces sobre outras entradas. Cada servidor contm uma sub-rvore.

Esquemas
Um esquema um conjunto de regras que descreve o tipo de dado a ser armazenado, Ele mantm a consistncia e a qualidade do dado. Um bom esquema reduz a duplicidade dos dados e mantm uma interface consistente entre as aplicaces e os dados. Um esquema contm atributos requeridos, atributos permitidos, informaes de como comparar atributos, limites e restries de atributos. Um atributo tem um nome (identificador nico), um identificador de objeto OID (sequncia de nmeros inteiros separados por ., a sintaxe do atributo e se o atributo multivalorado ou no. Os atributos definidos no RFC2256 so: uid cn sn l ou o dc st c User Id Common Name Surname Location Organizational Unit Organization Domain Component State Country

Sistema Operacional GNU/Linux

217

LDIF
As entradas do LDAP podem ser representadas em um arquivo texto com o formato LDIF LDAP Data Interchange Format. Isto permite alteraes fceis no dados, backups e transferncias de informaes para outros sistemas. Podem ser utilizados os aplicativos ldbmcat e slapcat para converter de base da dados ldbm para LDIF ou os aplicativos ldif2ldbm e slapadd para converter de LDIF para a base de dados ldbm.

Exemplo de LDIF
dn: uid=hmarx,ou=People, dc=linuxtech,dc=com,dc=br uid: hmarx cn: Helio Marques objectclass: account objectclass: posixAccount objectclass: top loginshell: /bin/bash uidnumber: 1000 gidnumber: 3001 homedirectory: /home/hmarx gecos: Helio Marques,,,, userpassword: {crypt}dF35L2K2TmOVU

Servidor LDAP
A implementao utilizada no Linux o Openldap que implementa o LDAPv3 com funcionalidades adicionais. O programa slapd o servidor LDAP que atende as requisies dos clientes e manipula a base de diretrios (DIT).

Sistema Operacional GNU/Linux Utilizando o modelo master/slave possvel implementar replicao dos dados::

218

O arquivo de configuraa o /etc/openldap/slapd.conf que inclui os esquemas bsicos e define os parmetros de acesso e funcionamento do servidor LDAP. O arquivo ladpd.conf (padro do openSuSE Linux) mostrado aqui por partes: 1) Inclusodos esquemas bsicos, mduloes e definio de arquivos de controle dos processos slapd:

# # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/yast.schema # Define global ACLs to disable default read access. # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org pidfile argsfile /var/run/slapd/slapd.pid /var/run/slapd/slapd.args

# Load dynamic backend modules: # modulepath /usr/lib/openldap/modules # moduleload back_bdb.la # moduleload back_hdb.la # moduleload back_ldap.la

Sistema Operacional GNU/Linux

219

Sistema Operacional GNU/Linux 2) Poltica de controle de acesso (ACLs):

220

# Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access to user password # Allow anonymous users to authenticate # Allow read access to everything else # Directives needed to implement policy: access to dn.base="" by * read access to dn.base="cn=Subschema" by * read access to attrs=userPassword,userPKCS12 by self write by * auth access to attrs=shadowLastChange by self write by * read access to * by * read # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING!

Sistema Operacional GNU/Linux 3) Definico da base de dados Aqui o domnio deve ser alterado para o escolhido.

221

############################################################ # BDB database definitions ############################################################ database bdb suffix "dc=my-domain,dc=com" checkpoint 1024 5 cachesize 10000 rootdn "cn=Manager,dc=my-domain,dc=com" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /var/lib/ldap # Indices to maintain index objectClass eq

Uma vez configurado, o servidor poder ser iniciado atravs do comando:

root@thor: # /etc/init.d/slapd start

ou, no openSuSE,

root@thor: # rcldap start

De forma similar aos outros servios, pode-se habilitar o slapd para que ele inicie automaticamente durante o processo de boot, atravs de:

root@thor: # chkconfig slapd on

Sistema Operacional GNU/Linux

222

Utilizao do Servidor LDAP


Para alterar a senha de uma entrada no LDAP utiliza-se o comando ldappasswd, por exemplo:

ldappasswd -W -D uid=hmarx,ou=People, dc=linuxtech,dc=com,dc=br uid=hmarx

Pesquisas so feitas utilizando o comando ldapsearch. Exemplos: ldapsearch -L uid=* ldapsearch -L objectclass=posixGroup ldapsearch -L objectclass=posixAccount ldapsearch -D uid=hmarx,ou=People, dc=linuxtech,dc=com,dc=br -W -L uid=hmarx

Alteraes podem ser feitas utilizando o comando ldapmodify. Exemplo:

ldapmodify -W -r -D "cn=Manager, c=linuxtech,dc=com,dc=br" < hmarx.ldif

A autenticao de usurios no Linux pode utilizar o LDAP atravs do PAM (pluggable authentication module. Outros servios, como o sendmail, apache, squid, podem utilizar o LDAP, alterando seus respectivos arquivos de configurao. Para o gerenciamento do LDAP atravs de interface grfica via WEB h o pacote RPM ldapaccount-manager (LAM). No openSuSE o LAM instalado no diretrio /srv/www/htdocs/lam. Ele deve ser configurado utilizando o script configure dentro deste diretrio. Utilizando o servidor WEB (apache), o LAM ser acessvel atravs da URL: http://localhost/lam

Sistema Operacional GNU/Linux

223

Servidor WEB
O servidor WEB um programa que atende requisies do protocolo HTTP - HyperText Transfer Protocol. No Linux, o servidor padro o apache. Documentos no padro HTML, formados por textos, imagens, sons e vdeos, so gerenciados e transferidos aos clientes (browsers) que os requisita. Para tornar as pginas dinmicas, so utilizados programas. Estes programas so chamados scripts, ou simplesmente CGIs (Common Gateway Interface). Os CGIs podem ser escritos em qualquer linguagem de programao (interpretada ou compilada). As mais comuns so: C, C++, perl, java, ou mesmo shell scripts. Para melhorar o desempenho e controlar o acesso a documentos e sites HTML, utiliza-se um programa proxy. No Linux, o proxy padro o squid.

Configurao do Apache
A configurao bsica do apache feita no arquivo /etc/httpd/httpd.conf. A configurao do apache2 est em arquivos no diretrio /etc/apache2. O arquivo /etc/apache2/httpd.conf inclui diversos arquivos de configurao. Nestes arquivos so definidos o modo de carga do httpd (standalone ou inetd), os diretrios dos documentos, imagens, scripts CGI, etc. So definidos tambm os portos TCP/UDP (normalmente 80 para http e 443 para https). Os arquivos padro a serem transferidos (index.htm[l], por exemplo), as permisses e seguranas tambm so definidos. Podem ser criados hosts virtuais. Cada um pode ter seu diretrio com os documentos HTML e programas CGI. O httpd pode ser disparado em modo standalone. So disparados processos httpd, que aguardam uma conexo nos portos definidos. No modo inetd, o httpd s ser disparado caso a conexo seja requisitada por um cliente.

Sistema Operacional GNU/Linux O arquivo /etc/httpd/httpd.conf dividido em sesses. Na sesso 1 so definidos os parmetros globais. As principais diretivas da sesso 1 so:

224

Diretiva
ServerType ServerRoot Timeout KeepAlive MaxKeepAliveRequests KeepAliveTimeout MinSpareServers MaxSpareServers StartServers MaxClients MaxRequestPerChild Listen LoadModule AddModule ExtendedStatus

Significado
Modo do disparo do httpd (standalone ou inetd) Diretrio raiz do servidor Tempo em segundos antes de enviar ou receber timeout Permite conexes persistentes (atende mais de uma requisio por conexo) Nmero mximo de requisies por conexo Espera em segundos pela prxima requisio do mesmo cliente antes de fechar uma conexo Nmero mnimo de processos httpd aguardando requisies Nmero mximo de processos httpd aguardando requisies Nmero inicial de processos httpd disparados Nmero mximo de clientes simultneos Nmero mximo de requisies por processo Portos/IPs adicionais aos default Mdulos carregados pelo apache Reconstruo dos mdulos definidos em LoadModule Habilita informaes completas exibidas em server-status

A sesso 2 configura o servidor principal (default) e opes no definidas nos hosts virtuais (sesso 3). As principais diretivas da sesso 2 so:

Diretiva
Port Listen User Group ServerAdmin ServerName DocumentRoot UserDir DirectoryIndex AccessFileName HostNameLookups TypesConfig DefaultType MIMEMagicFile

Significado
Porto para o protocolo HTTP (padro : 80) Portos e IPs adicionais (padro : 80 para HTTP e 443 para HTTPS) Usurio dos processos disparados (wwwrun) Grupo dos processos disparados (nogroup) Endereo de e-mail para envio de problemas. colocado em pginas de erro geradas pelo apache Nome do servidor enviado aos clientes. Este nome deve ser resolvido no DNS Raiz para os documentos (pginas WEB) Diretrio das pginas pessoais (em ~usurio) Arquivo(s) de ndice default (padro: index.html) Arquivos para o controle de acesso a cada diretrio Resolve o nome dos IPs dos clientes (DNS reverso) Arquivo para definio dos tipos de arquivos pela extenso (padro:/etc/httpd/mimes.types) Tipo a ser enviado ao cliente para arquivos desconhecidos (padro:text/plain) Arquivo para descoberta do tipo do documento (padro:/etc/httpd/magic)

Sistema Operacional GNU/Linux

225

O apache pode gerar logs de acesso e erro. Os logs de acesso podem ser definidos em diversos formatos. O formato do log de acesso uma cadeia de caracteres que pode incluir pseudovariveis como:

Varivel
%h %a %l %u %t %r %s %b %U %{Referer}i %{User-Agent}i

Significado
IP ou nome do computador remoto IP do cliente Identificao do usurio remoto (via identd) Identificao do usurio autenticado ou Horrio de acesso Mtodo, URI e verso do HTTP (primeira linha da requisio) Cdigo de erro (por exemplo, 200 = OK e 404 = documento no encontrado) Nmero de bytes transferidos O caminho da URL URL que causou a referncia requisio Identificao completa do cliente (browser e plataforma)

Os arquivos de log podem ser definidos pelas diretivas:

Diretiva
ErrorLog LogLevel LogFormat CustomLog

Significado
Arquivo padro para log de erros (padro:/var/log/httpd/error_log) Nvel das mensagens de erro (debug, info, notice, warn, crit, alert, emerg) (padro:warn) Definio de formatos de log para CustomLog Arquivo e formato do log de acesso (padro:/var/log/httpd/access_log e common)

Sistema Operacional GNU/Linux

226

Cada diretrio acessvel pelo apache pode ter o seu acesso controlado atravs de diretivas includas entre os tags <Directory diretrio> e </Directory>. As principais diretivas de controle de acesso so:

Diretiva
AuthUserFile AuthGroupFile AuthUserDBMFile AuthGroupDBMFile Options AllowOverride

Significado
Nome do arquivo texto com usurios e senhas Nome do arquivo texto com os grupos Nome do arquivo DBM com usurios e senhas Nome do arquivo DBM com grupos Opes de acesso precedidas ou no por + ou - (None, All, Indexes, Includes, FollowLinks, ExecCGI e Multiviews) Opes que podem ser alteradas no arquivo definido em AccessFileName (None, All, Options, FileInfo, AuthConfig e Limit) Ordem de processamento das diretivas Allow from e Deny from Clientes com acesso permitido Clientes com acesso negado Valida todas as diretivas Allow from e Deny from

Order Allow from Deny from Satisfy

Sistema Operacional GNU/Linux

227

No apache2, os arquivos incluidos pelo /etc/apache2/httpd.conf contm as configuraces de cada sesso: default-server.conf server-tuning.conf errors.conf listen.conf uid.conf vhosts.d/*.conf mod_autoindex-defaults.conf mod_status.conf mod_info.conf mod_tidy.conf ssl-global.conf mod_log_config.conf mod_userdir.conf mod_mime-defaults.conf mod_usertrack.conf Uma requisio de um cliente formada por 3 sees: a primeira linha da mensagem contm o comando HTTP, conhecido como mtodo, a URI (Uniform Resource Identifier) que identifica o arquivo requisitado e a verso do HTTP. Alm dos 3 mtodos mais comuns (GET, HEAD e POST), h ainda os mtodos LINK, UNLINK, PUT, DELETE, OPTIONS, TRACE, CONNECT e PROPFIND. O mtodo GET o mais utilizado pelos browsers para obter os documentos. O mtodo HEAD equivalente ao GET exceto que os dados (por exemplo, o corpo da pgina) no so enviados. O mtodo POST permite que sejam enviados dados para o servidor. Ele utilizado em forms onde os dados so transformados em uma lista de variveis e valores a serem processados por um CGI. Por exemplo, a requisio: HEAD /index.html HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/3.01 (X11; Linux 2.4.19-4GB i686) Host: www.starix.com.br Accept: image/gif, image/jpeg, */*

Gera uma resposta do servidor como a seguinte: HTTP/1.1 200 OK Date: Wed, 03 Jun 2003 14:23:53 GMT Server: Apache/1.3.26 (Linux/SuSE) PHP/4.2.2 mod_perl/1.27 Last-Modified: Sat, 31 May 2003 17:16:42 GMT ETag: "113b69-d1-3e8e37a" Accept-Ranges: bytes Content-Length: 2857 Content-Type: text/html

Sistema Operacional GNU/Linux

228

Mtodos de acessos a pginas WEB podem ter acessos limitados incluindo diretivas de controle entre <Limit mtodos> e </Limit> ou <LimitExcept mtodos> e </LimitExcept>. Para controlar a visibilidade de arquivos basta incluir diretivas de de controle entre <Files arquivos> e </Files>. Um exemplos tpico inclui os arquivos de controle de acesso (que comecam com .ht) , por default, .htaccess:

<Files ~ "^\.ht"> Order allow, deny Deny from all Satisfy All </Files>

Alguns caminhos na URL no so exatamente os caminhos dos diretrios a partir da raiz do site (DocumentRoot). Alguns exemplos so o diretrio dos CGIs, o diretrio dos cones e o manual do apache: ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/" Alias /icons/ "/srv/www/icons/" Alias /manual/ "/usr/local/httpd/manual/" Outros exemplos so pginas geradas pelo prprio apache como os handlers de /serverstatus e /server-info. Sites Virtuais Pginas para domnios virtuais podem ser definidas atravs de diretivas inseridas entre <VirtualHost nome> e </VirtualHost>. Deve ser definida a diretiva NameVirtualHost para que o apache selecione o site web a partir do nome. O nome dever ser resolvido pelo DNS. O nome pode ser substitudo por um IP, por IP:porto, por * ou *:porto, definindo a partir de que IP/porto o domnio virtual estar disponvel. O nome ser resolvido para o IP utilizando o DNS. No SuSE Linux, os domnios virtuais so definidos nos arquivos *.conf do diretrio /etc/apache2/vhosts.d/. Crie um arquivo para cada domnio virtual. Para que um site seja acessvel tanto por http://www.meudominio.com quanto por http://meudominio.com os nomes www.meudominio.com e meudominio.com devem ser resolvidos para um IP no DNS (registro A). Estes e outros apelidos podem ser definidos na sesso <VirtualHost www.meudominio.com> diretiva ServerAlias, como mostrado a seguir.

Sistema Operacional GNU/Linux Arquivo /etc/apache2/vhosts.d/meudominio.com.conf <VirtualHost www.meudominio.com> ServerName www.meudominio.com ServerAlias meudominio.com DocumentRoot /srv/www/meudominio.com/htdocs ErrorLog logs/meudominio-error.log CustomLog logs/meudominio-access.log ScriptAlias /cgi-bin/ "/srv/www/meudominio.com/cgi-bin/" Alias /icons/ "/srv/www/icons/" <Directory "/srv/www/meudominio.com/htdocs/private"> AllowOverride None AuthType Basic AuthName "Acesso restrito" AuthUserFile /srv/www/meudominio.com/users require valid-user </Directory> </VirtualHost>

229

O arquivo de autenticao definido pela diretiva AuthUserFile criado e atualizado pelo programa /usr/bin/htpasswd ou /usr/sbin/htpasswd2. Para o arquivo definido pela diretiva AuthDBMUserFile, utilizado o programa /usr/bin/dbmmanage ou /usr/sbin/dbmmanage2. O apache pode tambm gerar pginas automaticamente para alguns caminhos especiais da URL definidos entre <Location caminho> e </Location>. A diretiva SetHandler define como o caminho ser tratado, por exemplo: <Location /cgi-bin> AllowOverride None Options +ExecCGI - Includes SeHandler cgi-script </Location> Outros caminhos virtuais so o /server-info, o /server-status e o /backhand. Os mdulos devem ser habilitados nos arquivos de configurao do Apache (ou na varivel APACHE_MODULES do arquivo /etc/sysconfig/apache2). At o SuSE Linux 7.3, para que o apache seja disparado automaticamente, coloque START_HTTP=yes no arquivo /etc/rc.config. e algumas opes eso definidas em /etc/rc.config.apache.rc.config. A partir do SuSE Linux 8.0 as configuraes esto em /etc/sysconfig/apache ou /etc/sysconfig/apache2 (executando depois o SuSEconfig) e voc dever definir os runlevels em que o apache ir rodar. Utilize o YaST para simplificar este processo. Voc pode utilizar o script rcapache para iniciar, parar, reinicializar ou recarregar a configurao do apache manualmente. Conforme definido em /etc/httpd/httpd.conf (ou no arquivo /etc/apache2/httpd.conf), arquivos como .htpasswd (ou .htaccess) podem existir nos diretrios dos documentos WEB para controle de acesso com senha por usurios ou grupos. Note que diretivas de controle de acesso podem tambm ser definidas para cada VirtualHost.

Sistema Operacional GNU/Linux

230

O apache gera diversos logs que podem ser analisados por programas como o webalizer que cria relatrios e grficos de acessos para pginas WEB:

Sistema Operacional GNU/Linux

231

Servidor de proxy
O software padro de proxy o squid. Alm de acelerador para acesso as pginas WEB, ele serve tambm para controlar e registrar os acessos a elas. O arquivo de configurao do squid o /etc/squid.conf at o SuSE 7.3 e o /etc/squid/squid.conf a partir do SuSE 8.0. Este arquivo contm diversos parmetros para configurar a utilizao de memria e de espao em disco pelos objetos armazenados pelo squid. Alm disto, ele contm regras de controle de acesso s pginas WEB. Um proxy normalmente utilizado em conjunto com um firewall. Utilizando transparent proxy pode-se acelerar e controlar o acesso a pginas WEB mesmo que o usurio do browser no defina a utilizao de proxy. Para controle de acesso deve-se primeiro definir o que vai ser controlado. Isto feito atravs das acls (Access Control Lists). Uma acl definida por uma das seguintes sintaxes globais: acl nome tipo argumentos acl nome tipo " arquivo" O tipo define elementos para o controle: src, dst, srcdomain, dstdomain, time, port, proto, method, browser, user, srcdom_regex, dstdom_regex, maxconn, snmp_community, ... O formato do(s) argumento(s) ir depender do tipo da acl. Assim, por exemplo, src requer um argumento tipo ip/mscara, srcdomain requer um domnio (como .starix.com.br), port pode ser definido pelo seu nmero ou por uma faixa (0-1024, por exemplo), e method pode ser, por exemplo, GET, PUT ou POST. Os argumentos de uma acl podem ser colocados no arquivo, um em cada linha. As acls podem ser utilizadas nos controles de acesso ao porto http (http_access) ou ao porto icp (icp_access), utilizando as sintaxes: http_access { allow | deny } [ ! ] nome-da-acl ... icp_access { allow | deny } [ ! ] nome-da-acl ... O smbolo ! indica negao da acl. Estas regras de controle so processadas sequencialmente at que alguma seja vlida, permitindo ou negando o acesso. Caso nenhuma regra http_access (ou icp_access) seja satisfeita pelas condies de acesso, o squid assumir o contrrio do definido pela ltima regra. uma boa prtica definir http_access allow all ou http_access deny all como ltima regra para evitar confuses. Por exemplo, para permitir o acesso apenas para a rede local, durante o horrio de servio a sites cujas URLs que no possuam palavras restritas contidas no arquivo /etc/squid/bad_words, o controle de acesso pode ser:
# listas de controle de acesso acl bad_words urlpath_regex "/etc/squid/bad_words" acl local_net src 192.168.200.0/24 acl workdays M-F 08:00-17:59 # acessos http http_access deny bad_words http_access deny ! local_net http_access allow workdays http_access deny all

Sistema Operacional GNU/Linux

232

O squid mantm o cache das pginas em um diretrio, normalmente /var/squid/cache (verses do SuSE Linux anteriores a 8.0) ou /var/cache/squid (verso SuSE Linux 8.0 ou superior). Este diretrio definido pela diretiva cache_dir. Podem ser definidos vrios diretrios utilizando uma linha cache_dir para cada diretrio. Para os tipos ufs (mais utilizado), aufs e diskd, podem ser definidos o nmero de diretrios no primeiro e segundo nvel. Os default so 16 diretrios no primeiro nvel e 256 no segundo, reservando 100MB. Eles pode ser criados atravs de squid -z. O squid gera logs no diretrio /var/squid/logs (verso SuSE Linux antes da 8.0) ou /var/log/squid (verso SuSE Linux 8.0 ou superior) que podem ser analisados por programas como o calamaris para a gerao de relatrios de acessos. Entradas no arquivo de log de acesso do squid (/var/log/squid/access.log) contm o instante do acesso o nmero de bytes, o IP de origem, o status da requiisico e a URL acessada. Alguns exemplos podem ser vistos abaixo:

1262558475.147 1752 192.168.200.41 TCP_MISS/200 17375 GET http://www.linux.org/ DIRECT/198.182.196.56 text/html 1262558489.078 1034 192.168.200.41 TCP_REFRESH_HIT/200 1509 GET http://pagead2.googlesyndication.com/pagead/abglogo/abg-en-100c-000000.png DIRECT/66.249.80.164 image/png 1262558531.075 28 192.168.200.41 TCP_HIT/200 622 GET http://www.google.com/images/icons/sectionized_ui/play_c.gif - NONE/- image/gif 1262558670.032 5093 192.168.200.41 TCP_REFRESH_MISS/200 109887 GET http://www.kde.org/dot/kde-apps-content.rdf - DIRECT/62.70.27.118 text/rdf 1262561636.080 2 192.168.200.41 TCP_DENIED/403 1428 GET http://www.playboy.com/ NONE/- text/html

Sistema Operacional GNU/Linux Calamaris

233

O calamaris usado para analisar os logs de acesso do squid e gerar uma pgina WEB com os relatrios. Os relatrios gerados so: Summary Incoming requests by method Incoming UDP-requests by status Incoming TCP-requests by status Outgoing requests by status Outgoing requests by destination Request-destinations by 2nd-level-domain Request-destinations by toplevel-domain TCP-Request-protocol Requested content-type Requested extensions Incoming UDP-requests by host Incoming TCP-requests by host Distribution Histogram Performance in 1 hour steps O script bash abaixo pode ser utilizado via cron para periodicamente atualizar o relatrio de acesso utilizando o calamaris. Altere as variveis de configuraco para o seu domnio.

#!/bin/sh # # Script para gerar relatorio do Squid # # Helio Marques <hmarx@linuxtech.com.br> # (C) 2002-2010 HMarx #---------------------------------------------------------------------------------# Configuration TITLE="Linuxtech" CAT=which cat CALAMARIS=which calamaris ACCESSFILE=/var/log/squid/access.log CACHE_FILE=/var/log/squid/calamaris_cache.db REP_FILE=/srv/www/linuxtech.com.br/htdocs/proxy/index.html #---------------------------------------------------------------------------------if [ -f $CACHE_FILE ] then $CAT $ACCESSFILE | $CALAMARIS -F html -H "$TITLE" -a -u -i $CACHE_FILE -o $CACHE_FILE > $REP_FILE else $CAT $ACCESSFILE | $CALAMARIS -F html -H "$TITLE" -a -u > $REP_FILE fi

Sistema Operacional GNU/Linux A seguir podem ser vistos alguns dos relatrios gerados.

234

Sistema Operacional GNU/Linux

235

Sistema Operacional GNU/Linux

236

Sistema Operacional GNU/Linux

237

squidGuard H ainda o plugin squidGuard para o squid que permite a definio de filtros, redirecionamento e controle de acesso. Ele facilmente configurado atravs do arquivo /etc/squidguard.conf. Voc poder encontrar exemplos de /usr/share/doc/packages/squidgrd. configurao nos arquivos do diretrio

Aps configur-lo, altere o programa de redirecionamento do squid para o squidGuard na diretiva redirect_program no arquivo squid.conf.

redirect_program /usr/sbin/squidGuard -c /etc/squidguard.conf

Normalmente o aplicativo squidGuard utiliza os arquivos de dados do diretrio /var/lib/squidGuard/db, e gera os logs em /var/log/squidGuard.

Sistema Operacional GNU/Linux

238

Correio eletrnico - e-mail


Um usurio de um sistema Unix-like possui um endereo eletrnico na forma: usurio@mquina ou domnio O smbolo @ chamado (e lido) at em ingls, o que significa em. Por exemplo, hmarx@starix.com.br o endereo eletrnico do usurio hmarx no domnio starix.com.br. No Brasil, o smbolo @ chamado de arroba. Todo usurio local possui uma caixa postal onde os seus e-mails de chegada so armazenados. Os e-mails do usurio usurio so processados pelo procmail. Normalmente so armazenados diretamente no arquivo /var/spool/mail/usurio. O comportamento do procmail pode ser alterado atravs do arquivo .procmailrc residente no diretrio do usurio (~usurio). O sistema de e-mail formado por trs componentes: MUA - Mail User Agent Esta a interface utilizada pelo usurio para ler e escrever e-mails. Hoje existem centenas de aplicativos que so ou incluem o MUA. Alguns exemplos so: mail, mutt, pine, elm, xfmail, coolmail, Kmail, Netscape Messenger, Applixware, StarOffice, entre outros. MDA - Mail Delivery Agent Responsvel pela entrega do e-mail ao usurio. O mais comum o procmail j citado acima. O comportamento default do procmail simplesmente colocar o e-mail na caixa de entrada do usurio, adicionando-o ao fim do arquivo que representa a caixa postal de entrada daquele usurio (/var/spool/mail/usurio). MTA - Mail Transport Agent So os programas que tratam da transmisso e recepo de e-mails. Os mais utilizados so o sendmail, o smail, o exim, o postfix e o qmail. Todos estes programas so totalmente configurveis s necessidades do sistema de e-mail. H ainda programas que aceitam conexes dos MUAs para que o usurio possa ler seus emails. A conexo pode ser atravs de protocolo POP (Post Office Protocol) ou IMAP (Internet Message Access Protocol). Com o protocolo POP, os e-mails so transferidos da caixa de entrada para folders do computador rodando o MUA. Na utilizao de IMAP, os e-mail permanecem no servidor. A deciso de apagar ou no as mensagens lidas (ou no) feita normalmente por configurao do MUA. Hoje muito comun a utilizao do chamado webmail. Neste caso os e-mails so enviados e recebidos atravs de pginas WEB. Os e-mails permanecem no servidor e podem ser lidos de qualquer lugar e mquina. Os programas que implementam um webmail pode utilizar protocolos como o POP ou IMAP, ou ainda tratar diretamente o arquivo da caixa de entrada do usurio.

Sistema Operacional GNU/Linux

239

Exemplo de MUA:

Kmail - a interface do usurio no ambiente grfico KDE.

Mutt - um dos diversos MUAs com interface texto

Sistema Operacional GNU/Linux

240

Protocolos de e-mail
Existem dois protocolos bsicos: o de envio e o de recebimento ou leitura de e-mail. O protocolo de envio de e-mail o SMTP - Simple Mail Transfer Protocol. O roteamento de mensagens tratado pelas mquinas Mail Exchange (definidas nos registros MX do DNS). O protocolo de leitura de e-mails normalmente o POP (hoje na sua verso POP3). O protocolo POP basicamente configurado no MUA. Um e-mail no diretrio de spool

/ | Cabealho / \ | \

From flavia@starix.com.br Sun Jan 16 14:08:42 2000 Return-Path: <flavia@starix.com.br> Received: (from flavia@thor.starix.br>) by thor.starix.com.br (8.9.3/8.9.3) id OAA14834 for hmarx; Sun, 16 Jan 2000 14:08:41 -0200 Date: Sun, 16, Jan 2000 14:08:41 -0200 From: Flavia de Castro Mendes Marques<flavia@starix.com.br> Message-Id: <200001161608.OAA14834@thor.starix.br> To: hmarx@thor.starix.br Subject: Um simples e-mail

Corpo

/ Hi Hmarx ! | Como vai ? E os projetos ? / \ Abraos, | Flavia \

Uma mensagem eletrnica , normalmente, transferida em formato texto, mesmo contendo arquivos binrios anexos. Esta mensagem armazenada no arquivo de spool e composta por um cabealho e um corpo. O cabealho contm informaes como a origem, destino, assunto, data e nomes de arquivos anexos. O corpo contm o texto da mensagem e os arquivos anexos. Note que, entre o cabealho e o corpo, h uma linha em branco. Estudaremos aqui o sendmail, o MTA mais utilizado em plataformas Unix.

Sistema Operacional GNU/Linux Protocolo do sendmail

241

Quando um usurio em uma mquina (local) quer enviar um e-mail para um usurio em outra mquina (remota), estabelecida uma conexo SMTP. O protocolo SMTP muito simples. A mquina local se identifica, informa o remetente do e-mail, o destinatrio do e-mail e o contedo (corpo) da mensagem. A mquina remota pode realizar verificaes aceitando ou no as diversas informaes. Veja abaixo um diagrama simples desta conversao.

Sistema Operacional GNU/Linux

242

Configurao do sistema de e-mail


Existem diversos nveis de configurao. No MUA, o usurio ir informar sua identidade (nome, e e-mails) e os servidores para envio e recepo de mensagens. Ele pode decidir se as mensagens iro ou no ser removidas do servidor aps serem transferidas para o MUA. Um usurio local pode fazer um re-encaminhamento automtico de suas mensagens criando o arquivo .forward em seu diretrio pessoal contendo: usurio2 Apenas redireciona para o usurio requerido \usurio,usurio2 Redireciona para o usurio2, mantendo uma cpia para o usurio \usurio, "| programa" Mantm uma cpia para o usurio e passa a mensagem como entrada para o programa Voc pode criar apelidos para um usurio no arquivo /etc/aliases. Aps modific-lo, execute o programa newaliases (ou sendmail -bi). Ele ir reconstruir o arquivo /etc/aliases.db. Usurios em domnios virtuais podem ser definidos em /etc/mail/virtusertable. Deve ser utilizado o programa makemap para atualizar a base de dados toda vez que este arquivo for alterado. Isto feito automaticamente pelo SuSEconfig. Os arquivos texto no diretrio /etc/mail podem ser convertidos nas bases de dados .db no mesmo diretrio utilizando-se o make. O arquivo /etc/mail/Makefile j est configurado para executar os programas necessrios para reconstruir a base de dados do sistema de e-mail.

Configurao do sendmail
O sendmail o programa mais usado como MTA. Sua configurao bsica est no arquivo /etc/sendmail.cf. Podem ser configuradas informaes como os nomes da mquina local (nome e/ou domnio), regras de tratamento dos e-mails (chamadas de regras de reescrita), seguranas e limitaes. Este arquivo utiliza diversos arquivos texto e .db localizados em /etc/mail.

Sistema Operacional GNU/Linux

243

Abaixo pode ser visto um diagrama simplificado do fluxo das regras de tratamento dos emails:

As regras e os valores pr-definidos pela SuSE so bastante razoveis. A configurao do SuSE Linux atravs do YaST j modifica alguns dos parmetros principais nos arquivos de configurao. Voc pode tambm alterar os valores das variveis definidas diretamente nos arquivos /etc/rc.config e /etc/rc.config.d/sendmail.rc.config para o SuSE Linux 7.x, ou nos arquivos /etc/sysconfig/mail e /etc/sysconfig/sendmail para o SuSE Linux 8.x ou superiores. Execute o SuSEconfig para efetivar as alteraes. Algumas variveis importantes so: Em /etc/sysconfig/mail: Varivel
MAIL_CREATE_CONFIG FROM_HEADER SMTPD_LISTEN_REMOTE CONF_TYPE

Valores yes | no <domnio> yes | no standard | advanced | undef yes | no

Significado O SuSEconfig gerar o arquivo sendmail.cf Domnio default para FROM Aceita conexes remotas ? Tipo de configuraco do servidor de e-mail s despacha e-mail se o sendmail for disparado manualmente

SENDMAIL_EXPENSIVE

Estas opces so independentes do MUA (no openSuSE, sendmail ou postfix).

Sistema Operacional GNU/Linux Em /etc/sysconfig/sendmail: Varivel


SENDMAIL_LOCALHOST SENDMAIL_SMARTHOST SENDMAIL_NOCANONIFY SENDMAIL_ARGS

244

Valores localhost ... <servidor do provedor> yes | no -L sendmail -Am -bd -q30m om -L sendmail-client -Ac -q30m <dominio> ... yes | no gssapi | otp | login | plain | digest-md5 | cram-md5 | all gssapi | otp | login | plain | digest-md5 | cram-md5 | all server | client | both <rbl-server> ...

Significado Nomes da mquina local Servidor opcional que transporta seus e-mails Transforma os e-mails na forma cannica (requer pesquisas no DNS) Opes de execuo do sendmail

SENDMAIL_CLIENT_ARGS MASQUERADE_DOMAINS SENDMAIL_EXPENSIVE SMTP_AUTH_MECHANISMS SMTP_AUTH_SERVER

Opes de execuo do sendmail client Domnios a serem mascarados com $FROM_HEADER S despacha e-mail se o sendmail for disparado manualmente Lista de mecanismos de autenticao como cliente Lista de mecanismos de autenticao como servidor Uso da certificao Servidores de pesquisa em DNS por open relays

STARTTLS SENDMAIL_DNSRBL

Alguns parmetros como temporizaes, limite de tamanho de mensagens, limite de conexes, limite de processos e filas de e-mail devem ser modificados diretamente no arquivo /etc/sendmail.cf.

Sistema Operacional GNU/Linux Configuraes mais complexas

245

Caso queira configurar o sendmail manualmente, voc deve fazer SENDMAIL_TYPE="no", criar ou modificar o sendmail.cf (use o /etc/mail/linux.mc como template) e executar o SuSEconfig. Exemplo:
thor:~ # cp /etc/mail/linux.mc mylinux.mc thor:~ # p <edite o mylinux.mc> thor:~ # m4 mylinux.mc > /etc/sendmail.cf thor:~ #

Voc pode ainda precisar editar alguns arquivos como: Arquivo /etc/mail/virtusertable /etc/mail/relay-domains /etc/mail/access /etc/mail/genericstable /etc/mail/mailertable /etc/mail/local-host-names Definio mapeamento de usurios de domnios virtuais definio de dominios para o qual ser aceito relay polticas de acesso mapeamento de usurios no qualificados definio de transportadores de e-mail nomes de hosts e domnios considerados locais

No se esquea de atualizar os arquivos .db utilizando o make no diretrio /etc/mail (ou executando o SuSEconfig).

Sistema Operacional GNU/Linux Programas adicionais ao sistema de e-mail Hoje h uma preocupao muito grande com os vrus transmitidos atravs de e-mails. Para isto pode ser utilizado o amavis que um programa que decompe um e-mail em suas partes e ativa um anti-vrus sua escolha para verificar a existncia e eliminar os vrus. Verses atualizadas do amavis so disponveis no site http://www.amavis.org. Alm do anti-vrus a ser utilizado (como antivir da H+BEDV e o uvscan da McAfee, entre outros), ele permite a configurao de que avisos e para quem dever ser enviado (destinatrio, remetente e administrador ou postmaster).

246

Para que a verificao de um sistema anti-vrus seja eficaz, ele dever ser atualizado com frequncia. comum uma empresa possuir um link com um provedor de acesso Internet compartilhando este acesso atravs de um gateway. Esta empresa poder ter um servidor de e-mail local, muitas vezes inacessvel pela Internet. Este servidor permitir que uma estao de trabalho local (principalmente com sistemas Microsoft Windows) faa o envio de e-mails de forma mais eficiente (utilizando a velocidade da rede local), liberando a mquina para a execuo de outros aplicativos. Este servidor poder executar ainda o fetchmail que, com uma frequncia definvel, busca os e-mails de um provedor da Internet para as caixas locais dos usurios. Neste processo, o fetchmail tambm ir utilizar o sendmail para o envio local, utilizando assim o amavis para a verificao de existncia de vrus. Logo, nenhum e-mail sai ou entra na empresa contendo vrus. Fila de e-mails Voc poder ver a fila de e-mails atravs do programa mailq. O processamento da fila poder ser forado chamando o sendmail com a opo -q, normalmente utilizada em conjunto com -v para acompanhar o tratamento das mensagens.

Sistema Operacional GNU/Linux

247

FTP - File Transfer Protocol


Para transferir arquivos de uma mquina para outra, normalmente utilizado o protocolo FTP. Existem diversos servidores disponveis para o Linux: ftpd, wu-ftpd, protftp,... Existe uma verso mais simples do protocolo FTP, denominada TFTP - Trivial File Transfer Protocol, usado pelo bootp - protocolo de boot remoto. A configurao do FTP feita atravs dos seguintes arquivos, encontrados no diretrio /etc: Arquivo /etc/ftpaccess /etc/ftpusers /etc/ftpconversions /etc/ftpwelcome /etc/ftpchroot Significado define o comportamento do servio de ftp usurios que no podem se conectar ao servio de ftp converses conhecidas pelo servidor de ftp mensagem de boas vindas usurios cuja sesso FTP ter o diretrio pessoal como raiz

No diretrio pessoal do usurio ftp, normalmente /usr/local/ftp, no sub-diretrio msgs, podem ser criados arquivos com mensagens especiais (como welcome.msg e msg.dead). Note que, quando um usurio chrooted, ele deve ter em seu diretrio os arquivos mnimos para que todos os comandos FTP funcionem corretamente (como o bin/ls e as bibliotecas utilizadas, em lib/). Clientes FTP Alm de navegadores como o Lynx, o Netscape, o Konqueror e o StarOffice, existem diversos clientes, como o tradicional ftp, o xftp e o ncftp.

Sistema Operacional GNU/Linux

248

Sesses remotas
Ao contrrio da maioria dos sistemas operacionais, voc no precisa estar na console do computador para executar programas nele. Voc pode utilizar um terminal em modo texto ou grfico, estando at mesmo a quilmetros de distncia do computador. Para isto, existem programas servidores como o telnetd , o rlogin e o sshd, alm e XServers para diversas plataformas. Um terminal modo texto ou semi-grfico pode ser conectado a um computador atravs de uma porta serial, um modem ou mesmo uma rede TCP/IP. Um computador qualquer pode ser utilizado como terminal atravs de um programa emulador. Para aplicaes em modo texto ou semi-grfico, existem emuladores de terminais tipo VT100, ANSI e outros. Em modo grfico, normalmente so utilizados os Xterminals (terminal com protocolo X11 ou terminal do X Window). Um computador em rede pode executar um XServer e assim ser transformado em um Xterminal. Existem diversos aplicativos X Window que emulam um terminal texto (como o xterm, o kvt, o konsole, e o rxvt). Alguns destes permitem cores e at imagens de fundo. Para uma sesso segura h o SSH - Secure shell, que criptografa toda a comunicao e utiliza autenticao RSA. A configurao bsica feita atravs do arquivos /etc/ssh_config na verso 1 ou /etc/ssh/ssh_config na a verso 2. Para permitir a execuo remota de um aplicativo X grfico pode-se utilizar o ssh com a opco -X (Enable X Forwarding). A incluso da opo -C habilita a compresso dos dados na conexo SSL.

Sistema Operacional GNU/Linux

249

PPP - Point to Point Protocol


Para o estabelecimento de conexes ponto a ponto, incluindo negociao de parmetros de comunicao, foi criado o protocolo PPP. Este o protocolo utilizado quando se faz uma conexo discada a um provedor de acesso Internet. O PPP basicamente trata do envio de datagramas de um nodo a outro. Normalmente, o PPP usado em linhas seriais diretas ou discadas. Ele estabelece uma conexo TCP/IP entre um equipamento e outro. Para estabelecer a conexo fsica e de enlace, o ppp utiliza o programa chat. O chat responsvel, por exemplo, por discar o nmero do provedor e esperar que o modem estabelea a portadora. Entra ento o pppd, que valida a conexo e negocia todos os parmetros do TCP/IP at o incio da sesso. O usurio pode ser validado atravs de login, PAP ou CHAP. Configurao do servio PPP O arquivo principal de configurao do servio PPP o /etc/ppp/options. Para cada dispositivo especfico, pode haver tambm um arquivo com nome /etc/ppp/options.dispositivo (por exemplo, /etc/ppp/options.ttyS2 para o dispositivo /dev/ttyS2). No arquivo /etc/options so definidas as opes globais ou default. Nos arquivos /etc/ppp/options.dispositivo, so definidas as opes especficas para a conexo atravs daqueles dispositivos. O pppd procura por suas opes nos arquivos /etc/ppp/options, /etc/ppp/options.dispositivo, e ~/.ppprc antes de processar as opes passadas como argumento na linha de comando. A nica opo da linha de comando tratada antes o nome do dispositivo para que o pppd monte o nome do arquivo options.dispositivo. O pppd remove o prefixo /dev/ e converte / restantes em .. Entre as opes mais importantes esto: noipdefault ou iplocal:ipremoto modem ou local ipcp-accept-local ipcp-accept-remote ms-dns servidorDNS [no]defaultroute [no]replacedefaultroute [no]auth Define os IPs local e remoto Utilizao ou no dos sinais de controle de modem Aceita o IP local dado pelo peer Aceita o IP remoto dado pelo peer Servidor(es) de DNS Adiciona (ou no) rota default Substitui (ou no) a rota default Autentica (ou no) o peer

Sistema Operacional GNU/Linux Conexo discada com a Internet

250

Para a realizao de uma conexo discada a um provedor de acesso Internet, sua mquina dever ter um modem. A instalao de um modem feita de forma simples atravs do YaST. Normalmente um modem (interno ou externo) acessvel atravs de uma interface serial padro associada a ele. Ser criado um link do dispositivo real (/dev/ttySi) para /dev/modem. Nada mais alm da porta de E/S e a interrupo so necessrias ao Linux. Para a verificao do acesso e funcionamento do modem, voc poder utilizar os comandos texto minicom ou kermit. O kermit um aplicativo tradicional de comunicao que possui porte para diversos sistemas operacionais. Ambos possuem funes como emulao de terminal e de transferncia de arquivos. Outro aplicativo para deteco e testes de conexo discada Internet o wvdial, que tambm utilizado pelo YaST. A utilizao dos comandos do modem (por exemplo, o padro AT Hayes) feita pelo aplicativo. Existem vrios programas que facilitam a configurao da conexo de uma estao de trabalho Linux Internet. Em modo grfico, KDE, existem os programas kppp e kinternet. Nestes programas voc informa os dados necessrios conexo a um provedor de acesso (basicamente nmero a ser discado, login e senha).

kppp - conexo dial-up

Sistema Operacional GNU/Linux

251

Um uso comum do pppd a discagem para um provedor de Internet. Ele pode ser feito simplesmente atravs da chamada:

$ pppd call provedor

onde o arquivo /etc/ppp/peers/provedor contm, por exemplo:


ttyS2 38400 crtscts connect /usr/sbin/chat -v -f /etc/ppp/chat-provedor noauth

e o arquivo /etc/ppp/chat-provedor tem algo como:


ABORT NO CARRIER ABORT NO DIAL TONE ABORT ERROR ABORT NO ANSWER ABORT BUSY ABORT Username/Password Incorrect at OK atd0&c1 OK atdt123456 name: ^Umeulogin word: \qminhasenha ispts \a^Uppp ~-^Uppp-~

Os usurios, mquinas, senhas e endereos IPs para as validaes PAP e CHAP esto respectivamente nos arquivos /etc/ppp/pap-secrets e /etc/ppp/chap-secrets. Durante a negociao dos parmetros, o pppd dispara alguns scripts localizados em /etc/ppp, passando argumentos que podem ser utilizados, por exemplo, para acertos de tabelas de roteamento ou contabilizao: auth-up interface peer usurio dispositivo velocidade Chamado logo que (e se) a autenticao do peer seja feita. auth-down interface peer usurio dispositivo velocidade Chamado logo que a sesso seja terminada. ip-up interface dispositivo velocidade iplocal ipremoto parms Chamado logo que os endereos IPs estejam negociados. ip-down interface dispositivo velocidade iplocal ipremoto parms Chamado logo que os endereos IPs sejam liberados.

Sistema Operacional GNU/Linux

252

Uma porta que aceita uma conexo PPP em uma porta serial ou modem pode ser configurada de diversas formas: O pppd pode ser disparado diretamente na porta (utilizado normalmente em linhas privadas). O pppd pode ser disparado manualmente ou automaticamente aps o login (h um getty na porta e opcionalmente o shell o pppd). O pppd pode ser disparado automaticamente quando necessrio pelo mgetty (basta ativar a opo /AutoPPP/ no arquivo /etc/mgetty+sendfax/login.config). Conexo por demanda Para conexes por demanda pode ser utilizado o diald. Este programa configurado atravs do arquivo /etc/diald.conf. Neste arquivo voc define o dispositivo de conexo, velocidade, modo de conexo e parmetros para o pppd. Um exemplo simples pode ser visto abaixo.
mode ppp device /dev/modem speed 115200 modem lock crtscts local 192.168.0.1 remote 192.168.0.2 defaultroute debug 0x0018 dynamic include /usr/lib/diald/standard.filter connect /usr/lib/diald/connect pppd-options noauth noipdefault ipcp-accept-local ipcp-accept-remote user usuario

Neste exemplo, ser utilizada uma conexo discada (atravs do script /usr/lib/diald/connect) com IP dinmico, incluindo a rota default). No diretrio /usr/lib/diald esto diversos arquivos. O arquivo diald.defs o primeiro arquivo lido quando o diald disparado. O arquivo /usr/lib/diald/standard.filter contm definies das regras para ativao e desativao da conexo (como por exemplo, que tipo de pacote TCP ir iniciar uma discagem para o provedor). O script connect utilizado para discar e estabelecer a conexo ppp com o provedor de acesso. O wvdial tambm pode ser utilizado como programa de conexo no lugar do script connect. O diald criar uma interface virtual (normalmente como tapi ou sli para est qual a rota default. Aps a conexo com o provedor ser estabelecida, esta interface dar lugar criada pelo pppd (normalmente como pppi ). Voc poder utilizar os aplicativos diald-top-server e diald-top para obter estatsticas e controlar as conexes do diald. O diald-top dever ser executado somente se o diald-top-server estiver rodando e o diald-top-server s deve ser disparado aps o diald ter criado a interface virtual tapi ou sli. Veja os manuais de diald, diald-top e ainda de diald-examples para maiores detalhes a respeito da configurao do servio de discagem por demanda.

Sistema Operacional GNU/Linux Conexo ADSL

253

Existem basicamente 2 tipos de conexo ADSL: a pppoe, PPP-over-ethernet e a pppoa, PPPover-ATM. Na conexo pppoa, o modem ADSL estabelece a conexo PPP com o provedor e age como roteador/bridge e como servidor DHCP fornecendo um IP ao cliente conectado a ele. Os servios ADSL mais conhecidos no Brasil so o Velox da Telemar e o Speedy da Telefnica. Na conexo pppoe o cliente estabelece uma conexo PPP diretamente com o provedor e o modem apenas estabelece o enlace ATM com o provedor. Aps a conexo, criada uma interface pppi (normalmente ppp0) da mesma forma que uma conexo discada normal tipo V9x. Para o tipo pppoe, h o pacote rp-pppoe, uma implementao da Roaring Penguin. A configurao do pppoe pode ser feita pelo script adsl-setup. Ela ser gravada no arquivo /etc/ppp/pppoe.conf. Os scripts adsl-start e adsl-stop podem ser utilizados para iniciar e parar a conexo ADSL. No Velox da Telemar, aps a conexo PPP ter sido estabelecida, o cliente dever ser autenticado em seu provedor utilizando um browser (atravs da pgina http://www.veloxzone.com.br) para poder ter acesso Internet.

Sistema Operacional GNU/Linux

254

Comunicao e Telefonia
O Linux possui diversos programas para comunicaco atravs da Internet. Um dos mais utilizado o kopete que permite a conexo com ICQ, MSN, AIM, IRC, Jabber e outros. Ele totalmente personalizado e faz parte do KDE.

kopete O Skype um sistema VOIP (voz sobre IP). Permite SMS, corrreio de voz e tambm redirecionamento de chamadas. O servio para realizao de chamadas requer crditos que podem ser obtidos atravs do site do Skype: http://www.skype.com.

skype

Alm disto existem diversos programas que falam protocolos H323 e SIP permitindo facilmente a criao de sistemas de audio e vdeoconferncia.

Sistema Operacional GNU/Linux

255

Interconectividade

Interconectividade DOS/Windows
O kernel do Linux suporta os sistemas de arquivos msdos, vfat, ntfs e smbfs. Uma partio FAT ou VFAT pode ser montada na estrutura hierrquica de sistemas de arquivos do Linux. Assim, voc pode transferir arquivos facilmente entre os sistemas de arquivos DOS/Windows e Linux em discos ou disquetes. Utilize os comandos tradicionais, como o cp e mv, do Unix. No se esquea de desmontar os sistemas de arquivos removveis (como disquetes e zip drives) antes de remover a media. Voc pode utilizar ainda os comandos mtools (como mattrib, mcd, mcopy, mdel, mdeltree, mdir, mformat, mmd, mrd, mmove, mren e mtype) para tratar diretamente arquivos e diretrios em disquetes ou parties FAT ou VFAT.
hmarx@thor:~> mdir a: Volume in drive A is SuSE Linux (abbr=SUSE LINUX ) Volume Serial Number is 5377-BBE2 Directory for A:/ chapte~1 aw 33302 07-04-2002 17:30 chapte~2 aw 295888 07-04-2002 17:31 biblio~1 aw 15343 07-04-2002 17:31 3 files 344 533 bytes 1 112 576 bytes hmarx@thor:~> chapter_01.aw chapter_08.aw bibliography.aw free

Configure os mapeamentos das letras dos discos no arquivo /etc/mtools.conf. Um trecho deste arquivo pode ser visto abaixo:
drive a: file="/dev/fd0" exclusive mformat_only cylinders=80 heads=2 sectors=18 drive b: file="/dev/fd1" exclusive mformat_only cylinders=80 heads=2 sectors=18 drive c: file="/dev/hda1" drive z: file="/dev/sda4" 11 drive m: file="/var/lib/dosemu/diskimage" mtools_lower_case=1

Voc dever ter acesso de leitura e/ou escrita partio ou dispositivo no Linux para conseguir ler e/ou gravar arquivos atravs dos aplicativos mtools.

Sistema Operacional GNU/Linux O Linux como servidor de uma rede Windows

256

Atravs do Samba, o Linux pode emular um servidor Window NT para clientes Lan Manager, Windows 3.x, 9x, Me, 2000, NT e XP. O Samba implementa os protocolos NetBIOS, SMB e NMB sobre o TCP/IP. O NMB utilizado para o servio de browsing. Ele pode ainda executar o servio de netlogon e de time server (sincronismo de relgio das estaes com o servidor). O arquivo de configurao do Samba o /etc/samba/smb.conf. Neste arquivo voc define o domnio, os compartilhamentos, a segurana, a forma do servidor atuar (master browser, domain controller, etc), e demais parmetros da rede. As informaes mnimas a serem configuradas no Samba, para que uma mquina Linux com IP 192.168.1.1 seja vista como um servidor NT, validando usurios e compartilhando o diretrio pessoal e o diretrio /work como Trabalho em uma rede local so:
; /etc/samba/smb.conf [global] workgroup = nome_do_domnio os level = 2 security = user encrypt passwords = yes protocol = NT1 interfaces = 192.168.1.1/255.255.255.0 bind interfaces only = yes local master = yes domain logons = yes domain master = yes smb passwd file= /etc/samba/smbpasswd wins support = yes logon script = scripts\%U.bat server string = SuSE Linux Samba %v message command = bash -c echo From: %f, To: %t $(cat %s) | \ /usr/X11/bin/xmessage -file -;rm %s & browseable = yes [netlogon] path=/etc/samba/netlogon read only = yes locking = no hosts allow = 192.168.1. [homes] comment = Diretrio pessoal read only = no create mode = 0750 [Trabalho] comment = Diretrio de trabalho path = /work create mode = 770

O compartilhamento especial homes ser substitudo pelo diretrio pessoal do usurio (~usurio). O logon script poder ser tambm por estao, utilizando, por exemplo, a metavarivel %M:
logon script = scripts\%M.bat

Sistema Operacional GNU/Linux

257

O compartilhamento especial printers, definido no arquivo /etc/samba/smb.conf, tornar as impressoras configuradas no Linux disponveis para as estaes Windows.
[printers] comment = Todas as impressoras printable = yes public = no read only = yes create mode = 0700 directory = /tmp

Utilizando o script printfax.pl, um dispositivo fax modem poder ser disponibilizado para estaes Windows como uma impressora PostScript:
[fax] comment = Servidor de FAX postscript = yes print command = ( /usr/bin/printfax.pl %I %s %U %m; rm %s ) & printable = yes writeable = no path = /var/spool/faxserver

No SuSE Linux, o servidor Samba pode ento ser disparado pelo script rcsmb (ou rcsamba). Sero disparados o smbd e o nmbd, servidores SMB e de nome NetBIOS, respectivamente. O samba pode ser administrado facilmente pelo SWAT - Samba Web Administration Tool atravs de um navegador WEB utilizando uma conexo no porto 901 (http://localhost:901). Para isto, o swat deve ser habilitado no /etc/inetd.conf. Usurios Linux e os clientes de uma rede Windows O conjunto de usurios do Samba um sub-conjunto dos usurios do Linux. Isto , os usurios do Samba j devero estar cadastrados no Linux. Voc deve incluir os usurios do Samba atravs do programa smbpasswd. Alm disto, o smbpasswd serve para criar contas de estaes de trabalho, se unir a um domnio, habilitar, desabilitar ou excluir uma conta do Samba. As informaes destas contas sero armazenadas no arquivo /etc/samba/smbpasswd. Pode ser feito tambm o mapeamento de usurios atravs do arquivo /etc/samba/smbusers (ou no arquivo definido pela opo username map em /etc/samba/smb.conf).

Sistema Operacional GNU/Linux O Linux como cliente de uma rede Windows

258

O Linux pode utilizar recursos compartilhados por uma mquina Windows. Basta que o kernel tenha suporte ao smbfs e voc poder utilizar o comando mount com a opo -t smbfs e a sintaxe //servidor/recurso para especificar o compartilhamento. Voc pode ainda utilizar o aplicativo smbclient (do pacote samba-client) que permite tambm utilizar os servios de envio de mensagens (popup messages) e utilizao dos servios de impresso de mquinas Windows. O script samba_print utiliza o smbclient para servios de impresso. No modo grfico, voc pode utilizar diversos aplicativos. O LISa (Lan Information Server) e os utilitrios do Samba como o nmblookup, servem para obter as informaes sobre sua rede SMB. No Konqueror voc poder utilizar a URL smb://servidor para navegar atravs de sua rede Windows. O aplicativo LinNeighborhood se assemelha ao "Ambiente de rede" do Windows. Com ele voc poder montar compartilhamentos de mquinas Windows na estrutura de rvore de sistemas de arquivos do Linux.

Sistema Operacional GNU/Linux

259

Interconectividade Novell Netware


O kernel do Linux suporta o sistema de arquivos ncpfs. Assim, voc pode montar os volumes Netware. Utilizando utilitrios como slist, nwlogin, nwprint, nwuserlist, nwgrant, nwdir, nwfstime, nwfsinfo, nwpasswd, nwrights, nwbols, e outros, voc pode utilizar um servidor Netware atravs do Linux. O kernel dever ter suporte ao protocolo IPX. H ainda o emulador do kernel do Netware 3.11/3.12, marsnwe, cujo arquivo de configurao o /etc/nwserv.conf. Basta ter os volumes do Netware em diretrios do Linux, e o Linux passa a ser visto como um servidor Novell na rede. O Caldera Netware for Linux possui os volumes do Netware 4.1x. Voc pode at mesmo gerar os volumes em diretrios do sistema de arquivos padro do Linux. Nos exemplos seguintes utilizamos o marsnwe para representar o servidor Netware, rodando na prpria mquina Linux.
hmarx@thor:~> slist Known NetWare File Servers Network Node Address ----------------------------------------------------------------THOR C0A8C803 000000000001 hmarx@thor:~> nwvolinfo -S thor -v SYS -U hmarx Logging into THOR as HMARX Password: Total : 2020332K Free : 115276K Purgable : 0K No Purg. : 0K Dirs : 522240 Free dirs: 407674 hmarx@thor:~>

Voc poder utilizar o ncpmount para montar volumes de servidores Netwareno Linux.
thor:~# ncpmount -S thor -V SYS /mnt Logging into THOR as SUPERVISOR Password: thor:~# mount | grep ncpfs THOR/SUPERVISOR on /mnt type ncpfs (rw) thor:~#

Sistema Operacional GNU/Linux

260

Interconectividade Apple Macintosh


O Linux tambm se integra a redes com mquinas Apple Macintosh. O kernel suporta a famlia de protocolos AppleTalk (RTMP, NBP, ZIP e AEP). Os arquivos de configurao do AppleTalk ficam no diretrio /etc/atalk. O aplicativo atalkd, configurado no arquivo atalkd.conf, responsvel pelo gerenciamento da rede ApplelTalk. Ele inclui roteamento, registro e procura de nomes e domnios. No arquivo netatalk.conf voc configura quais servios sero disparados, o nmero mximo de clientes e a forma de execuo dos servios. O Linux pode compartilhar arquivos atravs do afpd (Apple Filing Protocol Daemon) e impressoras atravs do papd (Printer Access Protocol Daemon). Podem ser criados diversos servidores afpd virtuais cuja configurao feita no arquivo afpd.conf. Voc pode definir quais sistemas de arquivos sero compartilhados e com que permisses atravs dos arquivos AppleVolumes.default e AppleVolumes.system. O compartilhamento de impressoras configurado no arquivo papd.conf. Este arquivo no necessrio porque o papd compartilha o mesmo que o lpd. Uma vez configurado, o AppleTalk pode ser disparado atravs do script rcatald (como os demais servios no Linux). Aplicativos como o getzones, afppasswd, achfile, aecho, accleandir, pap e papstatus podem ser utilizados para manipular sistemas de arquivos e impressoras em uma rede AppleTalk.

Sistema Operacional GNU/Linux

261

9. O Kernel Linux
Configurao do kernel Linux
Como sistema de fonte aberto, o sistema operacional Linux pode ser modificado e adequado arquitetura e configurao de hardware de um computador especfico ou de servios suportados pelo kernel. Para isto, necessria a instalao dos fontes do kernel. Os fontes so normalmente instalados em /usr/src/linux. A verso mais atualizada pode ser obtida de http://kernel.org. Consideraremos um kernel 2.6.x nos exemplos. Drivers para dispositivos muito recentes podem no estar, ainda, includos nos fontes do kernel. Em alguns casos, eles podem estar disponveis em sites na Internet. Mesmo alguns fabricantes j disponibilizam fontes de drivers mais atualizados para seus produtos. Siga as instrues que normalmente acompanham os arquivos baixados do site. Nos casos em que os drivers so disponibilizados em formato objeto, certifique-se de escolher o driver para a verso correta do kernel. Os mdulos objetos, carregveis dinamicamente, so geralmente copiados para um subdiretrio do diretrio /lib/modules/verso_do_kernel. Quando h necessidade de recompilao, os pacotes de desenvolvimento bsico em C devero estar instalados (como o gcc, o make, o ld, e o ncurses-devel). Se a instalao for feita atravs YaST no SuSE Linux, alguns destes pacotes sero automaticamente selecionados com a seleo do ambiente de desenvolvimento. Voc poder configurar os fontes do kernel para adequar ou incluir um driver ou servio, e at mesmo definir quais drivers ou servios devero ser suportados pelo kernel. Diversos drivers e servios podero ser compilados como mdulos (a serem carregados sob demanda). Para reconfigurar e compilar o kernel e seus mdulos, v para o diretrio onde se encontram os fontes do kernel (normalmente em /usr/src/linux) e utilize um dos seguintes comandos: Comando make help make config make menuconfig make xconfig make cloneconfig Objetivo Ver as opes definidas no Makefile Realizar a configurao em modo texto linha a linha Realizar configurao em modo texto com janelas Realizar a configurao em modo grfico, no sistema X Window Obter a configurao do kernel atual em execuo a partir de /proc/config.gz

Atravs das perguntas ou menus, voc pode configurar o tipo de processador(es), memria, drivers de dispositivos, otimizaes, servios e protocolos suportados pelo kernel. Algumas opes permitem compilao como mdulos carregveis dinamicamente. A configurao salva, por default, no arquivo .config.

Sistema Operacional GNU/Linux Tipicamente, as alteraes mais comuns so: tipo de processador suporte a multiprocessamento suporte a formato de sistemas de arquivos suporte a caractersticas personalizadas de protocolos de redes suporte a componentes e perifricos do computador

262

Note que na distribuio SuSE Linux o kernel automaticamente selecionado durante a instalao conforme as caractersticas de seu computador. Alm disto o kernel do SuSE Linux foi compilado para suportar, atravs de mdulos, a grande maioria dos componentes e arquiteturas de hardware e servios existentes.

Configurando o kernel com o comando make menuconfig

Configurando o kernel com o comando make xconfig

Sistema Operacional GNU/Linux

263

Aps salvar a configurao, utilize a sequncia abaixo para realizar a recompilao total do kernel e seus mdulos: Comando make clean make mrproper make all make vmlinux make modules make modules_install Objetivo Apagar os arquivos objetos antigos mantendo a configurao Apagar todos os arquivos objetos antigos incluindo a configurao Compila tudo que necessrio Compila apenas o kernel Compilar todos os mdulos definidos na configurao Instalar os mdulos no diretrio /lib/modules/verso do kernel

Caso tenha alterado o kernel, reinicialize o sistema para carregar o novo kernel. Caso tenha apenas recompilado um mdulo, basta remover a verso anterior e inserir a verso nova. Veja tambm modinfo, rmmod, modprobe e insmod. Lembre-se de manter sempre uma cpia funcional do kernel e dos mdulos (normalmente os que foram instalados atravs dos CDs), facilmente carregvel atravs do LILO ou GRUB, para os casos de um driver ou servio recompilado no estar funcionando corretamente. Pode ser til ter uma entrada de segurana, por exemplo, no arquivo /etc/lilo.conf como a gerada automaticamente durante instalao do SuSE Linux:
image=/boot/vmlinuz.suse label=failsafe root=/dev/hda1 initrd=/boot/initrd.suse append="disableapic ide=nodma apm=off"

Para o GRUB, o arquivo /boot/grub/menu.lst


title Failsafe -- SUSE LINUX 9.3 kernel (hd0,2)/vmlinuz root=/dev/hda5 showopts ide=nodma apm=off acpi=off vga=normal noresume selinux=0 barrier=off nosmp noapic maxcpus=0 3 initrd (hd0,2)/initrd

Voc pode tambm gerar disquetes do boot para recuperao em caso de mau funcionamento ou funcionamento errtico do sistema devido a uma recompilao do kernel ou algum mdulo. Isto pode ser feito atravs do YaST ou manualmente. Veja como criar manualmente um conjunto de disquetes de boot no apndice B: Criando Disquetes de Boot.

Sistema Operacional GNU/Linux

264

Sistema Operacional GNU/Linux

265

10. Segurana
Devemos inicialmente definir alguns conceitos relacionados a segurana de equipamentos, processos e informaes (que chamaremos de objetos): integridade, disponibilidade, confiabilidade e privacidade. Integridade a permanncia til e funcional dos objetos. Disponibilidade o tempo em que os objetos esto acessveis para a utilizao. Confiabilidade a certeza de que os objetos esto corretos (funcionam corretamente e/ou no foram alterados). Privacidade a certeza que os objetos s esto disponveis aos usurios, grupos ou outros objetos aos quais pertencem ou foram dadas permisses. Para isto o sistema deve ter controle de acesso e auditoria para que se possa identificar quem, quando e o que fez, nos casos da ocorrncia de algum evento incorreto ou malicioso.

Segurana no Linux
A segurana em sistemas Unix-like uma questo de confiana. importante definir bem os grupos de usurios e as regras de utilizao de senhas. Deve ser tomado um cuidado especial com o usurio root e aplicativos suid root.

Um furo de segurana pode comear com um acesso indevido utilizando uma senha de um usurio comum. A partir da, um invasor poder, s vezes sem muito esforo, adquirir privilgios do root. No mnimo, este invasor poder consumir recursos do sistema como uso de CPU, memria e espao em disco. O acesso fsico a um equipamento com informaes crticas e/ou confidenciais dever tambm ser restrito. Um simples reset poder comprometer a integridade das informaes. Se o invasor puder reinicializar a mquina atravs de um disquete ou CD, a festa fica completa. Outro meio de se furar a segurana so os links de comunicao. Deve-se prestar muita ateno aos links de acesso dedicado ou modems para acesso discado. Defina bem a funo do equipamento no qual voc est instalando o Linux. Selecione os servios que voc realmente deseja disponibilizar (telnet, ftp, http, mail, ...). Instale apenas os necessrios e/ou desabilite os outros.

Sistema Operacional GNU/Linux Cavalos de Tria

266

O nome "Cavalo de Tria" vem da mitologia (tambm referenciado como o presente de grego). Ele dado a programas que aparentam fazer alguma coisa mas fazem outra coisa, normalmente maliciosa. Normalmente eles so enviado atravs de e-mail ou disponibilizados em sites de download gratuitos. Nunca rode programas de fontes duvidosas. Nunca execute programas executveis a no ser que voc confie em quem enviou (pessoa ou site). Sempre verifique todo programa interpretado (por exemplo, os scripts) antes de execut-lo. Lembre-se que erros (no intencionais) tambm podem ser muito prejudiciais. Tome cuidado com o PATH ! Garanta que o comando que voc digita executar realmente o programa desejado. Um executvel chamado ls instalado no diretrio pessoal de um usurio que utilize o shell com a varivel PATH contendo o diretrio pessoal ($HOME) ou o diretrio corrente (.) antes dos diretrios do sistema, pode no "listar o diretrio" ou no apenas "listar o diretrio" ! Cuidado com as permisses do diretrio pessoal. Os arquivos de inicializao (como ~/.bashrc, ~/.profile, ~/.vimrc, ~/.forward e ~/ .procmailrc) podem ser alvos para a insero de "cavalos de tria". Um diretrio pessoal deve ter as permisses rwx------, ou seja 0700, garantindo segurana e privacidade.

Scripts CGI Tenha uma especial ateno na escrita de scripts WEB. A maioria dos furos de segurana no so intencionais. Nunca confie no browser do usurio. Apesar das limitaes impostas por tags HTML, um campo poder exceder as capacidades das variveis do script. Os textos podero conter metacaracteres ou caracteres especiais como a crase que podem ser interpretadas, por exemplo, pelo shell ou pelo perl e permitir a execuo de comandos externos. Nunca permita que usurios comuns coloquem scripts CGI em seu servidor sem que um profissional de segurana tenha testado todo o script e provado que ele no oferece riscos ao seu sistema. Variveis globais podem tambm oferecer informaes valiosas para os atacantes. Estas informaes podero ser exibidas no browser ou facilmente enviadas por e-mail. Uma ateno especial deve ser dada aos scripts interpretados pelo servidor. Os scripts comumente escritos em linguagem shell, perl ou php, por exemplo, devem ser rigorosamente testados antes de publicados. Os scripts java ou vb, que so interpretados pelo browser, normalmente so mais prejudiciais segurana do cliente. Estes devem tambm ser verificados para no exporem informaes indesejveis do servidor para os clientes (browsers).

Sistema Operacional GNU/Linux Vrus

267

Um vrus de computador um programa capaz de "infectar" outros aplicativos e de se espalhar (replicar) por outros aplicativos. Uma instalao Linux pura intrinsecamente imune a vrus. Um usurio comum normalmente no possui permisso para escrita nos diretrios do sistema. Assim a "infeco" ficaria restrita aos seus arquivos. Alm disto, escrever um vrus que contamine programas em qualquer verso, distribuio ou configurao do Linux extremamente difcil (e por que no dizer praticamente impossvel). Um arquivo anexo em um e-mail no possui atributo executvel e somente se o usurio desejar, ele ir salvar o arquivo e alterar as permisses para que ele possa ser executado. Um bom administrador nunca iria faz-lo com qualquer arquivo vindo da Internet. Esta abordagem de contaminao de mquinas Unix/Linux denominada de vrus social: um educado vrus que pede para ser salvo, ter seus atributos alterados para executvel e ainda como root ! Porm, quando uma mquina utilizada como servidor de arquivos/disco, arquivos inofensivos para o Linux se tornam extremamente perigosos para as estaes de trabalho DOS, Windows ou Netware. Existem programas anti-vrus para o Linux para varrer estes arquivos e diretrios compartilhados e detectar a presena de padres de vrus nos arquivos. Para os anexados a e-mails pode ser utilizado o programa amavis em conjunto com um software anti-vrus (tanto no envio quanto na recepo). O software anti-vrus deve ser atualizado peridicamente e, se possvel, automaticamente. As mesmas precaues tomadas em relao aos cavalos de tria, quanto ao PATH e ao diretrio pessoal, devem tambm serem tomadas em relao aos problema de vrus. Vermes (worms) Como qualquer sistema operacional, o Linux no imune a uma classe de programas que gastam recursos exageradamente. Isto degrada o desempenho do sistema, provocando at o trashing. O trashing no um crash. No trashing, o equipamento torna-se to lento que na maioria das vezes fica impossvel utiliz-lo. Quando detectado cedo, at fcil control-lo e elimin-lo. Basta "matar" o processo guloso de recursos. Para minimizar a possibilidade de degradao do sistema pelo gasto de recursos, pode-se configurar limites de utilizao de rea em disco com o sistema de quotas, e limites de tempo de processamento, abertura de arquivos e uso de memria com o ulimit. As mesmas precaues tomadas em relao aos cavalos de tria e vrus quanto ao PATH e ao diretrio pessoal devem tambm serem tomadas em relao aos worms. Ataques Um sistema pode ser atacado de diversas formas. A confidencialidade das informaes pode ser anulada atravs de escuta em conexes (rede, modem ou conexes seriais). Quando no h alterao da informao, muito difcil detectar a presena de um "man in the middle". Uma forma de ataque semelhante ao verme chamada hoje de Denial of Service (ou DoS). Ela consiste em sobrecarregar um ou mais servios. Seja por exemplo um site WEB. Se algum gera, constantemente, muitas requisies para obter as pginas deste site, outras pessoas podem no conseguir navegar pelo site. Esta forma se torna mais perigosa se vier simultaneamente de vrias origens da Internet, conhecida ento como DDoS (Distributed Denial of Service). Outra forma de ataque a alterao da origem dos pacotes, enganando o TCP/IP. Isto conhecido como IP spoofing.

Sistema Operacional GNU/Linux Ferramentas

268

Existem centenas de ferramentas para melhorar a segurana e diagnosticar possveis invases. A implementao de um firewall pode diminuir consideravelmente a probabilidade de invaso. O uso de TCP wrappers pode tambm ajudar nesta reduo alm de facilitar a deteco de ataques. A funo principal dos wrappers registrar e controlar os acessos aos servios de rede. Por exemplo, o tcpd pode ser utilizado no arquivo /etc/inetd.conf para verificar e controlar os acessos aos servios de rede. As permisses de acesso para o tcpd so configuradas nos arquivos /etc/hosts.allow e /etc/hosts.deny. Utilizando o xinetd, os arquivos no diretrio /etc/xinetd.d/ podem conter diversas opes para evitar e diagnosticar ataques, como: only_from no_access access_times cps max_load rlimit_as rlimit_cpu rlimit_rss rlimit_stack log_on_success log_on_failure lista de IPs lista de IPs faixa de horrio permitida nmero mximo conexes por segundo carga mxima do servidor espao de endereamento mximo tempo mximo de CPU em segundos uso mximo de memria residente tamanho mximo da pilha informaes para log em caso de sucesso informaes para log em caso de falha

Ataques podem ser facilmente detectados apenas analisando os logs do sistema. Tentativas de abertura de sesso com usurios invlidos ou mltiplas tentativas de abertura de sesso com senhas invlidas indicam um ataque em potencial. Um ataque vindo da rede local ou da Internet comea atravs de um porto inseguro aberto. Alguns atacantes utilizam programas denominados portscan, que varrem os portos de uma mquina ou conjunto de mquinas procura de portos abertos. Estes mesmos programas podem ser utilizados para verificar a segurana de uma instalao. Pacotes como o snort e o saint so muito utilizados na deteco de tentativas de ataque. Eles tambm geram logs que devem ser frequentemente analisados pelos administradores de redes e segurana.

Sistema Operacional GNU/Linux

269

Firewalls
As principais funes de um firewall so a proteo entre uma rede local/privada e uma rede pblica, como a Internet, e a gerao de logs de atividades, trfego e acessos devidos e indevidos. Existem diversas arquiteturas de firewall. A mais simples a que utiliza um equipamento interligando duas redes (chamado de dual homed host). Este equipamento possui duas interfaces de rede: uma para a rede local privada e outra para a rede pblica (normalmente a Internet).

Esta arquitetura permite maior controle de acesso porque todos os pacotes passam pelo firewall. Ele sempre atua como proxy. As estaes na rede privada no tm acesso direto a servios na rede pblica. Uma derivao desta arquitetura a insero de uma interface para uma rede denominada DMZ (DeMilitarized Zone). A DMZ somente acessvel pelo firewall e prov servios como http e mail para as redes privada e pblica.

Sistema Operacional GNU/Linux

270

A proteo contra acessos indevidos, tanto da rede local para a pblica quanto da rede pblica para a local, feita atravs de filtros de pacotes. Filtros As regras do firewall levam em considerao a direo (Inbound, Outbound, Either), o endereo e porto de origem, o endereo e porto de destino, o protocolo e definem a ao (Accept, Deny, Reject, Masq, Redirect ou Return). O porto de destino especifica basicamente o servio requisitado. Este servio normalmente implementado na camada de aplicao (mail, telnet, ftp, ...). Um bom firewall conhece o encapsulamento dos dados para os servios definidos desde a camada fsica (meio de acesso rede: ethernet, FDDI, ATM, ...) at a camada de aplicao. NAT - Network Address Translation Outra funo de um firewall permitir que uma mquina local com endereos privados acesse servios e mquinas na Internet. O firewall faz a traduo de endereos privados para endereos vlidos na Internet. Isto tambm conhecido como masquerading. Quando a traduo feita no endereo de origem, o processo chamado SNAT e quando a traduo feita no endereo de destino, o processo chamado de DNAT. Implementao do firewall O firewall pode ser implementado por um software em um computador comum com pelo menos duas interfaces de rede. Este computador chamado de multihomed, tendo uma interface com a rede local e outra com a rede pblica.

Sistema Operacional GNU/Linux Software de firewall - IPCHAINS

271

At a verso 2.2 do kernel, o software padro do Linux o ipchains. No SuSE Linux, ele facilmente configurado utilizando o arquivo /etc/rc.config.d/firewall.rc.config. Nele so definidas as interfaces, os endereos e servios vlidos, tanto na rede privada quanto na pblica. Para que o ipchains seja executado, necessrio definir START_FW="yes" no /etc/rc.config. A execuo do firewall utilizando rcSuSEfirewall (ou apenas rcfirewall), que rodar o script /sbin/SuSEfirewall, gerar chamadas ao ipchains para a incluso de filtros ou regras de firewall. As regras podero ser vistas utilizando o comando: thor:~ # rcSuSEfirewall status ou simplesmente thor:~ # ipchains -L As regras podem ser tratadas manualmente atravs do comando ipchains. A sintaxe geral :

# ipchains -{A | D | C } cadeia especificao [ opes ] Para adicionar, remover ou verificar uma regra # ipchains - { R | I } cadeia nmero especificao [ opes ] Para Incluir ou substituir uma regra

Os parmetros podem especificar os protocolos, endereos de origem, endereos de destino, interfaces de entrada ou sada: -p [ ! ] protocolo --protocol [ ! ] protocolo Especifica o protocolo da regra ou do pacote -s [ ! ] endereo [ / mscara ] [ ! ] [ porto [ : porto] ] --source [ ! ] endereo [ / mscara ] [ ! ] [ porto [ : porto] ] Especifica o endereo de origem e opcionalmente o porto --source-port [ ! ] [ porto [ : porto] ] Especifica somente o porto de origem -d [ ! ] endereo [ / mscara ] [ ! ] [ porto [ : porto] ] --destination [ ! ] endereo [ / mscara ] [ ! ] [ porto [ : porto] ] Especifica o endereo de destino e opcionalmente o porto --destination-port [ ! ] [ porto [ : porto] ] Especifica somente o porto de destino

Sistema Operacional GNU/Linux

272

-i [ ! ] nome --interface [ ! ] nome Especifica o nome da interface pela qual o pacote recebido ou enviado (por cadeias de entrada ou sada) -j alvo --jump alvo Especifica o alvo da regra O protocolo pode ser tcp, udp, icmp ou all, ou nmero ou um nome definido em /etc/protocols. O porto pode ser um nmero ou um nome definido em /etc/services. Um endereo pode ser um nome de mquina, rede ou um endereo IP. Uma mscara pode ser uma mscara de rede (como 255.255.255.0 da classe C) ou o nmero de 1s da mscara (como 24 para a mscara 255.255.255.0). Um alvo pode ser uma cadeia definida pelo usurio ou um valor especial como ACCEPT, DENY, REJECT, MASQ, REDIRECT ou RETURN. O smbolo ! utilizado para inverter o significado da especificao. Desta forma, se um gateway (com interface pblica eth1) s precisa fazer NAT, basta a insero da regra:

thor:~ # ipchains -A forward -j MASQ -i eth1

Sistema Operacional GNU/Linux Software de firewall - IPTABLES

273

De forma semelhante, a partir da verso 2.4 do kernel, o software padro o iptables. At o SuSE Linux 7.3, ele facilmente configurado alterando o arquivo /etc/rc.config.d/firewall2.rc.config. A partir da verso 8.0, a configurao feita alterando o arquivo /etc/sysconfig/SuSEfirewall2. Este arquivo tem basicamente as mesmas informaes presentes nas verses anteriores (no arquivo /etc/rc.config.d/firewall2.rc.config). A ativao do firewall utilizando rcSuSEfirewall2, que rodar o script /sbin/SuSEfirewall2, gerar chamadas ao iptables para a incluso de filtros ou regras de firewall. As regras podero ser vistas utilizando os comandos: thor:~ # rcSuSEfirewall2 status ou simplesmente thor:~ # iptables -L As regras podem ser tratadas manualmente atravs do comando iptables. A sintaxe geral parecida com o do ipchains :

# iptables -{A | D | C } cadeia especificao [ opes ] Para adicionar, remover ou verificar uma regra # iptables - { R | I } cadeia nmero especificao [ opes ] Para Incluir ou substituir uma regra

Os parmetros especificam mais precisamente os endereos, protocolos, portos e interfaces de origem e destino: -p [ ! ] protocolo --protocol [ ! ] protocolo Especifica o protocolo da regra ou do pacote -s [ ! ] endereo [ / mscara ] --source [ ! ] [ endereo / mscara ] Especifica o endereo de origem --source-port [ ! ] [ porto [ : porto] ] Especifica somente o porto de origem -d [ ! ] endereo [ / mscara ] --destination [ ! ] endereo [ / mscara ] Especifica o endereo de destino

Sistema Operacional GNU/Linux --destination-port [ ! ] [ porto [ : porto] ] Especifica somente o porto de destino -i [ ! ] nome --in-interface [ ! ] nome Especifica o nome da interface pela qual o pacote recebido -o [ ! ] nome --out-interface [ ! ] nome Especifica o nome da interface pela qual o pacote enviado -j alvo --jump alvo Especifica o alvo da regra

274

--tcp-flags [ ! ] mscara ativos Especifica listas de flags do TCP. mscara contm os flags que devem estar inativos e ativos os flags que dever estar ativos. --mac-source [ ! ] endereo Endereo MAC de origem de interfaces ethernet nas cadeias PREROUTING, INPUT e FORWARD. --limit taxa [ /sufixo ] Especifica a taxa mdia mxima. O sufixo pode ser second, minute, hour ou day. O limite default 3/hour. --limit-burst nmero Especifica o nmero mximo de pacotes iniciais. O default 5. --tos tos Especifica os bits do campo TOS do cabecalho do TCP/IP. Pode ser um nmero ou um nome. O protocolo pode ser tcp, udp, icmp ou all, ou um nome ou nmero representando de /etc/protocols. Um endereo pode ser um nome de mquina, rede ou um endereo IP. Uma mscara pode ser uma mscara de rede (como 255.255.255.0 da classe C) ou o nmero de 1s da mscara (como 24 para a mscara 255.255.255.0). Um alvo de --jump pode ser uma cadeia definida pelo usurio ou um valor especial como LOG, MARK, REJECT, TOS, MIRROR, SNAT, DNAT, MASQUERADE, REDIRECT. O nome da interface pode terminar com + indicando todas as interfaces que comeam com nome. Os flags do TCP so SYN, ACK, FIN, RST, URG, PSH, ALL e NONE. Os nomes dos bits do campo tipo de servio (e seus nmeros) so: Minimize-Delay 0x10 Maximize-Throughput 0x08 Maximize-Reliability 0x04 Minimize-Cost 0x02 Normal-Service 0x00

Sistema Operacional GNU/Linux

275

Se um gateway (com interface pblica eth1) s precisa fazer NAT, basta a insero das regras:

thor:~ # iptables -A POSTROUTING -t nat -j MASQUERADE -o eth1 thor:~ # echo 1 > /proc/sys/net/ipv4/ip_forward

E para o mnimo de segurana:


thor:~ # iptables -A INPUT -j DROP -m state --state NEW, INVALID -i eth1 thor:~ # iptables -A FORWARD -j DROP -m state --state NEW, INVALID -i eth1

O SuSEfirewall A distribuio SuSE Linux contm uma forma mais simples de definio das regras bsicas de firewall. Nas verses que utilizam o ipchains ele chamado de SuSEfirewall e nas verses que utilizam o iptables ele chamado de SuSEfirewall2. Os arquivos de configurao so bastante semelhantes e contm definies de variveis utilizadas pelo script /sbin/SuSEfirewall ou /sbin/SuSEfirewall2. O script bash l o arquivo de configurao e faz as devidas chamadas ao ipchains ou iptables com as regras de firewall. Chamaremos a partir de agora simplesmente de SuSEfirewall. A arquitetura do SuSEfirewall define as trs classes de redes bsicas: interna, externa e DMZ. Podem existir vrias interfaces de rede em cada classe. No arquivo de configurao as interfaces so definidas pelas variveis FW_DEV_INT, FW_DEV_EXT e FW_DEV_DMZ. A varivel FW_ROUTE define se haver ou no roteamento de pacotes entre as interfaces definidas. FW_MASQUERADE permite a traduo de endereos (NAT) para os IPs das interfaces definidas em FW_MASQ_DEV. Apenas os endereos pertencentes s redes definidas em FW_MASQ_NETS sero mascarados. Os servios do firewall estaro disponveis para as mquinas da(s) rede(s) internas somente se FW_PROTECT_FROM_INTERNAL for desabilitado. O default habilitado e somente os servios explicitamente especificados podero ser acessados por mquinas explicitamente definidas. Os servios em execuo no firewall podem ser protegidos das redes internas, externas e DMZ, definindo-se as seguintes variveis para os protocolos TCP, UDP e IP: Redes Internas
FW_SERVICES_INT_TCP FW_SERVICES_INT_UDP FW_SERVICES_INT_IP

Redes Externas
FW_SERVICES_EXT_TCP FW_SERVICES_EXT_UDP FW_SERVICES_EXT_IP

Redes DMZ
FW_SERVICES_DMZ_TCP FW_SERVICES_DMZ_UDP FW_SERVICES_DMZ_UDP

Nestas variveis podem ser informados nmeros ou nomes de portos (dados em /etc/services). Podem ser especificadas faixas de portos como 1:1023. Redes e servios confiveis podem ser informados na varivel FW_TRUSTED_NETS. Portos altos podem ser permitidos pelas variveis:
FW_ALLOW_INCOMING_HIGHPORTS_TCP FW_ALLOW_INCOMING_HIGHPORTS_UDP

Sistema Operacional GNU/Linux

276

Os servios em execuo podem ser detectados automaticamente habilitando a varivel FW_SERVICE_AUTODETECT. Somente os servios habilitados nas seguintes variveis sero auto-detectados:
FW_SERVICE_DNS FW_SERVICE_DHCPD FW_SERVICE_SAMBA FW_SERVICE_SQUID FW_SERVICE_DHCLIENT

Servios na rede interna ou DMZ podem ser acessveis diretamente se definidos atravs de redirecionamento na varivel FW_FORWARD. Para utilizao atravs de NAT, use a variavel FW_FORWARD_MASQ. Podem ser definidos IPs de mquinas ou redes, protocolos e portos. Use com cautela porque voc poder estar abrindo uma porta para invasores e exploradores de falhas nestes servidores. Acessos a alguns servios podem ser redirecionados para portos locais no firewall atravs da definio na varivel FW_REDIRECT. Isto pode ser utilizado para o redirecionamento transparente dos acessos a um servidor WEB seguro, para o uso de um proxy transparente, e tambm para a utilizao de seu servidor de envio e-mails com proteo antivirus e/ou antispam. O nvel de informaes exibidas no log pode ser controlada pelas definies das variveis: Varivel
FW_LOG_DROP_CRIT FW_LOG_DROP_ALL FW_LOG_ACCEPT_CRIT FW_LOG_ACCEPT_ALL FW_LOG

Significado
Registra no log os pacotes crticos descartados Registra no log todos os pacotes crticos Registra no log os pacotes crticos aceitos Registra no log todos os pacotes aceitos Define as opes do log

Caractersticas de segurana do TCP/IP podem ser habilitadas definindo a varivel FW_KERNEL_SECURITY. Sero habilitadas opes do kernel como: icmp_ignore_bogus_error_responses icmp_echoreply_rate icmp_destunreach_rate icmp_paramprob_rate icmp_timeexceed_rate route_flush ip_local_port_range log_martians mc_forwarding mc_forwarding rp_filter

Quando o firewall desativado, o roteamento de pacotes entre as redes pode ou no ser mantido conforme o valor da varivel:
FW_STOP_KEEP_ROUTING_STATE

Voc pode definir se o firewall aceita ping ou permite ping na rede DMZ ou na Internet atravs das variveis:
FW_ALLOW_PING_FW FW_ALLOW_PING_DMZ FW_ALLOW_PING_EXT

Sistema Operacional GNU/Linux

277

A permisso da visualizao da rota atravs do firewall, utilizando o traceroute, por exemplo, definida na varivel FW_ALLOW_TRACEROUTE. Quando os buffers de mensagens esto cheios e o firewall no pode encaminhar a mensagem, ele pode ser enviada um pacote ICMP source_quench avisando a origem da mensagem para diminuir sua taxa de envio. A permisso para o envio deste pacote ICMP feita atravs da varivel FW_ALOW_FW_SOURCEQUENCH. A permisso de pacotes de broadcast feita atravs da varivel FW_ALLOW_FW_BROADCAST. O log destes pacotes pode ser inibido atravs da varivel FW_IGNORE_FW_BROADCAST. Para permitir roteamento FW_ALLOW_CLASS_ROUTING. entre redes da mesma classe utilize a varivel

Regras especficas de firewall podem ser includas no arquivo definido pela varivel FW_CUSTOMRULES. Utilizando diretamente o comando ipchains ou iptables, as regras podem ser includas nas seguintes funes definidas neste arquivo: Funo fw_custom_before_antispoofing fw_custom_after_antispoofing fw_custom_before_port_handling fw_custom_before_masq fw_custom_before_denyall Descrio Antes das regras anti-spoofing Depois das regras anti-spoofing Antes do tratamento dos portos Antes do mascaramento Antes de negar tudo

Veja o script /sbin/SuSEfirewall ou /sbin/SuSEfirewall2 para entender a utilizao destas funes e de variveis teis como input_ext, input_int, forward_int e forward_ext.

Sistema Operacional GNU/Linux

278

VPN - Virtual Private Network


Utilizando uma rede pblica como meio de transporte, pode-se construir uma rede privada virtual. A segurana dos dados deve ser mantida em todos os seus aspectos (veja a introduo deste captulo). Uma VPN criada criando-se de um tnel atravs da rede da rede pblica (normalmente a Internet).

Existem diversas implementaes utilizando o Linux. Uma forma simples utilizar o SSH para criptografar uma conexo PPP. H ainda pacotes como o CIPE e o FreeS/WAN. O CIPE criptografa o IP sobre UDP. O FreeS/WAN utiliza o IPsec (IP security), um conjunto de protocolos para segurana IP que prov criptografia e autenticao. Ambos utilizam chaves RSA para autenticao. O protocolo PPTP (Point-to-Point Tunneling Protocol) da Microsoft tambm suportado pelo Linux, mas sabe-se que tem srios problemas de segurana. Mais informaes e exemplos podem ser vistos nos arquivos VPN-HOWTO.gz e VPN-Masquerade-HOWTO.gz, encontrados no diretrio /usr/share/doc/howto/en. A composio do tnel que forma a VPN pode envolver uma nica mquina (host) ou uma rede (net). Assim temos 3 tipos de composio: Composio host-to-host host-to-net net-to-net Descrio Interliga duas mquinas Interliga uma mquina a uma rede Interliga duas redes

Quando o meio a Internet, uma das partes deve ter IP fixo para que a outra parte inicie a formao do tnel. A outra parte pode ter IP dinmico. Existe a possibilidade de utilizar IP dinmico nas duas partes atravs de atualizao de um servidor de DNS dinmico. Porm sempre haver uma janela, aps a mudana dos IPs, at a atualizao do(s) servidor(es) de DNS. Nesta janela a formao do tnel no ser possvel e as partes estaro desconectadas. H ainda um fator de insegurana nesta janela quando uma das partes poder tentar estabelecer o tnel com outra entidade que por ventura tenha obtido o IP dinmico que pertencia a outra parte. No se deve reduzir muito o TTL do registro no DNS para no aumentar o trfego na Internet com as atualizaes do DNS. O firewall tem um papel importante no funcionamento de uma VPN. Ele ir encaminhar os pacotes da rede privada para dentro do tnel e no permitir que as mquinas da rede privada sejam acessadas por mquinas da rede pblica.

Sistema Operacional GNU/Linux Configurando uma VPN utilizando o Openswan

279

O Openswan (derivado do FreeS/wan) uma implementao do IPsec no Linux. So utilizados 3 protocolos: AH (Authentication Header) ESP (Encapsulating Security Payload) IKE (Internet Key Exchange) Os procolos AH e ESP so implementados pelo KLIPS (kernel IPsec). O procolo IKE implementado pelo servio pluto. O KLIPS opcional no IPv4 e obrigatrio no IPv6. Para o IPv4, verifique se o kernel foi compilado para suportar o IPsec. Isto pode ser feito facilmente atravs do comando:
hmarx@thor:~> zcat /proc/config.gz | grep -i ipsec CONFIG_IPSEC=m CONFIG_IPSEC_DEBUG=y CONFIG_IPSEC_DEBUG_DISABLE_DEFAULT=y CONFIG_IPSEC_TUNNEL=y CONFIG_IP_IPSEC=m CONFIG_IPV6_IPSEC=y CONFIG_IPV6_IPSEC_TUNNEL=y hmarx@thor:~> J

Voc pode notar que o kernel do exemplo acima foi compilado com suporte a IPsec atravs de mdulos carregveis. Quando o Openswan for ativado, o mdulo ipsec ser carregado. Considere o modelo mais comum de conexo, o net-to-net:

O ipsec ir criar uma interface virtual ipseci em cada um dos gateways. Atravs da interface externa (a que est conectada ao roteador), o ipsec ir fazer a autenticao e negociar a chave para a criptografia dos pacotes que sero enviados atravs da interface ipseci. Esta interface deve ser incluida na lista de interfaces externas na configurao do firewall e os pacotes no devem ser mascarados e sim encaminhados para ela. Os portos UDP 500 (isakmp) e o protocolo IP 50 (esp) devem ser permitidos nas interface externas.

Sistema Operacional GNU/Linux Iniciaremos a configurao pelo firewall.

280

Considere que em cada gateway a interface interna seja eth0 e que a interface externa seja eth1, e que a interface virtual seja o ipsec0. Considere ainda que estamos utilizando um SuSE Linux 8.0 ou superior. Assim, para o gateway 1 do modelo acima, no SuSEfirewall teremos as seguintes definies mnimas:
FW_DEV_INT="eth0" FW_DEV_EXT="eth1 ipsec0" FW_MASQUERADE="yes" FW_MASQ_DEV="eth1" FW_MASW_NETS="192.168.1.0/24" FW_SERVICES_EXT_UDP="500" FW_SERVICES_EXT_IP="50" FW_SERVICES_INT_TCP="domain smtp ssh 3128" FW_SERVICES_INT_UDP="domain" FW_PROTECT_FROM_INTERNAL="yes" FW_AUTOPROTECT_SERVICES="yes" FW_FORWARD="192.168.1.0/24,192.168.2.0/24 192.168.1.0/24,192.168.2.0/24"

Devemos desabilitar o rp_filter fazendo uma pequena alterao no script /etc/init.d/ipsec. Deve-se incluir as linhas em negrito abaixo na opo start antes do exit:
... echo -e $return fi SUSEFWCFG="/etc/syscofig/SuSEfirewall2" test -f $SUSEFWCFG && { . $SUSEFWCFG for i in $FW_DEV_EXT; do echo 0 > /proc/sys/net/upv4/conf/$i/rp_filter 2> /dev/null done } exit $st ;; ...

Alterar o script /sbin/SuSEfirewall2, na sesso "Configuring more kernel stuff":


... echo 0 > done

$i/mc_forwarding 2 > /dev/null

test -z "$FW_DEV_IPSEC" || for i in $FW_DEV_EXT; do

echo 0 > /proc/sys/net/ipv4/conf/$i/rp_filter 2> /dev/null done test "$FW_KERNEL_SECURITY" = no || { ...

Sistema Operacional GNU/Linux

281

Habilitar o uso de regras de firewall personalizadas: FW_CUSTOMRULES="/etc/sysconfig/SuSEfirewall2-custom" No arquivo /etc/sysconfig/SuSEfirewall2-custom inserir as linhas em negrito na funo fw_custom_before_masq():
... # this ... DEV_IPSEC=ipsec0 IPSEC_OK=$IFCONFIG $DEV_IPSEC 2>/dev/null if [ -z "$IPSEC_OK" ]; then echo -e "Interface $DEV_IPSEC no est ativa !!!" else for chain in forward_int; do $LAA $IPTABLES -A $chain -j LOG ${LOG}"-FORWARD-INT-IPSEC " -o $DEV_IPSEC done for chain in forward_ext; do $LAA $IPTABLES -A $chain -j LOG ${LOG}"-FORWARD-IPSEC-INT " -i $DEV_IPSEC done fi true } ...

$IPTABLES -A $chain -j "$ACCEPT" -o $DEV_IPSEC

$IPTABLES -A $chain -j "$ACCEPT" -i $DEV_IPSEC

Sistema Operacional GNU/Linux

282

PGP - Pretty Good Privacy


O PGP um sistema de criptografia de chave pblica para proteger arquivos de dados e e-mails. Ele baseado no algoritmo RSA (Rivest, Shamir, Adleman), que no requer troca de senhas entre os elementos. O funcionamento do RSA O algoritmo RSA utiliza 5 nmeros: p q n e d Nmero primo bem grande Outro nmero primo bem grande Produto dos nmeros : n = p * q Chave de criptografia que um primo qualquer relativo ao valor de (p -1) * (q -1), ou seja, no tm divisores em comum Chave de decriptografia que derivada de p, q e e: d = e-1 (m od (p - 1) * (q- 1))

A segurana do RSA depende dos nmeros p e q nunca serem revelados. Aps a gerao de n, e e d, os nmeros p e q podem ser destrudos. A informao a ser criptografada dever ser um nmero menor que n. Seja m o nmero que voc quer criptografar. Para produzir o texto criptografado c, utilizada a seguinte frmula: c = me mod n Para decriptografar a mensagem, utilizada a frmula: m = cd mod n Assim, para criptografar uma mensagem voc precisa dos nmeros n e e; para decriptograf-la, voc precisa dos nmeros n e e. Na prtica, o PGP cria a chave pblica (n, e) e a chave privada (d). O nmero n derivado da chave pblica.

Sistema Operacional GNU/Linux Uso da criptografia de chave pblica

283

Suponha que Jos queira enviar um documento para Maria. Tanto Jos quanto Maria devem ter gerado um par de chaves. Uma das chaves a chave privada, que deve ser guardada em lugar seguro. A outra a chave pblica, que pode ser disponibilizada a qualquer um. Normalmente elas so publicadas em sites de organizaes confiveis como Verisign, DigitalID ou Thawte. O documento dividido em duas partes: o contedo e a assinatura. Para garantir a autenticidade da origem do documento, Jos criptografa a assinatura utilizando sua chave privada. Desta forma, qualquer pessoa poder, utilizando a chave pblica de Jos, decriptografar a assinatura e certificar que o documento foi gerado por Jos. Nenhuma outra pessoa poder ter criptografado a assinatura, seno Jos.

Para que o contedo do documento s seja acessvel por Maria, Jos criptografa o contedo utilizando a chave pblica de Maria. Assim, somente Maria, que contm a chave privada complementar, poder decriptografar o contedo do documento.

Sistema Operacional GNU/Linux O software PGP

284

Utilizando o software pgp, voc pode gerar pares de chaves, extrair chaves, ver chaves, assinar chaves e documentos, criptografar documentos e verificar chaves, assinaturas e certificados. Uma sesso tpica de gerao de um par de chaves de 1024 bits :
info@thor:~> pgp -kg 1024 Pretty Good Privacy(tm) 2.6.3in - Public-key encryption for the masses. (c) 1990-96 Philip Zimmermann, Phils Pretty Good Software. 2000-10-07 International version - not for use in the USA. Does not use RSAREF. Current time: 2002/10/31 04:05 GMT Generating an RSA key with a 1024-bit modulus. You need a user ID for your public key. The desired form for this user ID is your name, followed by your E-mail address enclosed in <angle brackets>, if you have an E-mail address. Form: Real Name (comment) <email> (options) Optional options: ENCR, SIGN, EXPIRE:yyyy-mm-dd Enter a user ID for your public key: info@starix.com.br You need a pass phrase to protect your RSA secret key. Your pass phrase can be any sentence or phrase and may have many words, spaces, punctuation, or any other printable characters. Enter pass phrase: Enter same pass phrase again: Note that key generation is a lengthy process. We need to generate 1120 random bits. This is done by measuring the time intervals between your keystrokes. Please enter some random text on your keyboard until you hear the beep: 0 * -Enough, thank you. ..................................................................... .................................................................**** .........**** Advisory warning: This RSA secret key is not protected by a passphrase. Just a moment.... Key signature certificate added. Key generation completed. info@thor:~> J

Voc pode ver as chaves utilizando o comando pgp -kvv, assin-las utilizando o comando pgp -ks. Assinaturas podem ser removida utilizando o comando pgp -krs. Chaves podem ser removidas utilizando pgp -kr. Veja mais opes utilizando pgp -h.

Sistema Operacional GNU/Linux

285

Critrios de segurana do DoD


Em dezembro de 1985, o centro nacional de segurana de computadores NCSC (National Computer Security Center) da agncia nacional de segurana NSA (National Security Agency) criou um conjunto de padres para o departamento de defesa americano (Defense Departament, ou simplesmente DoD) intitulado "Trusted Computer Systems Evaluation Criteria", comumente conhecido como "Orange Book" (porque foi publicado com uma capa laranja). Este documento definiu quatro classes de nveis de segurana, com critrios crescentes: D C B A Segurana mnima Proteo facultativa Proteo mandatria Proteo verificada

Os sistemas tradicionais do PC como o DOS e o Windows so classe D. A classe C contm os subnveis C1 e C2. Na classe C1, os sistemas separam usurios e seus dados. Sistemas como o UNIX e o Windows NT se classificam na classe C2 por terem maior controle de acesso e procedimentos mais rgidos de login e auditoria. A classe B contm os subnveis B1, B2 e B3. Na classe B1 devem ser adicionados labels de sensibilidade segurana a cada objeto do sistema. Na classe B2, o sistema deve controlar todos os objetos e nenhuma informao, incluindo as criptografadas, pode ficar disponvel aps liberada ao sistema. Na classe B3, o sistema deve ser totalmente imune a invases e deve sinalizar eventos de segurana. A classe A contm um nico subnvel A1. A classe A1 funcionalmente equivalente B3, mas todos os critrios devem ser formalmente definidos e documentados. Apesar de no ter sido formalmente avaliado pelo DoD, o Linux classe C2. Para o Linux existe o projeto RSBAC (Rule Set Based Access Control) cujo objetivo fazer com que o Linux atenda a especificao no nvel B1 do "Orange Book". A classificao definida no Orange Book tornou-se obsoleta quando, em janeiro de 1996, foram definidos novos critrios de avaliao. Os Estados Unidos, Inglaterra, Alemanha, Frana e Canad desenvolverm o padro de avaliao denominado Common Criteria for Information Technology Security Evaluation - CCITSE, ou simplesmente "Common Criteria", CC. O CCITES define os EALs (Evaluation Assurance Levels). Estes nveis de garantia definem uma escala para medir o critrio para a avaliao de perfis de proteo - PPs (Protection Profiles) e de alvos de segurana - STs (Security Targets). Eles so construidos a partir de componentes do . uma escala uniformemente crescente que equilibra o nvel de segurana obtido com o custo plausvel para adquirir aquele nvel de garantia. Nvel EAL1 EAL2 EAL3 EAL4 EAL5 EAL6 EAL7 produtos. Significado Testado funcionalmente Testado estruturalmente Metodicamente testado e verificado Metodicamente projetado, testado e revisado Projetado semi-formalmente e testado Projeto semi-formalmente verificado e testado Projeto formalmente verificado e testado

EAL4 o nvel mais alto economicamente vivel para realimentar uma linha de

Sistema Operacional GNU/Linux

286

Os critrios de avaliao fazem parte de um programa de avaliao de produtos confiveis (Trusted Product Evaluation Program - TPEP). Mais informaes podem ser obtidas em http://www.radium.ncsc.mil/tpep/tpep.html Em fevereiro de 2005, o SuSE Linux Enterprise Server 9 atingiu o nvel EAL4+ em eServer IBM. Foi o sistema Linux a obter esta classificao. O anncio pode ser visto em http://www.atsec.com

CAPP/EAL4+ security evaluation for SUSE LINUX AUSTIN, Texas, and MUNICH - 15 February 2005 -- atsec information security has completed a Common Criteria (CC) evaluation of Novell/SUSE Linux Enterprise Server 9 (SLES 9) on IBM eServers, which will result in first-time Evaluation Assurance Level 4+ (EAL4+) certification of the enterprise operating system platform. The anticipated certification will enable SLES 9 to be adopted by governments and government agencies for mission-critical and command-and-control operations, and also reinforces to the private sector that Linux is a secure, tested platform for essential enterprise applications. The first Linux Common Criteria certification (Novell/SUSE Linux Enterprise Server 8 on the IBM xServer platform) was completed in August 2003 at the EAL2+ level. In the 18 months following initial certification, six additional evaluations have tested versions of Red Hat Linux and Novell/SUSE Linux software on a range of IBM and HP hardware platforms at progressively more secure Common Criteria levels. Gordon McIntosh, Lab Manager of atsecs Common Criteria Testing Laboratory in Austin, Texas, notes, "No other commercial operating system has had security scrutinized and tested as regularly, on such a large number of hardware platforms, as Linux." The scrutiny of Linux will not end with the successful evaluation of SLES 9 on IBM eServers at the EAL4+ level. Vendors continue to demonstrate their firm commitment to secure operating system platforms by pursuing Common Criteria certification of new Linux versions on a full range of current and emerging hardware platforms. Formal announcement of the successful EAL4+ evaluation completion on SLES 9 was made at the opening of LinuxWorld in Boston on 15 February 2005.

Sistema Operacional GNU/Linux

287

Mantendo o sistema seguro


Para garantir sempre a segurana de um sistema de computao, o administrador dever sempre atualizar o software que implementa os servios. Em especial, ele deve consultar frequentemente os sites dos fornecedores de anti-vrus, e os sites de anncios de segurana como o do CERT (Computer Emergency Response Team) - http://www.cert.org. Lembre-se que os invasores so frequentemente mais rpidos na atualizao que os administradores de sistemas. Sites j foram atacados em menos de 6 horas aps a publicao um conselho de segurana do CERT! H ainda diversos sites de segurana como: http://www.nsa.org http://www.rootprompt.org http://www.linuxsecurity.com http://www.pulhas.org http://www.sans.org Alm de diversas listas de discusso sobre segurana. Voc pode se subscrever na lista de segurana do SuSE Linux atravs de um e-mail para: suse-security-subscribe@suse.com O YaST Online Update (ou simplesmente YOU) pode ser utilizado para manter atualizados os pacotes do SuSE Linux. Para reportar furos de segurana no SuSE Linux utilize o e-mail security@suse.de

Sistema Operacional GNU/Linux

288

Sistema Operacional GNU/Linux

289

11. Gerncia de Redes em Linux


O profissional encarregado de gerenciar um servidor Linux, ou mesmo um rede de computadores (sistema de computao), tem a principal tarefa de manter a funcionalidade, eficincia e eficcia de todos os processos e entidades envolvidas. Um sistema de computao formado por elementos de hardware, de software e de pessoas (que denominamos peopleware). O hardware formado por peas fsicas como gabinetes, placas, processadores, memrias, dispositivos de armazenamento (discos, fitas, CDs, disquetes, ...), dispositivos de entrada e sada (monitores, teclados, mice, tablets, impressoras, scanners, ...) e dispositivos de comunicao (placas de rede, modems, hubs, switches, roteadores, rdios, antenas, ...). O software compreende programas desde o firmware, o sistema operacional com os drivers dos dispositivos perifricos, os utilitrios e os aplicativos gerais. O firmware um software especializado que controla um determinado dispositivo e normalmente j vem gravado de fbrica em uma PROM, EPROM ou FLASH, instalada na controladora do dispositivo ou do barramento que o liga ao conjunto processador. O peopeware inclui todos os seres humanos envolvidos no sistema de computao: os fornecedores de equipamentos e software (analistas e programadores), os tcninicos de manuteno de hardware e software, os gerentes do departamento e os usurios do sistema. A formaode cada elemento e seu comportamento da utilizao do sistema influem bastante no modo de gerenciamento do sistema. Para se ter um sistema de computao estvel e fcil de gerenciar, a tarefa comea bem antes da aquisio de seus componentes. Devem ser analisadas todas as funcionalidades desejveis para o sistema para que a seleo (ou o desenvolvimento/construo) de seus componentes seja feita de forma adequada. Desta forma no ser adquirido um supercomputador de milhes de dlares para substituir uma mquina de escrever, ou adquidir um microcomputador bem barato para ser o servidor de bases de dados de altssima importncia para a entidado.(O que, guardando as devidas propores, acontece com muita frequncia em empresas que decidem se informatizar ou automatizar sem a consulta a um analista ou consultor da rea). Para que o sistema de computao funcione, ele dever ser escolhido, instalado e configurado de forma correta. Isto deve ser uma preocupao desde a fixao mecnica dos componentes de hardware em locais e ambientes fsicos adequados, escolha do ambiente operacional, utilitrios e aplicativos, at a configurao do ambiente operacional, de parmetros e de bases de dados dos aplicativos.

Sistema Operacional GNU/Linux

290

Instalao fsica
Os componentes de hardware de um sistema de computao possuem partes mveis que, em alguns casos, so bastante sensveis a trepidaes ou impactos (como os discos e unidades de CD/DVD). Mesmo o nivelamento de alguns componentes poder afetar o seu desempenho e at mesmo sua funcionalidade. Cita-se como exemplo alguns discos e plotters. Os fatores ambientais como temperatura e umidade so igualmente importantes. Por serem eletrnicos, os componentes de hardware tambm dependem da boa qualidade do sistema eltrico que os alimenta. Deve ser analisada a carga a ser instalada (medida em VA - Volt-Ampre), o cabeamento eltrico, as tomadas, os disjuntores, estabilizadores, short-breaks, no-breaks, e tambm o sistema de aterramento da instalao. Uma instalao eltrica inadequada frequentemente causa de falhas no software por erros de hardware (interpretao errnea de instrues pelos processadores ou alterao de dados em memria ou dispositivos de armazenamento) que podem resultar em alterao ou mesmo perda de informaes muitas vezes valiosas. Os componentes eletrnicos, alm de dissiparem muito calor, foram projetados para funcionar a uma determinada faixa de temperaturas. Para evitar erros eletrnicos, deve-se tentar manter uma temperatura constante. Por razes fsicas, mais fcil manter uma temperatura ambiental baixa constante (entre 17 a 28 graus) do que manter uma temperatura alta constante. Da o motivo de termos ambientes refrigerados (o famoso ar condicionado) em salas com computadores (principalmente servidores que devem ter alta disponibilidade). gua e outros agentes qumicos podem danificar componentes do hardware e meios de armazenamento (incluindo listagens em papel). Gases cidos expelidos por baterias de no-breaks alm de nocivos sade podem corroer componentes e cabeamentos. Poeira, fumaa e outras formas poluentes devem tambm ser evitadas. Uma ateno especial deve ser dada a equipamentos que precisam ser instalados em reas externas ou em reas sem superviso humana constante (como centrais de superviso sem operadores). Medidas de segurana incluem a proteo fsica e equipamentos como extintores (que devem ser do tipo adequado extino de incndio em equipamentos eltricos e outros materiais existentes nos ambientes computacionais) Topologia Topologia o estudo da localizao e interconexo dos componentes do sistema. Em sistemas de computao, ela define a forma em que os componentes esto conectados, como os barramentos que interligam os componentes internos de um computador e seus perifricos e as formas de conexo de redes. Os elementos de rede e a forma que eles so interligados tambm geram entidades foco de ateno para o gerente. Os pontos de conexo so frequentes causas de problemas envolvendo desempenho, disponibilidade e segurana.

Sistema Operacional GNU/Linux As topologias bsicas de redes so: barramento, anel, estrela e broadcast. No barramento, todos os nodos compartilham no tempo, um meio fsico de uso exclusivo. Isto , apenas um nodo pode estar transmitindo uma informao que recebida por todos os outros. No anel, os nodos formam uma cadeia na qual a

291

informao circula at chegar ao nodo de destino. Na estrela h um nodo central ao qual os outros nodos so ligados. Assim, toda informao deve passar pelo nodo central. O broadcast utiliza um meio comum compartilhado onde a informao no endereada especificamente a um nodo, mas simplesmente jogada no meio de transmisso. Exemplos tpicos de broadcast so redes de rdio e TV. Funcionalidades Alm dos componentes do computador (processador, memria, discos, ...), e das interfaces de rede (placas ethernet, seriais, USB, ...), h ainda diversos dispositivos para compor uma rede. Modems so componentes que fazem a converso de sinais ou de protocolos de enlace. A palavra vem de modulador/demodulador. Existem os modems para conexo discada a provedores que normalmente so assncronos e atingem at 56Kbps em linhas telefnicas normais. Modems equivalentes para linhas privadas so normalmente sncronos e possuem uma ampla faixa de velocidades. H aindas os modems ISDN (tipicamente 64 ou 128Kbps) e ADSL (tipicamente 256 ou 512Kbps, mas que podem atingir at 8Mbps). Hubs so equipamentos que permitem a conexo de diversos segmentos de rede e fazem a retransmisso entre estes segmentos de forma passiva. O dado que chega em uma porta retransmitido para todas as outras. Os mais comuns so os hubs para redes TP utilizando cabos CAT5, CAT5e ou CAT6. Normalmente trabalham em 10 ou 100 Mbps. Switches so equipamentos semelhante aos hubs mas que identificam os nodos pelos seu endereo MAC e somente transmitem o dado para a porta onde foi identificado o endereo MAC do nodo de destino. Tambm trabalham tipicamente em 10 ou 100 Mbps. Roteadores so equipamentos mais sofisticados que passam pacotes de uma rede para outra. Normalmente trabalham no nvel da camada de rede e suportam o IP e o IPX. Existem ainda roteadores que permitem filtro atravs de parmetros das camandas de transporte e aplicao. Trabalham em uma ampla faixa de velocidades. So altamentes configurveis e gerenciaveis atravs de protocolos como o SNMP e o HTTP. Bridges so equipamentos que fazem traduo de protocolos. Eles podem reencapsular um protocolo utilizando qualquer tipo de rede ou enlace.

Sistema Operacional GNU/Linux

292

Gerenciamento
A ISO - International Standards Organization - define 5 reas funcionais para o gerenciamento de redes no modelo OSI - Open Systems Interconnection, conhecidas como reas funcionais especficas de gerenciamento (OSI - Specific Management Function Areas). Estas reas so: Gerenciamento de falhas Responsvel pela localizao de problemas ou falhas na rede ou em seus elementos, envolvendo a descoberta, o isolamento e a resoluo do problema. Gerenciamento de Configurao Processo responsvel por identificar e configurar dispositivos crticos que controlam o comportamento da rede. Inclui, alm disso, o provisionamento (instalao e disponibilizao) de recursos e servios. Gerenciamento de Segurana Responsvel pelo controle de acesso informao e aos dispositivos da rede, protegendo-os de abusos intencionais ou acidentais. Gerenciamento de Desempenho Enderea os processos que garantem a utilizao mais eficiente dos recursos da rede e sua habilidade para atingir os objetivos do nvel de servio, envolvendo a medio do desempenho de software, hardware e meios de comunicao da rede. Gerenciamento de Contabilizao a area que processa e manipula os registros de utilizao de recursos e servios. O gerenciamento de um sistema de computao deve garantir os seguintes aspectos: Integridade O sistema dever se manter intacto, sem defeitos ou falhas, sejam pelo tempo de uso, seja pela violao fsica ou lgica. Verificaes peridicas no estado dos componentes e nos tens de proteo so muito importantes. O sistema deve ter o maior tempo de disponibilidade para utilizao. Deve ser minimizado o tempo para atualizaes ou reparos.A qualidade dos componentes e dos tens de proteo so fatores decisivos para alcanar este objetivo. Todos os componentes do sistema dever estar funcionando corretamente. Nenhum procedimento ou informao poder ser maliciosamente alterado. Rotinas de diagnstico devem ser realizadas para que isto seja conseguido. Dados, procedimentos e informaes s devem ser disponibilizadas quando e para quem ou o que for necessrio.

Disponibilidade

Confiabilidade

Privacidade

Os quatro aspectos acima esto diretamente relacionados com a segurana do sistema. Um ataque que reduz o desempenho de um sistema (por exemplo, atravs sobrecarga de servios Denial of Services ou DoS) est comprometendo diretamente a disponibilidade do sistema. Um virus pode comprometer a integridade e a confiabilidade do sistema, e em alguns casos, a privacidade das informaes (quando, por exemplo, envia documentos contidos em discos locais por e-mail ou ftp para outros sites).

Sistema Operacional GNU/Linux

293

Mesmo um usurio comum pode comprometer qualquer aspecto do sistema, da mesma forma que um hardware ou software com defeitos o fazem. Uma utilizao errada ou maliciosa do sistema tem efeito igualmente devastador em todos os aspectos. Um ponto comum de falha de segurana a senha dos usurios. Senhas fceis podem ser descobertas por outros e assim serem utilizadas para a invaso e utilizao no autorizada (e na maioria maliciosa) do sistema. Entidades a gerenciar e atribuies do gerente Qualquer entidade que compe um sistema passvel de gerenciamento. O gerenciamento envolve desde o controle de qualidade do hardware e do software at o controle dos usurios. A funo do gerente controlar a utilizao destas entidades que, como em sistemas operacionais, denominamos recursos. Alguns recursos somente fornecem informaes e no possuem parmetros ajustveis. Outros so parametrizveis e possuem mecanismos para que se ajustem meta de qualidade de servio do sistema. O gerente deve definir quem, quando, o que e quanto ser alocado. Ele deve avaliar, por exemplo, quando e se necessrio um upgrade ou substituio de um hardware ou software para solucionar problemas relacionados ao desempenho ou segurana do sistema. Para isto ele tem o auxlio de diversas metodologias e parmetros que podem ser ajustados para atingir suas metas. Um sistema de computao, ou conjunto de sistemas de computao, dever ser dividido em subsistemas que tero suas entidades individuais a serem gerenciadas. O desempenho total ser ento avaliado pelo comportamento de cada subsistema. Por exemplo, em uma rede de computadores definimos as entidades de cada computador e dos elementos de conexo. Em um computador identificamos seus componentes de hardware e de software como tambm suas funes na rede. So medidos o uso do(s) processador(es), o uso da memria, o uso do espao em disco, as taxas de transferncia entre os dispositivos e o desempenho de cada software nele em execuo. So ainda verificados os diversos aspectos da segurana (fsica e lgica), como usurios e suas senhas, processos em execuo, servios disponveis (portos abertos), acesso fsico, sesses abertas, conectividade externa (modems, links de comunicao, ...), programas, arquivos e documentos disponveis. No subsistema de rede, identificamos todos os pontos de conexo, os equipamentos de conexo e o cabeamento. Alm da integridade e desempenho de cada entidade, verificamos tambm os aspectos de segurana fsica e lgica. Pontos de rede em locais de acesso pblico podem se tornar uma entrada fcil para invasores. Equipamentos gerenciveis como os roteadores devem ter suas configuraes analisadas e, se necessrio, reconfiguradas para melhorar o desempenho e a segurana. Os servios em execuo tambm possuem parmetros que afetam o desempenho e a segurana, como a quantidade de memria e disco utilizveis, nmero de conexes simultneas, tamanhos de pacotes, interfaces por onde as requisies podem ser atendidas, identificao de usurios, mquinas e domnios que podem utilizar o servio, etc. Diversos servios geram relatrios de acesso que podem ser utilizados pelo gerente para avaliar o seu funcionamento e, se necessrio, adequar os parmetros para atingir a meta de desempenho. Por exemplo, o apache - servidor HTTP padro do Linux - gera logs de acesso e erro que podem ser analisados pelo webalizer informando as pginas acessadas, os arquivos transferidos, o nmero de bytes e a origem das requisies, alm dos erros de acesso (como pginas ou objetos no encontrados). O squid - servidor proxy padro do Linux - tambm gera logs que podem ser analisados pelo calamaris e informa, por exemplo, que objetos foram obtidos em memria, disco ou diretamente do site destino e por qual origem.

Sistema Operacional GNU/Linux Protocolos e mtodos de gerenciamento De qualquer sistema podemos obter alguns medidores de desempenho: MTTF

294

Mean Time To Failure: o tempo mdio para o defeito inicial. tambm uma medida da garantia ou da validade do componente at a necessidade de uma reviso (preventiva ou corretiva) ou de uma atualizao. Mean Time Between Failures: o tempo mdio entre falhas. uma medida da qualidade do componente. Este tempo pode reduzir com o tempo de uso (idade) do componente. Em alguns componentes, como no software, h um perodo quando este tempo torna-se bem grande, e alguns casos at infinito. o perodo de estabilidade do componente. Mean Time To Recover ou Mean Time To Repair: o tempo mdio para consertar o componente falho. Deve ser minimizado em componentes crticos que afetam todo o sistema. Isto conseguido utilizando a redundncia Dependendo do grau de criticidade na falha do componente, pode ser utilizada at redundncia tripla ou qudrupla. MTBF =

MTBF

MTTR

Medindo-se cada taxa de falhas FRi obtemos:

FRi
i

e a disponibilidade do sistema :

A=

MTBF MTBF + MTTR

Em um sistema de computao podem ser consideradas as falhas de leitura ou escrita em dispositivos de armazenamento ou de entrada e sada, as falhas de comunicao por indisponibilidade ou erro dos componentes. Os erros de comunicao (como perdas de pacotes ou erros de CRC) iro causar retransmisses que causaro grande impacto no desempenho do subsistema de comunicao e ainda na disponibilidade de servios do sistema (como, por exemplo, em servidores HTTP acessveis atravs de placas de rede, hubs, switches ou roteadores falhos). Alguns equipamentos so gerenciados atravs de uma abertura de sesso para acesso a aplicativos de monitorao ou configurao. A grande maioria deles possuem acesso atravs do protocolo telnet. Este protocolo inseguro por trafegar informaes em sua forma no criptografada que podem ser observadas (e s vezer modificadas) por "escutas" em ataques denominados "man in the middle". Deve ser tomado o cuidado com os usurios e senhas cadastradas nestes equipamentos e com os acessos a eles, principalmente atravs de conexes pblicas (modems e conexes com a Internet, por exemplo). Esto se tornando muito comuns os equipamentos configurveis e gerenciaveis utilizando navegadores web, atravs de protocolo HTTP. Quando possvel dever ser configurados acessos utilizando SSL - secure socket layer, como o SSH e o HTTPS. Assim as informaes trafegaro na forma criptografada e autenticada e sero lixo para as "escutas".

Sistema Operacional GNU/Linux O TCP/IP possui ainda protocolos de gerenciamento como: ICMP

295

Internet Control Message Protocol: utilizado para reportar o estado e erros de roteamento de datagramas. Obtemos com ele informaes importantes sobre a capacidade de alcance a um destino, roteamento e trfego. O protocolo ICMP descrito no RFC 792. Internet Group Multicast Protocol: utilizado no controle de multicast cujo propsito o envio de um pacote a mais de um destino.

IGMP

O TCP/IP possui ainda sevios como: BGP OSPF SNMP Border Gateway Protocol: Descrito no RFC 1771. Open Shortest Path First: O OSPF verso 2 descrito no RFC 1583. Simple Network Management Protocol: protocolo simples de gerenciamento de redes baseado na filosofia fetch/store para a busca de informaes e configurao de equipamentos. As informaes so descritas na MIB do equipamento. A MIB descrita no RFC 1066 e o protocolo SNMP descrito no RFC 1157.

SNMP e MIB
A MIB - Management Information Base - descreve variveis para o gerenciamento de uma entidade utilizando o protocolo SNMP. A documentao de uma MIB descrita em ASN.1 Abstract Syntax Notation 1 - uma linguagem formal definida pela ISO com o objetivo da exatido. A definio de uma varivel utilizando a notao ASN.1 no pemite ambiguidades em seu significado ou representao. Como no h necessidade de interpretao, ela pode ser tratada diretamente pelos programas nos equipamentos. Uma varivel na MIB pertence a um namespace. Os namespaces da Internet so administrados pela ISO o que garante uma identificaco nica mundial para um objeto. Os objetos so identificados de forma hierrquica. Nesta rvore, o namespace chamado nodo. Existem nodos abrangentes definidos pela ISO que delega a administrao de sub-rvores especficas a outras entidades: ISO ----- Pas -+---------- Alemanha +---------- Brasil +---------- China +---------- ... +---------- Zmbia

Sistema Operacional GNU/Linux

296

A Internet est na seguinte sub-rvore (que mostra o identificador numrico do nodo entre parentesis): iso (1) ---- org (3) ----- dod (6) --- internet (1) A MIB est na seguinte sub-rvore: internet (1) -+----- dir (1) +----- mgmt (2) ---- mib-2 (1) +--- system(1) | +--- interfaces(2) | +--- at (3) | +--- ip (4) | +--- icmp (5) | +--- tcp (6) | +--- udp (7) | +--- snmp (8) +---- exp (3) +---- pri (4) Assim, uma varivel pode ser obtida pelo seu identificador numrico ou textual. Por exemplo, a varivel iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0 tem a representao numrica .1.3.6.1.2.1.1.1.0

Sistema Operacional GNU/Linux

297

Um exemplo de definio da MIB public em ASN.1 pode ser encontrada no Linux em /usr/share/mibs/ietf/RFC1158-MIB. Abaixo vemos a definio das 2 primeiras variveis , system.sysDescr.0 e system.sysObjectID.0:
RFC1158-MIB DEFINITIONS ::= BEGIN IMPORTS mgmt, OBJECT-TYPE, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks FROM RFC1155-SMI; DisplayString ::= OCTET STRING mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } -- (same prefix as MIB-I) -- MIB-II

system OBJECT IDENTIFIER ::= { mib-2 1 } interfaces OBJECT IDENTIFIER ::= { mib-2 2 } at OBJECT IDENTIFIER ::= { mib-2 3 } ip OBJECT IDENTIFIER ::= { mib-2 4 } icmp OBJECT IDENTIFIER ::= { mib-2 5 } tcp OBJECT IDENTIFIER ::= { mib-2 6 } udp OBJECT IDENTIFIER ::= { mib-2 7 } egp OBJECT IDENTIFIER ::= { mib-2 8 } -- cmot OBJECT IDENTIFIER ::= { mib-2 9 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } snmp OBJECT IDENTIFIER ::= { mib-2 11 } -- object types -- the System group sysDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory ::= { system 1 } sysObjectID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory ::= { system 2 }

...
END

Sistema Operacional GNU/Linux Aplicativos SNMP

298

Para a utilizao do protocolo SNMP sem a necessidade de desenvolver aplicativos utilizando a API, diversos sistemas operacionais (principalmente os UNIX-like) disponibilizam utilitrios para gerenciar elementos de redes. Para o Linux h, por exemplo, o pacote ucdsnmp que inclui o servidor snmpd, bibliotecas e interfaces para desenvolvimento de aplicativos SNMP e diversos utilitrios. Entre estes utilitrios esto: snmpget snmpset snmpstatus snmpwalk snmptable snmpnetstat snmptest snmptranslate snmptrap, snmpinform snmpdelta obtm valores de variveis da base MIB a partir da identificao do objeto (objetcID) utilizando o mtodo GET do SNMP. atribui valores a variveis da base MIB utilizando o mtodo SET do SNMP. obtm informaes sobre uma entidade de rede. obtm variveis da base MIB utilizando o mtodo NEXT do SNMP. obtm e imprime uma tabela SNMP. obtm informaces sobre a rede usando o SNMP. gerencia a base MIB. Inicialmente utiliza mtodo GET. Com os comandos $G, $S e $N o mtodo pode ser alterado para GET, SET e NEXT, respectivamente. traduz objetos SNMP em informaes mais teis. envia um trap para um gerente SNMP. monitora alteraes de valores inteiros de variveis da base MIB.

Sistema Operacional GNU/Linux

299

Assim, para ver a definico da sub-rvore system podemos utilizar o comando snmptranslate, como a seguir:

hmarx@thor:~> snmptranslate -Tp -OS .iso.org.dod.internet.mgmt.mib-2.system +--system(1) | +-- -R-- String sysDescr(1) | Textual Convention: DisplayString | Size: 0..255 +-- -R-- ObjID sysObjectID(2) +-- -R-- TimeTicks sysUpTime(3) +-- -RW- String sysContact(4) | Textual Convention: DisplayString | Size: 0..255 +-- -RW- String sysName(5) | Textual Convention: DisplayString | Size: 0..255 +-- -RW- String sysLocation(6) | Textual Convention: DisplayString | Size: 0..255 +-- -R-- INTEGER sysServices(7) | Range: 0..127 +-- -R-- TimeTicks sysORLastChange(8) | Textual Convention: TimeStamp | +--sysORTable(9) | +--sysOREntry(1) | Index: sysORIndex | +-- ---- INTEGER sysORIndex(1) | Range: 1..2147483647 +-- -R-- ObjID sysORID(2) +-- -R-- String sysORDescr(3) | Textual Convention: DisplayString | Size: 0..255 +-- -R-- TimeTicks sysORUpTime(4) Textual Convention: TimeStamp hmarx@thor:~>

Sistema Operacional GNU/Linux

300

Por exemplo, utilizando os utilitrio snmpwalk em uma mquina chamada thor, podemos obter, por exemplo, as primeiras 8 variveis definidas na comunidade public da MIB de uma mquina eagle:

hmarx@thor:~> snmpwalk eagle public | head -8 system.sysDescr.0 = Linux eagle 2.4.19-4GB #1 Fri Sep 13 13:14:56 UTC 2002 i686 system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linux system.sysUpTime.0 = Timeticks: (7868) 0:0 system.sysContact.0 = Sysadmin (root@localhost) system.sysName.0 = eagle system.sysLocation.0 = Server Room system.sysORLastChange.0 = Timeticks: (5) 0:0 system.sysORTable.sysOREntry.sysORID.1 = OID: ifMIB hmarx@thor: ~> snmpget eagle public system.sysName.0 system.sysName.0 = eagle hmarx@thor: > snmpstatus eagle public [192.168.200.5]=>[Linux eagle 2.4.19-4GB #1 Fri Sep 13 13:14:56 UTC 2002 i686] Up: 0:0 Interfaces: 0, Recv/Trans packets: 17830/17830 | IP: 17926/20383 hmarx@thor:~> snmptest eagle public Variable: system.sysDescr.0 Variable: system.sysName.0 Variable: Received Get Response from 192.168.200.5 requestid 0x370E3B1A errstat 0x0 errindex 0x0 system.sysDescr.0 = Linux eagle 2.4.19-4GB #1 Fri Sep 13 13:14:56 UTC 2002 i686 system.sysName.0 = eagle Variable: ^DQuitting, Goobye hmarx@thor:~>

Sistema Operacional GNU/Linux Firewalls como ferramentas de gerenciamento Uma das ferramentas mais utilizadas para o gerenciamento de servios em redes o firewall. Alm de prover a segurana da rede, incluindo os aspectos de desempenho atravs de controle de banda e priorizao por tipo de servio (QoS), o firewall tambm utilizado para anlise de trfego. Ele gera logs contendo informaes sobre os pacotes com sua origem, destino, protocolo, porto, tamanho e a poltica aplicada ao pacote (ACCEPT, DROP, DENY, REDIRECT, MASQ, FORWARD, ...).

301

O firewall utiliza filtros de pacotes a partir das diversas informaes do pacote. Para sua configurao, deve-se conhecer as diversas camadas envolvidas (enlace, rede, transporte e aplicao), seus respectivos protocolos e portos, em cada interface de rede do equipamento firewall. A partir dos logs possvel identificar possveis tentativas de invaso e analisar o desempenho do firewall. Como visto no captulo 10, no Linux (kernel 2.4.x ou superior) utilizado o software iptables que manipula tabelas de filtros de pacotes do kernel. Outros aplicativos Os gerentes e analistas de desempenho de rede utilizam ainda diversos aplicativos. Alguns deles so igualmente utilizados por hackers e crackers para identificar os pontos vulnerveis e furos de segurana dos sistemas de computao. Os mais conhecidos so os sniffers e os port scanners. Os sniffers so utilizados para capturar as informaes que trafegam pela rede. Programas como tcpdump, snort e ethereal disponveis no Linux capturam e exibem os pacotes identificando suas diversas partes. Podem ser utilizados filtros para selecionar os valores dos diversos campos dos pacotes. Os port scanners so aplicativos que tentam detectar os portos abertos em um sistema de computao. O nmap um dos mais utilizados. Os utilitrios socklist e rpcinfo podem ser utilizados para identificar os processos associados a portos abertos em um sistema. H ainda o icmpinfo que interpreta as mensagens ICMP recebidas pela mquina local. Ferramentas bsicas como o ping, arp, rarp podem ser utilizadas para identificar os endereos das mquinas em uma rede e seu alcance. H ainda o bing (bandwidth ping) que mede a banda entre dois equipamentos utilizando pacotes de dois tamanhos. Para controlar o acesso a servios utilizado o tcpd. Ele pode monitorar os acessos a servios como telnet, ftp, pop3, smtp, rlogin, finger, rsh, registrar o acesso e, de acordo com sua configurao, executar o programa servidor apropriado. Normalmente estes servios so configurados no arquivo /etc/inetd.conf. O processo inetd receber a conexo no porto especificado e executar o processo correspondente. O processo definido como tcpd que recebe o nome do processo servidor como argumento. Se os arquivos /etc/hosts.allow e /etc/hosts.deny permitirem a conexo, o tcpd dispara o servidor, repassando a conexo. Um servio tpico do inetd o protocolo POP3, e no arquivo /etc/inetd.conf podemos ver a seguinte linha: pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper -s

que indica que o programa /usr/sbin/tcpd ser disparado quando houver um acesso ao porto pop3 pelo socket stream do protocolo tcp com usurio root. O tcpd, aps registrar e verificar a segurana, ir disparar o servidor /usr/sbin/popper passando o argumento -s.

Sistema Operacional GNU/Linux

302

Utilizando o xinetd, o arquivo /etc/xinetd.d/qpopper contm as mesmas informaes em um formato mais estruturado: service pop3 { disable = no socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/popper server_args = -s #server_args = -s -l1 -p2 -f /etc/mail/certs/qpop.conf flags = IPv4 }

Os portos de servios, como o de nome pop3 (110), so definidos em /etc/services. A gerao de logs configurada normalmente para utilizar o syslogd que configurado em /etc/syslog.conf. Neste arquivo so definidos como e onde as mensagens sero registradas (em um arquivo, em um terminal, ou enviadas para um usurio logado ou mesmo para um servidor remoto). No Linux, a maioria dos arquivos de log se encontra no diretrio /var/log. O bom administrador deve verificar com frequncia estes arquivos (e demais arquivos de log de cada servio configurado) para identificar possveis falhas. Eventos crticos podem ainda ser tratados automaticamente por aplicativos especficos, gerando, por exemplo, mensagens SMS (por exemplo, pagers e celulares) para equipes de suporte, ou redisparando servios. Podem ainda serem geradas pginas WEB com relatrios e grficos derivados destes logs. Por motivo de segurana (principalmente inferncia), tais pginas devem ter acesso controlado atravs de usurio e senha e ser acessvel atravs de protocolo HTTPS. Em alguns casos somente acessveis de algumas mquinas especficas.

Sistema Operacional GNU/Linux

303

12. Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux


Desde sua criao, a plataforma Unix definiu um padro de chamadas s funes do sistema operacional atravs de um conjunto de bibliotecas. Estas bibliotecas, como tambm quase todos os sistemas Unix-like e seus aplicativos, foram escritas na linguagem C. A linguagem C foi definida por Brian Kernigham e Dennis Ritchie em 1978. Nesta mesma poca, o Unix foi traduzido da linguagem de montagem do DEC PDP-7 para ela. Na criao do padro Unix System V, pela AT&T, no documento SVID (System V Interface Definition), foram definidas as funes, suas interfaces e comportamento. Assim, qualquer programa que fosse escrito utilizando este padro poderia ser facilmente portado para outro Unix e mesmo para outra arquitetura que suportasse o Unix. Bastava a recompilao dos fontes para a gerao do cdigo executvel na nova plataforma. O projeto GNU criou ento o compilador gcc, e o Linux utiliza este compilador como padro. O gcc considerado o melhor compilador existente. Ele utiliza o conceito de linguagens de mquinas virtuais hierrquicas. O programa na linguagem C/C++ compilado para uma linguagem de mquina virtual Linux. O cdigo produzido otimizado, e ento traduzido para a linguagem de mquina alvo (Intel, M68K, S390, etc). Este cdigo pode ser ento otimizado de acordo com a arquitetura do processador alvo, gerando o cdigo objeto final. Diversos compiladores para outras linguagens, disponveis para o Linux, utilizam a estrutura do gcc. Alguns compiladores at fazem uma traduo para a linguagem C e utilizam o prprio gcc para a gerao do cdigo final. Os portes iniciais do Pascal (p2c) e do Fortran (f2c) para o Linux seguiram esta filosofia. As verses atuais j compilam diretamente para a linguagem da mquina virtual Linux. Para o desenvolvimento de aplicativos em modo grfico h o KDevelop. Ele um ambiente integrado com muitas caractersticas semelhantes ao Microsoft Visual Studio e ao Borland Delphi. Ele utiliza as ferramentas GNU para a compilao, linkedio e depurao. Para o desenho da interface grfica so utilizados a QtLib e o QtDesigner da TrollTech.

Sistema Operacional GNU/Linux

304

QT Designer

Um programa executvel no um cdigo monoltico auto-contido. Ele utiliza diversas funes contidas em bibliotecas j existentes no Linux ou em pacotes adicionais (bibliotecas grficas, multimedia, comunicao, bancos de dados, etc). A linguagem C possui at uma biblioteca chamada de Standard C Library (biblioteca C padro). Ela contm funes definidas pela mquina virtual Unix e est disponvel em todos os sistemas Unix-like e todos os sistemas que possuem um compilador de C. Na gerao do cdigo executvel para um determinado tipo de processador, o desenvolvedor pode optar por utilizar linkedio esttica ou dinmica. Na linkedio esttica, todas as funes utilizadas pelo programa so colocadas no arquivo que contm o cdigo executvel. Assim, o programa funcionar em qualquer instalao do Linux em mquinas com o mesmo tipo de processador (i386, MIPS, ARM, 390, ...). Deve-se observar que o formato do arquivo executvel pode tambm variar e deve ser suportado pelo kernel Linux instalado.

Sistema Operacional GNU/Linux

305

Na linkedio dinmica, o arquivo executvel contm apenas as chamadas a pontos de entrada para as bibliotecas compartilhadas (shared libraries). Este conceito o equivalente s DLLs (Dynamic Linked Libraries) da plataforma Windows. O arquivo executvel ficar menor porque apenas contm chamadas para os pontos de entrada das funes das bibliotecas. Utilizando o ldd, pode-se ver a dependncia e a verso das bibliotecas compartilhadas utilizadas pelo programa: hmarx@thor ~> ldd /usr/bin/gcc linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0xb7555000) /lib/ld-linux.so.2 (0xb76ed000) hmarx@thor ~> J

Para a depurao de programas pode ser utilizado o GNU debugger, gdb. Ele pode ser utilizado para executar um programa passo a passo, examinar variveis e registradores, estabelecer condies para a interrupo da execuo em pontos para a depurao e tambm alterar valores durante a execuo. Ele permite tambm iniciar a depurao de um programa que j estava em execuo atravs de seu comando attach. Existem interfaces grficas como front end para o gdb, tais como o ddd, o kdbg e o mdulo de depurao do kdevelop. Outros aplicativos teis na depurao de programas e auditoria de uso de recursos do sistema so: Aplicativo lsof fuser strace ltrace socklist rpcinfo ipcs Descrio Lista arquivos abertos pelos processos Identifica processos utilizando os arquivos e sockets Exibe as chamadas de sistema e sinais Exibe as chamadas a bibliotecas dinmicas Exibe os sockets abertos e os portos associados Exibe informaes sobre RPC (Remote Procedure Call) Exibe informaes sobre IPC (Interprocess Communication)

Alguns exemplos:
thor:~ # lsof /var/log/{mail,warn,messages} COMMAND PID USER FD TYPE DEVICE SIZE syslogd 361 root 4w REG 3,65 219397 syslogd 361 root 8w REG 3,65 455344 syslogd 361 root 9w REG 3,65 455344 syslogd 361 root 10w REG 3,65 3405056 thor:~ # J

NODE 580836 583175 583175 580834

NAME /var/log/mail /var/log/warn /var/log/warn /var/log/messages

thor:~ # rpcinfo -p program vers proto 100000 2 tcp 100000 2 udp 100005 1 udp 100005 2 udp 100005 1 tcp 100005 2 tcp 100003 2 udp 100003 2 tcp thor:~ # J

port 111 111 860 860 863 863 2049 2049

portmapper portmapper mountd mountd mountd mountd nfs nfs

Sistema Operacional GNU/Linux

306

thor:~ # ipcs -a ------ Shared Memory Segments -------key shmid owner perms 0x5b410ec3 0 root 644 0x00000000 73531393 hmarx 777 ------ Semaphore Arrays -------key semid owner perms 0x5b410ec5 0 root 666 ------ Message Queues -------key msqid owner thor:~ # J perms bytes 1048576 196608 nsems 14 used-bytes nattch 1 2 status status dest

messages

Sistema Operacional GNU/Linux

307

Formato de arquivos executveis


O formato de executvel padro do Linux o ELF - Executable and Linkable Format. At o kernel 2.4, o Linux suportava diversos fomatos de executveis. Alm do ELF, o Linux suportava o antigo A.OUT e binrios de outras plataformas, como o Intel COFF (Common Object File Format), X.OUT, SCO ISC, UnixWare 7, Solaris e Wyse V/386. O suporte a estes formatos era normalmente feito atravs de mdulos carregveis do kernel. A partir do kernel 2.6, o nico formato suportado o ELF. O Linux pode tambm executar aplicativos DOS (.COM e .EXE) atravs do dosemu, ou aplicativos Windows atravs do wine ou do wabi da Caldera. O dosemu e o wine no so realmente emuladores. Eles criam uma mquina virtual para o DOS e para o Windows, respectivamente. O dosemu requer uma cpia do DOS, e por isto incluido o FreeDos. Outras verses proprietrias do DOS (como o PC-DOS, DR-DOS e MS-DOS) podem ser instaladas e configuradas no dosemu.

dosemu no SuSE Linux

Sistema Operacional GNU/Linux

308

Executando programas para Windows no Linux


O wine pode executar aplicativos DOS, Windows 3.x e Win32 (Win9x/NT) da plataforma Intel. O wine cria uma camada entre a API (Application Program Interface) do Windows e o sistema X Window. Ele suporta aplicativos escritos para todas as verses do Windows (Windows 3.x, Windows 9x, Windows NT, Windows Mem Windows 2K e XP). A maior parte da API do Windows e de suas DLLs j suportada nativamente. No SuSE Linux, um aplicativo Windows pode ser executado atravs da interface grfica KDE. O wine ser automaticamente iniciado. Ele utilizar a configurao personalizada definida no diretrio ~/.wine. Na primeira vez, ele criar um ambiente Windows simulado a partir do diretrio ~/.wine/fake_windows.

Paint Brush e Clock do Windows 3.11 no Wine

Sistema Operacional GNU/Linux

309

Emuladores
Existem ainda para o Linux diversos programas emuladores de hardware que permitem a instalao e a execuo de um ambiente operacional completo. O VMware, da empresa VMware Inc., cria uma mquina virtual com o mesmo tipo de processador da mquina hospedeira com acesso a quase todos os dispositivos disponveis em uma mquina real. A mquina virtual tem uma interface de rede que por meio de um bridge possibilita o acesso mquina hospedeira ou at mesmo sua rede local. O VMware possibilita a instalao e execuo perfeita do FreeBSD, do DOS, do Netware5 e de todas as verses do Windows (do 3.1 ao XP).

Windows 95 sendo executado pelo VMWare

Sistema Operacional GNU/Linux

310

O pose (Palm OS Emulator) capaz de emular diversos modelos do Palm da 3COM, bastando para isto ter a ROM do modelo correto. Ele pode rodar o PalmOS ou o Linux para Palm. Utilizando o compilador cruzado (crosscompiler) gcc (m68k-palmos-coff-gcc) podem ser desenvolvidos e testados aplicativos (atravs do gdb) para o PalmOS utilizando o prprio Linux, sem a necessidade de transferir o programa para um PalmPilot real. Note que o PalmOS no utiliza a biblioteca C padro. Existem ainda aplicativos para a realizao do HotSync.

O hercules um emulador de diversas arquiteturas da IBM, indo do 360 ao z900 (nos modos S/370, ESA/390 e zArchitecture). Ele executa facilmente o OS 360, o VM 370, o zOS, o Linux/390 e o Linux para zSeries. Ele emula o hardware do mainframe utilizando os dispositivos do PC. Por exemplo, um DASD 3390 pode ser emulado por um arquivo no disco e os terminais 3270 podem ser utilizados atravs do x3270 ou do tn3270 (aplicativos disponveis para o Linux para acesso a mainframes IBM). VM/370 no Hercules

Sistema Operacional GNU/Linux

311

O simh de Robert M. Supnik um emulador genrico capaz de simular diversas arquiteturas. Esto disponveis configuraes para vrios modelos da srie PDP da DEC, do HP2100 da Hewlet Packard, do IBM 1130, do IBM S/3, do Altair 8800, do Interdata I4, do Honeywell H316/H516, e do VAX. Emulando o pdp-11, o simh pode executar facilmente o RT11, o RSX11, e mesmo as verses originais do Unix de Thompson, Kernigham e Richie.

PDP-11 simulator V2.9-2 rodando o RT11 V05.03

Sistema Operacional GNU/Linux

312

Vax 11/780 rodando OpenVMS 7.3

Sistema Operacional GNU/Linux

313

H ainda o BasiliskII de Christian Bauer que simula muinas Macintosh com CPUs 68000. Nele pode ser executado o MacOS e todos os seus aplicativos. O Mac emulado pode utilizar recursos do Linux nativo ou atravs da rede com o protocolo AppleTalk (pacote netatalk).

Basilisk II rodando MacOS 7.5.5

Sistema Operacional GNU/Linux

314

Compilando fontes de aplicativos no Linux


Os fontes de um aplicativo podem ser obtidos em formato .tar (normalmente arquivos .tar, .tgz ou .tar.gz) ou em formato rpm (RedHat Package Manager). necessrio ento compil-los para se obter o(s) arquivo(s) executvel(eis). O primeiro passo a instalao dos fontes. Para o formato rpm pode-se utilizar o comando rpm: $ rpm -i nome do pacote src.rpm Nomalmente ser instalado no diretrio /usr/src/packages/SOURCES, um arquivo no formato .tar (provavelmente com a extenso .tar.gz ou .tar.bz2). Deve-se ento extrair os arquivos utilizando o comando: $ tar xvfz nome do arquivo tar.gz ou $ tar xvfj nome do arquivo tar.bz2 Sero criados um diretrio e diversos sub-diretrios e arquivos sob este diretrio. Mude para este diretrio e verifique se existe algum arquivo executvel com o nome configure. Caso exista, execute-o. Ele ir verificar a sua instalao do Linux e configurar os fontes para ela. Ser gerado ento um arquivo com o nome Makefile. Este arquivo ser utilizado pelo programa make que ir compilar os fontes e gerar o(s) executvel(eis). Alguns aplicativos podem requerer argumentos especiais para o configure ou ainda a alterao do arquivo Makefile. Aps a certeza da gerao adequada do arquivo Makefile, simplesmente digite: $ make O make ir automaticamente executar o gcc para compilar o(s) arquivo(s) fontes e o ld para gerar o(s) executvel(is). Se tudo estiver correto, voc poder instalar o aplicativo utilizando: # make install

Sistema Operacional GNU/Linux

315

Os arquivos Makefile
O programa make utiliza arquivos chamados de makefile que dizem o que fazer para produzir um determinado resultado. Este resultado normalmente compilar e linkeditar um programa gerando seu executvel. Um arquivo makefile contm regras para a gerao de resultados a partir de suas dependncias. Um destino pode ser um arquivo ou uma ao. O arquivo makefile pode conter linhas com definies de variveis, e diretivas para incluso de arquivos ou montagens condicionais. Textos aps o caracter # so comentrios e sero ignorados pelo make. As definies de variveis so semelhantes do bash: varivel= texto

Um <texto> poder continuar em outra linha se terminado pela barra invertida (\). As regras de dependncia tm o seguinte formato geral: resultado : lista de dependncias comando ... O resultado normalmente um ou mais arquivos a serem gerados a partir da lista de dependncias. Esta lista, que pode ser vazia, pode ser formada por nomes de arquivos ou de resultados. O(s) comando(s) so aes que devem ser executadas para produzir o resultado. O resultado default o primeiro encontrado no arquivo makefile. Normalmente criado um alvo do tipo all ou default com os resultados a serem gerados na lista de dependncias. A diretiva include far o make incluir o(s) arquivo(s) especificado(s). Os nomes podem incluir padres do shell como "*.mk". include lista de nomes de arquivos A diretiva ifeq permite a alterao condicional do processo de gerao dos resultados. ifeq (string1, string2) comandos1 [ else comandos2 ] endif

Sistema Operacional GNU/Linux

316

Um exemplo simples de um arquivo Makefile para compilar o famoso programa hello.c que imprime "Hello World!": # Makefile para o programa hello CC=gcc COPT=-Wall all: hello

clean: @-rm hello.o hello hello: hello.o $(CC) $(COPT) -o hello hello.o hello.o: hello.c $(CC) $(COPT) -c -o hello.o hello.c

No prompt do shell, basta digitar "make" para produzir o programa hello. O @ no comando rm indica no impresso do comando a ser executado. O - indica ignorar erro de retorno do comando rm caso os arquivos no existam.

Gerando pacotes RPM


Para gerar um pacote RPM necessrio criar o arquivo com a especificao. Este arquivo no formato texto tem a extenso .spec. Ele composto de sesses que definem o pacote, seu conteudo e diretivas para a instalao, atualizao ou remoo do pacote. A primeira sesso do arquivo descreve o pacote e contm tags no formato: tag [ ( fase ) ] : Os tags principais so: Tag Name Version Release Source Sumary License Distribution Group BuildArch BuildRoot BuildRequires Requires Descrio Nome do pacote Nmero da Verso Nmero do Release Localizao do arquivo com os fontes Descrio sumria Forma de licenciamento Distribuio Linux Nome do grupo do aplicativo Arquitetura Diretdio temporrio para criao do pacote Dependncias para a criao do pacote Dependncias para instalao texto

Sistema Operacional GNU/Linux As fases, utilizadas nos tags Requires ou BuildRequires , so: Fase pre post preun postun Pr instalao do pacote Ps instalao do pacote Pr remoo do pacote Ps remoo do pacote Descrio

317

A sesses seguintes fornecem informaes adicionais para a criao do pacote e tm o formato: texto %tag linhas com informaes sobre o tag ... Os principais tags das sesses so: 1. Descrio mais completa do pacote %description [ -n nome-do-pacote ] [ -l lingua ] 2. Preparaco para instalaao do pacote %prep %setup -q 3. Criao do pacote %build make 4. Instalao do pacote %install comandos shell para instalao do pacote 5. Remoo de arquivos temporrios %clean comandos para remoo de arquivos e diretrios temporrios 6. Arquivos %files [ %defattr (permisses, usurio, grupo) ] [ %dir %attr (permisses, usurio, grupo) caminho ] lista de arquivos com o caminho 7. Histrico de atualizaes %changelog { * dia-da-semana ms dia ano responsvel <email> { * texto descritivo } }

Sistema Operacional GNU/Linux Algumas diretivas ou macros como: %{name} %{version} %{_tmppath} %{buildroot} %{suse_version} %(linha de comando) %{release} %{_bindir}

318

podem ser utilizadas no arquivo .spec para melhor parametrizar o pacote. O fonte do pacote um arquivo tar cujo nome deve seguir o formato nome-do-pacote-%{version}.tar.{ gz | bz2 } Este arquivo deve conter os arquivos necessrios para criao do pacote.

Exemplo de pacote RPM


A seguir mostrado o arquivo .spec para um pacote simples chamado simplepackage. O pacote ir instalar os arquivos /usr/local/pacote/prog /usr/local/pacote/arq.txt /usr/local/pacote/img.png O executvel prog gerado a partir do seu fonte em C, prog.c. O arquivo tar da verso 1.0, criado com o contedo do diretrio simple-package1.0/, para o pacote simple-package contm:

hmarx@venus:/usr/src/packager/SOURCES> tar tvfj simple-package-1.0.tar.bz2 drwxrwx--- hmarx/linuxtech 0 2009-12-08 13:58 simple-package-1.0/ -rw-rw---- hmarx/linuxtech 32 2009-12-08 13:57 simple-package-1.0/Makefile -rw-rw---- hmarx/linuxtech 66 2009-12-08 13:57 simple-package-1.0/prog.c -rw-rw---- hmarx/linuxtech 28 2009-12-08 13:58 simple-package-1.0/arq.txt -rw-r----- hmarx/linuxtech 17454 2009-12-08 13:58 simple-package-1.0/img.png hmarx@venus:/usr/src/packager/SOURCES> J

O processo de criao do RPM ir extrair todos os arquivos do arquivo simple-package-1.0.tar.bz2 no diretrio /usr/src/packages/BUILD e executar o script descrito em %build gerando o arquivo RPM no diretrio /usr/src/packages/RPMS/i586/ A arquitetura i586 (default) foi definida no tag BuildArch.

Sistema Operacional GNU/Linux Arquivo .spec para o pacote simple-package


Name: Version: Release: Source: Summary: License: Distribution: Group: BuildArch: simple-package 1.0 0.1 simple-package-1.0.tar.bz2 Simple Package GPL openSuSE Applications i586

319

%description Simple package to demonstrate the RPM build process %description -l pt_BR Pacote simples para demonstrar o processo de criar RPM %prep %setup -q %build make %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/local/pacote install -m 755 prog $RPM_BUILD_ROOT/usr/local/pacote/prog install -m 644 arq.txt $RPM_BUILD_ROOT/usr/local/pacote/arq.txt install -m 644 img.png $RPM_BUILD_ROOT/usr/local/pacote/img.png %clean rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root) %dir %attr(755,root,root) /usr/local/pacote /usr/local/pacote/prog /usr/local/pacote/arq.txt /usr/local/pacote/img.png %changelog * Tue Dec 8 2009 Helio Marques <hmarx@linuxtech.com.br> * Simple package - initial version

Sistema Operacional GNU/Linux Tendo os dois arquivos : simple-package-1.0.tar.bz2 simple-package.spec basta executar o aplicativo rpmbuild para construir o pacote. Abaixo as formas de gerar os pacotes:

320

Pacote a ser gerado binrio fonte ambos

Comando rpmbuild -bb aquivo.spec rpmbuild -bs aquivo.spec rpmbuild -ba aquivo.spec

Os arquivos gerados sero em:


/usr/src/packages/SRPMS/simple-package-1.0-0.1.src.rpm /usr/src/packages/RPMS/i586/simple-package-1.0-0.1.i586.rpm

Listando as informaes do pacote, temos:


root@thor:~ # rpm -qpi /usr/src/packages/RPMS/i586/simple-package-1.0-0.1.i586.rpm Name : simple-package Relocations: (not relocatable) Version : 1.0 Vendor: (none) Release : 0.1 Build Date: Mon 04 Jan 2010 09:53:15 AM BRST Install Date : (not installed) Build Host: thor.linuxtech.com.br Group : Applications Source RPM: simple-package-1.0-0.1.src.rpm Size : 27517 License: GPL Signature : (none) Summary : Simple Package Description : Simple package to demonstrate the RPM build process Distribution: openSuSE root@thor:~ # J

Sistema Operacional GNU/Linux O pacote poder ser instalado utilizando o comando rpm.
root@thor:~ # rpm -ivh simple-package-1.0-0.1.i586.rpm Preparing... ########################################### [100%] 1:simple-package ########################################### [100%] root@thor:~ # J

321

Quando for atualizar o pacote:


root@thor:~ # rpm -Uvh simple-package-1.0-0.3.i586.rpm Preparing... ########################################### [100%] 1:simple-package ########################################### [100%] thor@thor:~ # J

Ou quando for remover o pacote:

root@thor:~ # rpm -e simple-package root@thor:~ # J

Sistema Operacional GNU/Linux

322

Sistema Operacional GNU/Linux

323

13. Expresses Regulares


Expresses Regulares
Expresses regulares so uma ferramenta muito poderosa utilizada em diversos aplicativos, incluindo shells, como o bash, editores de texto, como o vi, utilitrios como o grep, sed e find, e diversas linguagens de programao, como Perl. Estas expresses so cadeias de caracteres que formam um padro a ser comparado em um texto. Expresses regulares so tambm chamadas de pattern matching ou simplesmente regex. Elas so formadas por dois tipos de caracteres: caracteres especiais, denominados metacaracteres, e os literais, ou caracteres normais. Assim, uma cadeia de caracteres normais como linux uma expresso regular que deve ser lida como o caracter l, seguido do caracter i, seguido do caracter n, seguido do caracter u, seguido do caracter x. A cadeia *doc* deve ser lida como zero ou mais caracteres, seguidos do caracted d, seguido do caracted o, seguido do caracter c, seguido de zero ou mais caracteres.

Os metacaracteres mais utilizados so: Metacaracter . [ ... ] [^... ] Nome ponto classe de caracteres classe negada Significado qualquer caracter qualquer caracter da classe qualquer caracter no listado

\c

escaped char

caracter c literalmente

^ $ \< \>

circunflexo dlar (cifro) barra-invertida menor barra-invertida maior

incio da linha fim da linha incio de uma palavra fim de uma palavra

| ( ... )

barra-em-p parntesis

separa expresses alternativas define escopo da expresso

Sistema Operacional GNU/Linux Alguns metacaracteres so quantificadores ou de repetio: Metacaracter ? * + Nome interrogao asterisco mais Significado 0 ou 1 caracter 0 ou mais caracteres 1 ou mais caracteres

324

{ mn, mx }

faixa de quantidades

Requer mn, Limite mx

As expresses regulares so utilizadas, por exemplo, para procurar um nmero em um texto. Para um nmero especfico, como 12345, a expresso regular a cadeia formada pelos caracteres do nmero, ou seja, 12345. Se a procura for por um nmero qualquer, utilizamos os metacaracteres para definir um nmero, ou seja, uma sequncia de dgitos. Assim, um nmero qualquer (1 ou mais dgitos) pode ser definido por qualquer uma das seguintes expresses regulares: [0-9]+ [0-9][0-9]* dgito repetido 1 ou mais vezes um dgito seguido de 0 ou mais dgitos

Uma cadeia entre aspas pode ser definida como: "[^"]*" aspas, seguido de 0 ou mais caracteres que no sejam as aspas, seguido de aspas.

s vezes, necessrio referenciar uma cadeia encontrada por uma subexpresso agrupada por parntesis, \( e \). So utilizados ento os metacaracteres \1, \2, ..., equivalentes s cadeias que combinam com as expresses associadas primeira expresso, segunda expresso, ..., respectivamente. Assim, utilizando o sed, podemos substituir todo assinalamento da forma varivel := nmero por nmero ==> varivel utilizando o comando: $ sed "/\([a-z]\+\) := \([0-9]\+\)/s//\2 ==> \1/" arquivo > arquivo.novo Para listar as palavras comeadas com x (maisculo ou minsculo) do dicionrio podemos utilizar: $ grep "^\(x\|X\)" /usr/share/dict/words Para listar o remetente e o assunto de e-mails em uma caixa postal do usurio jose podemos utilizar simplesmente: $ grep "^\(From\|Subject\):" /var/spool/mail/jose

Sistema Operacional GNU/Linux

325

14. O Editor de Textos VI

O editor de textos vi
O editor de textos padro dos sistemas Unix-like o vi (visual). Este um editor muito poderoso. A interface com o usurio pode parecer complicada devido grande quantidade de comandos. Porm, considerando a lngua inglesa, os comandos so bastante intuitivos. Veremos aqui apenas alguns comandos mais importantes. O vi trabalha em trs modos: comando, edio e comando de uma linha. No modo comando, cada caracter digitado ser interpretado pelo vi como um comando. No modo edio, os caracteres sero inseridos (ou substitudos ) no texto. No modo comando de linha, um comando completo digitado e ser executado ao pressionar o . Para iniciar o vi, entre em um terminal (ou um xterm) e digite: $ vi ou, para editar arquivo(s) existente(s), $ vi nome_do_arquivo ... O vi ser iniciado no modo comando. Mostrar o contedo do arquivo, seguido de linhas com o caracter "~" na primeira coluna para indicar onde o arquivo termina. Para entrar em modo edio, pode-se utilizar um dos seguintes comandos: i I a A o O C insere a partir da posio atual do cursor insere a partir do incio da linha insere aps a posio atual do cursor insere aps o fim da linha cria uma linha nova aps a atual e comea a insero cria uma linha nova antes da atual e comea a insero apaga da posio atual do cursor at o fim da linha e comea a insero

Para sair do modo de edio, e voltar ao modo comando, use a tecla

Sistema Operacional GNU/Linux Para caminhar pelo texto, utilize: h j k l 0 $ H L M nG % n| w W b B fc Fc tc ou (seta para a esquerda), volta o cursor uma coluna ou (seta para baixo), avana o cursor uma linha ou (seta para cima), volta o cursor uma linha ou (seta para a direita), avana o cursor uma coluna ou , vai para o incio da linha ou , vai para o fim da linha vai para o incio da primeira linha da tela vai para o incio da ltima linha da tela vai para o incio da linha do meio da tela vai para a linha n ou para o fim do texto posiciona no ( , ), {, }, [ ou ] correspondente posiciona na coluna n vai para o incio da prxima palavra vai para o incio da prxima palavra, ignorando caracteres especiais vai para o incio da palavra anterior vai para o incio da palavra anterior, ignorando caracteres especiais posiciona o cursor na prxima ocorrncia do caracter c posiciona o cursor na ocorrncia anterior do caracter c posiciona o cursor antes da prxima ocorrncia do caracter c

326

Tc

posiciona o cursor aps a ocorrncia anterior do caracter c

+B +F +U +D

rola a tela para cima (igual a rola a tela para cima rola a tela para baixo

) rola a tela para baixo (igual a )

Sistema Operacional GNU/Linux

327

Para excluir ou copiar textos, existem os seguintes comandos: nx nX d ou n, apaga os prximos n caracteres a partir do cursor apaga os n caracteres anteriores inicia a sequncia para apagar, exemplos: apaga n linhas (default n=1) ndd apaga n palavras ndw inicia a sequncia para salvar, exemplos: salva n linhas a partir da corrente nyy salva as prximas n palavras ynw insere o texto salvo aps a posio corrente insere o texto salvo antes da posio corrente substitui os prximos n caracteres por c inicia modo de sobrescrever (oveRwrite) troca a caixa do caracter (maiscula <-> minscula) desfaz a ltima alterao desfaz as alteraes feitas na linha

p P n rc R ~ u U

Utilizando-se a sequncia "c antes dos comandos, o texto salvo ou removido colocado em um buffer identificado por c. Este buffer pode ser, por exemplo, inserido aps a posio do cursor com o comando: "cp

Sistema Operacional GNU/Linux Para procurar um texto (que pode ser uma expresso regular), podemos utilizar: /texto ?texto n N procura o texto para frente procura o texto para trs procura a prxima ocorrncia procura a ocorrncia anterior

328

Pode-se marcar um texto, para executar um comando, utilizando: v V

+V

mc c c !cmd

inicia a marcao caracter a caracter inicia a marcao de linhas inicia a marcao de colunas marca a linha com o caracter c (invisvel) vai para o incio da linha marcada com o caracter c (invisvel) vai para a posio marcada com o caracter c executa o comando cmd e substitui o texto marcado pela sada do comando.

Ao teclar ":", o vi entra no modo comando de uma linha. O vi colocar na ltima linha da tela o prompt ":", onde voc pode digitar diversos comandos do vi. Veja alguns exemplos: :faixap :faixad :n :prev :n arquivos :shell :!comando :x :q :w arquivo :e arquivo :r arquivo :q! imprime as linhas da faixa apaga as linhas da faixa passa para o prximo arquivo a editar volta ao arquivo anterior define nova lista de arquivos a editar abre uma sesso shell. Ao terminar o shell, volta edio executa o comando salva e sai do vi abandona a edio e sai do vi escreve o texto no arquivo carrega o arquivo para edio l o arquivo aps a posio corrente abandona o vi, ignorando alteraes feitas

Podem ser utilizados os comandos:

+6 +G +L
.

para alternar entre dois arquivos para exibir o nome do arquivo e linha corrente para redesenhar a tela para repetir o ltimo comando de insero, alterao ou deleo

Sistema Operacional GNU/Linux

329

Alguns comandos podem receber uma faixa para definir o escopo dos comandos, como os dois primeiros acima. Esta faixa pode ser dado pelos nmeros das linhas inicial e/ou final, ou por expresses regulares para procura de textos nas linhas inicial e/ou final. :2,8p :1,$p :/txt1/,/txt2/d :.,.+3p imprime as linhas de 2 a 8 imprime da linha 1 ao final do texto apaga da linha contendo txt1 at a contendo txt2 imprime a linha atual e as 3 seguintes

O comando de linha para substituio muito poderoso. Por exemplo, o comando: :10,105g/txt1/s/txt2/txt3/g substitui (s) todas as ocorrncias (g no final do comando) de txt2 por txt3 em todas as linhas entre 10 e 105 que contenham (g no incio do comando) o texto txt1 . Os seguintes comandos podem ser utilizados para sada rpida do vi. ZZ ZQ salva e sai do vi abandona a edio, ignorando alteraes feitas

Um texto, opcionalmente marcado, pode ser indentado utilizando: n<< n>> arreda o texto das n prximas linhas para a esquerda arreda o texto das n prximas linhas para a direita

Para esta indentao, o vi ir utilizar o valores estabelecidos pelas opes shiftwidth e tabstop (veja :set ts e :set sw abaixo). Ele ir utilizar TABs ou espaos em branco para que o texto atinja a coluna desejada.

Sistema Operacional GNU/Linux

330

Opes do vi
O vi possui ainda diversas opes que podem ser alteradas atravs do comandos: :set opo = valor :set opo :set noopo O estado atual das opes pode ser visto com: :set :set all Algumas das opes mais usadas so: :set number :set nowrap :set ic :set sw=2 :set list :set ts=2 :set sw=4 mostra o nmero das linhas no mostra linhas longas em vrias linhas ignora maisculas/minsculas nas procuras altera o nmero de colunas para indentao para 2 visualiza os caracteres especiais tipo TAB e fim de linha altera o TAB para parar de 2 em 2 colunas altera o deslocamento dos comandos << e >>

Sistema Operacional GNU/Linux

331

15. Criando Disquetes de Boot


Criando Disquetes de Boot
O Linux pode ser carregado de disquete com ou sem o LILO. Utilizando o LILO Utilizando o LILO, voc deve criar um arquivo de configurao como o seguinte:
boot = /dev/fd0 install = /boot/boot.b map = /boot/map read-write prompt image = /boot/kernel label = Bootdisk root = /dev/fd0

/etc/lilo.conf,

Para isto, voc precisa de um kernel compilado (atravs de make zImage, por exemplo). Veja o tamanho em blocos do kernel e some 50 (nmero aproximado de blocos para os inodos do sistema de arquivos no disquete). Chamaremos este nmero de KERNEL_BLOCKS. Note que kernel o vmlinuz gerado na compilao.

Para saber o tamanho do kernel, utilize: # ls -s kernel Crie um sistema de arquivos ext2 no disquete reservando os blocos calculados. Monte o disquete para copiar os arquivos necessrios e executar o lilo. Veja um exemplo do procedimento abaixo. # mke2fs -i 8192 -m 0 /dev/fd0 KERNEL_BLOCKS # mount /dev/fd0 /mnt # rm -rf /mnt/lost+found # mkdir /mnt/{boot,dev} # cp -R /dev/{null, fd0} /mnt/dev # cp /boot/boot.b kernel /mnt/boot # cp bdlilo.conf /mnt # lilo -v -C bdlilo.conf -r /mnt

Sistema Operacional GNU/Linux Sem o LILO Copie o kernel para o incio do disquete: # dd if=kernel of=/dev/fd0 bs=1k 375+1 records in 375+1 record out

332

Neste exemplo o kernel ocupou 376 blocos do disquete ao qual chamaremos de KERNEL_BLOCKS. Informe ao kernel (neste caso no disquete), que o dispositivo raiz o prprio disquete e que ele ser carregado read/write. # rdev /dev/fd0 /dev/fd0 # rdev -R /dev/fd0 0 Informando ao kernel sobre o sistema de arquivos raiz Na imagem do kernel h uma palavra que informa onde o root filesystem deve ser encontrado. Esta palavra acessvel atravs do comando rdev e deve ser interpretada como: Bits 0-10 11-13 14 15 Descrio Offset do ramdisk em blocos de 1024 bytes no utilizado Indica que um ramdisk deve ser carregado Indica que deve dar pausa antes da carga do root filesystem

Se o bit 15 estiver em 1, o processo de boot ir pedir o disquete com o root filesystem. Isto necessrio se voc criar os discos de boot e rootfs separados. No caso do disquete contendo o kernel e o sistema de arquivos, o offset do rootfs ser o primeiro bloco livre aps o kernel (o mesmo que KERNEL_BLOCKS). Ou seja, o valor ser KERNEL_BLOCKS + 214. No caso do conjunto de dois discos, boot+root, o offset do rootfs ser 0. Assim, o valor ser 214 + 215, isto , 49152. Utilizando o comando rdev faremos: # rdev -r /dev/fd0 valor ou # rdev -r /mnt/kernel Desmonte o disquete: # umount /mnt valor

Sistema Operacional GNU/Linux Criando o root filesystem

333

Para criar o sistema de arquivos raiz, pode ser utilizado um arquivo que ser transferido para o disquete de boot ou rootfs. Crie um sistema de arquivos ext2 em um arquivo, que chamaremos de ROOTFS: # dd if=/dev/zero of=ROOTFS bs=1k count=2048 # mke2fs -m 0 -i 2000 ROOTFS Monte o arquivo para preencher o sistema de arquivos raiz: # mount -o loop ROOTFS /mnt Copie para l os diretrios necessrios. Lembre de utilizar a opo -R para copiar os devices em /dev. Os diretrios bsicos so: /dev, /proc, /etc, /sbin, /bin, /lib, /mnt e /usr. Copie apenas o necessrio devido limitao do espao em disquete. Lembre-se de criar os arquivos de inicializao corretamente: /etc/inittab, /etc/fstab, /etc/rc, entre outros. Desmonte o arquivo ROOTFS e compacte-o. # umount /mnt # gzip ROOTFS Transfira o arquivo compactado para o disquete: # dd if=ROOTFS.gz of=/dev/fd0 bs=1k seek=KERNEL_BLOCKS Os disquetes esto prontos para serem utilizados. Teste-os para verificar se todos os procedimentos foram corretamente seguidos e se o rootfs contm todos os arquivos necessrios e corretamente configurados.

Sistema Operacional GNU/Linux

334

Sistema Operacional GNU/Linux

335

16. Sistemas de Numerao


Provavelmente, a necessidade do ser humano utilizar um sistema de numerao surgiu na pr-histria. Inicialmente o homem das cavernas deve ter associado pedras a suas posses. Quando suas posses comearam a aumentar, a quantidade de pedras tournou-se incmoda para o transporte. Um nmero um conjunto de smbolos associado a uma determinada quantidade. Hoje utilizamos uma notao posicional em que cada smbolo tem um valor diferente conforme sua posio no nmero. Assim, o nmero 347, na base 10, representa trs centenas, quarenta e sete dezenas e sete unidades. Se considerarmos uma base qualquer, uma determinada quantidade Q ser representada pelo nmero N na base , cuja representao : N = ...DCBA.abcd..., onde os smbolos { ..., D, C, B, A, a, b, c, ...} representam quantidades de 0 a - 1. Note que para qualquer base , a quantidade sempre representada pelo nmero 10. Logo, Q = ... + D3 + C2 + B1 + A0 + a-1 + b-2 + c-3 + d-4 + ... Por exemplo, 34710 representa a quantidade Q = 3*102 + 4 * 101 + 7*100 = 3*100 + 4*10 + 7 = 347 ! Se efetuarmos todas as operaes em uma base diferente, digamos , teremos a representao de Q na base .

Sistema Operacional GNU/Linux

336

temos:

Se quisermos representar a quantidade trezentos e quarenta e sete, 34710, em octal (base 8) = 8 a quantidade 8 na base 8 10 ! Logo, realizando as operaes na base 8, teremos: Q = 3*122 + 4*121 + 7*120 = 3 * 144 + 50 + 7 = 454 + 50 + 7 = 533 ! Note que 1010 igual a 128. N = 5338 = 5*82 + 3*81 + 3*80 = 34710 Lembre-se que na base 8, 7 + 1 = 10 !

Alternativamente, a converso de um nmero na base 10 para uma base pode ser feita pelo mtodo das divises sucessivas: 347 | 8 27 43 | 8 3 3 5 | 8 5 0 Lendos os restos de forma inversa temos o nmero 533. Se potncia de , digamos N podemos agrupar N dgitos do nmero na base para formar 1 dgito na base . Assim, cada dgito na base 8 (23) pode ser representado por 3 dgitos binrios (base 2), chamados simplesmente de bits. Em computao digital so comuns as representaes nas bases 2, 8 e 16, chamadas de binrio, octal e hexadecimal, respectivamente. Consequentemente, uma quantidade Q ir necessitar de

teto

( )
log(Q) log()

dgitos na base para represent-la. A funo teto(x) o menor inteiro maior ou igual a x. Assim, o nmero 987610 necessita de 5 dgitos na base 8: teto

log(9876) = teto (4.423237040381) = 5 log(8)

17. Introduo Computao Forense

Sistema Operacional GNU/Linux

337

Conceitos iniciais
A computao forense a obteno e anlise de dados, livre de distores ou divergncias, para a reconstruo de informaes ou eventos que ocorreram no sistema. Devemos ter sempre em mente que os sistemas so imensos, complexos e sofrem alteraes constantemente. Dados podem estar ocultos em qualquer local. H pouca informao tcnica disponvel. No h software disponvel. O mais importante o conhecimento e a experincia. A obteno dos dados s vezes fcil. A anlise difcil e gasta muito tempo. O amazenamento das informaes obtidas requer muito espao. Os requisitos bsicos de um detetive digital so: Conhecimento tcnico Conhecimento das implicaes tcnicas de suas aes sperteza e mente aberta ducao contnua e conhecimento histrico Uso altamente redundande de fontes de informao nas suas concluses Ao se deparar com um caso: Assegure e isole Registre o cenrio Procure evidncias sistematicamente Colecione e empacote as evidncias Mantenha uma linha de custdias H ainda alguns lemas: Velocidade essencial - mas no exagere Tudo o que voc fizer no sistema o perturba Nunca confie no sistema Suas polticas devem sempre ser consideradas Mantenha uma linha de custdias Espere por falhas Prepare-se para surpresas

Sistema Operacional GNU/Linux

338

Procura por evidncias


Na procura por evidncias deve-se sempre preservar o estado. Nunca conhecemos o passado. Mesmo o presente pode ser capcioso. Sempre capture os dados na ordem de sua volatilidade. Ordem de volatilidade de informaes Registradores, memrias de perifricos, caches, etc. Memria (do kernel e fsica) Estado da rede Processos em execuo Discos Disquetes, medias de backup, etc. CD-ROMs, impresses, etc.

1 2 3 4 5 6 7

Os maiores problemas so: Falta de clareza No conhecer o que aconteceu No conhecer o que ou quem est combatendo No saber em que confiar Problemas mais difceis requerem maior preparo O legado de Heisenberg ! Se voc no conhece o sistema: Conhea as limitaes muito fcil danificar uma evidncia Se existe automao, a coleta de informaes possvel Mesmo a anlise mais simples perigosa Pea ajuda !

Plano de batalha
Pense ! Digitar rapidamente no ir ajudar ! H alguma poltica de segurana ? Defina objetivos H alguma pessoa de contato ? Assuma o pior Trabalhe o mnimo possvel com os dados originais

Reconstruo das fbulas


A maioria das informaes tm componentes temporais. Algumas temporizaes so mais raras que outras. Construa uma linha de tempo. Examine um pequeno perodo de cada vez. Tente determinar o que aconteceu.

Sistema Operacional GNU/Linux

339

Quem contactar ?
A equipe de segurana de sua empresa A gerncia O CERT ? O FBI, a polcia, etc. ? Lembre-se sempre que: Um alvo pode ser atingido duas vezes por um raio. Mltiplos eventos de cada vez podem gerar confuso. Um mesmo incidente pode envolver vrias partes. Incidentes isolados podem envolver vrias partes. Deve-se interligar os eventos ao fluxo de dados. Mltiplos investigadores devem juntar suas evidncias.

Investigao na prtica
Algumas precaues devem ser tomadas para no apagar as evidncias ao investigar o contedo de um sitema de computao. Devemos sempre lembrar que: 1. As informaes voltes (contedo de memria RAM, estado do processador e de dispositivos de E/S) so extremamente difceis de serem obtidas sem alter-las. 2. As informaes no voltes (armazenadas em disco, disquete, pen drives, CDs, DVDs, e impresses) so mais fceis de serem obtidas. 3. Horrios da mquina, de arquivos e locais so tens imprecindveis inverstigao. 4. Em caso de acesso externo, voc deve contar com a ajuda dos provedores de acesso para obter informaes sobre as conexes executadas pelo invasor. Verifique o perodo das sesses suspeitas. 5. Observe bem o sistema antes de iniciar a investigao. Nunca inicialize o computador utilizando o disco em investigao. Utilize outro computador para suas anlises. Utilize uma cpia dos discos e/ou parties (por exemplo atravs do utilitrio dd) e sempre monte as parties no modo read-only (utilizando a opo -o ro do utilitrio mount). Lembre-se que a rea de swap tambm pode conter informaes valiosas. Nunca utilize esta rea como swap durante sua investigao. Faa uma cpia e utilize a cpia para anlise. 6. Simples ferramentas como o find, grep, strings, dentre outras, podem ser bastante teis para procura de evidncias. Os arquivos de log, arquivos temporrios e core dumps podem ser pistas importantes. Veja tambm o cadastro de usurios (/etc/passwd e /etc/shadow) e tambm o /var/log/lastlog. Nota: Se a partio sob anlise est montada em /Analise, por exemplo, estes arquivos estaro em /Analise/etc/passwd, /Analise/etc/shadow e /Analise/var/log/lastlog 7. Registre todos os seus procedimentos. Os mtodos de investigao tambm so levados em conta em um tribunal. Uma prova poder facilmente ser invalidada se o mtodo para obt-la no for correto e puder causar alteraes em seu contedo. Lembre-se que a simples cpia de um arquivo de um sistema de arquivos montado read-write e sem opo noatime altera a sua data e hora de acesso.

Sistema Operacional GNU/Linux

340

Sistema Operacional GNU/Linux

341

18. Entretenimento e Aprendizado


Linux tambm cultura e diverso !
O ambiente operacional GNU/Linux possui tambm diversos aplicativos para o seu seu entretenimento e aprendizado. Quase todas as distribuies Linux incluem um pacote conhecido com bsd-games que contm programas educativos e jogos em modo texto. Abaixo vemos os conhecidos arithmetic, primes e factor.
hmarx@thor:~> arithmetic 7 - 7 = 0 Right! 5 + 0 = 5 Right! 6 - 4 = 2 Right! 10 - 5 = 5 Right! 8 - 3 = 5 Right! 1 + 10 = K hmarx@venus:~> primes 55555 55666 55579 55589 55603 55609 55619 55621 55631 55633 55639 55661 55663 hmarx@venus:~> K

hmarx@venus:~> factor 8 8: 2 2 2 111 111: 3 37 1111 1111: 11 101 11111 11111: 41 271 99999 99999: 3 3 41 271 1234321 1234321: 11 11 101 101 K

Sistema Operacional GNU/Linux

342

Entre os jogos do pacote bsd-games, encontramos jogos clssicos da dcada de 1970 como Colossal Cave Adventure (ou simplesmente Adventure) e o Star Trek (ou simplesmente Trek). No Adventure o jogador teria que utilizar sua imaginao para se localizar em um imensa caverna cheia de passagens, objetos e criaturas com interessantes eventos, navegando por comandos textuais como os de movimento (north, south, east, west) ou pegando/largando objetos (get, drop), entre outros.
hmarx@thor:~> adventure Welcome to Adventure!! Would you like instructions ? yes Somewhere nearby is Colossal Cave, where others have found fortunes in treasure and gold, though it is rumored that some who enter are never seen again. Magic is said to work in the cave. I will be your eyes and hands. Direct me with commands of 1 or 2 words. I should warn you that I look at only the first five letters of each word, so youll have to enter "northeast" as "ne" to distinguish it from "north". (Should you get stuck, type "help" for some general hints. For information on how to end your adventure, etc., type "info".) This program was originally developed by Will Crowther. Most of the features of the current program were added by Don Woods. Address complaints about the UNIX version to Jim Gillogly (jim@rand.org). You are standing at the end of a road before a small brick building. Around you is a forest. A small stream flows out of the building and down a gully. east You are inside a building, a well house for a large spring. There are some keys on the ground here. There is a shiny brass lamp nearby. There is food here. There is a bottle of water here. get keys OK get lamp OK K

Sistema Operacional GNU/Linux

343

No jogo Trek, o jogador j dispe de mapas em modo texto com a posio da nave Enterprise, de bases estelares, estrelas e das naves Klingon.
hmarx@venus:~> trek * * * S T A R T R E K * * *

Press return to continue. What length game: short What skill game: good Enter a password: hmarx 15 Klingons 2 starbases at 0,1, 0,7 It takes 550 units to kill a Klingon Command: s Short range sensor scan 0 1 2 3 4 5 6 7 8 9 0 . . E @ . . . . . . 0 1 . . . . . . . . . . 1 2 . . . . . . . . . . 2 3 . . . . . . . . . . 3 4 . . . . . . . . * * 4 5 . . . . . . . . . . 5 6 . . . . . . . . . . 6 7 . . . . . . . . . . 7 8 . . . . . . . . . # 8 9 . . . . . . . . . 9 0 1 2 3 4 5 6 7 8 9 Starsystem Elysium I

stardate condition position warp factor total energy torpedoes shields Klingons left time left life support

2100.00 GREEN 0,1/0,2 5.0 5000 10 up, 100% 15 8.00 active

Command: m Course: 6 Distance: .5 Computer applies full reverse power to avoid hitting the negative energy barrier. A space warp was entered. You are now in quadrant 4,7. It is stardate 2100.22 Command: K

O conhecido jogo da forca, hangman, tambm est presente:


______

| | | O | /| | | | / __|_____ | |___ |_________| Word: interdependence Guess: You got it! Another word? K

Guessed:

acdefimnoprst 1 5.000 0.000

Word #: Current Average: Overall Average:

Sistema Operacional GNU/Linux

344

Em modo grfico, alguns programas como o xeyes, amor e oneko podem ser classificados como para entretenimento. O xeyes acompanha o movimento do mouse. O amor mostra um objeto ou personagem fixo ou animado sobre uma janela ou barra de tarefas. O oneko faz um gato ou um cachorro perseguir o seu mouse.

oneko xeyes amor

O kmahjongg tem um visual mais tridimensional.

Sistema Operacional GNU/Linux O kpat implementa diversos jogos tipo pacincia:

345

E o KGoldRunner relembra o velho lodrunner dos computadores Apple-II.

Sistema Operacional GNU/Linux

346

Alm de muitos programas educativos e jogos em modo texto, hoje podem ser encontrados milhares em modo grfico 2D e 3D. O KDE, por exemplo, tem diversos aplicativos em diversas reas. O ktouch, para o aprendizado de digitao, indica imediatamente quando voc comete um erro. Ele calcula tambm sua velocidade de digitao.

Sistema Operacional GNU/Linux

347

Para as crianas aprenderem a desenhar, existe o TuxPaint que possui diversas ferramentas para desenho e pintura, alm de imagens (que podem ser usadas como carimbos) qe podem ter sons associados. Podem ser facilmente adicionadas novas imagens e associ-las a novos sons.

TuxPaint O gcompris inclui diversas brincadeiras educativas para crianas.

Gcompris

Sistema Operacional GNU/Linux

348

O kgeography pode ser utilizado no aprendizado de mapas de paises, seus estados e capitais.

kgeography

Sistema Operacional GNU/Linux

349

Para o estudo dos elementos qumicos e suas propriedades, o kalzium um aplicativo completo, incluindo clculos de frmulas

Kalzium

Em geometria, h o kig que inclui diversas operaes com os elementos planos.

kig

Sistema Operacional GNU/Linux

350

Diversos jogos de ao em 3D como os da empresa Id Software (Doom, Heretic, Hexen e Quake) tambm esto disponveis para Linux.

Doom

Heretic

Quake 3

Sistema Operacional GNU/Linux

351

O jogos pingus (relembrando o lemmings), o Frozen Bubble e o kasteroids so clssicos em Linux:

Pingus

Frozen Bubble

kasteroids

Sistema Operacional GNU/Linux

352

Mesmo alguns jogos para o sistema operacional Microsoft Windows podem ser executados utilizando o Wine. Abaixo uma das telas do jogo instrutivo The Incredible Machine de 2001:

The Incredible Machine

Assim, como j exibia o SuSE Linux desde suas primeiras verses:

Have a lot of fun !

Sistema Operacional GNU/Linux

353

Bibliografia
Livros e outras publicaes
[AVRITZER] Alberto Avritzer, Dissertao de Mestrado: "Um sistema operacional com suporte para multiprocessamento e tempo compartilhado", DCC-UFMG, 1983. Neal Koblitz, A course in Number Theory and Cryptograpy, Springer, Washington, USA, 1994. Paul Albitz & Cricket Liu, DNS and Bind - 2nd edition, OReilly & Associates, California, USA, 1996.

[CRYPT] [DNS_BIND]

[FMBASTOS] Frederico M. Bastos, Dissertao de Mestrado: "Modelo de Contabilizao e Negociao de Preos para Servios com QoS", DCC-UFMG, 2003. [HMARX] [INTFW] [LPI101] [LPI102] [MAXSEC1] [MAXSEC2] [MINIX] [NAG] [PGP] [PPP] [PRODNS] Hlio Marques Sobrinho, Dissertaao de Mestrado: "Um processador central de 16 bits apropriado para multiprocessamento", DCC-UFMG, 1986. D. Brant Chapman & Elizabeth D. Zwicky, Building Internet Firewalls, OReilly & Associates, California, USA, 1995. Emmett Dulaney, LPI: General Linux I - Exam 101, Coriolis Group, Arizona, USA, 2001. Emmett Dulaney, LPI: General Linux II - Exam 102, Coriolis Group, Arizona, USA, 2001. Anonymous, "Maximum Security", Sams Publishing, USA, 1998. Anonymous, "Linux Maximum Security", Sams Publishing, USA, 2000. Andrew S. Tanenbaum & Al Woodhull, Operating Systems: Design and Implementation - 2nd edition, Prentice-Hall, USA, 2000. Olaf Kirch, "Linux Network Administrators Guide", SSC, USA, 1994. Simson Garfinkel, PGP Pretty Good Privacy, OReilly & Associates, , California, USA,1995. Andrew Sun, Using and Managing PPP, OReilly & Associates, California, USA, 1997. Ron Aitchson, Pro DNS and BIND, Apress, New York, USA, 2005.

[SENDMAIL] Bryan Costales & Erik Allman, Sendmail - 2nd edition, OReilly & Associates, California, USA, 1997.

Sistema Operacional GNU/Linux [SuSE80APP] SuSE, SuSE Linux 8.0 Applications, SuSE Linux AG, Nuremberg, Germany, 2002.

354

[SuSE80BAS] SuSE Linux AG, SuSE Linux 8.0 Basics, Nuremberg, Germany, 2002. [SuSE80REF] [TCPADM] [UNIXSEC] [VPN] [XWIN] SuSE, SuSE Linux 8.0 Reference, SuSE Linux AG, Nuernberg, Germany, 2002. Craig Hunt, TCP/IP Network Administration - 2nd edition, OReilly & Associates, California, USA,1997. Simson Garfinkel & Gene Spafford, Practical UNIX & Internet Security 2nd edition, OReilly & Associates, California, USA, 1996. Charlie Scott & ali., Virtual Private Networks - 2nd edition, O Reilly & Associates, California, USA, 1999. *, The Definitive Guides to the X Window System, Volumes 0 a 8, OReilly & Associates, California, USA.

Sistema Operacional GNU/Linux

355

Sites na Internet
http://www.kernel.org Site oficial do kernel Linux, criado por Linus Torvalds

http://gnu.org Projeto GNU da Free Software Foundation criado por Richard Stallman http://www.minix3.org Site dedicado ao MINIX de Andrew S. Tanenbaum

http://www.linux.org Pgina oficial do sistema operacional Linux. H uma lista de diversos aplicativos para o Linux http://linmodems.org Drivers de softmodems (conhecidos tambm como Winmodems) para o Linux http://www.ora.com Pgina da editora OReilly especializada em livros tecnicos. Possui muitos livros sobre Unix e Linux http://www.suse.de Site original da empresa alem SuSE Linux AG, criadora da distribuio SuSE Linux. Atualmente redirecionada para o site da Novell http://www.vmware.com Os aplicativos de virtualizao mais conhecidos e utilizados no mundo

http://www.hercules-390.org http://www.jaymoseley.com/hercules/ Hercules, um emulador das arquiteturas IBM System/370, ESA/390 e zSeries

http://sourceforge.net Maior site de projetos Open Source Exemplos: xine.sourceforge.net, bochs.sourceforge.net, ... http://www.linas.org/linux Parte do site de Linas Vepstasmostrando diversas aplicaes comerciais do Linux e estudos de caso. http://www.linuxsecurity.com Site sobre aspectos de seguranca em Linux

Sistema Operacional GNU/Linux

356

http://www.maplesoft.com Software cientficos (como o Maple) da Universidade de Waterloo, Ontario, Canada. http://www.ipv6.org Informaes sobre o protocolo IPv6 http://www.ietf.org Site da fora tarefa da Engenharia da Internet (Internet Engineering Task Force). uma comunidade internacional que cuida da evoluo da arquitetura da Internet http://www.gnupg.org Implementaco do OpenPGP, Pretty Good Privacy

http://pgp.mit.edu Servidor pblico de chaves PGP do MIT

http://www.faqs.org/rfcs Grande acervo de documentaes e padres, incluindo os RFCs, Request for Comments. Contm links para ISOC, IANA, IAB e outros.

http://www.linuxsupport.com.br Dicas de configurao e suporte SuSE Linux

http://www.opensuse.org Site da distribuio openSuSE, criada pela Novell

Sistema Operacional GNU/Linux

357

Glossrio
AGP ANSI ARM ARP ASCII ATA BIND BIOS BOOTP CHAP CISC Accelerated Graphics Port American National Standards Institute Advanced Risc Machine Address Resolution Protocol American Standard Code for Information Interchange Advanced Technology Attachment (ou IDE) Berkeley Internet Name Domain Basic Input/Output System - Programa normalmente gravado em uma ROM ou Flash que faz a carga e interface de alguns Sistemas Operacionais com o hardware. Bootstrap Protocol Challenge Handshake Authentication Protocol - Protocolo de autenticao de utilizado em PPP que requer uma pergunta e uma resposta Complex Instruction Set Computer - Arquitetura tradicional dos processadores e microprocessadores, com instrues complexas como MUL EAX, [BX+4000] do Intel 80386. Veja tambm RISC e CRISC Complex/Reduced Instruction Set Computer - Arquitetura mista parte RISC e parte CRISC, utilizada nos processadores Intel Pentium atuais (II, III e IV) Distributed Denial of Service - ataque distribudo causando sobrecarga nos servios Digital Equipment Corporation - Empresa que projetou o minicomputador PDP, cuja arquitetura ortogonal influenciou muitos dos microprocessadores atuais. Data Encryption Standard - Padro de criptografia utilizada pelo sistema de senhas padro do Unix. Veja tambm MD5 Dynamic Host Configuration Protocol - protocolo de configurao dinmica de computadores (endereos, nomes, DNS, boot, ...) Department of Defense - Departamento de Defesa dos Estados Unidos da Amrica Denial of Service - ataque causando sobrecarga nos servios. Veja tambm DDoS Dynamic Random Access Memory Direct Memory Access - Acesso direto Memria DeMilitarized Zone - Zona desmilitarizada Extended Bynary-Coded-Decimal Interchange Code, codificao utilizada em alguns mainframes como o B6700 e a srie A da Unisys Extended Industry Standard Architecture Encapsulated Security Payload - protocolo para autenticao e criptografia do IPsec File Allocation Table - Tabela de alocao de arquivos utilizada pelo DOS e Windows First In First Out, tambm conhecido como PIPE, uma estrutura de dados que implementa uma fila real. Greenwich Mean Time - Horrio padro internacional do meridiano 0, que passa pela cidade de Greenwich. GNU is Not Unix HyperText Transfer Protocol - Protocolo de transferncia de hipertexto Internet Architecture Board

CRISC DDoS DEC DES DHCP DoD DoS DRAM DMA DMZ EBCDIC EISA ESP FAT FIFO GMT GNU HTTP IAB

Sistema Operacional GNU/Linux IANA IDE IESG IETF IKE IPC IPsec IPX IRQ ISA ISAKMP ISOC LDAP LED MD5 MIB MIME MIPS MIPS NBT

358

NCP NetBIOS NFS NMB NSA PAP PATA PC PCI PCMCIA PDP-11 Pixel POP PPP PPTP QoS RAM RARP RIP RISC

Internet Assigned Numbers Authority Integrated Disk Electronics - Interface utilizada nos discos padro do PC. Tambm conhecida como ATA. Internet Engineering Steering Group Internet Engineering Task Force Internet Key Exchange - protocolo de negociao de chaves e parmetros de conexo do IPsec. InterProcess Communication Internet Protocol Security Internetwork Package eXchange Interrupt ReQuest - Sinal de requisio de interrupo para o(s) processador(es) de um computador. Insdustry Standard Architecture Internet Security Association and Key Management Protocol Internet Society Lightweighty Directory Access Protocol Light Emitting Diode Message Digest 5 - Algoritmo de autenticao e criptografia atualmente muito utilizado em senhas do Unix Management Information Base. Veja tambm SNMP Multipurpose Internet Mail Extensions - Padro de encapsulamento de arquivos em e-mails 1Microprocessor without Interlocked Pipeline Stages 2Millions of Instructions Per Second - milhes de instrues por segundo NetBIOS over TCP/IP - Protocolo criado pela Microsoft encapsulando o NMB sobre o TCP/IP para o Windows NT/9x tornando o NetBIOS rotevel atravs de IP Netware Core Protocol Network Basic Input/Output System Network File System - Sistema de arquivos em rede Servidor de nomes para o NetBIOS. National Security Agency - Agncia Nacional de Segurana Password Authentication Protocol - Protocolo de autenticao utilizado em PPP atravs de um usurio e senha. Parallel ATA - veja IDE Personal Computer - Computador pessoal. Termo criado a partir dos microcomputadores e popularizado com o lanamento do microcomputador IBM-PC Peripheral Component Interconnect Personal Computer Memory Card Industry Association Programmed Data Processor - Minicomputador da Digital Equipment Corporation utilizado nas primeiras verses do Sistema Operacional Unix Picture Element - cada ponto na tela representado por n bits, permitindo assim at 2n cores Post Office Protocol Point-to-Point Protocol - Protocolo ponto a ponto, muito utilizado tanto em conexes discadas quanto dedicadas Point-to-Point Tunneling Protocol Quality of Service Random Access Memory Reverse Address Resolution Protocol - veja ARP Routing Information Protocol Reduced Instruction Set Computer

Sistema Operacional GNU/Linux ROM RPC RPM RSA RT-11 SAS SATA SCSI SGID SMB SMP SMTP SNMP SPOOL SSL SUID SuSE SVGA SWAP URL USB VESA VFAT XDR VGA WiFi WWW WUXGA WXGA XGA

359

Read Only Memory - memria apenas de leitura. Remote Procedure Call - chamada remota de procedimento RedHat Package Manager Rivest, Shamir & Adleman - Iniciais dos criadores do esquema de autenticao/criptografia de chave pblica Sistema operacional Real Time para o PDP-11 da DEC Serial Attached SCSI - veja SCSI Serial ATA - veja ATA / IDE Small Computer Systems Interface - Interface de discos muito utilizada em servidores e estaes profissionais de trabalho Set Group IDentification Server Message Block Symetric Multi Processing Simple Mail Transfer Protocol Simple Network Management Protocol. Veja tambm MIB Simultaneous Peripheral Operations On-Line Secure Sockets Layer Set User IDentification Software und Systeme Entwicklung (Desenvolvimento de software e sistemas) - Sigla da Empresa alem criadora da distribuio SuSE Linux Super VGA rea de memria virtual, normalmente em disco Uniform Resource Locator Universal Serial Bus Video Electronics Standards Association Virtual File Allocation Table eXternal Data Representation. Veja tambm RPC Video Graphics Array Wireless Fidelity World Wide Web Wide Ultra Extended Graphics Array Wide XGA eXtended VGA

Sistema Operacional GNU/Linux

360

ndice remissivo

A
Andrew S. Tanenbaum ASN.1 291 21

B
Backup 94 bunzip2 95 bzcat 95 bzip2 95 compress 95 fita magntica 95 gunzip 94 gzip 94 mt 95 tar 94 unzip 94 zcat 94 zip 94 Bash 46 Expanso de parmetros 48 history 90 meta-teclas 91 redirecionamento de E/S 96 Separador ; 97 Separador de comandos 97 variveis 46 Variveis padro 46 BGP 291 Boot do Linux 37, 130 configurao do GRUB 136 configurao do LILO 135 Bridges 287

C
Calamaris 229 Comandos ajuda help 50 info 51 man 50 algbricos bc 65 expr 64

arquivos basename 89 cat 57 cp 56 dd 92 dirname 89 discos 92 file 89 find 87 head 57 less 68 ln 67 locate 87 more 68 mv 67 od 58 patch 58 rm 67 split 93 tail 57 tee 57 touch 68 type 89 updatedb 87 which 89 case 103 diretrio cd 55 dirs 56 ls 53 mkdir 54 popd 55 pushd 55 pwd 51 rmdir 54 discos df 81 du 81 hash 51 impresso a2ps 80 lpq 79 lpr 79 lprm 80 pr 79 memria

Sistema Operacional GNU/Linux free 81 top 84 permisses chgrp 87 chmod 88 chown 87 processos % 82 at 83 atq 83 atrm 83 bg 82 crontab 83 fg 82 GNU time 86 jobs 83 kill 85 killall 85 nice 85 pidof 82 ps 82 pstree 82 renice 85 sudo 75 time 86 top 84 xargs 86 rehash 51 select 105 sistema top 84 uname 75 terminais setterm 76 stty 77 tty 76 texto . 52 awk 62 cut 69 diff 71 diff3 72 echo 51 ex 68 grep 60 join 70 paste 69 read 51 sed 61 sort 71 source 52 strings 59 tr 59 uniq 71 vi 68 wc 58 until 103

361 usurios finger 73 gpasswd 75 id 73 last 72 newgrp 74 passwd 74 sg 74 su 74 w 72 who 72 Comandos administrativos 106 chfn 109 chsh 109 depmod 124 dmesg 127 edquota 115 fdisk 110 groupadd 108 groupdel 108 groupmod 109 init 39 insmod 123 iptraf 180 isapnp 122 lsdev 122 lsmod 122 lspci 120 lsusb 120 mkdosfs 112 mke2fs 111 mkfs 111 mknod 110 mkreiserfs 112 mkswap 112 modinfo 125 modprobe 124 mount 117-118 nmap 180 pnpdump 121 quota 114 quotacheck 116 quotaoff 114 quotaon 114 repquota 115 rmmod 123 rpcinfo 180 rpm 139 atualizao de pacotes 142 consulta de pacotes 143 criando pacotes 146 instalao de pacotes 141 remoo de pacotes 142 utilzando o smart 145 utilzando o zypper 145 verificao de autenticidade 140

Sistema Operacional GNU/Linux verificao de integridade 140 verificao de pacotes 139 setquota 115 snort 180 socklist 180 swapoff 113 swapon 113 syslogd 128 ulimit 106 umask 106 umount 118-119 usbview 121 useradd 107-108 userdel 108 usermod 109 Comandos bsicos 50 Comandos condicionais 101 if/then/elif/then/.../fi 102 if/then/else/fi 101 if/then/fi 101 test 105 Comandos iterativos 103 for 103 while 103 compilao 310 Configurao do kernel 257 Correio eletrnico 234 anti-virus 242 MTA 234 MUA 234 POP 236 Protocolos 236, 238 sendmail 237 Configurao 238 SMTP 236

362 dnsdomainname 205 dnsquery 205 nslookup 205 Ferramentas de diagnstico 205 dig 206 dnsquery 206 host 206 named-xfer 206 traceroute 206 Lendo nomes de domnios 192 Resource Record 194 RR 194 Servidores de Nomes 192 Domnios 187 DNS 189 LDAP 211 NIS 207

E
Emuladores dosemu 303 pose 306 simh 307 vmware 305 wine 303-304

F
Firewall 265 filtros 266 Implementao 266 ipchains 267 iptables 269 NAT 266 SuSEfirewall 271 Firewalls 297 Formato de arquivos /etc/passwd 107 /etc/shadow 107 /etc/syslog.conf 126 crontab 83 FSF 15 FTP 243 Clientes 243 Configurao 243 Servidores 243 Funcionalidades 287 fuser 301

D
Depurao ddd 301 gdb 301 kdbg 301 ltrace 301 strace 301 Desenvolvimento gcc 299 kdevelop 299 ldd 300 qtdesigner 299 Diretrio 29 Dispositivos 33 DNS 189 BIND 193 Configurao 201 Registros 193 Segurana 204 Ferramentas

G
Gerenciamento 288 reas funcionais ISO aspectos 288 atribuies 289 entidades 289 getty 40 GPL 15 288

Sistema Operacional GNU/Linux

363 mount point 28 MTBF 290 MTTF 290 MTTR 290 MULTICS 19 Multitarefa 25 Multiusurio 25

H
Hard link 29 hardware 285 Histrico - do Unix ao Linux 20 Histrico da Computao 16 hot-swap 25 Hubs 287

N
NIS 207 cliente/servidor 207 Configurao 207 domainname 208 ypcat 209 ypchfn 209 ypchsh 209 ypdomainname 208 ypmatch 210 yppasswd 209 yppasswdd 208 ypwhich 208

I
ICMP 291 IGMP 291 inetd 168 init 37 inode 26 inodo 26 Instalaco do Linux 131 Instalaco de Aplicativos 138 Instalaco do Linux 129 Instalao fsica incndio 286 temperatura 286 umidade 286 Interconectividade 251, 255-256 Apple Macintosh 256 Netware ncpfs 255 Internet estatsticas 189 rgos reguladores 191 Internet e Intranet 156, 186 Interpretador de comandos 43 ipcs 301

O
openSuSE 21 Operadores condicional && 102 || 102 Execuo condicional 102 Expresses aritmticas 99 Expresses condicionais 100 Grupo de comandos 97 Pipeline 96 Processos em background 97 & 97 Processos em subshell 98 substituio de comandos 98 | 96 OSPF 291 Outros aplicativos 297

L
LDAP 211 Definies 211 Esquemas 212 Hierarquia 212 LDIF 213 servidor 213 utilizao 218 LILO 130 Linus Torvalds 21 login shell 40 Logs 298 lsof 301

P
Pacotes RPM 312 path 29 PDP-11 20 peopleware 285 Plakalkl 17 POSIX 25 PPP 245 Conexo ADSL 249 Conexo discada 246 Conexo por demanda 248 prompt 43 Protocolo PPP 244-245 Configurao 245 Protocolos e mtodos 290

M
make 311 Mensagens do sistema Linux 126 Metacaracteres 45 MIB 291 Minix 21 Modems 287 Mdulos de dispositivos e servios 120

Sistema Operacional GNU/Linux

364 SMART 26 SMP Symetric Multi Processing 23 SNMP 291 Aplicativos 294 snmpdelta 294 snmpget 294 snmpinform 294 snmpnetstat 294 snmpset 294 snmpstatus 294 snmptable 294 snmptest 294 snmptranslate 294 snmptrap 294 squidGuard 233 super usurio 41 SuSE 9 Switches 287 Symbolic link 29

R
Redes em Unix 165 IPv4 172 Classes 172 Endereos especiais 172 Endereos privados 172 Roteamento 175 IPv6 184 Subclasses 174 TCP/IP 165 Ferramentas 176 Redirecionamento 182 Servios 168 Richard Stallman 15 Roteadores 287 rpcinfo 301

S
S.M.A.R.T. 26 Samba 252 Segurana 261 Ataques 263 Cavalos de Tria 262 Ferramentas 264 PGP 278 Vermes 263 Virus 263 VPN 274-275, 281, 283 configurao 275 FreeSwan 275 Sendmail Configurao manual 241 Servidor HTML Apache 219 Configurao 219, 225 controle de acesso 222 logs de acesso 221 mtodos 223 parmetros globais 220 servidor principal 220 sites virtuais 224 proxy 227 squid 219 webalizer 226 Servidor WEB 219 Sesses 40 Sesses remotas 244 SSH 244 Xterminals 244 Shell 43 Sistema de arquivos 26 Sistemas de arquivos /proc 23, 31 SLES SuSE Linux Enterprise 22

T
TCP/IP Ferramentas arp 178 ethereal 181 geoiplookup 179 ifconfig 176 ip 177 ipcalc 179 netstat 178 ping 176 rarp 178 route 177 tcpdump 180 traceroute 180 xtraceroute 181 Tratamento de sistemas de arquivos 110

X
X Window 149 desktop manager 150 Gerenciadores de janelas 154 afterstep 154 amiwm 154 CDE 154 fvwm 154 fvwm95 154 Gnome 154 icewm 154 KDE 154 mlvm 154 qvwm 154 twm 154 windowmaker 154 Protocolo X11 149

Sistema Operacional GNU/Linux window manager 150 desktops virtuais 150 X server 149 XFree86 152-153

365 SuperProbe 152 XF86Setup 152 xinetd 169

Sistema Operacional GNU/Linux

366