Sie sind auf Seite 1von 534

Sistema Operacional

GNU/Linux
Instalao, Configurao, Utilizao e Administrao

Hlio Marques Sobrinho

Sistema Operacional GNU/Linux:


Instalao, Configurao, Utilizao
e Administrao

Hlio Marques Sobrinho

Belo Horizonte

Edio: Hlio Marques


Reviso de texto:
Starix Informtica,
Interlinux/Art&Soft,
R2M Studio Design,
Hlio Marques
Editorao eletrnica: Interlinux, Hlio Marques
Produo grfica:
Capa:

Marques Sobrinho, Hlio.


Sistema Operacional GNU/Linux:Instalao,
Configurao, Utilizao e Administrao.
Belo Horizonte - MG - 2012.

Direitos Autorais

Copyright 2001-2012 Hlio Marques Sobrinho


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

Applixware marca registrada da VistaSource, Inc.


Linux marca registrada de Linus Torvalds.
MS-DOS, Windows, Windows NT, Windows 95, Windows 98,
Windows Me, Windows 2000, Windows XP e outros so marcas registradas da
Microsoft Corporation.
SuSE, openSuSE e YaST so marcas registradas de Novell Inc.
Unix marca registrada de X/Open Company Limited.
VMware marca registrada da VMware Inc.
XFree86 marca registrada de The XFree86 Project.
Xorg marca registrada do XConsortion.
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

Revises

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
4.04
4.05

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
setembro/2010
janeiro/2012

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 tpicos
HMarx - reviso e mais tpicos
HMarx - revises e atualizaes

Sobre o autor
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
Consultor em Tecnologia da Informao
Anlise de sistemas
Seleo de software e hardware
Projeto de software e hardware
Desenvolvimento de sistemas nativos e web
Instalao e configurao de sistemas
Segurana e desempenho de sistemas
Treinamento
Cursos ministrados
Instituies: Starix Informtica / InterLinux / Instituto On-line
Sistema Operacional SuSE Linux
Instituies: FAFI-BH / Fundac-bh / Uni-BH
Software bsico e de suporte, Sistemas Operacionais
Gerncia de Sistemas e Redes
Segurana em Sistema Operacional Livre
(ps graduao GSTI)
Instituies: PUC Minas (graduao)
Informtica I
Arquitetura de Computadores I e II
Projeto de Algoritmos
Algortmos e Estruturas de Dados III
Avaliao de Sistemas Computacionais

Agradecimentos

iii

Agradecimentos
Agradeo a colaboraco dos seguintes profissionais, que me
auxiliaram na concepo 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
Agradeo ainda ao Edson Barbosa Duarte da Art&Soft,
http://artsoft.com.br,
pela inestimvel ajuda nas formataes, revises e impresses deste
livro.
Hlio Marques Sobrinho

iv

Convenes tipogrficas

Convenes tipogrficas
Neste livro so utilizadas as seguintes convenes:

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

+D

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

Prefcio

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
1988 como nome do sistema operacional Unix-like que seria desenvolvido como
trabalho de mestrado da Flvia no Departamento de Cincia da Computao da
UFMG - DCC para o super microcomputador DCC-2600.
O projeto dos mdulos de processamento do DCC-2600 foi meu trabalho
de mestrado no DCC, iniciado em 1982 e concluido em 1986 sob a orientao do
Dr. Wilson P. Pdua. Outros mdulos como memria e E/S foram implementados
por Luiz Fernando Costa. O DCC-2600 consistia de um sistema multiprocessado
SMP utilizando processadores de 16 bits Intel 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 a 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 rede Micnet do SCO Xenix, permitindo troca
de arquivos, mail e execuo remota entre o DOS e o Xenix atravs de uma
conexo RS-232C.
Adquirimos em 1985, o PCNX da Wendin Inc., 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.

vi

Prefcio

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 minicomputador DEC PDP-11.
Posteriormente, por falta de um compilador Modula-2, o DCC/ix foi
traduzido para o Turbo Pascal da Borland Inc. As compilaes mno Turbo Pascal
e testes do DCC/ix eram feitas no DCC-2600, durante o desenvolvimento e testes
do prprio hardware. Confesso que isto atrasou bastante o projeto. O DCC/is
nunca chegou a funcionar satisfatoriamente.

Prefcio

vii

A revista "Isto " de 01/jan/1986 anuncia, nas pginas 46 e 48, as


pesquisas pioneiras das equipes brasileiras.

viii

Prefcio

Na foto, de p esto os doutores do DCC-UFMG, Dr. Wilson P. Pdua (meu orientador) e


Dr. Ivan Moura Campos e, sentados, a Flvia e eu.

Outros projetos em multiprocessamento estavam tambm sendo


desenvolvidos pela USP em So Paulo e pelo NCE no Rio de Janeiro, ambos
utilizando processadores Motorola.

Prefcio

ix

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
da UFMG e 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 meados de 1988 um projeto para
reimplementar o 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 Star-ix, 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 (*-ix), e
diversos aplicativos estariam rodando no DCC-2600, e mesmo no DCC-2800 (que
seria uma evoluo do DCC-2600 utilizando processadores Intel 80386), talvez
no incio de 1990 e estaria entre os sistemas open source como o Linux e o
FreeBSD.

Prefcio

E, em novembro de 1989, na Comdex Las Vegas, a Corollary lana o


primeiro projeto de um computador multiprocessado baseado no i486 da Intel.
Porque no foi o Brasil ?

Prefcio

xi

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 (que foi a semente deste livro).
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.
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.

xii

Prefcio

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 Sobrinho

xiii

Contedo

Contedo
Prefcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Contedo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
1. Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
O que Linux ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Histrico da Computao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Histrico - do Unix ao Linux . . . . . . . . . . . . . . . . . . . . . . . . 10
O United Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
O SuSE Linux e a Novell . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2. Hardware e Arquitetura . . . . . . . . . . . . . . . . . . 16
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18
20
21
25
26
27
28
30

3. Iniciando o Linux . . . . . . . . . . . . . . . . . . . . . . 34
Do boot ao Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabela de aes utilizadas no initttab . . . . . . . . . . . . . . . . . .
Nveis de execuo padro . . . . . . . . . . . . . . . . . . . . . . . . . .
Processos disparados pelo init . . . . . . . . . . . . . . . . . . . . . . .
Sesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Encerrando a sesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Desligando o computador . . . . . . . . . . . . . . . . . . . . . . . . . . .

34
35
36
38
39
41
41

Contedo

xiv

4. Utilizando o Linux . . . . . . . . . . . . . . . . . . . . . . 42
Interpretador de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Metacaracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
O Bash - Bourne-Again Shell . . . . . . . . . . . . . . . . . . . . . . . . 45
Comandos bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Operadores do bash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Comandos Administrativos. . . . . . . . . . . . . . . . . . . . . . . . . 128
Tratamento dos Sistemas de Arquivos . . . . . . . . . . . . . . . . 134
Mdulos de dispositivos e servios . . . . . . . . . . . . . . . . . . 147
Mensagens do sistema Linux . . . . . . . . . . . . . . . . . . . . . . . 155

5. Instalando o Linux . . . . . . . . . . . . . . . . . . . . . 160


Instalao do Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O Boot do Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instalao do SuSE Linux. . . . . . . . . . . . . . . . . . . . . . . . . .
Instalao de outros aplicativos no Linux. . . . . . . . . . . . . .
Utilizando o RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

160
162
163
171
173

6. O Sistema X Window. . . . . . . . . . . . . . . . . . . 188


O Sistema X Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O X Window no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configurao do XFree86. . . . . . . . . . . . . . . . . . . . . . . . . .
Gerenciadores de janelas . . . . . . . . . . . . . . . . . . . . . . . . . .
O KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

188
192
194
196
199

7. Redes em Unix . . . . . . . . . . . . . . . . . . . . . . . . 210


Redes em Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Servidores, Estaes e Terminais . . . . . . . . . . . . . . . . . . . .
Endereamento IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Subclasses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Roteamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ferramentas para configurao e diagnstico . . . . . . . . . . .
Endereamento IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Internet e Intranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

210
219
220
224
225
227
242
246

xv

Contedo

8. Servios de Redes . . . . . . . . . . . . . . . . . . . . . 248


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 . . . . . . . . . . . . . . . . . . . . . . . . .
FTP - File Transfer Protocol. . . . . . . . . . . . . . . . . . . . . . . .
Sesses remotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PPP - Point to Point Protocol . . . . . . . . . . . . . . . . . . . . . . .
Comunicao e Telefonia . . . . . . . . . . . . . . . . . . . . . . . . . .
Interconectividade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interconectividade DOS/Windows . . . . . . . . . . . . . . . . . . .
Interconectividade Novell Netware . . . . . . . . . . . . . . .
Interconectividade Apple Macintosh . . . . . . . . . . . . . .

248
250
255
275
281
290
301
311
314
316
317
322
323
324
330
331
331
336
337

9. O Kernel Linux . . . . . . . . . . . . . . . . . . . . . . . 338


Configurao do kernel Linux . . . . . . . . . . . . . . . . . . . . . . 338
Compilao do kernel e seus mdulos . . . . . . . . . . . . . . . . 341

10. Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . 344


Segurana no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formas de ataque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algumas ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VPN - Virtual Private Network . . . . . . . . . . . . . . . . . . . . .
PGP - Pretty Good Privacy . . . . . . . . . . . . . . . . . . . . . . . . .
Clusters e Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Critrios de segurana do DoD . . . . . . . . . . . . . . . . . . . . . .
Mantendo o sistema seguro. . . . . . . . . . . . . . . . . . . . . . . . .

344
345
350
352
365
371
374
377
380

Contedo

xvi

11. Gerncia de Redes em Linux . . . . . . . . . . . . 381


Sistema de computao. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instalao fsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instalao eltrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Topologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funcionalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gerenciamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SNMP e MIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Firewalls como ferramentas de gerenciamento. . . . . . . . . .

381
382
383
384
385
386
392
398

12. Ambiente de Execuo e Desenvolvimento de


Aplicativos em Linux . . . . . . . . . . . . . . . . . . . . . 403
Formato de arquivos executveis . . . . . . . . . . . . . . . . . . . .
Executando programas para Windows no Linux . . . . . . . .
Emuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compilando fontes de aplicativos no Linux . . . . . . . . . . . .
Os arquivos Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gerando pacotes RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Assinando um RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo de pacote RPM . . . . . . . . . . . . . . . . . . . . . . . . . .

409
410
411
416
417
420
423
424

13. Expresses Regulares. . . . . . . . . . . . . . . . . . 429


Expresses Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

14. O Editor de Textos VI . . . . . . . . . . . . . . . . . 433


O editor de textos vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Opes do vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

15. Criando Disquetes de Boot. . . . . . . . . . . . . . 439


Criando Disquetes de Boot . . . . . . . . . . . . . . . . . . . . . . . . 439

16. Sistemas de Numerao . . . . . . . . . . . . . . . . 446


Notao posicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nmeros em um computador digital. . . . . . . . . . . . . . . . . .
Nmeros naturais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nmeros inteiros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nmeros de ponto flutuante . . . . . . . . . . . . . . . . . . . . . . . .

446
449
449
449
451

xvii

Contedo

17. Introduo Computao Forense . . . . . . . . 452


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

452
453
454
454
454
455

18. Clusters e Grids . . . . . . . . . . . . . . . . . . . . . . 458


Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
Implementando um cluster HPC. . . . . . . . . . . . . . . . . . . . . 459
Implementando um cluster HA. . . . . . . . . . . . . . . . . . . . . . 461

19. Entretenimento e Aprendizado . . . . . . . . . . . 466


Linux tambm cultura e diverso !. . . . . . . . . . . . . . . . . . 466
Jogos de ao (3D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Jogos para Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Livros e outras publicaes. . . . . . . . . . . . . . . . . . . . . . . . . 480
Sites na Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Livros e outras publicaes. . . . . . . . . . . . . . . . . . . . . . . . . 486
Sites na Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

Glossrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
ndice Remissivo. . . . . . . . . . . . . . . . . . . . . . . . . 498

Introduo

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.

Introduo

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.
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.

Introduo

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.
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. Em 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.

Introduo
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, William Seward Burroughs I construiu


a primeira mquina com teclado para somar e
imprimir.

Neste mesmo ano, Herman Hollerith


construiu uma mquina tabuladora
com cartes de papel perfurados para
realizar o censo dos EUA.

Em 1911, a fuso de 4 empresas, incluindo a de


Hollerith, formaram a Computing Tabulation Recording
Corporation (CTR). Em 1924, sob a presidncia de Thomas
J. Watson, ela foi renomeada para International Business
Machines Corporation (IBM),

Introduo

Em 1937, Howard Hathaway Aiken construiu uma avanada


mquina para clculos integrais e diferenciais, o IBM Automatic
Sequence Controlled Calculator (ASCC), chamado de Mark I pela
universidade de Harvard. O primeiro computador programvel.
O Mark I
Em um gabinete de aco com 2.5m de altura, 16m de largura e 6cm de
profundidade, com 765 mil componentes e pesando 4500kg, o Mark I era
alimentado por um motor eltrico de 4kW. Realizava uma multiplicaco em 6 s e
uma diviso em 15.3s. Uma funco logatitmica ou trigonomtrica demorava cerca
de 1 minuto.

Introduo

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 em 1946,
PlanKalkl.
Abaixo um programa para verificao de lgica em PlanKalkl.

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 Intel Pentium atuais.

Introduo

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).
Em 1948, surge o EDVAC (Electronic
Discrete Variable Automatic Computer).
Em 1951, produzido o primeiro
computador comercial: o UNIVAC I.

Von Newman e o EDVAC

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.

Introduo

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/M80, 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).
O finlands Linus Torvalds cria o Linux em 1991. Com os
fontes disponveis gratuitamente, o Linux acompanha ento
a evoluo dos processadores, utilizando o mximo dos
recursos do computador.

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.

Introduo

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. Em 2005 anunciado o Windows Vista,
lanado em 2006. Processadores como o Celeron, o Core
2, Core 2 Duo, Atom r o Itanium evoluem ultrapassando a
frequncia de 3 GHz, Em 2008 surgem os processadores
i3, i5 e i7. Em 2009 foi lanado o Windows 7. Em 2011 a Intel lana a segunda
gerao do Intel Core Sandy Bridge. O Linux roda perfeitamente em todos os
processadores.
Os processadores AMD tambm so suportados
pelo Linux: o K5 lanado em 1995, o K6 e o K62 em
1997, o K7 (Athlon , Duron e Sempron) em 1999, o
K8 (Opteron, Turion e Athlon X2 FX) em 2003, e o
K10 ( Phenom FX, Athlon II, Turion II) em 2007.

Alm disso, o Linux suporta tambm os


clusters e grids, permitindo configuraes de
alta disponibilidade e/ou alto desempenho.
Veja mais no captulo Clusters e Grids.

Hoje, alm da plataforma x86, o Linux


disponvel para os processadores MIPS,
PowerPC, Sparc, DEC Alpha, Motorola 68xxx,
e mesmo o S/390 e o BlueGene/L da IBM.

10

Introduo

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 information and computing system baseado no nome do
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.

Foto de um PDP-7
restaurado em Oslo,
Noruega, 2005

Introduo

11

Abaixo, uma foto histrica de Dennis Ritchie (em p) e Ken Thompson


utilizando um PDP-11.

12

Introduo

A partir da 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, o finlands Linus Torvalds (
esquerda), inspirado no sistema operacional
Minix de Andrew S. 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 ambiente operacional GNU/Linux amplia sua utilizao a cada dia em
supercomputadores, servidores, estaes de trabalho e diversos equipamentos
eletrnicos. Ele tambm amplamente utilizado em solues de clusters de alto
desempenho ou alta disponibilidade. Com diversas interfaces grficas amigveis e
com suporte a milhares de aplicativos e sua segurana inerente, ele agrada cada
vez mais os mais exigentes usurios.

Introduo

13

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.

14

Introduo

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
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.

Hardware e Arquitetura

15

2. Hardware e
Arquitetura
O ambiente operacional GNU/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.

16

Hardware e Arquitetura

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.
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, ...)

Hardware e Arquitetura

17

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.

18

Hardware e Arquitetura

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 Unix-like 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.
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).

Hardware e Arquitetura

19

Dispositivos de armazenamento
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.

20

Hardware e Arquitetura

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.
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

Hardware e Arquitetura

21

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

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.

22

Hardware e Arquitetura

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.
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.

Hardware e Arquitetura

23

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.

24

Hardware e Arquitetura

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 subdiretrios 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

Hardware e Arquitetura
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

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

25

26

Hardware e Arquitetura

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/

Hardware e Arquitetura

27

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 !

28

Hardware e Arquitetura

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:~>

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:~>

Hardware e Arquitetura

29

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.

30

Hardware e Arquitetura

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

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.

Hardware e Arquitetura

31

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, ...

O comando lsdev pode ser utilizado para ver as informaes sobre o


hardware instalado:

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
14dc-14df
eth0
11
fpu
00f0-00ff
i82365
11
ide0
14 01f0-01f7 03f6-03f6
ide1
15 0170-0177 0376-0376
keyboard
1 0060-006f
parport0
0378-037a 037b-037f
PCI
0cf8-0cff 1000-10ff
1480-149f 14a0-14af 14b0-14bf 14c0-14cf 14d0-14d7
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:~ >

14c0-14cf 14d8-14db

14a0-14a7
14a8-14af
1400-143f 1440-147f
14d8-14db 14dc-14df

32

Hardware e Arquitetura

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.

Iniciando o Linux

33

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 (Basic Input Output
System) , 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.

34

Iniciando o Linux

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.

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 forem pressionadas
juntas as teclas ++.
O processo ser executado quando for pressionada a
sequncia definida no keymap como KeyboardSignal. O
default +.

Iniciando o Linux

35

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)

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.

36

Iniciando o Linux

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

Iniciando o Linux

37

Processos disparados pelo init


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.

38

Iniciando o Linux

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.
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).

Iniciando o Linux

39

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.

40

Iniciando o Linux

Encerrando a sesso
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).

Desligando o computador
Para desligar o computador, deve ser utilizado o comando
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 para ecerrar a sua
sesso, aparecer uma janela na qual o usurio dever, normalmente, informar a
senha do root para poder confirmar a operao de Shutdown ou Reboot, para
desligar ou reiniciar o computador, respectivamente.

Utilizando o Linux

41

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. A sintaxe dos comandos so ligeiramente diferentes, mas a funo do shell
a mesma: servir de interface entre o operador e o ambiente operacional. Na
interface grfica pode ser utilizado um terminal virtual (xterm, gnome-terminal,
konsole, entre outros) para executar o shell. 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.

42

Utilizando o Linux
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.
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:~> o

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.

Utilizando o Linux

43

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 no nulo
um caracter do conjunto
Exemplo: [a-z] : letras minsculas
[YN] : Y ou N
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

Veja mais detalhes no captulo Expresses Regulares.

programB2

44

Utilizando o Linux

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>

Utilizando o Linux

45

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 $*

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

46

Utilizando o Linux

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:~>

Utilizando o Linux

47

Expanso de parmetros
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

48

Utilizando o Linux
Operadores extras (cont.)
Formato
${parmetro/padro/texto}

${parmetro//padro/texto}

${!parmetro}

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

Exemplos:

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:~>

Utilizando o Linux

49

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:~>

50

Utilizando o Linux
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.

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.

Utilizando o Linux

51

pwd
Mostra o diretrio corrente.

hmarx@thor:~> pwd
/home/hmarx
hmarx@thor:~>

echo [ -n ] texto
Imprime a linha de texto,
opcionalmente (-n) sem mudar
de linha.

hmarx@thor:~> echo $MACHINE


i686
hmarx@thor:~>

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
-d delimitador
L at encontrar o primeiro
caracter de delimitador
-s
No ecoa
Nmero de caracteres a ler
-n nmero de caracteres
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:~>

52

Utilizando o Linux

source arquivo
. arquivo
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.

Utilizando o Linux

53

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
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

54

Utilizando o Linux
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>

Utilizando o Linux

55

mkdir [ opes ] diretrio [ diretrio ] ...


Cria diretrios.
Algumas opes:
-p, --parents
-v, --verbose
-m, --mode=modo

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.

56

Utilizando o Linux

cd [ diretrio ]
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

Utilizando o Linux

57

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
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

58

Utilizando o Linux

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.

Utilizando o Linux

59

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>

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:
-n
n, ---lines=n
Exibe as primeiras n linhas
-c
n, --bytes=n
Exibe os primeiros n bytes
-v,
--verbose
Exibe cabealhos com os nomes dos
arquivos

60

Utilizando o Linux

tail [ opes ] [ arquivos ] ...


Exibe as ltimas10 linhas (ou o nmero especificado) do(s) arquivo(s).
Algumas opes:
Exibe as ltimas n linhas
-n n, ---lines=n
-f, --follow
Exibe continuamente o(s) arquivo(s)
crescentes
-c s, --bytes=n
Exibe os ltimos n bytes
-v, --verbose
Exibe cabealhos com os nomes dos
arquivos
Este comando muito utilizado para acompanhar mensagens de log
(utilizando a opo -f).
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
-j n, --skip-bytes=n
Salta n bytes de cada arquivo
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

Utilizando o Linux

61

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:~>

62

Utilizando o 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
Considera cadeias de no mnimo m
-m, -nm, --bytes=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

hmarx@thor:~> echo "Um


texto com
Um texto com brancos excessivos
hmarx@thor:~>

brancos

excessivos" | tr -s " "

Utilizando o Linux

63

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:]
o
[: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
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

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

passar todo o texto do arq.orig para minsculas gerando arq.novo.

64

Utilizando o Linux

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.

Utilizando o Linux

65

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

66

Utilizando o Linux

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

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

/regexp/

Abaixo um exemplo para trocar duas colunas e ainda incluir um separador


entre elas:

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:~>

Utilizando o Linux

67

awk [ opes ] [ arquivo ] ...


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.

68

Utilizando o Linux

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.
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 ]

Utilizando o Linux
printf
printf
printf
printf

formato, lista de expresses


formato, lista de expresses
formato, lista de expresses
formato, lista de expresses

69
[ > arquivo ]
[ >> arquivo ]
[ | arquivo ]
[ >& arquivo ]

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
Espao para nmeros positivos e - para
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]).
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-de-expresses), 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]"

70

Utilizando o Linux

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:~>

Utilizando o Linux

71

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
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.

72

Utilizando o Linux
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
}
}

Utilizando o Linux

73

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

Mar 27 00:00 passwd


Mar 26 23:54 sub1

starix
starix

Mar 27 00:00 PassWord


Mar 26 23:54 sub1

4094
1024

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 .

74

Utilizando o Linux

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:~>

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
Usa data/hora em str em vez da corrente
-d str, --date=str
str no formato padro de data e hora
Usa data/hora em str em vez da corrente
-t str
str no formato [CC[YY]]MMDDhhmm
Usa data/hora do arquivo arq em vez da
-r arq, --reference=arq
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:~>

Utilizando o Linux

75

more [ opes ] [ arquivo ] ...


Pagina arquivo(s) para a sada padro.
Algumas opes:
Nmero de linhas da tela
-num
-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.

76

Utilizando o 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
-M
Do incio da linha at o M-simo byte,
caracter ou campo, inclusive
paste [ opes ] [ arquivo ] ...
Imprime linhas utilizando informaes sequencialmente correspondentes s
linhas dos arquivos.
Algumas opes:
Usa c como delimitador em vez de TAB
-d c, --delimiter=c
-s, --serial
Processa um arquivo por vez

Utilizando o Linux

77

join [ opes ] arquivo1 arquivo2


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:
Imprime linhas no casadas do arquivo do
-a n
lado n
-i, --ignore-case
Ignora maisculas e minsculas
-1 campo
Usa o campo do arquivo1 como juno
Usa o campo do arquivo2 como juno
-2 campo
-t c
Usa o caracter c como separator de campos
Imprime somente as linhas no casadas do
-v n
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:~>

78

Utilizando o 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)
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
+n, -s n, --skip-chars=n
No compara os primeiros n caracteres
Compara no mximo n caracteres na linha
-w n, --check-chars=n

Utilizando o Linux

79

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

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

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.

80

Utilizando o Linux

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 ] [ usurio ... ] [ tty ... ]
Lista as ltimas sesses (do(s) usurio(s)s) nos terminais tty. O usurio
especial reboot mostra as reinicializaes do sistema.
Algumas opes:
Mostra n linhas
-n, -n n
-a
Mostra o nome da mquina na ltima
coluna
-R
No mostra o nome do terminal ou d
a mquina utilizada

Utilizando o Linux

81

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:~>

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:~>

82

Utilizando o 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

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
Nmero mximo de dias com a mesma
-x max
senha
-n min
Nmero mnimo de dias para a alterao
da senha
-w aviso
Nmero de dias antes da expirao da
senha
Nmero de dias para desabilitar o usurio
-i inativo
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

Utilizando o Linux

83

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.
sudo [ opes ] ... comando
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
Executa como usurio (nome ou UID) e
-u usurio
no o root
-p prompt
Exibe o prompt para pedir a senha
-b
Executa em background
-k
Invalida a temporizao da senha do
usurio

84

Utilizando o Linux

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

Utilizando o Linux

85

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:~>

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:~>

86

Utilizando o Linux

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:
Usa nome em vez do contedo de TERM
-term nome
-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
-msglevel n
Muda o nvel de log das mensagens para n
(de 1 a 8).
Colocar o monitor no modo de suspenso
-powersave on | vsync
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
Define em n minutos (1 a 60) o tempo de
-powerdown n
desligamento do monitor, ou inibe o
desligamento do monitor se n = 0

Utilizando o Linux

87

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

+D

no definido
+? ou

+C
+V

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

no definido
no definido
no definido
no definido
no definido

88

Utilizando o Linux

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.
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

Utilizando o Linux
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.

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:~>

89

90

Utilizando o Linux

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:
-Pimpressora[@mquina]
Definida a fila de impresso (local
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

Utilizando o Linux

91

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
Imprime em n colunas
--columns=n
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
Rodap
--footer=texto
-u texto, --underlay=texto
Rodap de cada pgina
Pginas a imprimir
-a pginas, --pages=pginas
-n n, --copies=n
Nmero de cpias
Gera ndice
--toc=texto
-P impr, --printer=impr
Envia sada para a fila de impresso
impr

92

Utilizando o 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

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

Utilizando o Linux

93

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
-s segundos
Exibe continuamente de segundos em
segundos

94

Utilizando o 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

Utilizando o Linux

95

fg [ job ]
% [ job ]
Coloca o job especificado (nome do processo ou nmero) em foreground.
bg [ job ]
Coloca o job especificado em background. muito til quando um
processo em foreground suspenso por +Z (que gera o sinal SIGSTOP).
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

96

Utilizando o Linux

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
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.

Utilizando o Linux

97

top [ opes ]
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.

98

Utilizando o 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 +C so definidas para os
sinais SIGSTOP, SIGQUIT e SIGINT respectivamente (veja stty).
killall [ opes ] nome
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

Utilizando o Linux
renice prioridade [ [-p] pid ... ] [ [-g] pgid ... ] [ [-u] users ... ]
Altera a prioridade de um comando em execuo.
Algumas opes:
Nmero(s) do(s) processo(s)
-p pid
-g pgid
GID dos processos
Nome(s) do(s) usurio(s)
-u user
time

[ -p ] comando [ argumentos ]

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

99

100

Utilizando o Linux

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
-e [ eof-str ], --eof [=eof-str ]
Define a cadeia para fim de arquivo
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.
-P n, --max-procs=n
Limita ao mximo de n processos
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:~>

Utilizando o Linux

101

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

E pode incluir opes como:


-links nmero
-name padro
-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.

102

Utilizando o Linux

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

Utilizando o Linux

103

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

Significado
sticky bit
SGID
SUID
r para o dono
w para o dono
x para o dono
r para o grupo
w para o grupo
x para o grupo
r para os outros
w para os outros
x para os outros

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>

104

Utilizando o Linux

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.
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> which ls
/bin/ls
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> o

file [ opes ] [ arquivo ] ...


Determina o tipo dos arquivos utilizando as definies
/usr/share/misc/magic.
Algumas opes:
L os nomes dos arquivos de arq
-f arq
-z
Pesquisa em arquivos comprimidos
-L
Segue symbolic links

em

Utilizando o Linux

105

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>

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>

.dat

106

Utilizando o Linux

history [ -c ] [ -d offset ] [ n ]
history [ -w ] [ -r ]
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.

Utilizando o Linux

107

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.

108

Utilizando o 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)

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--

hmarx

hmarx@thor:~/test>

starix

1474560 Jun 12 15:29 floppy.image

Utilizando o Linux

109

split [ opes ] [ entrada [ prefixo ] ]


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>

110

Utilizando o Linux

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

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

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)

Utilizando o Linux

111

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
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
xz [ opes ] [ arquivos ] ...
unxz [ opes ] [ arquivos ] ...
xzcat [ -s ] [ arquivos ] ...
Comprime ou descomprime arquivos
Opes similares ao gzip e bzip2

112

Utilizando o Linux

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, unrar, unace, freeze e zoo.

Utilizando o Linux

113

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>

114

Utilizando o Linux

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

Separador de comandos
Voc pode digitar diversos comandos em uma nica linha: basta separlos por ";".
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>

Utilizando o Linux

115

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:~>

116

Utilizando o Linux

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:~>

Agrupando processos em um subshell


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:~>

Utilizando o Linux

117

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:~>

118

Utilizando o Linux

Expresses aritmticas
O comando:
$ (( expresso ))
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

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
Assinalamento
Execuo sequencial

Utilizando o Linux

119

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:~>
hmarx@thor:~>
21
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 )))
X=$((( 3 * 7 )))
echo $X

120

Utilizando o Linux

Expresses condicionais
O comando:
$ [[ expresso ]]

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

Utilizando o Linux

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
arg1
arg1
arg1

-lt
-le
-gt
-ge

arg2
arg2
arg2
arg2

121

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

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:~>

122

Utilizando o Linux

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.
Lembre-se:
Condicional simples:
if condio ;
then
comandos ;
fi

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:~>

Utilizando o Linux

123

Condicional composto tipo 2:


if condio1 ;
then
comandos1 ;
elif condio2 ;
then
comandos2 ;
else
comandosn ;
fi

Testes repetidos !

Execuo condicional
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

124

Utilizando o Linux

Comandos iterativos
Teste de continuao do loop
while condio
do
comandos
done
Teste de fim do loop
until condio
do
comandos
done

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

Loop controlado
for nome [ in lista de palavras ]
do
comandos
done
Comando de seleo mltipla

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

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:~>

Utilizando o Linux

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
...

125

126

Utilizando o Linux

Comando para gerao de menu


select nome [ in lista de palavras ]
do
comandos;
done
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:~>

Utilizando o Linux

127

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:~>

128

Utilizando o Linux

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

Utilizando o Linux

129

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

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 !.

130

Utilizando o Linux
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
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.

Utilizando o Linux

131

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
Prefixo para o diretrio pessoal. O login
-b dir
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.

132

Utilizando o 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

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 .

Utilizando o Linux

133

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:
Nome do usurio
-f nome completo
-w telefone
Telefone do trabalho
Nmero da sala
-r sala
-h telefone
Telefone pessoal
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.

134

Utilizando o Linux

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:
Define modo de permisso
-m, --mode=modo
--help
Exibe uma ajuda
--version
Apenas exibe a verso

Utilizando o Linux

135

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

136

Utilizando o Linux

mkfs [ -V ] [ -t tipo ] [ opes ] disp [ blocos ]


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.
H mkfs.tipo (mkfs.ext2, mkfs.ext3, mkfs.vfat, mkfs.reiserfs, etc) que
podem ser utilizados para criar o sistema especificado.
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.
-i b
Usa b bytes por inodo.
-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.

Utilizando o Linux
mkdosfs

137

[ opes ] disp [ blocos ]

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).
Nmero de setores reservados. O default 32 para
-R reserva
FAT 32, e 1 para FAT 12 ou 16.
-v
Modo verboso.

138

Utilizando o Linux

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.
-p tam
Define o tamanho da pgina.
-v0
Cria uma rea de swap com estilo antigo.
-v1
Cria uma rea de swap com estilo novo.
swapon [ -h | -V ]
Algumas opes:
-h
-V

Exibe uma ajuda.


Exibe a verso

swapon -a [ -v ]
Ativa todas os dispositivos definidos como swap em /etc/fstab.
Algumas opes:
-v
Modo verboso.

Utilizando o Linux

139

swapon [ -v ] [ -p pri ] disp ...


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

Exibe uma ajuda.


Exibe a verso

swapoff -a
Desativa todas os dispositivos definidos como swap em /etc/fstab.
swapoff disp
Desativa a rea de swap em disp.

140

Utilizando o Linux

de quota
Para que um sistema de arquivos possa ter o controle do uso do espao em
disco, le deve ser montado com a opo usrquota. Esta opo pode ser
includa no arquivo /etc/fstab., como o exemplo abaixo:
/dev/disk/by-id/ata-ST3160215A_9RAB8FSE-part2 /work ext3,defaults,usrquota

Veja o comando mount mais a frente.


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

Utilizando o Linux

141

quotaon [ -v | -u | -g | -f ] fs
quotaon -a [ -v | -u | -g | -f ]
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

142

Utilizando o 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

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.

Utilizando o Linux

143

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
bhl
Limite de blocos hard
Limite de inodos soft
isl
ihl
Limite de inodos hard
Limite de blocos grace
bgrl
igrl
Limite de inodos grace
Algumas opes:
-r
Edita as quotas em mquinas remotas
-u
Trata quotas de usurios
-g
Trata quotas de grupos
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.
-a
Trata todos os sistemas de arquivos em
/etc/mtab

144

Utilizando o 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)
Duplica a quota do usurio prottipo para
-p prottipo
os usurios especificados
-t
Edita os limites de tempo soft.

Utilizando o Linux

145

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 ]
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

146

Utilizando o Linux

mount [ { -f | -n | -r | -s | -v | -w } ] [ -o opes ] { disp | dir }


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.
loop[=dev]
Utiliza o loop device 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.

Utilizando o Linux

147

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.
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.

148

Utilizando o Linux

Mdulos de dispositivos e servios


dmidecode [ opes ]
Lista a tabela DMI (Desktop Management Interface), que contem a
descrio dos componentes de hardware.
Algumas opes:
-h
Ajuda
-V
Verso do dmidecode
-d dev-mem
L a memria do dispositivo dev-mem
-q
Silencioso
-s texto
Exibe apenas entradas com o texto
-u
No decodifica
-t tipo
S exibe entrada do tipo especificado
Tipos vlidos: bios, system, baseboard, chassis,
processor, memory, cache, connector e slot
venus:~ # dmidecode
# dmidecode 2.10
SMBIOS 2.3 present.
Handle 0x0001, DMI type 1, 25 bytes
System Information
Manufacturer: System Manufacturer
Product Name: System Name
Version: System Version
Serial Number: SYS-1234567890
UUID: Not Settable
Wake-up Type: Power Switch
Handle 0x002E, DMI type 32, 11 bytes
System Boot Information
Status: No errors detected

Utilizando o Linux

149

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

150

Utilizando o Linux

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

Utilizando o Linux

151

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).
thor:~ # lsdev
Device
DMA
IRQ I/O Ports
-----------------------------------------------0000:00:04.1
0170-0177 01f0-01f7 0376-0376 03f6-03f6 d800-d80f
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 e420-e423
aic7xxx
10
cascade
4
2
dma
0080-008f
dma1
0000-001f
dma2
00c0-00df
Ensoniq
a800-a83f
Ensoniq AudioPCI
11

152

Utilizando o Linux

lsmod [ opes ]
Lista os mdulos carregados.
Algumas opes:
-h, --help
Ajuda
-V, --version
Exibe a verso do lsmod
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
Define explicitamente o nome do mdulo,
-o nome, --name=nome
no utilizando o nome do arquivo objeto
-h, --help
Ajuda sumria
-V, --version
Exibe a verso do insmod

Utilizando o Linux

153

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

154

Utilizando o 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
-C arquivo
Usa o arquivo de configurao arquivo, em
vez de /etc/modules.conf
Define o arquivo com o mapa de smbolos
-F simbolos
do kernel.
-V
Exibe a verso do depmod

Utilizando o Linux

155

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/
Utiliza o arquivo arq em vez do arquivo
-C arq, --config arq
/etc/modules.conf
-h
Ajuda
-V, --version
Exibe a verso do lsmod

156

Utilizando o 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
Exibe as informaes definidas no
-f str, --format str
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:~ #

Utilizando o Linux

157

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. ou pelo
arquivo /etc/syslog-ng/syslog-ng.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 ;.

158

Utilizando o Linux

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.
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

Utilizando o Linux

159

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

160

Utilizando o 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

Utilizando o Linux

161

No syslog-ng, so definidos os objetos do tipo source, destination,


log, filter, parser, rewrite rule e template. As definices seguem o formato:
options { parmetro1; parmetro2; ... };
tipo identificador { parmetro, parmetro2; ... };
Os parmetros definem
operaes lgicas.

level, facility, message, podendo incluir

Alguns exemplos podem ser vistos no quadro abaixo.

options {
long hostnames(off); flush_lines(0);
perm(0640); stats_freq(3600);
};
source src { internal(); unix-dgram("/dev/log"); };
source chroots
filter f_mail { facility(mail); };
filter f_acpid { lrvrl(emerg..noticed) and message(^acpid:);
filter f_messages
{
not facility(news, mail) and not filter(f_iptables);
};
destination console {
file("/dev/tty12" owner(-1) group (-1) perm (-1));
destination(console);
};
log {
source(src); source (chroots);
filter(f_console);
destination (xconsole);
};

162

Utilizando o Linux

Lembre-se da importncia de analisar periodicamente os logs do sistema.


Falhas em servios ou dispositivos, escassez de recursos (memria e disco),
tentativas de invaso, etc, podem ser detectadas antes de se tornarem crticas ou
de tornar o sistema inutilizvel.

Instalando o Linux

163

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
e mais especificamente openSuSE 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/DVD-ROM, pen drive, site FTP, diretrio acessvel do disco, disquete, ou
servidor NFS.
Atualment so disponveis as verses para 32 e 64 bits.

164

Instalando o Linux

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
aplicativos, processamento de imagens, ...

de

Instalando o Linux

165

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

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. Todas a
distribuies atuais utilizam o GRUB.
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 !

166

Instalando o Linux

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.

Instalando o Linux

167

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, pen drive, rede 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), O GRUB exibe 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 SuperVGA (800x600 ou 1024x768),
ou mesmo maior. As resolues suportadas so automaticamente detectadas.

Selecione o modo de instalao no menu, e simplesmente tecle .

168

Instalando o Linux

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.

Instalando o Linux

169

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.

170

Instalando o Linux

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.

Instalando o Linux

171

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.

172

Instalando o Linux

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.

Instalando o Linux

173

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

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)

174

Instalando o Linux

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.
Diversos servios sero disparados e voc poder ento iniciar uma sesso
no Linux.

Instalando o Linux

175

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.

176

Instalando o Linux

Pode-se gerar o pacote RPM binrio a partir do pacote fonte, utilizando,


por exemplo, 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 aplicativoverso. 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.
Pode-se tambm gerar o pacote RPM binrio a partir do arquivo tar com
os fontes, utilizando, por exemplo, o comando
rpmbuild -ta arquivo.tar.bz2

Instalando o Linux

177

Utilizando o RPM
O RPM (Red Hat Package Manager) um gerenciador de pacotes que
permite a administrao da instalao de aplicativos compatveis com o LSBLinux 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

178

Instalando o Linux

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)

Exemplo:
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:~>

Instalando o Linux

179

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:~>

180

Instalando o Linux

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

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

Instalando o Linux
--hash, -h

181
Imprime # durante o tratamento do
pacote

Exemplo:
thor:~ # rpm -ivh apache-1.3.26-57.i586.rpm
apache
############################
thor:~ #

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

Atualiza para uma verso anterior

Exemplo:
thor:~ # rpm -Uvh apache-1.3.26-57.i586.rpm
apache
############################
thor:~ #

182

Instalando o Linux

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

Instalando o Linux

183

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

184

Instalando o Linux

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:~>

Consulta os arquivos do pacote inetd instalado :


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:~>

Instalando o Linux

185

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)

No SuSE Linux, a atualizao de pacotes (para novas implementaes,


correes de bugs e vulnerabilidades) pode ser feita atravs do YOU (Yast Online 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 ]

186

Instalando o Linux

Utilizando o Smart
O smart tem seus repositrios cadastrados nos arquivos com extenso
.channel no diretrio /etc/smart/channels/. Cada arquivo composto
por sesses que definem o canal do repositrio, como o exemplo abaixo para o
openSuSE 11.2.
[suse-oss]
type=rpm-md
baseurl=http://download.opensuse.org/distribution/11.2/repo/oss/suse/
enabled=1
Entre parnteses est o nome do cana (channel), no exemplo suse-oss
(repositrio de pacotes open source do openSuSE Linux). A diretiva name define
o nome do repositrio. A diretiva type define o formato do repositrio, podendo
ser, por exemplo,
Tipo
apt-deb
apt-rpm
deb-dir
red-carpet
rpm-dir
rpm-hdl
rpm-md
slacksite
urpmi
yast2

Formato do repositrio
Repositrio APT-DEB
Repositrio APT-RPM
Repositrio de Debian ou Ubuntu
Canal Red Carpet
Diretrio RPM - Fedora Core
Lista de cabecalhos de RPM
Metadados de RPMs
Repositrio de Slackware
Repositrio de Mandriva
Repositrio de openSuSE

Dependendo do tipo, define-se o baseurl que indica o endereo da base


do repositrio.
Pode-se habilitar (enable=1) ou desabilitar (enable=0) o uso do
repositrio.

Instalando o Linux

187

Quando desejar atualizar os pacotes, use os comandos smart update, para


atualizar a lista de pacotes e suas verses, e ento smart upgrade para
baixar
efetivamente e atualizar os pacotes. Pode-se incluir a opco --download para
apenas baixar os pacotes para o diretrio /var/lib/smart/packages, sem
instal-los.
Os comandos mais comuns do smart so:
Comando
smart { -h | --help }
smart channel --show
smart search padro
smart info { [ padro ] }
smart install padro
smart remove padro
smart update { [ canal ] }
smart upgrade { [ padro ] }
smart clean

Significado
Ajuda
Lista repositrios definidos
Procura pacotes
Exibe informaces do pacotes
Instala pacotes
Remove pacotes
Atualizar lista de pacotes de canais
Atualiza pacote
Remove os arquivos baixados

Pode-se ainda usar o smart no modo shell atravs do comando


smart --shell
e ento os comandos podem ser digitados no prompt smart>
root@thor: > smart --shell
Smart Package Manager 1.3 - Shell Mode
Loading cache...
Updating cache...
smart>

########################################## [100%]

188

Instalando o Linux

Alm da interface texto, o smart possui uma interface grfica que pode ser
utilizada usando o comando smart com a opco --gui :
smart --gui [ comandos ]

Instalando o Linux

189

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:
Version:
Release:
Source:
Summary:
License:
Distribution:
Group:

simple-package
1.0
0.1
simple-package-1.0.tar.bz2
Simple Package
GPL
openSuSE
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

190

Instalando o Linux

Para criar o arquivo simple-package-1.0-0.1.i586.rpm em


/usr/src/packages/RPMS/i586 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 em
/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

Para ver os arquivos que esto no pacote gerado, utilizamos o comando:


rpm -qpl simple-package-1.0-0.1.i586.rpm
/usr/local/pacote
/usr/local/pacote/arq.txt
/usr/local/pacote/img.png
/usr/local/pacote/prog

Instalando o Linux

191

Para manter a integridade da instalao, procure sempre instalar


pacotes pr-compilados compatveis com a distribuio e verso do
Linux utilizadas.

192

O Sistema X Window

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).

O Sistema X Window

193

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.
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.

194

O Sistema X Window

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 um 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

):

O Sistema X Window

195

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
-fg cor, --foreground cor
Especifica a cor dos textos e grficos
Define a borda com n pixels
-bw n, --borderwidth n
-bd cor, --bordercolor cor
Define a cor da borda
Especifica o ttulo da janela
-title ttulo

196

O Sistema X Window

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

/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.

O Sistema X Window

197

Para a configurao manual do XFree86, existem aindas diversas ferramentas :


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

198

O Sistema X Window

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 desktop virtual, 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. Use + +, +, +,
+, etc., para acessar o desktop virtual desejado.

O Sistema X Window

199

Abaixo, uma tela do sistema X Window com o gerenciador de janelas


KDE verso 3.x. Foi ressaltado o gerenciador com 6 desktops virtuais com um
quadrado vermelho.

200

O Sistema X Window

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.

O Sistema X Window

201

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.

202

O Sistema X Window

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.

kpager - Preview de Desktops

O Sistema X Window

203

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-and-paste. Alm disto, ele tambm um
browser WEB.

204

O Sistema X Window

Atravs da barra do painel (kicker), 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 KDE no SuSE Linux

Outros aplicativos so bem semelhantes aos existentes no ambiente


Windows, como o kolourpaint mostrado abaixo:

KolourPaint - o similar do PaintBrush do Windows

O Sistema X Window

205

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

206

O Sistema X Window

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

O Sistema X Window

207

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.

208

O Sistema X Window

O kplot3d (do KDE2), que permite a exibio de superfcies a partir de


sua equao. e ainda rod-la nos 3 eixos.

O Sistema X Window

209

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).

Kword - Editor de documentos do KOffice

210

O Sistema X Window

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.

OpenOffice

oowrite - uma alternativa ao Microsoft Office

O Sistema X Window

211

axcalc - Planilha do Applixware

oocalc - Planilha do OpenOffice

212

O Sistema X Window

Voc poder ainda configurar e administrar o SuSE Linux atravs do KDE


utilizando o KDE Control Center e os mdulos do YaST.

O Sistema X Window

213

A configuraco pessoal, incluindo a aparncia dos desktops e dispositivos,


pode ser feita atravs da interface grafica:

214

O Sistema X Window

Rede em Unix

215

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. Aplicao
6. Apresentao
5.
4.
3.
2.

Sesso
Transporte
Rede
Enlace

1. Fsica

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)

Redes em Unix

216

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

Porto de destino
Checksum
Dados

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.

Rede em Unix

217

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

Padding

Dados

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.

Redes em Unix

218

Abaixo podemos ver como o TCP/IP se encaixa no modelo OSI:

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).

Rede em Unix

219

Na camada fsica so definidos os tipos e formatos de conectores, cabos,


antenas, pinagens, etc.

Servios do TCP/IP
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 xinetd.

Redes em Unix

220

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).

Rede em Unix

221

Para maior flexibilidade e controle o inetd foi 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

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

Redes em Unix

222
Atributos do xinetd (cont.)

Atributo
server
server_args
only_from
no_access
access_times
log_type

log_on_success

log_on_failure

rpc_version
rpc_number
env

passenv
port
redirect

bind
interface

Descrio / valores aceitos


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
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

Rede em Unix

223
Atributos do xinetd (cont.)

Atributo
banner

banner_success
banner_fail
per_source
cps
max_load
disable

Descrio / valores aceitos


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)

Redes em Unix

224

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.

Rede em Unix

225

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
Por exemplo, o IP 192.168.200.3 armazenado em 4 bytes consecutivos
como abaixo:
byte 3
192

byte 2
168

byte 1
200

byte 0
3

decimal = 192*2563 + 168*2562 + 200*2561 +3*2560 = 3232286723


E o nmero decimal 3232286723 em 32 bits. Pode-se utilizar o
programa ping tanto quanto com a representao do IPv4 quanto seu valor
decimal. Veja o exemplo abaixo :
root@thor:~ # ping -c 3 3232286723
PING 3232286723 (192.168.200.3) 56(84) bytes of data.
64 bytes from 192.168.200.3: icmp_seq=1 ttl=64 time=0.502 ms
64 bytes from 192.168.200.3: icmp_seq=2 ttl=64 time=0.594 ms
64 bytes from 192.168.200.3: icmp_seq=3 ttl=64 time=0.508 ms
--- 3232286723 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.502/0.534/0.594/0.049 ms
root@thor:~ #

Note que o programa ping imprime o IP no formato w.x.y.z, a sequncia


dos 3 pacotes ICMP (ping request) enviados icmp_seq e o tempo de resposta
time. Ao final so impressas as estatsticas dos pacotes transmitidos incluindo os
tempos de resposta.

Redes em Unix

226

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

Valores de w

Net Id

HostId

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

No. de
nodos
16.777.214
65.534
254

Qualquer IPv4 formado pela combinao w.x.y.z que o agrupamento


do endereo de rede NetId com o endereo do nodo HostId.
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

Rede em Unix

227

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

Utilizao de nomes de nodos


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.

Redes em Unix

228

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

Rede em Unix

229

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 i da classe C com


28-2 = 26 = 64 IPs. A mscara de 24+2 = 26 bits 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.

Redes em Unix

230

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.

Rede em Unix

231

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

Redes em Unix

232

Ferramentas para configurao e diagnstico


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 eth1
eth1 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.

Rede em Unix

233

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)
intervalo entre pacotes em segundos
-i num
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:~ #

Redes em Unix

234

route [ opes ] [ { add | del | flush } parmetros ]


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

thor:~ # route -n
Kernel IP routing table
Destination
Gateway
201.17.146.0
0.0.0.0
192.168.200.0 0.0.0.0
127.0.0.0
0.0.0.0
0.0.0.0
201.17.146.1
thor:~ #

Genmask
255.255.255.0
255.255.255.0
255.255.0.0
0.0.0.0

Flags
U
U
U
UG

Metric
0
0
0
0

Ref
0
0
0
0

Use
0
0
0
0

Iface
eth0
eth1
lo
eth0

Ref o nmero de referncias a esta rota e no utilizada pelo kernel do


Linux. Use numero de utilizao 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 endereo
C - a entrada cache
! - a rota rejeitada

Rede em Unix

235

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.

root@thor:~ # ip link
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: sit0: <NOARP> mtu 1480 qdisc noqueue
link/sit 0.0.0.0 brd 0.0.0.0
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:00:e8:4d:4f:a7 brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:01:02:ec:22:9a brd ff:ff:ff:ff:ff:ff
root@thor:~ # ip route
192.168.100.0/24 dev eth0 proto kernel scope link src 192.168.100.11
201.17.146.0/24 dev eth0 proto kernel scope link src 201.17.146.157
192.168.200.0/24 dev eth1 proto kernel scope link src 192.168.200.3
169.254.0.0/16 dev eth0 scope link
127.0.0.0/8 dev lo scope link
default via 201.17.146.1 dev eth0
root@thor:~ # ip neigh
201.17.146.1 dev eth0 lladdr 00:13:5f:05:67:05 DELAY
192.168.200.190 dev eth1 lladdr 00:e0:7d:c2:d2:17 DELAY
192.168.200.200 dev eth1 lladdr 00:16:76:90:c1:94 REACHABLE
192.168.200.41 dev eth1 lladdr 00:06:4f:48:da:74 REACHABLE
root@thor:~ #

Redes em Unix

236

netstat [ opes ] [ { sockets ... | Af } ]


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:~ #

Rede em Unix

237

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).

Redes em Unix

238

ipcalc [ opes ] endereo [ [ / ] mscara ] [ mscara ]


Calcula endereos de broadcast, rede, mscaras, sub-redes,
agregados, etc. Use ipcalc --help para maiores informaes.

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:~ #

Rede em Unix

239

traceroute [ opes ] destino


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.

Redes em Unix

240

O iptraf sendo utilizado para monitoramento de conexes:

Trfego de conexes

Rede em Unix

241

O iptraf sendo utilizado para monitoramento do trfego de dados.

Trfego de bytes e pacotes

Redes em Unix

242

Para o modo grfico existem diversas ferramentas, entre elas:


ethereal ou wireshark
Poderoso analisador de protocolos com possibilidades de filtros e
visualizao em tempo real do contedo dos pacotes.

xtraceroute
Visualizao da rota atravs do globo terrestre, utilizando o
traceroute.

Rede em Unix

243

A ferramenta nmap bastante til na identificao de servios disponveis


em um servidor:
hmarx@venus: ~> nmap -sT -P0 thor
Starting Nmap 5.00 ( http://nmap.org ) at 2010-09-09 23:54 BRT
Interesting ports on thor.starix.br (192.168.200.3):
Not shown: 978 closed ports
PORT
STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
111/tcp open rpcbind
139/tcp open netbios-ssn
143/tcp open imap
199/tcp open smux
444/tcp open snpp
445/tcp open microsoft-ds
631/tcp open ipp
993/tcp open imaps
2049/tcp open nfs
2222/tcp open unknown
3306/tcp open mysql
3551/tcp open unknown
8008/tcp open http
10000/tcp open snet-sensor-mgmt
16001/tcp open unknown
32768/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.52 seconds
hmarx@venus:~> o

Redes em Unix
O nmap possui a ferramenta grfica zenmap, mostrada abaixo.

244

Rede em Unix

245

Redirecionamento de conexo TCP/IP


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
sero
redirecionadas
para
bindaddress/bindport
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.

Redes em Unix
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.

246

Rede em Unix

247

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

prefixo

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

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.

Redes em Unix

248

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.
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

Rede em Unix

249

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
. . .

16 bits
0000

. . . 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, exibido pelo ifconfig como:
inet6 addr: ::1/128 Scope:Host

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

Quando o IPv6 est habilitado, usando o ifconfig podemos ver o IPv6 de


scopo local em uma linha parecida com:
inet6 addr: fe80::201:2ff:feec:229a/64 Scope:Link

Redes em Unix

250

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, na base
hexadecimal, comeam com ff.
Ferramentas de diagnstico
Podem ser utilizadas ferramentas como o ping6, traceroute6 e
tracepath6 para diagnstico de redes utilizando IPv6.

Rede em Unix

251

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.

Redes em Unix

252

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.

Servios de Redes

253

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).

254

Servio de Redes
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.

Servios de Redes

255

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

256

Servio de Redes

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.
Em setembro de 2009, o nmero de usurios da Internet no mundo
estimado em mais de 1.7 bilhes.

Servios de Redes

257

Estrutura hierrquica do DNS

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.

258

Servio de Redes

Lendo nome de domnios


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:~>

Servios de Redes

259

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.

260

Servio de Redes

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.

Servios de Redes

261

Formato dos registros do DNS


O formato do registro (chamado de RR - Resource Record) :
[ nome ] [ ttl ] [ classe ] tipo dados
onde:
nome
ttl
classe

tipo

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.

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.

262

Servio de Redes

Os formatos dos principais tipos de registros so:


1. Start of Authority
SOA dominio email (
serial
refresh
retry
expire
minimum
)
onde
um nmero sequencial sempre crescente.
serial
usado para verificar alteraes nos dados
definidos. comum usar a data de ltima
alterao no formato AAAAMMDDss, onde ss
incrementado a cada alterao do dia;
refresh
o tempo entre atualizaes dos servidores de
DNS secundrios;
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
expire
domnio;
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

Servios de Redes

263

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

4, Name to IPv6 address mapping


AAAA ipv6
onde
ipv6

IN

o IPv6, de acordo com as regras definidas no


captulo anterior, Rede em Unix.

AAAA 2001:0780:0:1::1

264

Servio de Redes
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.

IN A6 96 ::fef7:6d2c ipv6.provedor.com.

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

$ORIGIN meudominio.com.
mail IN CNAME servidor

o apelido para o objeto.

Servios de Redes

265

8. Textual information
TXT "texto"
onde
texto

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.
ordem
Nmero menor 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.

266

Servio de Redes
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"

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.
IN MINFO mailadm.meudominio.com. mailerr.meudominio.com.

Servios de Redes

267

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
size
em metros da localizao;
a preciso horizontal em metros;
hp
vp
a preciso vertical em metros.

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

268

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

IN SRV

0 5 80 www.meudominio.com.

Servios de Redes

269

16. DNSKEY - DNS Public key


DNSKEY flags proto algo dados
onde
nmero de 16 bits (0, 256 ou 257):
flags
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
proto
cdigo do protocolo (somente 3 atualmetne
valido)
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

270

Servio de Redes
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
tempo de vida do objeto
ottl
expira
data de expirao do RRSIG
data inicial
inicio
keytag
cdigo de verificao da assinatura
objeto dono da chave privada
dono
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= )

Servios de Redes

271

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

272

Servio de Redes

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

Servios de Redes

273

Suponha que o servidor seja tambm escravo (um DNS secundrio) do


domnio outrodominio.br, resolvido pelo servidor primrio com IP 192.168.2.1.
O arquivo /etc/named.conf pode ento conter :

#
# 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; };
};

274

Servio de Redes

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 LOC 19 55 00.000 S 43 57 00.000 W 858.00m 0.00m 10000.00m 10.00m
IN WKS 192.168.1.1 tcp domain
IN WKS 192.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

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 PTR ns.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.".

Servios de Redes

275

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.

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/.

276

Servio de Redes

E a chave privada est no arquivo com a extenso .private


(Kmeudominio.com.*.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

Servios de Redes

277

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: ~>

278

Servio de Redes
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: ~>

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: ~>

Servios de Redes
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:~ #

279

280

Servio de Redes

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::

Servios de Redes

281

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.
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.
Para permitir que os clientes NIS possam alterar suas senhas no servidor
NIS, h o servio yppasswdd. Ele disparado no servidor mestre.

282

Servio de Redes

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: ~>

Servios de Redes

283

yppasswd [ -f ] [ -l ] [ -p ] usurio
ypchfn usurio
ypchsh usurio
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: ~>

284

Servio de Redes

ypcat [ -kt ] [ -d domnio ] mapa | -x


Exibe valores das chave de uma base NIS.
Algumas opes:
-d domnio
-k
-Vn
-x

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

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: ~>

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

ypmatch [ -d domnio ] [ -kt ] chave ... mapa | -x


Exibe as informaes de uma ou mais chaves de um mapa NIS.
Algumas opes:
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

-d domnio
-k
-t
-x

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
hmarx@thor: ~>

Servios de Redes

285

Manualmente, a base de dados poder ser inicializada pelo programa


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 programa ypserv ou o
script rcypserv.
Os servidores escravos so inicializados utilizando o comando:
/usr/lib/yp/ypinit -s mestre

286

Servio de Redes

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

Servios de Redes

287

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.

288

Servio de Redes
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

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

Servios de Redes

289

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).

Utilizando o modelo master/slave possvel implementar replicao dos


dados:

290

Servio de Redes

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

Servios de Redes
2) Poltica de controle de acesso (ACLs):

# 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!

291

292

Servio de Redes
3) Definico da base de dados
Aqui o domnio deve ser alterado para o escolhido.

############################################################
# 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

Servios de Redes

293

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

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

294

Servio de Redes

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 ldap-account-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

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

Servios de Redes

295

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.

296

Servio de Redes
O arquivo /etc/httpd/httpd.conf dividido em sesses.

Na sesso 1 so definidos os parmetros globais. As principais diretivas da


sesso 1 so:

Diretiva

Significado

ServerType

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

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

Mdulos carregados pelo apache


Reconstruo dos mdulos definidos em
LoadModule
Habilita informaes completas exibidas em
server-status

Servios de Redes

297

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

Significado

Port
Listen

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)

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

298

Servio de Redes

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 pseudo-variveis como:

Varivel

Significado

%h
%a
%l
%u
%t
%r

IP ou nome do computador remoto


IP do cliente

%s
%b
%U
%{Referer}i
%{User-Agent}i

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

Significado

ErrorLog

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)

LogLevel
LogFormat
CustomLog

Servios de Redes

299

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

Significado

AuthUserFile
AuthGroupFile
AuthUserDBMFile
AuthGroupDBMFile
Options

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

AllowOverride

Order
Allow from
Deny from
Satisfy

Valida todas as diretivas Allow from e Deny


from

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

300

Servio de Redes

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

Servios de Redes

301

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 /server-status e /server-info.

302

Servio de Redes

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.

Servios de Redes
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>

303

304

Servio de Redes

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.

Servios de Redes

305

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

306

Servio de Redes

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.

Servios de Redes

307

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

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.

308

Servio de Redes

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

Servios de Redes

309

Calamaris
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

310

Servio de Redes

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

Servios de Redes
A seguir podem ser vistos alguns dos relatrios gerados.

311

312

Servio de Redes

Servios de Redes

313

314

Servio de Redes

Servios de Redes

315

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 configurao nos arquivos do
diretrio /usr/share/doc/packages/squidgrd.
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 squidGuard utiliza os arquivos de dados do diretrio


/var/lib/squidGuard/db, e gera os logs em /var/log/squidGuard.

316

Servio de Redes

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).

Servios de Redes

317

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 email.
H ainda programas que aceitam conexes dos MUAs para que o usurio
possa ler seus e-mails. 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 emails 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.

318

Servio de Redes
Exemplo de MUA:

Kmail - a interface do usurio no ambiente grfico KDE.

Mutt - um dos diversos MUAs com interface texto

Servios de Redes

319

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 /
\
|
\

Corpo

/
|
/
\
|
\

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
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.

320

Servio de Redes
Estudaremos aqui o sendmail, o MTA mais utilizado em plataformas

Unix.
Protocolo do sendmail
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.

Servios de Redes

321

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.

322

Servio de Redes

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.
Abaixo pode ser visto um diagrama simplificado do fluxo das regras de
tratamento dos e-mails:

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.

Servios de Redes

323

Algumas variveis importantes so:


Em /etc/sysconfig/mail:

MAIL_CREATE_CONFIG

Varivel

Valores
yes | no

FROM_HEADER

<domnio>

SMTPD_LISTEN_REMOTE

yes | no

CONF_TYPE

standard |
advanced |
undef
yes | no

SENDMAIL_EXPENSIVE

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

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


postfix).

324

Servio de Redes
Em /etc/sysconfig/sendmail:
Varivel

SENDMAIL_LOCALHOST
SENDMAIL_SMARTHOST
SENDMAIL_NOCANONIFY

SENDMAIL_ARGS

SENDMAIL_CLIENT_ARGS
MASQUERADE_DOMAINS

Valores
localhost
...
<servidor do
provedor>
yes | no

-L sendmail
-Am -bd -q30m om
-L sendmail-client
-Ac -q30m
<dominio>
...

SENDMAIL_EXPENSIVE

yes | no

SMTP_AUTH_MECHANISMS

gssapi | otp | login |


plain | digest-md5 |
cram-md5 | all
gssapi | otp | login |
plain | digest-md5 |
cram-md5 | all
server | client |
both
<rbl-server> ...

SMTP_AUTH_SERVER

STARTTLS
SENDMAIL_DNSRBL

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
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

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.

Servios de Redes

325

Configuraes mais complexas


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).

326

Servio de Redes

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).
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 email 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.

Servios de Redes

327

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.

328

Servio de Redes

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 VT-100, 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.

Servios de Redes

329

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 ..

330

Servio de Redes
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

Conexo discada com a Internet


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).

Servios de Redes

331

kppp - conexo dial-up


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-~

332

Servio de Redes

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.
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).

Servios de Redes

333

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 ).

334

Servio de Redes

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.
Conexo ADSL
Existem basicamente 2 tipos de conexo ADSL: a pppoe, PPP-overethernet e a pppoa, PPP-over-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 adslstop 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.

Servios de Redes

335

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

skype

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.

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

336

Servio de Redes

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

Servios de Redes

337

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.

338

Servio de Redes

O Linux como servidor de uma rede Windows


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

Servios de Redes

339

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

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.

340

Servio de Redes

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).
O Linux como cliente de uma rede Windows
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.

Servios de Redes

341

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:~#

342

Servio de Redes

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.

O kernel Linux

343

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
bsico em C devero estar instalados (como o gcc,
devel). Se a instalao for feita atravs YaST no
pacotes sero automaticamente selecionados com
desenvolvimento.

pacotes de desenvolvimento
o make, o ld, e o ncursesSuSE Linux, alguns destes
a seleo do ambiente de

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).

344

O Kernel Linux

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.
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
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.

O kernel Linux

Configurando o kernel com o comando make xconfig

345

346

O Kernel Linux

Compilao do kernel e seus mdulos


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.

O kernel Linux

347

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.

348

O Kernel Linux

Segurana

349

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.

350

Segurana

Formas de ataque
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.
Cavalos de Tria
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.

Segurana

351

352

Segurana

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 uma
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).

Segurana

353

Vrus
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 o
usurio, somente se desejar, ir salv-lo 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 execut-lo como root !
Porm, se uma mquina utilizada como servidor de arquivos/discos,
arquivos inofensivos para o Linux se tornam extremamente perigosos para as
estaes de trabalho DOS, Windows, MacOS ou Netware. Existem programas
anti-vrus para o Linux para varrer estes arquivos e diretrios compartilhados e
detectar a presena de padres de vrus neles. Para os anexos de 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, quando 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
problemas de vrus.

354

Segurana

Vermes (worms)
Como qualquer sistema operacional, o Linux no
imune a uma classe de programas, denominados de
vermes,
que
simplesmente
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.

Segurana

355

Algumas ferramentas
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.

356

Segurana

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. Todos estes aplicativos tambm geram logs
que devem ser frequentemente analisados pelos administradores de redes e
segurana.
A primeira barreira para os ataques o denominado firewall (derivado do
nome da porta corta fogos).

Segurana

357

Firewalls
As principais funes de um firewall so a proteo entre
redes locais/privadas e redes pblicas, 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.

358

Segurana

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.

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, FDDT, ATM, ...) at a
camada de aplicao.

Segurana

359

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.

360

Segurana

Software de firewall - IPCHAINS


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

Segurana

361

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
-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).

362

Segurana

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

Segurana

363

Software de firewall - IPTABLES


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

364

Segurana

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
--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

Segurana

365

--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

366

Segurana

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.

Segurana

367

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

Redes Externas

Redes DMZ

FW_SERVICES_INT_TCP

FW_SERVICES_EXT_TCP

FW_SERVICES_DMZ_TCP

FW_SERVICES_INT_UDP

FW_SERVICES_EXT_UDP

FW_SERVICES_DMZ_UDP

FW_SERVICES_INT_IP

FW_SERVICES_EXT_IP

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

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_SQUID

FW_SERVICE_DHCPD

FW_SERVICE_DHCLIENT

FW_SERVICE_SAMBA

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.

368

Segurana

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

Significado

FW_LOG_DROP_CRIT

Registra no log os pacotes crticos descartados

FW_LOG_DROP_ALL

Registra no log todos os pacotes crticos

FW_LOG_ACCEPT_CRIT

Registra no log os pacotes crticos aceitos

FW_LOG_ACCEPT_ALL

Registra no log todos os pacotes aceitos

FW_LOG

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

ip_local_port_range

icmp_echoreply_rate

log_martians

icmp_destunreach_rate

mc_forwarding

icmp_paramprob_rate

mc_forwarding

icmp_timeexceed_rate

rp_filter

route_flush

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

Segurana

369

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 entre redes da mesma classe utilize a varivel
FW_ALLOW_CLASS_ROUTING.
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

Descrio

fw_custom_before_antispoofing

Antes das regras anti-spoofing

fw_custom_after_antispoofing

Depois das regras anti-spoofing

fw_custom_before_port_handling

Antes do tratamento dos portos

fw_custom_before_masq

Antes do mascaramento

fw_custom_before_denyall

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.

370

Segurana

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 VPNHOWTO.gz e VPN-Masquerade-HOWTO.gz, encontrados no diretrio
/usr/share/doc/howto/en.

Segurana

371

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.

372

Segurana

Configurando uma VPN utilizando o Openswan


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:~>

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.

Segurana

373

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.
Iniciaremos a configurao pelo firewall.

374

Segurana

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
;;
...

Segurana

375

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 || {
...

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

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

done
for chain in forward_ext; do
$LAA $IPTABLES -A $chain -j LOG ${LOG}"-FORWARD-IPSEC-INT " -i $DEV_IPSEC

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

done
fi
true
}
...

376

Segurana

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

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.

Segurana

377

Uso da criptografia de chave pblica


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.

378

Segurana

O software PGP
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:~>

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.

Segurana

379

Clusters e Grids
Para garantir a disponibilidade das informaes e servios e tambm a
integridade dos dados, pode-se criar um aglomerado de computadores que so
chamados de cluster ou grid. Normalmente d-se o nome de cluster a um
aglomerado local, e o nome de grid a um aglomerado na Internet ou em outra rede
geogrficamente distribuida. O uso de um grid tambm conhecido como
computao nas nuvens (cloud computing).
Veja mais detalhes no captulo Clusters e Grids.

380

Segurana

SAN e NAS
Considerando a estrutura de armazenamento, pode-se optar por uma rede
de armazenamento (SAN - Storage Area Network) e uma arquitetura NAS
(Network Storage Access). Nesta rede podem estar conectados diversos tipos
de dispositivos como discos, CDs ou DVDs, Fitas (DAT, cartucho, streamer,
DLT, LTO, ...) entre outros. Pode-se tambm utilizar RAID para redundncia
e/ou melhoria de desempenho.
A figura abaixo ilustra uma topologia utilizando SAN. Nenhuma estao
ou servidor acessa diretamente os dispositivos de armazenamento. Eles so
acessados pelos servidores atravs da rede SAN, normalmente usando protocolo
TCP/IP.

Segurana

381

RAID
RAID a sigla para Redundant Array of Inexpensive Disks ou Redundant
Array of Independent Disks e significa a utilizao de discos baratos ou
independentes para obter redundncia. O RAID por hardware significa que a
controladora de discos trata o protocolo RAID e disponibiliza para o sistema
operacional o volume como um disco virtual. Disponvel geralmente em
controladoras SCSI.
No RAID por software, o
sistema operacional cria o RAID a partir dos discos/parties fsicas/lgicas e
apresenta o disco virtual para as aplicaes.
Os nveis definidos so
RAID 0 = striping (min. 2 discos)
RAID 1 = mirroring (min.2 discos)
RAID 2 = bit level striping + dedicated hamming parity (min. 3 discos)
RAID 3 = byte level striping + dedicated parity (min. 3 discos)
RAID 4 = block level striping + dedicated parity (min. 3 discos)
RAID 5 = block level striping + distributed parity (min. 3 discos)
RAID 6 = block level striping + double distributed parity (min. 4 discos)

O uso de striping melhora o desempenho e o mirror garante a


redundncia. A integridade verificada usando paridade. No caso de RAID 5 ou
6, com a falha de 1 disco, o sistema continua funcionando normalmente. Aps a
substituio do disco, as informaes do RAID so reconstrudas.
Pode-se ainda utilizar as combinaes RAID 0+1, RAID 1+0 e RAID 5+1.
A escolha da ordem 0+1 ou 1+0 funo da relaco desempenho/confiabilidade.

382

Segurana

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

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".

Segurana

383

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 CCITSE 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

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 produtos.
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

384

Segurana

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.

Segurana

385

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 antivrus, 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

386

Gerncia de Redes em Linux

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.

Sistema de computao
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.

Gerncia de Redes em Linux

387

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.

Instalao fsica
Os componentes de hardware de um sistema de
computao normalmetne 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, poluico e
umidade so igualmente importantes.

388

Gerncia de Redes em Linux

Instalao eltrica
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).

Gerncia de Redes em Linux

389

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.
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 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.

390

Gerncia de Redes em Linux

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.

Gerncia de Redes em Linux

391

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.

392

Gerncia de Redes em Linux

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.

Disponibilidade

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.

Confiabilidade

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.

Privacidade

Dados, procedimentos e informaes s devem ser


disponibilizadas quando e para quem ou o que for
necessrio.

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).

Gerncia de Redes em Linux

393

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.

394

Gerncia de Redes em Linux

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.

Gerncia de Redes em Linux

395

Protocolos e mtodos de gerenciamento


De qualquer sistema podemos obter alguns medidores de
desempenho:
MTTF

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.

MTBF

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.

MTTR

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.

Medindo-se cada taxa de falhas FRi obtemos:

MTBF =

FRi
i

e a disponibilidade do sistema :

A=

MTBF
MTBF + MTTR

396

Gerncia de Redes em Linux

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"..
O TCP/IP possui ainda protocolos de gerenciamento como:
ICMP

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.

IGMP

Internet Group Multicast Protocol: utilizado no controle de


multicast cujo propsito o envio de um pacote a mais de
um destino.

Gerncia de Redes em Linux

397

O TCP/IP possui ainda sevios como:


BGP

Border Gateway Protocol: Descrito no RFC 1771.

OSPF

Open Shortest Path First: O OSPF verso 2 descrito no


RFC 1583.

SNMP

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

398

Gerncia de Redes em Linux

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

Gerncia de Redes em Linux

399

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

400

Gerncia de Redes em Linux

Aplicativos SNMP
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.

Gerncia de Redes em Linux

401

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:~>

402

Gerncia de Redes em Linux

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:~> r

Gerncia de Redes em Linux

403

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, ...).
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.

404

Gerncia de Redes em Linux

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.

Gerncia de Redes em Linux

405

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.

406

Gerncia de Redes em Linux

So disponveis para o ambiente GNU/Linux diversos sistemas para


monitoramento e gerenciamento dos recursos de redes. Os mais comuns so o
mon, o monit e o Nagios.

Gerncia de Redes em Linux

407

408

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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.

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

409

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.

410

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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.
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 ~>

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

411

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

Descrio
Lista arquivos abertos pelos processos

fuser
socklist

Identifica processos utilizando os arquivos e sockets. Permite


o envio de sinal para eles.
Exibe os sockets abertos e os portos associados

rpcinfo

Exibe informaes sobre RPC (Remote Procedure Call)

ipcs

Exibe informaes sobre IPC (Interprocess Communication)

strace

Exibe as chamadas de sistema e sinais na execuco de um


programa
Exibe as chamadas a bibliotecas dinmicas na execuco de
um programa

ltrace

412

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

Os aplicativos strace e ltrace, alm das opes, recebem como argumento


o programa a ser executado.
hmarx@venus:~> ltrace ./hello
__libc_start_main(0x8048454, 1, 0xbfd42424, 0x8048490, 0x8048480 <unfinished
...>
puts("Hello world!"Hello world!
)
= 13
exit(0 <unfinished ...>
+++ exited (status 0) +++
hmarx@venus:~>

hmarx@venus:~> strace ./hello


execve("./hello", ["./hello"], [/* 111 vars */]) = 0
brk(0)
= 0x804b000
access("/etc/ld.so.preload", R_OK)
= -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)
= 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=240452, ...}) = 0
mmap2(NULL, 240452, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7899000
close(3)
= 0
open("/lib/libc.so.6", O_RDONLY)
= 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 l\1\0004\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1430104, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7898000
mmap2(NULL, 1440072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb7738000
fadvise64(3, 0, 1440072, POSIX_FADV_WILLNEED) = 0
mprotect(0xb7891000, 4096, PROT_NONE)
= 0
mmap2(0xb7892000, 12288, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x159) = 0xb7892000
mmap2(0xb7895000, 10568, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7895000
close(3)
= 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7737000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb77376c0, limit:1048575,
seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1,
seg_not_present:0, useable:1}) = 0
mprotect(0xb7892000, 8192, PROT_READ)
= 0
mprotect(0x8049000, 4096, PROT_READ)
= 0
mprotect(0xb78f2000, 4096, PROT_READ)
= 0
munmap(0xb7899000, 240452)
= 0
fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 14), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb78d3000
write(1, "Hello world!\n", 13Hello world!
)
= 13
exit_group(0)
= ?
hmarx@venus:~>

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

413

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:~ #

NODE
580836
583175
583175
580834

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

thor:~ # fuser -uv /dev/pts/5


USER
PID ACCESS COMMAND
/dev/pts/5: hmarx
15186 F.... (hmarx)tail
hmarx
16126 F.... (hmarx)konsole
hmarx
16160 F.... (hmarx)bash
thor:~ #

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:~ #

port
111
111
860
860
863
863
2049
2049

portmapper
portmapper
mountd
mountd
mountd
mountd
nfs
nfs

thor:~ # ipcs -a
------ Shared Memory Segments -------key
shmid
owner
perms
0x5b410ec3 0
root
644
0x00000000 73531393
hmarx
777

bytes
1048576
196608

------ Semaphore Arrays -------key


semid
owner
perms
0x5b410ec5 0
root
666

nsems
14

------ Message Queues -------key


msqid
owner
thor:~ #

perms

used-bytes

nattch
1
2

status
dest

status

messages

414

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

415

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

416

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

417

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
realizao do HotSync.

aplicativos

para

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).

418

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

419

420

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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).

BasiliskII rodando MacOS 7.5.5

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

421

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

422

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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.

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

423

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
As diretiva ifeq e ifneq permitem a alterao condicional do processo de
gerao dos resultados. Note que o else opcional:

{ ifeq | ifneq } (string1, string2)


comandos1
[
else
comandos2
]
endif

As diretiva ifdef e ifndef permitem verificar se uma varvel est ou no


definida.

{ ifdef | ifndef } varivel


comandos1
[
else
comandos2
]
endif

424

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

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.

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

425

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 ) ] :

texto

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

As fases, utilizadas nos tags Requires ou BuildRequires , so:


Fase
pre
post
preun
postun

Descrio
Pr instalao do pacote
Ps instalao do pacote
Pr remoo do pacote
Ps remoo do pacote

426

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

A sesses seguintes fornecem informaes adicionais para a criao do


pacote e tm o formato:
%tag
texto
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

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

427

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 }
}
Algumas diretivas ou macros como:
%{name}
%{version}
%{_tmppath}
%{buildroot}
%{suse_version}
%(linha de comando)

%{release}
%{_bindir}

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.

428

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

Assinando um RPM
Para garantir a atenticidade de um pacote RPM utiliza-se uma assinatura
utilizando uma chave privada PGP. O par de chaves pode ser gerada pelo gpg.
Um desenvolvedor pode criar o arquivo .rpmmacros em seu diretrio
pessoal para especificar a chave que ser utilizada na assinatura dos pacotes
gerados por ele.
Por exemplo:
%_signature gpg
%_gpg_path ~/.gnupg
%_gpg_name Helio Marques <hmarx@linuxtech.com.br>
%_gpgbin /usr/bin/gpg

Assim, o desenvolvedor poder utilizar o comando


rpm -v --addsign pacote.rpm
ou
rpmsign -v --addsign pacote.rpm

Ser pedida a senha da chave privada do desenvolvedor.


Para verificar um pacote RPM, utilize o comando
rpm -K pacote.rpm

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

429

Exemplo de pacote RPM


A seguir mostrado o arquivo .spec para um pacote simples chamado
simple-package. 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-package-1.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>

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.

430

Ambiente de Execuo e Desenvolvimento de Aplicativos em 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

%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

Ambiente de Execuo e Desenvolvimento de Aplicativos em Linux

431

Aps gerado o pacote, podemos verificar sua autenticidade utilizando o


comando:
hmarx@venus:~> rpm -K simple-package-1.0-0.1.i586.rpm
simple-package-1.0-0.1.i586.rpm: rsa sha1 (md5) pgp (md5) pgp md5 OK
hmarx@venus:~>

Note que a chave pblica deve ser importada para a base de dados RPM,
atravs do comando
root@venus:~# rpm --import hmarx-pubkey.asc
root@venus:~#

432

Ambiente de Execuo e Desenvolvimento de Aplicativos em 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:

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:~ #

Ambiente de Execuo e Desenvolvimento de Aplicativos em 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:~ #

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:~ #

Ou quando for remover o pacote:


root@thor:~ # rpm -e simple-package
root@thor:~ #

433

434

Expresses Regulares

13. Expresses
Regulares
Expresses Regulares
O useo de expresses regulares 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.
As expresses regulares so formadas por dois tipos de caracteres:
caracteres especiais, denominados metacaracteres, e os literais, ou caracteres
normais. Metacaracteres possuem significado especial e so interpretados pelo
aplicativo. 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*" contm o caracter especial * 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 podem ter semnticas diferentes dependendo do
aplicativo utilizado (shell, grep, sed, perl, ...).

Expresses Regulares

435

Os metacaracteres mais utilizados so:


Metacaracter

Nome

Significado

ponto
classe de caracteres
classe negada

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

.
[ ... ]
[^... ]

|
( ... )

Alguns metacaracteres so quantificadores ou de repetio:


Metacaracter
?
*
+

{ mn, mx }

Nome

Significado

interrogao
asterisco
mais

0 ou 1 caracter
0 ou mais caracteres
1 ou mais caracteres

faixa de quantidades

Requer mn, Limite mx

436

Expresses Regulares

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

Expresses Regulares

437

438

O Editor de textos VI

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.

Introduo Computao Forense

439

Para entrar em modo edio, pode-se utilizar um dos seguintes comandos:


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

i
I
a
A
o
O
C

Para sair do modo de edio, e voltar ao modo comando, use a tecla .


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

440

O Editor de textos VI
posiciona o cursor aps a ocorrncia anterior do caracter c

Tc

+B
+F
+U
+D

rola a tela para cima (igual a )


rola a tela para baixo (igual a )
rola a tela para cima
rola a tela para baixo

Para excluir ou copiar textos, existem os seguintes comandos:


nx
nX
d

p
P
nrc
R
~
u
U

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

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

Introduo Computao Forense

441

Para procurar um texto (que pode ser uma expresso regular), podemos
utilizar:
procura o texto para frente
/texto
procura o texto para trs
?texto
procura a prxima ocorrncia
n
procura a ocorrncia anterior
N
Pode-se marcar um texto, para executar um comando, utilizando:
inicia a marcao caracter a caracter
v
inicia a marcao de linhas
V
inicia a marcao de colunas
+V
marca a linha com o caracter c (invisvel)
mc
vai para o incio da linha marcada com o caracter c
c
(invisvel)
c
vai para a posio marcada com o caracter c
executa o comando cmd e substitui o texto marcado
!cmd
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

442

O Editor de textos VI
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

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

Introduo Computao Forense

443

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.

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 >>

444

Criando disquetes de Boot

15. Criando Disquetes


de Boot
Criando Disquetes de Boot
O Linux pode ser carregado de disquete com ou sem o LILO
ou Grub.
Utilizando o LILO
Voc deve criar um arquivo de configurao /etc/lilo.conf, como
o seguinte:
boot = /dev/fd0
install = /boot/boot.b
map = /boot/map
read-write
prompt
image = /boot/kernel
label = Bootdisk
root = /dev/fd0

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. Um kernel Linux que cabe em um disquete,
preparado por Adam Jensen <ajensen@linuxguy.org> , pode ser encontrado em
http://linuxguy.org/docs/linuxdisk

Criando disquetes de Boot

445

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
Sem o LILO ou Grub
Copie o kernel para o incio do disquete:
# dd if=kernel of=/dev/fd0 bs=1k
375+1 records in
375+1 record out
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

446

Criando disquetes de Boot

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

Criando disquetes de Boot

447

Criando o root filesystem


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.

448

Criando disquetes de Boot

Utilizando o Grub
Crie o arquivo menu.lst com a definio da entrada para o boot do
kernel instalado. Por conveno, utilize a verso do kernel para identificar a
verso do kernel instalado, similar ao mostrado abaixo.
#--default 0
timeout 5
title Linux - verso do kernel
root (fd0, 0)
kernel /vmlinuz-verso do kernel root=/dev/fd0
initrd /initrd-verso do kernel

Formate o disquete usando FAT.


# mkfs -t vfat /dev/fd0

Monte o disquete e crie os diretrios boot e grub


# mount /dev/fd0 /mnt
# mkdir -p /mnt/{boot,boot/grub}

Copie o kernel para o disquete.


# cp vmlinuz do kernel /mnt/boot

Criando disquetes de Boot

449

Desmonte o disquete .
# umount /dev/fd0

Instale o grub no disquete:

# grub
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
grub> device (fd0) /dev/fd0
grub> root (fd0)
Filesystem type is fat, using whole disk
grub> setup (fd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/fat_stage1_5" exists... yes
Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal)
Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal)
Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p
/boot/grub/menu.lst "... succeeded
Done.
grub> quit
#

r
E pronto !

450

Criando disquetes de Boot

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.

Notao posicional
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 + ...

Consideremos inicialmente os nmeros naturais (inteiros sem sinal).


Por exemplo, 34710 representa a quantidade
Q = 3*102 + 4 * 101 + 7*100 = 3*100 + 4*10 + 7 = 347 !
Se efetuarmos as operaes em uma base diferente, digamos , teremos a
representao de Q na base .
Se quisermos representar a quantidade trezentos e quarenta e sete, 34710,
em octal (base 8) temos:

Para toda base , a representaco da quantidade ser 10.


= 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.
Na 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 N dgitos na base
para represent-la, onde
N = teto

( )
log(Q)
log()

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)

E o nmero 987610 necessita de 14 dgitos na base 2 (14 bits):


teto

log(9876)
= teto (13.179287104600357492) = 14
log(2)

Nmeros em um computador digital


Os computadores digitais atuais utilizam componentes que representam os
valores 0 e 1 que tambm significam falso e verdadeiro. A magnitude de um
nmero que um computador consegue representar limitada, normalmente ao
nmero de bits que o maior registrador do processador consegue armazenar.
Assim, tipicamente, temos nmeros naturais e inteiros de 8, 16 32 ou 64 bits e
nmeros de ponto flutuante de 32, 64 e 80 bits.

Nmeros naturais
Para os nmeros naturais precisamos de k bits para representar 2k valores
k
(0 a 2 -1). Assim, por exemplo, com 32 bits representamos de 0 a 4294967295.

Nmeros inteiros
Utilizando k bits para representamos 2k valores inteiros (positivos e
negativos). As 3 representaes comuns so sinal magnitude, complemento de 1 e
complemento de 2.
Sinal magnitude
Reservamos 1 bit para o sinal (0 positivo e 1 negativo) e assim sobram k 1 bits representando 2k-1 valores. Problema: teremos o +0 e o -0. Atravs de
circuitos especiais podem zerar o bit de sinal quando todos os outros k-1 bits
forem iguais a zero. Veja abaixo as representaes de +79 e -93 e a soma, -14,
utilizando 8 bits. So vlidas as representaes dos nmeros -127...-0, +0 ... +127.

Nmero
+79
-93
-14

7
0
1
1

6
1
1
0

5
0
0
0

bits
4
0
1
0

3
1
1
1

2
1
1
1

1
1
0
1

0
1
1
0

Complemento de 1
Representamos o nmeros positivos convertendo o nmero para a base 2.
Se o nmero for negativo, convertemos o nmero e complementamos os bits.
Veja abaixo as representaes de +79 e -93 e a soma, -14, utilizando 8 bits. So
vlidas as representaes dos nmeros -127...-0, +0 ... +127.

Nmero
+79
-93
-14

7
0
1
1

6
1
0
1

5
0
1
1

bits
4
0
0
1

3
1
0
0

2
1
0
0

1
1
1
0

0
1
0
1

Complemento de 2
Representamos o nmeros positivos convertendo o nmero para a base 2.
Se o nmero for negativo, convertemos o nmero, complementamos os bits e
somamos 1. Veja abaixo as representaes de +79 e -93 e a soma, -14, utilizando
8 bits. So vlidas as representaes dos nmeros -128..., 0, ... +127.

Nmero
+79
-93
-14

7
0
1
1

6
1
0
1

5
0
1
1

bits
4
0
0
1

3
1
0
0

2
1
0
0

1
1
1
1

0
1
1
0

Note que apenas nesta representao a adio produzir o resultado


correto.

Nmeros de ponto flutuante


Considerando um nmero decimal, representado por:
+/- a.bcdefg....* 10k
onde a,b,c,... so dgitos decimais (0 a 9) e k um nmero inteiro (positivo
ou negativo), em binrio, aps normaliz-lo teremos:
+/- 0.xyzkw... * 2E
Com N bits podemos representar este nmero utilizando 3 partes: S: o sinal da
mantissa, o expoente com e bits e o valor absoluto da mantissa com m bits.
1 bit
S

e bits
expoente

m bits
mantissa

O expoente normalmente representado pelo pelo excesso de 2e-1-1


O valor de x sempre 1, assim ele pode ser oculto (no representado).
Desta forma a mantissa ser m+1 bits. O bit em 1 chamado na literatura de
hidden bit (bit oculto).

Introduo Computao Forense

457

17. Introduo
Computao Forense
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

458

Introduo Computao Forense

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

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.

1
2
3
4
5
6
7

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.
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 !

Introduo Computao Forense

459

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.

Quem contactar ?
A equipe de segurana de sua empresa
A gerncia
O CERT ?
O FBI, a polcia, etc. ?

460

Introduo Computao Forense

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.

Introduo Computao Forense

461

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.

462

Introduo Computao Forense

Entretenimento e Aprendizado

463

18. Clusters e Grids

Conceitos
Com o aumento da complexidade dos problemas, e o tempo necessrio
para resolv-lo, surgiu a necessidade de agrupar vrios processadores,
distribuindo o trabalho e assim tornando a utilizao de computadores factve.
Diversas arquiteturas foram definidas conforme o tipo de problema.
Um grid um sistema computacional distribuido que
possui fraco acoplamento. Os processos no se interagem
ou interagem muito pouco. Os processadores podem ser
heterogneos e tambm geograficamente dispersos. Um
bom exemplo o grid do Google que possui cerca de 900
mil computadores distribudos pelo globo.
Um cluster tambm um sistema computacional distribuido mas que
possui acoplamento alto e com alta interaco entre os processos. O cluster pode
ser visto como um sistema nico. Os componentes do cluster (chamados nodos)
so normalmetne interligados por uma rede local rpida. H 2 tipos de aplicaco
para os clusters: alto desempenho e alta disponibilidade.
Um cluster de alto desempenho (simplesmente referido como HPC)
distriibui as tarefas entre os processadores dos nodos. Um cluster de alta
disponibilidade (simplesmente referino como HA), tem nodos ativos e nodos em
hot-standby. No caso de falha de um nodo, seus processos so imediatamente
assumidos por um node em standby.

464

Entretenimento e Aprendizado

O cluster HA mais simples e formado por 2 nodos. Um nodo ativo,


chamado de primrio, e prov servicos aos clienter. O outro nodo, chamado de
secundrio) fica em standby. Os dados crticos so duplicados continuamente do
nodo primrio para o nodo secundrio.

Implementando um cluster HPC


Um cluste HPC pode ser criado a partir de computadores comuns
interligados atravs de uma rede rpida (gigabit ou infiniband). Aplicaes
devem ser desenvolvidas utilizando chamadas a funes de bibliotecas para a
comunicao entre suas threads ou processos sendo executados em quaisquer dos
nodos do cluster. Uma camada de software rodando em um nodo (Head) gerencia
os nodos de processamento e as threads e processos que podem migrar de um
nodo para outro conforme critrios de equilbrio de carga ou disponibilidade de
recursos computacionais. O acesso ao cluster feito por um nodo de login.

Entretenimento e Aprendizado

465

Em computadores especiais que possuem memrias compartilhadas, a


implementao mais simples e eficiente. A memria pode ser dividida em
blocos com acessos exclusivos a cada bloco ou ter multiplos canais de acesso (e
possivelmente por bloco). Abaixo visto um diagrama simplificado do
processador AMD MagnyCours com 12 ncleos.

466

Entretenimento e Aprendizado

Implementando um cluster HA
Supondo um cluster HA simples de 2 nodos, utilizaremos o DRBD e o
Pacemaker para implement-lo. So utilizados 2 computadores com 2 interfaces
de rede cada. Uma interface de rede ser utilizada para o sincronismo e o controle
do cluster. A outra interface ser utilizada para o acesso ao cluster. Alm dos IPs
para cada interface, definiremos um IP flutuante que ser adicionado ao nodo
ativo (primrio).

Cada computador tem seus discos e para os dados crticos podem ser
criados volumes (LVM para facilitar a escalabilidade) e que sero duplicados
automaticamente. Os volumes devero ser de tamanhos idnticos. Sugiro no
fazer duplicao do sistetma operacional e aplicativos. Em caso de atualizao ou
instalao de pacotes instveis (principalmente o kernel), o outro nodo no ser
afetado e poder ser promovido a primrio mantendo a alta disponibilidade.
As interfaces N1 e N2 dos computadores deverm ser de alta velocidade
(gigabit) interligadas por um cabo cross-over. Cada nodo tem seu IP (IP1 e IP2)
que podem ser utilizados para configurao e manuteno. O IPcluster ser o IP
flutuante. As estaes sempre faro o acesso aos servios do cluster por este IP.

Entretenimento e Aprendizado

467

Devem ser definidas quais informaes devero ser espelhadas


automaticamente. Alguns volumes no devem ser espelhados. Por exemplo, o que
contm o sistema operacional e seus aplicativos. Analise o caso de uma
atualizao falha no nodo primrio: pode-se comutar p/ um nodo secundrio e
reparar a atualizao. Na partio fictcia direita, apenas os volumes /home,
/data1 e /data2 so bons candidatos replicao. Os volumes (discos ou
parties) que sero redundantes devero ser idnticos. Isto , as partices que
compem o volume /home nos discos dos nodos primrio e secundrio devem ter
o mesmo tamanho.
DRBD
O arquivo de configurao do DRBD o /etc/drbd.conf. Este
arquivo contm sesses que definem o modo de tratamento dos recursos e as
definices dos recursos do cluster.
O formato tpico da definio de um recurso como o mostrado abaixo.
Os tens em itlico devem ser substitudos pelos valores reais.

resource "nomedorecurso" {
protocol { A | B | C }}; # Use C para aplicaes crticas
incon-degr-cmd "comando shell"
startup { wfc-timeout timeout de conexo; degr-wfc-timeout timeout; }
disk { on-io-error { pass_on | panic | detach }; size tamanho }
net { on-disconnect { reconnect | stand_alone | freeze_io }} };
syncer { rate MBytesps; }
on nomedonode {
device /dev/drbdi;
disk volume;
address ip_do_nodo;
metadisk {{ internal | disco };
}
}

No exemplo a seguir, considere os nodos nodo1 e nodo2 e o volume


/dev/drbd0 criado em ambos os nodos o qual ser montado em /data1.

468

Entretenimento e Aprendizado
Abaixo mostrada uma parte do arquivo de configurao do DRBD:

# parte do arquivo /etc/drbd.conf


resource "data1" {
protocol B;
incon-degr-cmd
"echo !DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
startup { wft-timeout 10; degr-wfc-timeout 120;}
disk { on-io-error panic; size 10GB; }
net { on-disconnect reconnect };
syncet { rate 10M; }
on nodo1 {
device /dev/drbd0;
disk /dev/sda4;
address 192.168.1.1:7788;
meta-disk internal;
}
on nodo2 {
device /dev/drbd0;
disk /dev/sda4;
address 192.168.1.2:7788;
meta-disk internal;
}
}

A criao do volume em cada nodo feito normalmente pelo


particionador fdisk. Pode-se criar volume LVM ou RAID por software ou
hardware. Configurado o arquivo /etc/drbd.conf, inicia-se o servio drbd
(por exemplo, usando rcdrbd start, no openSuSE Linux.
Para cada volume criado, cria-se o metadata utilizando a opo create-md
do aplicativo drbdadm. No nodo primrio, pode-se criar o sistema de arquivos
em cada volume, utilizando o dispositivo (/dev/drbdi) e mont-los. O nodo
secundrio ter seu volume sincronizado automaticamente. Na primeira vez, todos
os blocos do volume so sincronizados e processo pode demorar horas
dependendo do tamanho do volume e da velocidade do enlace entre os nodos.

Entretenimento e Aprendizado

469

Heartbeat
O arquivo bsico de configurao do hearbeat o /etc/ha.d/ha.cf.
Podem ser configurados os arquivos de log, timeouts, interfaces e forma de
comunicao e mudana de funo dos nodos. A interface de comunico pode
ser serial ou ethernet (que pode ser a mesma utilizada pelo drbd). Os nomes dos
nodos so listados na opco node e devem ser os mesmos mostrados com o
comando uname -n.
No arquivo /etc/ha.d/authkeys so definidos os mtodos e as
chaves para autenticao dos nodos. No caso de um enlace seguro e dedicado ao
heartbeat (e o drbd), pode-se utilizar apenas o CRC, melhorando o desempenho.
Em outros casos pode-se definir uma senha SHA1 ou MD5. Os recursos so
definidos no arquivo /etc/ha.d/resources, em uma linha o nodo primrio
preferencial e os recursos que sero comutados na troca da funo dos nodos.
A sintaxe geral :
nodoprimrio { lista de recursos separados por espao }
onde cada ada recurso tem o formato recurso::parmetro. Os recursos,
tratados pelos scripts em /etc/ha.d/resource.d so:
IpAddr::ipv4 ou ipv4
drbddisk
Filesystem::device::mountpoint::filesystemtype
servio
Exemplo:
nodo1 192.168.1.5 drbddisk Filesystem::/dev/drbd0::/home::ext3
Filesystem::/dev/drbd1::/data1::ext3 Filesystem::/dev/drbd2::/data2::ext3
apache2 named mysql sendmail ntp

470

Entretenimento e Aprendizado

Aps o sincronismo, o status do cluster pode ser visto utilizando o script


/etc/init.d/drbd status(ou simplesmente rcdrbd status no openSuSE Linux).
Iniciando o hearbeat (rcheartbeat start no openSuSE), o cluster est
operacional. Ele pode ser habilitado no init.
Por exemplo, criando e definindo 3 volumes DRBD (/home, /data1 e
/data2), veremos:

node1:/etc # rcdrbd status


drbd driver loaded OK; device status:
version: 8.3.4 (api:88/proto:86-91)
GIT-hash: 70a645ae080411c87b4482a135847d69dc90a6a2 build by phil@fat-tyre,
2009-10-06 14:36:06
m:res
cs
ro
ds
p mounted fstype
0:home
Connected Primary/Secondary UpToDate/UpToDate B /home
ext3
1:data1
Connected Primary/Secondary UpToDate/UpToDate B /data1
ext3
2:data2
Connected Primary/Secondary UpToDate/UpToDate B /data2
ext3

As siglas mostradas so:


m : module drbd
res : resource
cs : connection status
ro : role
ds : device status
p : protocol

(dispositivo drbdi)
(recurso)
(funo)

Obtendo o status no nodo primrio (nodo1), a funo Primary mostrada


esquerda e a do nodo secundrio (nodo2), a funo Secondary mostrado
direita.

Entretenimento e Aprendizado

471

19. 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 =

hmarx@venus:~> primes 55555 55666


55579
55589
55603
55609
55619
55621
55631
55633
55639
55661
55663
hmarx@venus:~>

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

472

Entretenimento e Aprendizado

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

Entretenimento e Aprendizado

473

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:

O conhecido jogo da forca, hangman, tambm est presente:


______
|
|
|
O
|
/|
|
|
|
/
__|_____
|
|___
|_________|
Word: interdependence
Guess:
You got it!
Another word?

Guessed:

acdefimnoprst

Word #:
Current Average:
Overall Average:

1
5.000
0.000

474

Entretenimento e Aprendizado

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.

xeyes
O kmahjongg tem um visual mais tridimensional.

oneko

Entretenimento e Aprendizado

475

O kpat implementa diversos jogos tipo pacincia:

E o KGoldRunner relembra o velho lodrunner dos computadores


Apple-II.

476

Entretenimento e Aprendizado

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.

Entretenimento e Aprendizado

477

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.

O gcompris inclui diversas brincadeiras educativas para crianas.

478

Entretenimento e Aprendizado

O kgeography pode ser utilizado no aprendizado de mapas de paises,


seus estados e capitais.

kgeography

Entretenimento e Aprendizado

479

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

480

Entretenimento e Aprendizado

Para o aprendizado e projeto de circuitos lgicos e Algebra de Boole, um


programa muito interessante o LogiSim, mostrado abaixo. Ele possui uma
biblioteca de componentes e permite simulao de circuitos.

Entretenimento e Aprendizado

481

Jogos de ao (3D)
Diversos jogos de ao em 3D como os da empresa Id Software (Doom,
Heretic, Hexen e Quake) tambm esto disponveis para Linux.

Heretic

Doom

Quake 3

482

Entretenimento e Aprendizado

O jogos pingus (relembrando o lemmings), o Frozen Bubble e o


kasteroids so clssicos em Linux:

Pingus

Frozen Bubble

Aps o desligamento errneo (sem utilizar o comando shutdown), o boot


do openSuSE exibe uma tela similar ao do pingus em terra gelada (similar
imagem acima). Uma forma ldica de informar que o sistema no foi desligado
corretamente.
O reversi e o kasteoids so tambm jogos tradicionais:

Reversi

kasteroids

Entretenimento e Aprendizado

483

Diversos jogos de Xadrez, como o 3D chess, e o Brutal Chess


esto disponveis:

3D chess

Brutal Chess

484

Entretenimento e Aprendizado

Jogos para Windows


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:

Assim, como j exibia o SuSE Linux desde suas primeiras verses:

Have a lot of fun !

Entretenimento e Aprendizado

485

486

Entretenimento e Aprendizado

Entretenimento e Aprendizado

487

Bibliografia
Livros e outras publicaes
[AVRITZER]

Alberto Avritzer, Dissertao de Mestrado: "Um sistema


operacional com suporte para multiprocessamento e
tempo compartilhado", DCC-UFMG, 1983.

[CRYPT]

Neal Koblitz, A course in Number Theory and


Cryptograpy, Springer, Washington, USA, 1994.

[DNS_BIND]

Paul Albitz & Cricket Liu, DNS and Bind - 2nd edition,
OReilly & Associates, California, USA, 1996.

[FMBASTOS] Frederico M. Bastos, Dissertao de Mestrado: "Modelo


de Contabilizao e Negociao de Preos para Servios
com QoS", DCC-UFMG, 2003.
[HMARX]

Hlio Marques Sobrinho, Dissertaao de Mestrado: "Um


processador central de 16 bits apropriado para
multiprocessamento", DCC-UFMG, 1986.

[INTFW]

D. Brant Chapman & Elizabeth D. Zwicky, Building


Internet Firewalls, OReilly & Associates, California,
USA, 1995.

[LPI101]

Emmett Dulaney, LPI: General Linux I - Exam 101,


Coriolis Group, Arizona, USA, 2001.

[LPI102]

Emmett Dulaney, LPI: General Linux II - Exam 102,


Coriolis Group, Arizona, USA, 2001.

488

Entretenimento e Aprendizado
[MAXSEC1]

Anonymous, "Maximum Security", Sams Publishing,


USA, 1998.

[MAXSEC2]

Anonymous, "Linux Maximum Security", Sams


Publishing, USA, 2000.

[MINIX]

Andrew S. Tanenbaum & Al Woodhull, Operating


Systems: Design and Implementation - 2nd edition,
Prentice-Hall, USA, 2000.

[NAG]

Olaf Kirch, "Linux Network Administrators Guide",


SSC, USA, 1994.

[PGP]

Simson Garfinkel, PGP Pretty Good Privacy, OReilly


& Associates, , California, USA,1995.

[PPP]

Andrew Sun, Using and Managing PPP, OReilly &


Associates, California, USA, 1997.

[PRODNS]

Ron Aitchson, Pro DNS and BIND, Apress, New York,


USA, 2005.

[SENDMAIL] Bryan Costales & Erik Allman, Sendmail - 2nd edition,


OReilly & Associates, California, USA, 1997.
[SuSE80APP]

SuSE, SuSE Linux 8.0 Applications, SuSE Linux AG,


Nuremberg, Germany, 2002.

[SuSE80BAS] SuSE Linux AG, SuSE Linux 8.0 Basics, Nuremberg,


Germany, 2002.
[SuSE80REF]

SuSE, SuSE Linux 8.0 Reference, SuSE Linux AG,


Nuernberg, Germany, 2002.

[TCPADM]

Craig Hunt, TCP/IP Network Administration - 2nd


edition, OReilly & Associates, California, USA,1997.

Entretenimento e Aprendizado

489

[UNIXSEC]

Simson Garfinkel & Gene Spafford, Practical UNIX &


Internet Security - 2nd edition, OReilly & Associates,
California, USA, 1996.

[VPN]

Charlie Scott & ali., Virtual Private Networks - 2nd


edition, O Reilly & Associates, California, USA, 1999.

[XWIN]

*, The Definitive Guides to the X Window System,


Volumes 0 a 8, OReilly & Associates, California, USA.

490

Entretenimento e Aprendizado

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

Entretenimento e Aprendizado

491

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
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

492

Entretenimento e Aprendizado
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

Bibliografia

493

Bibliografia
Livros e outras publicaes
[AVRITZER]

Alberto Avritzer, Dissertao de Mestrado: "Um sistema


operacional com suporte para multiprocessamento e
tempo compartilhado", DCC-UFMG, 1983.

[CRYPT]

Neal Koblitz, A course in Number Theory and


Cryptograpy, Springer, Washington, USA, 1994.

[DNS_BIND]

Paul Albitz & Cricket Liu, DNS and Bind - 2nd edition,
OReilly & Associates, California, USA, 1996.

[FMBASTOS] Frederico M. Bastos, Dissertao de Mestrado: "Modelo


de Contabilizao e Negociao de Preos para Servios
com QoS", DCC-UFMG, 2003.
[HMARX]

Hlio Marques Sobrinho, Dissertaao de Mestrado: "Um


processador central de 16 bits apropriado para
multiprocessamento", DCC-UFMG, 1986.

[INTFW]

D. Brant Chapman & Elizabeth D. Zwicky, Building


Internet Firewalls, OReilly & Associates, California,
USA, 1995.

[LPI101]

Emmett Dulaney, LPI: General Linux I - Exam 101,


Coriolis Group, Arizona, USA, 2001.

[LPI102]

Emmett Dulaney, LPI: General Linux II - Exam 102,


Coriolis Group, Arizona, USA, 2001.

494

Bibliografia
[MAXSEC1]

Anonymous, "Maximum Security", Sams Publishing,


USA, 1998.

[MAXSEC2]

Anonymous, "Linux Maximum Security", Sams


Publishing, USA, 2000.

[MINIX]

Andrew S. Tanenbaum & Al Woodhull, Operating


Systems: Design and Implementation - 2nd edition,
Prentice-Hall, USA, 2000.

[NAG]

Olaf Kirch, "Linux Network Administrators Guide",


SSC, USA, 1994.

[PGP]

Simson Garfinkel, PGP Pretty Good Privacy, OReilly


& Associates, , California, USA,1995.

[PPP]

Andrew Sun, Using and Managing PPP, OReilly &


Associates, California, USA, 1997.

[PRODNS]

Ron Aitchson, Pro DNS and BIND, Apress, New York,


USA, 2005.

[SENDMAIL] Bryan Costales & Erik Allman, Sendmail - 2nd edition,


OReilly & Associates, California, USA, 1997.
[SuSE80APP]

SuSE, SuSE Linux 8.0 Applications, SuSE Linux AG,


Nuremberg, Germany, 2002.

[SuSE80BAS] SuSE Linux AG, SuSE Linux 8.0 Basics, Nuremberg,


Germany, 2002.
[SuSE80REF]

SuSE, SuSE Linux 8.0 Reference, SuSE Linux AG,


Nuernberg, Germany, 2002.

[TCPADM]

Craig Hunt, TCP/IP Network Administration - 2nd


edition, OReilly & Associates, California, USA,1997.

Bibliografia

495

[UNIXSEC]

Simson Garfinkel & Gene Spafford, Practical UNIX &


Internet Security - 2nd edition, OReilly & Associates,
California, USA, 1996.

[VPN]

Charlie Scott & ali., Virtual Private Networks - 2nd


edition, O Reilly & Associates, California, USA, 1999.

[XWIN]

*, The Definitive Guides to the X Window System,


Volumes 0 a 8, OReilly & Associates, California, USA.

496

Bibliografia

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

Bibliografia

497
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
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

498

Bibliografia
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

Glossrio

499

Glossrio
AGP
ANSI
ARM
ARP
ASCII
ATA
BIND
BIOS

BOOTP
CHAP
CISC

CRISC
DDoS
DEC
DES
DHCP

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, ...)

500

Glossrio
DoD
DoS
DRAM
DMA
DMZ
EBCDIC
EISA
ESP
FAT
FIFO
GMT
GNU
HTTP
IAB
IANA
IDE
IESG
IETF
IKE
IPC
IPsec
IPX
IRQ
ISA

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
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 Packet eXchange
Interrupt ReQuest - Sinal de requisio de interrupo para
o(s) processador(es) de um computador.
Insdustry Standard Architecture

Glossrio
ISAKMP
ISOC
LDAP
LED
MD5
MIB
MIME
MIPS
MIPS
NBT

NCP
NetBIOS
NFS
NMB
NSA
PAP
PATA
PC
PCI
PCMCIA
PDP-11
Pixel
POP

501
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

502

Glossrio
PPP
PPTP
QoS
RAM
RARP
RIP
RISC
ROM
RPC
RPM
RSA
RT-11
SAS
SATA
SCSI
SGID
SMB
SMP
SMTP
SNMP
SPOOL
SSL
SUID
SuSE
SVGA
SWAP
URL
USB
VESA
VFAT

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
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

Glossrio
XDR
VGA
WiFi
WWW
WUXGA
WXGA
XGA

503
eXternal Data Representation. Veja tambm RPC
Video Graphics Array
Wireless Fidelity
World Wide Web
Wide Ultra Extended Graphics Array
Wide XGA
eXtended VGA

504

505

ndice Remissivo

ndice Remissivo
A
Andrew S. Tanenbaum
ASN.1 389

B
Backup 108
bunzip2 109
bzcat 109
bzip2 109
compress 110
fita magntica 110
gunzip 109
gzip 109
mt 110
tar 108
unzip 108
zcat 109
zip 108
Bash 42
Expanso de parmetros 45
history 104
meta-teclas 105
redirecionamento de E/S 111
Separador
; 112
Separador de comandos 112
variveis 42

Variveis padro 43
BGP 389
Boot do Linux 159
configurao do GRUB 166
configurao do LILO 165
Bridges 382

C
Calamaris 301
Comandos
ajuda
help 47
info 48
man 47
algbricos
bc 69
expr 68
arquivos
basename 103
cat 57
cp 56
dd 106
dirname 103
discos 106
file 102
find 99
head 57
less 73

ndice Remissivo
ln 72
locate 99
more 73
mv 71
od 58
patch 59
rm 71
split 107
tail 58
tee 57
touch 72
type 102
updatedb 99
which 102
case 122
diretrio
cd 54
dirs 55
ls 51
mkdir 53
popd 55
pushd 54
pwd 49
rmdir 53
discos
df 90
du 90
hash 48
impresso
a2ps 89
lpq 88
lpr 88
lprm 89
pr 88
memria
free 91
top 95
permisses

506
chgrp 100
chmod 101
chown 100
processos
% 93
at 93
atq 93
atrm 93
bg 93
crontab 94
fg 93
GNU time 97
jobs 93
kill 96
killall 96
nice 96
pidof 92
ps 92
pstree 92
renice 97
sudo 81
time 97
top 95
xargs 98
rehash 48
select 124
sistema
top 95
uname 83
terminais
setterm 84
stty 85
tty 83
texto
. 50
awk 65
cut 74
diff 77

507
diff3 77
echo 49
ex 73
grep 62
join 75
paste 74
read 49
sed 63
sort 76
source 50
strings 60
tr 60
uniq 76
vi 73
wc 59
until 122
usurios
finger 79
gpasswd 82
id 79
last 78
newgrp 81
passwd 80
sg 81
su 81
w 78
who 78
Comandos administrativos 125
chfn 130
chsh 130
depmod 149
dmesg 154
edquota 139
fdisk 132
groupadd 128
groupdel 128
groupmod 129
init 34

ndice Remissivo
insmod 147
iptraf 231
isapnp 146
lsdev 146
lsmod 147
lspci 144
lsusb 144
mkdosfs 134
mke2fs 133
mkfs 133
mknod 131
mkreiserfs 135
mkswap 135
modinfo 151
modprobe 150
mount 141-142
nmap 231
pnpdump 145
quota 137
quotacheck 140
quotaoff 138
quotaon 137
repquota 138
rmmod 148
rpcinfo 231
rpm 170
atualizao de pacotes
174
consulta de pacotes
176
criando pacotes 182
instalao de pacotes
173
remoo de pacotes
175
utilzando o smart 179
utilzando o zypper 178

ndice Remissivo
verificao de
autenticidade 172
verificao de pacotes
170
setquota 139
snort 231
socklist 231
swapoff 136
swapon 135-136
syslogd 155
ulimit 125
umask 125
umount 143
usbview 145
useradd 126, 128
userdel 128
usermod 129
Comandos bsicos 47
Comandos condicionais 120
if/then/elif/then/.../fi 121
if/then/else/fi 120
if/then/fi 120
test 124
Comandos iterativos 122
for 122
while 122
compilao 413
Configurao do kernel 335
Correio eletrnico 308
anti-virus 318
MTA 308
MUA 308
POP 311
Protocolos 311, 313
sendmail 312
Configurao 314
SMTP 311

508

D
Depurao
ddd 402
gdb 402
kdbg 402
ltrace 403
strace 403
Desenvolvimento
gcc 400
kdevelop 401
ldd 402
qtdesigner 401
Diretrio 22
Dispositivos 27
DNS 247
BIND 252
Configurao 264
Registros 252
Segurana 267
Ferramentas
dnsdomainname 269
dnsquery 270
nslookup 269
Ferramentas de diagnstico
269
dig 270
dnsquery 270
host 270
named-xfer 271
traceroute 270
Lendo nomes de domnios 250
Resource Record 253
RR 253
Servidores de Nomes 251
Domnios 245
DNS 247
LDAP 278

509

ndice Remissivo
NIS

272

entidades
getty 35
GPL 1

E
Emuladores
dosemu 406
pose 409
simh 410
vmware 408
wine 406-407

H
Hard link 22
hardware 378
Histrico - do Unix ao Linux 8
Histrico da Computao 3
hot-swap 15
Hubs 382

F
Firewall 349
filtros 350
Implementao 351
ipchains 352
iptables 355
NAT 351
SuSEfirewall 358
Firewalls 395
Formato de arquivos
/etc/passwd 126
/etc/shadow 127
/etc/syslog.conf 152
crontab 94
inittab 32
FSF 1
FTP 319
Clientes 319
Configurao 319
Servidores 319
Funcionalidades 382
fuser 403

G
Gerenciamento 383
reas funcionais ISO
aspectos 384
atribuies 385

385

383

ICMP 388
IGMP 388
inetd 212
init 31
inode 18
inodo 18
Instalaco do Linux 160
Instalaco de Aplicativos 168
Instalaco do Linux 157
Instalao fsica
incndio 380
temperatura 380
umidade 380
Interconectividade 328, 333-334
Apple Macintosh 334
Netware
ncpfs 333
Internet
estatsticas 247
rgos reguladores 249
Internet e Intranet 196, 243
Interpretador de comandos 39
ipcs 403

ndice Remissivo

510

L
LDAP

278
Definies 278
Esquemas 279
Hierarquia 279
LDIF 280
servidor 281
utilizao 285
LILO 159
Linus Torvalds 9
login shell 35
Logs 397
lsof 403

M
make 414
Mensagens do sistema Linux 152
Metacaracteres 41
MIB 389
Minix 9
Modems 382
Mdulos de dispositivos e servios
144
mount point 20
MTBF 387
MTTF 387
MTTR 387
MULTICS 7
Multitarefa 15
Multiusurio 15

N
NIS

272
cliente/servidor 272
Configurao 272
domainname 274
ypcat 276

ypchfn 275
ypchsh 275
ypdomainname 274
ypmatch 276
yppasswd 275
yppasswdd 273
ypwhich 274

O
openSuSE 10
Operadores
condicional
&& 121
|| 121
Execuo condicional 121
Expresses aritmticas 116
Expresses condicionais 118
Grupo de comandos 114
Pipeline 112
Processos em background 113
& 113
Processos em subshell 114
substituio de comandos 115
| 112
OSPF 389
Outros aplicativos 395

P
Pacotes RPM 417
path 22
PDP-11 8
peopleware 378
Plakalkl 4
POSIX 16
PPP 321
Conexo ADSL 326
Conexo discada 322
Conexo por demanda 325

511
prompt 39
Protocolo PPP 320-321
Configurao 321
Protocolos e mtodos 387

ndice Remissivo

Servidor HTML
Apache 287
Configurao 287, 296
controle de acesso 291
logs de acesso 290
R
mtodos 291
Redes em Unix 207
parmetros globais 288
IPv4 217
servidor principal 289
Classes 218
sites virtuais 294
Endereos especiais
proxy 298
218
squid 287
Endereos privados
webalizer 297
219
Servidor WEB 287
Roteamento 222
Sesses 36
IPv6 239
Sesses remotas 320
Subclasses 221
SSH 320
TCP/IP 207
Xterminals 320
Ferramentas 224
Shell 39
Redirecionamento 237 Sistema de arquivos 18
Servios 211
Sistemas de arquivos
Richard Stallman 1
/proc 14, 25
Roteadores 382
SLES
rpcinfo 403
SuSE Linux Enterprise 11
SMART 17
S
SMP
S.M.A.R.T. 17
Symetric Multi Processing 13
Samba 330
SNMP 389
Segurana 341
Aplicativos 392
Ataques 346
snmpdelta 392
Cavalos de Tria 342
snmpget 392
Ferramentas 347
snmpinform 392
PGP 368
snmpnetstat 392
Virus 345
snmpset 392
VPN 362, 365, 374, 377
snmpstatus 392
configurao 364
snmptable 392
FreeSwan 364
snmptest 392
Sendmail
snmptranslate 392
Configurao manual 317
snmptrap 392

ndice Remissivo

512

squidGuard 307
super usurio 36
SuSE ix
Switches 382
Symbolic link 22

T
TCP/IP
Ferramentas
arp 229
ethereal 234
geoiplookup 230
ifconfig 224
ip 227
ipcalc 230
netstat 228
ping 225
rarp 229
route 226
tcpdump 231
traceroute 231
xtraceroute 234
Tratamento de sistemas de arquivos
131

X
X Window 185
desktop manager 186
Gerenciadores de janelas
afterstep 193
amiwm 193
CDE 193
fvwm 193-194
fvwm95 193
Gnome 193
icewm 194
KDE 193
mlvm 193

193

qvwm 194
twm 194
windowmaker 194
Protocolo X11 185
window manager 186
desktops virtuais 186
X server 186
XFree86 189, 191
SuperProbe 190
XF86Setup 190
xinetd 213

Das könnte Ihnen auch gefallen