You are on page 1of 212

1.

Linux System Administration


451

www.4linux.com.br

Sumrio
Captulo 1
Instalao do Sistema................................................................................................................ 9
1.1. Objetivos......................................................................................................................... 9
1.2. Introduo Terica........................................................................................................ 10
1.3. Prtica Dirigida............................................................................................................. 10
1.3.1. Seleo do idioma / layout de teclado................................................................................. 11
1.3.2. Confgurando a Rede e Hostname....................................................................................... 16
1.3.3. Planejamento do Esquema de Particionamento...................................................................18
1.3.4. FHS - Filesystem Hierarchy Standard ................................................................................ 19
1.3.5. Diretrios Obrigatrios........................................................................................................19
1.3.6. Diretrios Opcionais............................................................................................................ 21
1.3.7. Diretrios Recomendados....................................................................................................21
1.3.8. Tipos de Parties................................................................................................................22
1.3.9. Sistemas de Arquivos...........................................................................................................23
1.3.10. Confgurar o fuso horrio.................................................................................................. 24
1.3.11. Particionando o Disco Rgido............................................................................................. 25
1.3.12. Confrmando o particionamento........................................................................................ 26
1.3.13. Instalando o Sistema......................................................................................................... 28
1.3.14. Confgurar usurios e senhas............................................................................................ 29
1.3.15. Confgurar o gerenciador de pacotes................................................................................ 30
1.3.16. Instalao do boot loader.................................................................................................. 31
1.3.17. Finalizando a Instalao e Reiniciando o Sistema............................................................. 32

1.4. Exerccios Tericos....................................................................................................... 33


Captulo 2
Instalao de Programas..........................................................................................................34
2.1. Objetivos....................................................................................................................... 34
2.2. Introduo Terica........................................................................................................ 35
2.2.1. Pacotes RPM........................................................................................................................ 36
2.2.2. Base de dados RPM............................................................................................................. 36

2.3. Prtica Dirigida............................................................................................................. 37


2.3.1. Instalando um Programa a Partir de um Arquivo .deb........................................................ 37
2.3.2. Convertendo extenses de arquivos ................................................................................... 39
2.3.3. Gerenciando Pacotes em Formato RPM.............................................................................. 41

2.4. Exerccios Tericos....................................................................................................... 44


2.5. Laboratrio ...................................................................................................................44

3
Captulo 3
Compilando Programas............................................................................................................ 45
3.1. Objetivos....................................................................................................................... 45
3.2. Introduo Terica........................................................................................................ 46
3.2.1. Confgure............................................................................................................................. 46
3.2.2. Makefle............................................................................................................................... 47

3.3. Prtica Dirigida............................................................................................................. 47


3.4. Exerccios Tericos....................................................................................................... 50
3.5. Laboratrio....................................................................................................................51
Leia tambm:....................................................................................................................... 51
Captulo 4
Bibliotecas................................................................................................................................ 52
4.1. Objetivos....................................................................................................................... 52
4.2. Introduo Terica........................................................................................................ 53
4.2.1. Tipos fundamentais de programas executveis................................................................... 53
4.2.2. Modo Esttico e Compartilhado.......................................................................................... 54
4.2.3. Exemplo Real ...................................................................................................................... 55

4.3. Prtica Dirigida............................................................................................................. 56


4.4. Exerccios Tericos....................................................................................................... 59
Captulo 5
Data e Hora do Sistema e Servidor de NTP............................................................................. 60
5.1. Objetivos....................................................................................................................... 60
5.2. Introduo Terica........................................................................................................ 61
5.2.1. NTP - Network Time Protocol..............................................................................................62
5.2.2. Organizao em Strata........................................................................................................ 62

5.3. Prtica Dirigida............................................................................................................. 64


5.3.1. Ajuste Manual de Horrio....................................................................................................64
5.3.2. Trabalhando com NTP nos Clientes.....................................................................................66
5.3.3. Confgurao do Servidor de NTP....................................................................................... 66

5.4. Exerccios Tericos....................................................................................................... 70


5.5. Laboratrio....................................................................................................................71
Captulo 6
Rsyslog..................................................................................................................................... 72
6.1. Objetivos....................................................................................................................... 72
6.2. Introduo Terica........................................................................................................ 73
6.2.1. Organizao do Rsyslog.......................................................................................................73
6.2.2. Facilidades do Rsyslog.........................................................................................................74

4
6.2.3. Nveis...................................................................................................................................74
6.2.4. Destinos............................................................................................................................... 75
6.2.5. Arquivos importantes ........................................................................................................ 76

6.3. Prtica Dirigida............................................................................................................. 76


6.3.1. Logs Centralizados.............................................................................................................. 77
6.3.2. Rotao de Logs.................................................................................................................. 78

6.4. Exerccios Tericos....................................................................................................... 81


6.5. Laboratrio....................................................................................................................82
Captulo 7
Shell Script I ........................................................................................................................... 83
7.1. Objetivos ...................................................................................................................... 83
7.2. Introduo Terica ....................................................................................................... 84
7.2.1. Estudando um exemplo ...................................................................................................... 84
7.2.2. Executando o script ............................................................................................................ 85
7.2.3. Usando os nmeros ............................................................................................................ 86

7.3. Prtica Dirigida ............................................................................................................ 87


7.3.1. Usando a estrutura se ..................................................................................................... 88
7.3.2. A varivel $?.................................................................................................................... 89
7.3.3. O comando test ................................................................................................................90
7.3.4. Testando strings............................................................................................................... 90
7.3.5. Testando expresses matemticas ......................................................................................90
7.3.6. Testando expresses em arquivos....................................................................................... 91
7.3.7. Operadores de strings ....................................................................................................... 91
7.3.8. Operadores de matemticos................................................................................................ 91
7.3.9. Operadores para arquivos .................................................................................................. 92
7.3.10. Utilizando a estrutura if ................................................................................................ 92

7.4. Exerccios Tericos ...................................................................................................... 95


7.5. Laboratrio ...................................................................................................................96
Captulo 8
Shell Script II........................................................................................................................... 97
8.1. Objetivos....................................................................................................................... 97
8.2. Introduo Terica........................................................................................................ 98
8.2.1. Operadores.......................................................................................................................... 99

8.3. Prtica Dirigida........................................................................................................... 101


8.3.1. SQL.................................................................................................................................... 107
8.3.2. Trabalhando com SQL....................................................................................................... 107

8.4. Exerccios Tericos..................................................................................................... 110


8.5. Laboratrio..................................................................................................................111

5
Captulo 9
Gerenciando Processos.......................................................................................................... 112
9.1. Objetivos..................................................................................................................... 112
9.2. Introduo Terica...................................................................................................... 113
9.3. Prtica Dirigida........................................................................................................... 115
9.3.1. Formas de Visualizao de Processos................................................................................115
9.3.2. Gerenciando Processos......................................................................................................117
9.3.3. (re-)Defnindo a Prioridade dos Processos ........................................................................118
9.3.4. Planos de Execuo........................................................................................................... 118

9.4. Exerccios Tericos..................................................................................................... 120


9.5. Laboratrio..................................................................................................................121
Captulo 10
Inicializao dos Servios e SYSTEM V................................................................................. 122
10.1. Objetivos................................................................................................................... 122
10.2. Introduo Terica.................................................................................................... 123
10.2.1. System V.......................................................................................................................... 123
10.2.2. Nveis de Execuo - System V........................................................................................ 124

10.3. Prtica Dirigida......................................................................................................... 126


10.3.1. Trabalhando com Link Simblico e Hard Link.......................................................... 126
10.3.2. Nveis de Execuo..........................................................................................................128
10.3.3. Gerenciando servios de acordo com o padro System V............................................ 129
10.3.4. Inicializando e Finalizando servios................................................................................ 131
10.3.5. Gerenciando Servios a partir dos runlevels................................................................133

10.4. Exerccios Tericos .................................................................................................. 134


10.5. Laboratrio................................................................................................................134
Captulo 11
Quotas de Disco..................................................................................................................... 135
11.1. Objetivos................................................................................................................... 135
11.2. Introduo Terica.................................................................................................... 136
11.3. Prtica Dirigida......................................................................................................... 137
11.3.1. Quotas por Usurio..........................................................................................................138

11.4. Exerccios Tericos................................................................................................... 142


11.5. Laboratrio ...............................................................................................................143
Captulo 12
Trabalhando com Mdulos..................................................................................................... 144
12.1. Objetivos................................................................................................................... 144
12.2. Introduo Terica.................................................................................................... 145

6
12.3. Prtica Dirigida......................................................................................................... 146
12.3.1. Identifcando Dispositivos................................................................................................150

12.4. Exerccios Tericos................................................................................................... 151


12.5. Laboratrio................................................................................................................152
Captulo 13
Conceitos de Redes, TCP e Servios de Rede........................................................................ 153
13.1. Objetivos................................................................................................................... 153
13.2. Introduo Terica.................................................................................................... 154
13.2.1. Modelo OSI Open System Interconnection................................................................... 154
13.2.2. Camadas de abstrao.....................................................................................................155
13.2.3. Verso 4 do protocolo IP.................................................................................................. 155
13.2.4. Notao binria e decimal............................................................................................... 156
13.2.5. Endereamento IP........................................................................................................... 158
13.2.6. Criando sub-redes............................................................................................................159
13.2.7. Servios de Rede............................................................................................................. 161
13.2.8. Telnet............................................................................................................................... 162
13.2.9. Servios de Rede: LPI...................................................................................................... 163

13.3. Prtica Dirigida......................................................................................................... 163


13.3.1. Netstat............................................................................................................................. 163
13.3.2. ARP - Address Resolution Protocol.................................................................................. 164
13.3.3. Confgurando o roteamento esttico............................................................................... 164
13.3.4. Confgurando as estaes nas sub-redes......................................................................... 166
13.3.5. Exerccios de Redes......................................................................................................... 167
13.3.6. Confgurando o TELNET..................................................................................................168
13.3.7. xinetd............................................................................................................................... 171

13.4. Exerccios Tericos................................................................................................... 171


13.5. Laboratrio................................................................................................................172
Captulo 14
Servidor SSH..........................................................................................................................173
14.1. Objetivos................................................................................................................... 173
14.2. Introduo Terica.................................................................................................... 174
14.2.1. Chaves de Criptografa Assimtricas............................................................................... 174

14.3. Formas de Utilizao.................................................................................................175


14.4. Prtica Dirigida......................................................................................................... 176
14.4.1. Confgurao do Servidor de SSH................................................................................... 176
14.4.2. Utilizao do Cliente de SSH...........................................................................................178
14.4.3. Copiando Arquivos Remotos............................................................................................ 178
14.4.4. SSH com Chaves Assimtricas........................................................................................ 179

14.5. Exerccios Tericos................................................................................................... 180

7
14.6. Laboratrio................................................................................................................181
Captulo 15
TCP Wrappers........................................................................................................................ 182
15.1. Objetivos................................................................................................................... 182
15.2. Introduo Terica.................................................................................................... 183
15.3. Prtica Dirigida......................................................................................................... 183
Captulo 16
Servidor de Impresso........................................................................................................... 185
16.1. Objetivos................................................................................................................... 185
16.2. Introduo Terica.................................................................................................... 186
16.3. Prtica Dirigida ........................................................................................................ 186
16.4. Exerccios Tericos................................................................................................... 192
Captulo 17
Compilao do Kernel............................................................................................................ 193
17.1. Objetivos................................................................................................................... 193
17.2. Introduo Terica.................................................................................................... 194
17.3. Prtica Dirigida......................................................................................................... 195
Captulo 18
Gerenciadores de Boot........................................................................................................... 200
18.1. Objetivos................................................................................................................... 200
18.2. Introduo Terica.................................................................................................... 201
18.2.1. GRUB............................................................................................................................... 201

18.3. Prtica Dirigida......................................................................................................... 202


18.4. Laboratrio................................................................................................................202
Captulo 19
Confgurao de Rede Wireless............................................................................................. 203
19.1. Objetivos................................................................................................................... 203
19.2. Introduo Terica.................................................................................................... 204
19.3. Prtica Dirigida......................................................................................................... 205
19.3.1. Compilao do mdulo da placa Wireless........................................................................205
19.3.2. Confgurando uma rede wireless Ad-Hoc........................................................................ 207
19.3.3. Rede Wireless Managed - sem criptografa..................................................................... 209
19.3.4. Rede Wireless Managed - com criptografa WEP...................................................... 210

19.4. Exerccios Tericos................................................................................................... 211


REFERNCIAS

8
BIBLIOGRFICAS.................................................................................................................. 212

ndice de tabelas
ndice de Figuras

Captulo 1
Instalao do Sistema

1.1. Objetivos

Instalar o sistema bsico;

Utilizar o mtodo expert, em nossa instalao;

Entender as diferenas sobre os Sistemas de Arquivos;

Discutir e analisar diferentes mtodos de Particionamento;

Segurana nos sistemas de arquivos;

Ajustes iniciais e defnio de Journaling.

Captulo 1 Instalao do Sistema 10


1.2. Introduo Terica
A distribuio GNU/Linux utilizada neste treinamento ser o Debian Lenny
5.0. Essa verso composta por 21 CDs ou 3 DVDs, entretanto, apenas o primeiro
deles necessrio para realizar uma instalao bsica do sistema. Os outros 21 CDs
contm um grande nmero de aplicativos que, em sua grande maioria, nunca sero
instalados em um servidor. Sendo assim, realizaremos uma instalao o mais limpa
possvel com este CD; os outros softwares necessrios construo do nosso sistema
podero ser buscados em repositrios Debian na internet. Seguindo esta estratgia
obteremos um sistema que contm apenas os softwares estritamente necessrios ao
funcionamento

do

nosso

servidor,

facilitando

administrao

as

futuras

atualizaes.

1.3. Prtica Dirigida

1) Introduza o CD nmero 1 do Debian para iniciar a instalao:

Na fgura acima, vemos a primeira tela da instalao, na qual

podemos

selecionar qual verso do sistema operacional (kernel) desejamos instalar.

importante conhecermos essa opo pois no futuro podemos nos deparar com
mquinas que possuem hardware especfcos, como controladoras RAID, que

Captulo 1 Instalao do Sistema 11


necessitem de parmetros de boot especiais. Alm da opo help, temos quatro
opes para instalao que envolvem duas verses do kernel, sendo elas descritas na
tabela a seguir:
Kernel

02. 06. 26

Modo

Linux

Modo

Expert

2) Em nosso caso, utilizaremos o modo expert com kernel da srie


2.6.26. Para isso, escolheremos expert no prompt de boot:

1.3.1. Seleo do idioma / layout de teclado

Podemos selecionar como idioma do nosso sistema Portugus do Brasil,


entretanto, nem todos os softwares foram traduzidos para o nosso idioma, mas isso
no nos trar nenhum problema ou mal funcionamento. O layout do teclado deve
ser escolhido de acordo com o modelo utilizado: padro ABNT2 (aquele que contm a
letra cedilha) ou se um teclado padro americano. Em ambos os casos voc ir
selecionar Portugus do Brasil para que os acentos sejam reconhecidos, o que ir
variar se o layout ABNT2 ou padro americano. No caso de nossas salas de

Captulo 1 Instalao do Sistema 12


aula, ser Portugus do Brasil com layout ABNT2.
3) As telas dessa etapa podem ser vistas na fgura abaixo:

4) Escolha do idioma:

5) Escolha do idioma - Portugus do Brasil:

Captulo 1 Instalao do Sistema 13


6) Locale UTF-8:

UTF-8 (8-bit Unicode Transformation Format) um tipo de codifcao


Unicode de comprimento varivel criado por

Ken Thompson e Rob Pike. Pode

representar qualquer caractere universal padro do Unicode, sendo tambm


compatvel com o ASCII. O objetivo uniformizar a representao dos caracteres em
todos os idiomas do mundo, sejam caracteres arbicos com acento, diagramas
Japoneses ou a escrita hebraica. O problema que cada caracter desses tem,
atualmente, um tamanho diferente, o que gera incompatibilidades nos sistemas. O
UTF-8 visa resolver isso defnindo um mesmo tamanho para cada caracter,
independente do seu idioma. Por esta razo, est lentamente sendo adotado como o
tipo de codifcao padro para e-mail, pginas web, e outros locais onde os
caracteres so armazenados.

7) Selecionar, outros locales:

Captulo 1 Instalao do Sistema 14


8) Layout de teclado:

9) Tipo do teclado:

10)

Layout br-abnt2:

Captulo 1 Instalao do Sistema 15


ABNT-2 o padro do teclado com , quem garante isso a Associao
Brasileira de Normas Tcnicas (ABNT) pois ele o rgo responsvel pela
normalizao tcnica no Brasil, fornecendo a base necessria ao desenvolvimento
tecnolgico brasileiro. Trata-se de uma entidade privada, sem fns lucrativos e de
utilidade pblica, fundada em 1940.
http://www.abnt.org.br

11)

Detectar o CD-Rom:

12)

CD-ROM Detectado:

Captulo 1 Instalao do Sistema 16


13)

Carregar componentes:

14)

Selecionar componentes:

1.3.2. Confgurando a Rede e Hostname

Depois de encontrar e carregar o suporte ao leitor do CD-ROM e carregar os


componentes

bsicos

para

instalao,

instalador

tentar

carregar

as

confguraes da interface de rede via DHCP.


Caso ele no encontre um servidor DHCP na rede, uma mensagem de erro ser
mostrada na tela; assim sendo devemos prosseguir com a confgurao da rede
manualmente. Ser solicitado que voc digite o endereo IP da sua mquina com sua
respectiva mscara de sub-rede, gateway padro (mquina pela qual sua conexo
com a internet ser efetuada) e fnalmente o servidor de nomes (DNS) o qual

Captulo 1 Instalao do Sistema 17


responsvel, dentre outras funes, por traduzir nomes como www.4linux.com.br em
endereos IP. Todas essas informaes podem ser encontradas na tabela abaixo.
Perceba que no ltimo campo do Endereo IP e do Hostname, h um X. Estes
devero ser substitudos pelo nmero da sua mquina. Por exemplo, micro7.

Endereo IP

192.168.200.X

Mscara de rede

255.255.255.0

Gateway Padro

192.168.200.254

Servidores de Nomes (DNS)

200.176.2.10

Hostname

microX

Domain Name

com.br

15)

Detectar Hardware de rede:

16)

Confgurar a rede:

Captulo 1 Instalao do Sistema 18


17)

No obter IP automaticamente:

No aceitamos o Endereo IP via DHCP, porque desejamos defnir as


confguraes de IP manualmente, como descrito nos passos acima. Cuidado, porque
a letra X, signifca o nmero de sua mquina. Isso ir facilitar os backups no fnal
do treinamento, para que voc tenha sempre a imagem salva no servidor.

1.3.3. Planejamento do Esquema de Particionamento

O particionamento do disco rgido sem dvida nenhuma um dos estgios mais


importantes da instalao do sistema. Neste momento, temos que ter em mente qual
ser a fnalidade da mquina que est sendo instalada, pois uma vez escolhido o
esquema a ser utilizado, qualquer alterao futura ser bastante arriscada. Esse tipo
de inconveniente pode ser minimizado utilizando LVM - Logical Volume Manager,
esse assunto ser abordado no Captulo 2.
Para podermos planejar o esquema de particionamento devemos antes
conhecer como um sistema GNU/Linux organiza sua estrutura de diretrios, ou seja,
devemos conhecer o FHS - Filesystem Hierarchy Standard.

Captulo 1 Instalao do Sistema 19


Abaixo est nossa Tabela de Particionamento:
TIPO

DEVICE

PONTO DE MONT.

TAMANHO

FILESYSTEM

Pri

/dev/sda1

/boot

256 MB

EXT3

Pri

/dev/sda2

3000 MB

EXT3

Pri

/dev/sda3

/home

10000 MB

EXT3

Log

/dev/sda5

/usr

10000 MB

EXT3

Log

/dev/sda6

/var

10000 MB

EXT3

Log

/dev/sda7

/tmp

1000 MB

EXT3

Log

/dev/sda8

/var/log

3000 MB

EXT3

Log

/dev/sda9

swap

1024 MB

SWAP

Log

/dev/sda10

NAO MONTAR

512 MB

SEM FS

Log

/dev/sda11

NAO MONTAR

512 MB

SEM FS

Log

/dev/sda12

NAO MONTAR

512 MB

SEM FS

Log

/dev/sda13

NAO MONTAR

512 MB

SEM FS

Log

/dev/sda14

NAO MONTAR

512 MB

SEM FS

Antes de prosseguirmos com a nossa instalao do Debian Lenny 5.0, vamos


relembrar e aprender alguns itens muito importantes.

1.3.4. FHS - Filesystem Hierarchy Standard

O FHS especifca que um sistema GNU/Linux deve conter obrigatoriamente os


14 diretrios especifcados a seguir:

1.3.5. Diretrios Obrigatrios

1. / diretrio raiz (root) do sistema. Abaixo dele devem estar contidos todos os
outros subdiretrios;
2. /boot contm os arquivos necessrios para o boot do sistema, como os arquivos
do boot loader e a imagem do kernel;

Captulo 1 Instalao do Sistema 20


3. /dev contm os arquivos de dispositivos, podem ser do tipo devfs ou udev.
Este ltimo o formato mais atual, suportado a partir do kernel 2.6.12 e deve
substituir totalmente o devfs. Ao contrrio do devfs, ele no ocupa espao
no HD pois montado na memria RAM;
4. /etc contm os arquivos de confgurao do sistema;
5. /bin contm os executveis essenciais a todos os usurios do sistema, como os
comandos ls, cd, mkdir, rm, mv, etc;
6. /sbin contm os executveis essenciais administrao do sistema, ou seja,
essenciais apenas ao usurio root. Neste diretrio esto comandos como fdisk,
cfdisk, ifconfg, mkfs, fsck, etc;
7. /lib contm as bibliotecas compartilhadas indispensveis para o funcionamento
dos programas essenciais, ou seja, aqueles localizados no /bin e /sbin, alm de
conter os mdulos de kernel (se existirem);
8. /media um diretrio destinado montagem de dispositivos removveis;
9. /mnt diretrio destinado montagem de flesystems remotos;
10.

/opt diretrio destinado instalao de binrios pr-compilados e

programas proprietrios;
11.

/srv diretrio destinado centralizao de servios como em um servidor

de arquivos ou servidor de pginas web, por exemplo;


12.

/tmp diretrio de uso comum a todos os usurios.

13.

/usr contm todos os outros programas que no so essenciais ao sistema

e seguem o padro GNU/Linux (programas no proprietrios), exemplos so o


Navegador Firefox, os gerenciadores de janelas, etc;
14.

/var diretrio de contedo varivel destinado principalmente tarefas

administrativas, como armazenar os logs do sistema, spool de impresso, etc.

Captulo 1 Instalao do Sistema 21


1.3.6. Diretrios Opcionais

Outros diretrios que podem estar disponveis mas no precisam ter o nome
sugerido so:

/home destina-se a conter as homes dos usurios;


/root destina-se a ser o diretrio home do superusurio root.

1.3.7. Diretrios Recomendados

Um diretrio muito importante do sistema. Encontramos informaes a


respeito do sistema e processos:

/proc um flesystem virtual, localizado na memria RAM e que portanto,


no ocupa espao no HD. o canal de informaes disponibilizadas pelo kernel
e por ele mantido.

Mais informaes a respeito do FHS podem ser obtidas aqui:


http://www.pathname.com/fhs
Levando em considerao a estrutura apresentada devemos avaliar quantas
parties criaremos e com quais tamanhos. Devemos basear nossa deciso em quais
tipos de servios hospedaremos nesse servidor e quais flesystems devemos
separar por questes de segurana, tamanho ou desempenho.

Dica LPI: Na Prova ser cobrado assunto sobre a FHS. Como, por exemplo:
Qual o diretrio menos importante do qual deve-se fazer backup? A
resposta /tmp.

Captulo 1 Instalao do Sistema 22


1.3.8. Tipos de Parties

Podemos dividir as parties em trs categorias: primrias, estendidas e


lgicas. Uma partio primria aquela cuja a informao est registrada na MBR Master Boot Record; como a MBR possui limitao de tamanho, apenas quatro
parties primrias podem ser defnidas, no GNU/Linux elas so mapeadas

nos

dispositivos de /dev/hda1 a /dev/hda4.


Partio estendida uma partio primria especial que pode conter mais
parties dentro dela. Sendo assim, uma partio estendida deve ser uma das quatro
parties primrias possveis. Com isso, uma partio lgica uma partio dentro
de uma partio estendida e sua defnio no feita dentro da MBR, mas dentro da
partio estendida. Na fgura abaixo, pode-se ver os nomes dos dispositivos segundo
sua ligao na mquina:

Captulo 1 Instalao do Sistema 23


1.3.9. Sistemas de Arquivos

Outro ponto importante, tanto quanto defnir o esquema de particionamento de


disco, a escolha do flesystem. Neste ponto temos algumas opes, que so
apresentadas a seguir:

ext2 antigo e considerado como o flesystem original do Linux, entretanto ele


no tem journaling, o que signifca que checagens nesse flesystem podem
demorar bastante;

ext3 a verso do ext2 com journaling, o que proporciona uma recuperao


muito mais rpida. O ext3 um sistema de arquivos muito bom e confvel;

ext4 a mais nova verso desse flesystem de sucesso. Muito mais rpido do
que seus predecessores, permite ainda, a manipulao de arquivos com mais
de 2Gb de tamanho.

reiserfs um sistema de arquivos com uma performance muito boa e que


supera o ext2 e ext3 em termos de desempenho (de 10-15 vezes) quando
tratando de pequenos arquivos (abaixo de 4k); recomendado para uso geral e
para casos mais extremos como o de criao de sistemas de arquivos grandes,
utilizao com muitos arquivos pequenos ou muito grandes e diretrios com
dezenas de milhares de arquivos. Uma desvantagem desse sistema de arquivos
a incapacidade de utiliz-lo com sistema de quotas e atributos estendidos (em
sua verso 3.6);

xfs um

flesystem com journaling que possui muitas funcionalidades

interessantes

sendo

otimizado

para

escalabilidade.

Recomendado

para

utilizao em sistemas com HD SCSI e fbra ptica. Como o xfs faz muito cache
dos dados em trnsito na memria RAM e muitos programas mal projetados
no tomam precaues na hora de escrever arquivos no disco (h muitos
programas que fazem isso), se houver uma falha de energia durante escritas
em disco podem ocorrer perdas de dados. Sugerimos utilizao em ambientes
preparados para fornecer alta disponibilidade de energia como no-breaks.

Captulo 1 Instalao do Sistema 24


1.3.10. Confgurar o fuso horrio

A escolha do fuso horrio pode ser efetuada escolhendo a opo UTC


-Universal Time Coordinated conhecido tambm como GMT - Greenwich Mean Time.
Esse o padro, desde 1986, para determinao dos fusos horrios do mundo e
substitui

mtodo

antigo

de

determinao

astronmica

pelo

mtodo

de

determinao atmica.
Considerando que estamos em So Paulo, sede da 4Linux, escolheremos
Amricas e em seguida So Paulo; dessa forma teremos confgurado nossa
timezone.
18)

Confgurar o relgio:

O NTP um protocolo para sincronizao dos relgios dos computadores, ou


seja, ele defne um jeito para um grupo de computadores conversar entre si e acertar
seus relgios, baseados em alguma fonte confvel de tempo, como os relgios
atmicos do Observatrio Nacional, que defnem a Hora Legal Brasileira. Com o
NTP fcil manter o relgio do computador sempre com a hora certa, com
exatido de alguns milsimos de segundo, e s h vantagens em se fazer isso.

Captulo 1 Instalao do Sistema 25


19)
A seguir sua tela de sincronia, mas dedicaremos um capitulo
completo para tratar exclusivamente de NTP:

20)

Confgurando nossa localizao:

1.3.11. Particionando o Disco Rgido

Considerando todos esses fatores, realize o procedimento de particionamento


de disco, com base na tabela que estudamos anteriormente. Force para que as
parties /boot e / sejam parties primrias

para que elas ocupem os primeiros

cilindros do disco. Aps fnalizar o processo de particionamento, selecione no menu a


opo Finalizar o particionamento e gravar as mudanas no disco.

Captulo 1 Instalao do Sistema 26


21)

Detectar discos:

22)

Particionar Discos:

1.3.12. Confrmando o particionamento

Ser exibida uma tela para confrmao das alteraes, verifque se o


particionamento foi efetuado corretamente e grave as alteraes. Nesse momento a
instalao do sistema bsico ser iniciada; ou seja, ser efetuado o particionamento
do disco, a criao dos sistemas de arquivos e a instalao dos pacotes bsicos.

Captulo 1 Instalao do Sistema 27


23)

Criar uma nova tabela de particionamento:

24)
Particionamento Manual, e com espao livre para montagem
de parties:

Vamos aplicar as mudanas em nossa tabela de particionamentos respeitando


nosso planejamento anterior. Aps feitas todas as parties e aplicados todos os
flesystems, salvamos e aplicamos as mudanas.

Captulo 1 Instalao do Sistema 28


25)

Formatando as parties:

26)

Aps termos particionado o disco, vamos instalar o sistema:

1.3.13. Instalando o Sistema

Neste ponto o instalador perguntar se voc quer instalar pacotes adicionais


no sistema, pois at o momento s temos o sistema bsico funcional. Ser mostrada
uma tela para seleo de pacotes para determinados tipos de sistemas como
Desktop, Servidor de DNS, Web Server, etc. Neste momento no selecionaremos
nenhuma das opes. Instalaremos os programas medida em que formos
precisando deles.

Captulo 1 Instalao do Sistema 29


27)

28)

Instalando o Sistema bsico:

Escolha o a imagem do kernel que ser instalada:

1.3.14. Confgurar usurios e senhas

Aps a defnio da senha do root, crie uma conta de usurio comum sendo o
nome completo do usurio "aluno ", login name "aluno" e senha 123456.
OBS: recomenda-se que o nome de login dos usurios seja uma combinao de
seu nome e sobrenome afm de evitar ataques por brute force.

Captulo 1 Instalao do Sistema 30


29)

Confgurar usurios e senhas:

Vamos permitir login de root, e o padro de senhas shadow. No esquea de


fornecer as senhas 123456 e criar um usurio chamado aluno.

1.3.15. Confgurar o gerenciador de pacotes

30)

Gerenciar pacotes:

Captulo 1 Instalao do Sistema 31


31)

No utilizar CD-ROM e DVD:

32)
No utilizar espelhos de rede, e nem fazer atualizaes de
links do Debian. Aps essas modifcaes, iremos selecionar os
softwares:

1.3.16. Instalao do boot loader

Aps a instalao do sistema bsico, surgiro perguntas a respeito do boot


loader, software que controla a inicializao do sistema. Sua tarefa determinar
qual sistema operacional (SO) deve ser carregado e carreg-lo na memria RAM.
Uma vez carregado o SO, ele fca responsvel pelo controle da mquina e o boot
loader sai de cena.

Captulo 1 Instalao do Sistema 32


Os dois boot loaders mais utilizados so Lilo - Linux Loader e GRUB - Grand
Unifed Bootloader. Atualmente o padro do Debian GRUB, que dever ser
instalado na MBR.
33)
Portanto vamos proceder com a instalao do GRUB, sem
senha:

1.3.17. Finalizando a Instalao e Reiniciando o Sistema

Depois de instalar o boot loader, vir a tela informando que a instalao est
fnalizada.
34)

Agora devemos retirar o CD-ROM e reiniciar o sistema:

Captulo 1 Instalao do Sistema 33


1.4. Exerccios Tericos
1) Como possvel determinar se uma partio primria ou lgica a partir
do nome do device?
___________________________________________________________________________

2) Qual o nome da terceira partio de um HD conectado como Master na


segunda controladora IDE?
___________________________________________________________________________

3) Qual a diferena entre o ext2, ext3 e ext4?


___________________________________________________________________________

4) Quais so os dois diretrios que, segundo o FHS, no precisam existir e se


existirem no precisam ter o nome sugerido?
___________________________________________________________________________

5) Quais arquivos armazenam os dispositivos que esto montados no


momento?
___________________________________________________________________________

6) Como eu fao para aplicar um sistema de arquivos do tipo swap, na


minha partio conectada em meu disco SCSI, na quinta controladora
sendo a terceira partio lgica do meu disco?
___________________________________________________________________________

7) Qual comando eu utilizo para aplicar um sistema de arquivos ext3 em uma


partio ext2, sem perder os dados j criados?
__________________________________________________________________________

Captulo 1 Instalao do Sistema 34

Captulo 2
Instalao de Programas

2.1. Objetivos

Para quem pretende administrar sistemas baseados em Debian e RedHat, deve


conhecer o sistema de gerenciamento de pacotes DPKG e RPM;

Iremos aprender como gerenciar esses dois programas e suas diferenas, isso
porque se tratam dos dois gerenciadores de pacotes mais importantes e
populares do universo Gnu/Linux.

Captulo 2 Instalao de Programas 35


2.2. Introduo Terica
O dpkg um programa que funciona como Sistema de Gerenciamento de
Pacotes para distribuies GNU/Linux baseadas em Debian. Criado por Ian Jackson
em 1993, o dpkg usado para instalar, remover e fornecer informaes sobre os
pacotes .deb.
O dpkg uma ferramenta em linguagem de baixo nvel. Frontends de alto
nvel so exigidos para buscar pacotes em lugares remotos ou ajudar na soluo de
confitos nas dependncias dos pacotes. Para esta fnalidade, o Debian fornece o
utilitrio aptitude. O apt largamente conhecido no deve ser utilizado com este
propsito, uma vez que um prottipo e no realiza o gerenciamento de pacotes to
bem quanto o aptitude. Abaixo temos um exemplo da estrutura de um repositrio
Debian:
pool
\_ stable
\_ main
\_ a
\_ alien
\_ alien-<versao>.deb
\_ a2ps
\_ ...
\_ b
\_ ...
\_ z
\_ liba
\_ libb
\_ ...
\_ libz
\_ testing
\_ unstable
\_ contrib

Dica LPI: No se engane!!! Na LPI cobrado DPKG e RPM.

Captulo 2 Instalao de Programas 36


2.2.1. Pacotes RPM

O RPM - RedHat Package Manager um sistema de gerenciamento de pacotes


para sistemas GNU/Linux baseados em RedHat. Ele instala, atualiza, desinstala e
verifca softwares. Originalmente desenvolvido pela RedHat Linux, agora usado por
muitas distribuies como Novell - Suse e Mandriva que possuem suas prprias
verses de RPM.

2.2.2. Base de dados RPM

Por trs do gerenciador de pacotes est o banco de dados RPM. Ele consiste de
uma lista duplicada, que contm todas as informaes de todos os RPM instalados. O
banco de dados lista todos os arquivos que so criados ou modifcados quando um
usurio instala um programa e facilita a remoo destes mesmos arquivos. Se o
banco de dados fca corrompido (o que acontece facilmente se o cliente de RPM
fechado

subitamente),

as

ligaes

duplas

garantem

que

eles

possam

ser

reconstrudos sem nenhum problema. Em computadores com o sistema operacional


RedHat instalado, este banco da dados encontra-se em /var/lib/rpm.
Uma vantagem do RPM sobre DEB possuir algumas ferramentas de
verifcao criptogrfca com o GPG e o md5, alm de verifcao de integridade dos
arquivos j instalados. Existe uma documentao que pode ser usada para qualquer
distro baseada em RPM, pode ser encontrada:
http://www.rpm.org

Captulo 2 Instalao de Programas 37


2.3. Prtica Dirigida
2.3.1. Instalando um Programa a Partir de um Arquivo .deb

1) Monte o CD-ROM e explore o pool de arquivos:


# mount /media/cdrom
# cd /media/cdrom/pool
# ls
# cd main
# ls

2) Procure o diretrio do programa sudo e veja as informaes do


pacote:
# cd s
# ls
# cd sudo

3) Veja a mensagem de ajuda do comando dpkg:


# dpkg --help

4) Veja as informaes do pacote do sudo:


# dpkg -I sudo_<versao>.deb

5) Verifque se ele est instalado no sistema:


# dpkg -l sudo

Captulo 2 Instalao de Programas 38


6) Verifque quais programas esto instalados no sistema:
# dpkg -l |more

7) Verifque o caminho do executvel:


# which ls

8) Determine a qual pacote o comando ls pertence:


# dpkg -S /bin/ls

9) Verifque o status de um pacote instalado:


# dpkg -s coreutils

10)

Instale o programa libgpm2:

# cd /media/cdrom/pool/main/g/gpm
# dpkg -i libgpm2<versao>.deb

11)

Verifque se o libgpm2 foi instalado:

# dpkg -l libgpm2

12)
Determine onde
aplicativo libgpm2:
# dpkg -L libgpm2 | more

esto

instalados

todos

os

arquivos

do

Captulo 2 Instalao de Programas 39


13)
Determine
programa sudo:

onde

sero

instalados

todos

os

arquivos

do

# dpkg -c /media/cdrom/pool/main/s/sudo/sudo<versao>.deb | more

14)

Remova o programa libgpm2:

# dpkg -r libgpm2

15)

Verifque se ele foi removido:

# dpkg -l libgpmg2

16)
Verifque
removidos:

se

seus

respectivos

arquivos

tambm

foram

# updatedb ; locate libgpm2

17)

Apague seus arquivos de confgurao:

# dpkg -P libgpm2

2.3.2. Convertendo extenses de arquivos

1) Para instalar pacotes


/etc/apt/sources.list:

com

aptitude

# vim /etc/apt/sources.list
deb

http://192.168.1.1/debian

lenny

main

temos

que

confgurar

Captulo 2 Instalao de Programas 40


2) Atualize a base de dados do aptitude:
# aptitude update

3) Para instalar o nosso conversor de pacotes:


# aptitude install alien rpm

4) Veja se o pacote est instalado:


# dpkg -l alien

5) Inciando nossos testes, precisamos de um arquivo.deb:


# cd /var/cache/apt/archives
# ls -lh
# aptitude clean

6) Faa o download dos pacotes necessrios, para os testes:


# aptitude -d install sl ccze ; ls -lh
# cp sl-<versao>.deb /opt
# cp ccze-<versao>.deb /opt

7) Entre no diretrio /opt, para iniciarmos os teste com o alien:


# cd /opt ; ls -lh

8) Convertendo para pacote .RPM:


# alien -r sl--<versao>.deb
# alien -r ccze--<versao>.deb

Captulo 2 Instalao de Programas 41


9) Convertendo para pacote .TGZ:
# alien -t sl--<versao>.deb
# alien -t ccze--<versao>.deb

10)

Veja todos os arquivos criados:

# fle sl*
# fle ccze*

2.3.3. Gerenciando Pacotes em Formato RPM

RedHat: Em sistemas baseados em RedHat utilizamos o gerenciador de


pacotes RPM.

1) Verifque se os pacotes sl e ccze esto instalados:


# dpkg -l |grep sl
# dpkg -l |grep ccze

2) Verifque quais pacotes esto instalados no sistema:


# rpm -qa

3) Verifque o que ser instalado com os pacotes sl e ccze:


# cd /opt
# rpm -qp sl--<versao>.rpm
# rpm -qp ccze--<versao>.rpm

Captulo 2 Instalao de Programas 42


4) Veja as informaes dos pacotes, no instalados:
# rpm -qpi sl--<versao>.rpm
# rpm -qpi ccze--<versao>.rpm

5) Verifque quais pacotes sero instalados com o pacotes:


# rpm -qlp sl--<versao>.rpm
# rpm -qlp ccze--<versao>.rpm

6) Verifque se a instalao ir ocorrer corretamente:


# rpm -ih --test --percent sl--<versao>.rpm
# rpm -ih --test --percent ccze--<versao>.rpm
As opes -h e --percent servem para mostrar uma barra de progressos e a
porcentagem concluda.

7) Instale os programas:
# rpm -ih --percent sl--<versao>.rpm
# rpm -ih --percent ccze--<versao>.rpm

8) Verifque os pacotes instalados:


# rpm -qa sl
# rpm -qa ccze

9) Verifque quais arquivos foram instalados atravs do pacotes:


# rpm -ql sl
# rpm -ql ccze

Captulo 2 Instalao de Programas 43


10)

Verifque o que ser efetuado ao removermos o pacote ccze:

# rpm -e --test ccze

11)

Agora remova o ccze:

# rpm -e ccze

Obs.: se o pacote tiver dependncias e voc quiser remov-lo assim mesmo,


utilize o parmetro --nodeps.

12)

Veja se o pacote ccze, foi removido:

# rpm -qa
# rpm -q ccze

13)
Para realizar uma atualizao de verso de algum programa
podemos utilizar o comando:
# rpm -Uh pacote-<versao>.rpm

Obs.: os parmetros --test e --nodeps, opcionais, podem ser utilizados


tambm.
Uma funcionalidade muito boa do RPM a capacidade de realizar verifcaes
de integridade dos pacotes instalados. Dessa forma, periodicamente voc pode
verifcar se ocorreu alguma alterao no seu sistema sem que voc soubesse ou se
sua mquina foi invadida.

14)
Verifque a integridade de todos os pacotes instalados no
sistema:
# rpm -Va

Captulo 2 Instalao de Programas 44


2.4. Exerccios Tericos
1) Qual a diferena entre dpkg e aptitude?
___________________________________________________________________________
___________________________________________________________________________

2) Como verifco quais pacotes esto instalados com dpkg e RPM?


___________________________________________________________________________
___________________________________________________________________________

3) O que o comando rpm -Va faz?


___________________________________________________________________________

4) Como instalo um programa sem suas dependncias utilizando o RPM?


___________________________________________________________________________

5) Qual a diferena entre apt-get e aptitude?


___________________________________________________________________________
___________________________________________________________________________
___________________________________________________________________________

2.5. Laboratrio
1) Instale o pacote sudo;
2) Consulte a documentao do sudo;
3) Implemente o sudo na mquina com as regras do instrutor;
4) Faa testes locais em sua mquina.

Captulo 2 Instalao de Programas 45

Captulo 3
Compilando Programas

3.1. Objetivos

Compilar um programa a partir do seu cdigo fonte;

O que possvel fazer com o cdigo fonte de um programa;

As vantagens de se ter um programa compilado a partir do cdigo fonte.

Captulo 3 Compilando Programas 46


3.2. Introduo Terica

Um dos pontos centrais do mundo GNU/Linux est baseado nas quatro


liberdades bsicas propostas pela FSF - Free Software Foundation, sendo elas:

0 liberdade de rodar o programa para qualquer propsito;

1 liberdade de acesso ao cdigo fonte, estudar como ele funciona e adapt-lo


s suas necessidades;

2 liberdade de redistribuir cpias do software;

3 liberdade de melhorar o programa e distribuir essas melhorias em benefcio


da comunidade.
Para que essas quatro liberdades bsicas sejam alcanadas necessrio que

tenhamos acesso ao cdigo fonte dos programas.


Deixando de lado a parte ideolgica, h diversas situaes que exigem que
recompilemos um determinado software a partir do cdigo fonte. Algumas delas, so:
quando necessitamos alter-lo para que ele satisfaa alguma necessidade pessoal,
corrigir um erro ou melhorar a segurana. Um outro bom motivo para compilar um
software quando ele no est disponvel na forma de pacote ou simplesmente o
pacote no vem pr-compilado com alguma funcionalidade que desejamos.

3.2.1. Confgure

Em geral, sempre que pegamos o cdigo fonte de um programa ele vir com
um aplicativo chamado confgure que ir executar uma verifcao em seu sistema
para identifcar se ele dispe de todos os componentes bsicos para uma compilao
bem sucedida.
Alm disso, quando consultamos a ajuda do confgure ele ir nos mostrar
todas as funcionalidades que podemos adicionar ou remover do programa para que

Captulo 3 Compilando Programas 47


ele se encaixe em nossas necessidades. Alm da escolha das funcionalidades, ele nos
permite, tambm, informar a localizao de certos componentes que por ventura ele
no encontre automaticamente.
Uma vez que o processo de confgure for encerrado com sucesso, ele ir
gerar um arquivo chamado Makefle, que contm todas as instrues de
compilao e instalao.

3.2.2. Makefle

O Makefle criado utilizando a ferramenta confgure e o objetivo deste


automatizar os processos de compilao, verifcao e instalao dos softwares.
O Makefle estruturado em sees; cada uma delas realiza alguma tarefa
especfca. Em geral esses Makefles vm com pelo menos trs sees padro:
default, install e clean. Algumas podem vir com test, check ou alguma
outra que o desenvolvedor ache relevante. Por isso devemos sempre ler a
documentao do programa.
A forma de utilizao do Makefle feita pelo comando make com o nome
de alguma das sees. Se nenhuma for especifcada, ele ir executar a seo
default.

3.3. Prtica Dirigida


Para que possamos instalar um software a partir de seu cdigo fonte, o
primeiro passo ter acesso a esse cdigo. Em geral fazemos isso acessando a pgina
do desenvolvedor do programa. Neste captulo vamos realizar a compilao do
software chamado nmap, que pode ser encontrado em:
http://www.insecure.org

Captulo 3 Compilando Programas 48


O procedimento de compilao de um programa parte do princpio que, atravs
do cdigo fonte do programa, qualquer um possa ter acesso e gerar um binrio
funcional fnal a partir dele.
Apesar de parecido para todas as aplicaes, a compilao pode reservar
surpresas e detalhes importantes, por isso sempre que for compilar algum programa,
consulte o arquivo INSTALL ou o README que est sempre presente junto com o
cdigo fonte.

1) Vamos instalar os pacotes necessrios:


# aptitude install make gcc g++ bzip2 gzip unzip

2) Descomprima e desempacote o cdigo fonte do nmap no diretrio


apropriado e entre nele:
# wget 192.168.200.254/nmap-versao.tar.bz2
# tar xvjf nmap-versao.tar.bz2 -C /usr/local
# cd /usr/local/nmap-versao

3) Qual o primeiro passo para compilar um programa? Ler os


arquivos README e INSTALL:
# vim README
# vim INSTALL
Dica LPI: Todos esses mtodos chegam ao mesmo resultado. Certifque-se
de que voc domina o comando tar e sabe que ele capaz de gerar um
arquivo tar com o gzip. Para a prova voc deve dominar os comandos
tar e gzip, que estudamos no 450, e utilizaremos aqui.
Obs: Nem sempre os dois arquivos estaro presentes, mas certamente um deles
sempre estar.

Captulo 3 Compilando Programas 49


4) Agora que sabemos o que fazer, vamos executar. Para determinar
quais so os parmetros que podemos passar ao confgure:
# ./confgure --help

5) Como no estamos interessados na interface grfca do nmap,


podemos informar ao confgure que no queremos que o nmap a
utilize:
# ./confgure --without-zenmap

Dica LPI: muito comum, quando compilamos um programa a partir de seu


cdigo fonte, que alguns de seus requisitos no estejam presentes,
ocasionando assim uma interrupo de alerta durante a execuo do
confgure. Quando isso ocorrer, deve-se identifcar o componente que est
faltando, instal-lo e executar novamente o confgure at que ele termine
com sucesso. Fique atento a esse processo.

6) Quando o confgure for executado com sucesso, podemos passar


compilao, mas antes vamos conhecer o arquivo Makefle criado
pelo confgure:
# vi Makefle

7) Agora sim vamos compilar o programa:


# make

8) Se no houver nenhum erro de compilao, podemos prosseguir


com a instalao:
# make install

Captulo 3 Compilando Programas 50


9) Se tudo ocorreu bem, j possvel utilizar o novo aplicativo:
# nmap 192.168.200.254

10)
Aps compilarmos o programa, podemos remover os arquivos
binrios e de objetos que foram criados durante a compilao:
# make clean

3.4. Exerccios Tericos


1) Explique o que o acontece em cada etapa da compilao de um programa:
confgure, make e make install.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

2) Para que serve o arquivo Makefle e quem o utiliza?


____________________________________________________________________________

3) Como proceder para descompactar um arquivo do tipo gzip, utilizando


um tar simples?
____________________________________________________________________________

4) Como verifcar se um programa compilado est instalado no sistema?


____________________________________________________________________________

5) Qual o nvel de manual do comando make, e o caminho do seu


executvel?
____________________________________________________________________________
____________________________________________________________________________

Captulo 3 Compilando Programas 51


6) Quais opes do nmap mostrariam: Portas TCP, Banners e Sistema
Operacional?
____________________________________________________________________________
____________________________________________________________________________

3.5. Laboratrio

1) Remova o nmap que acabamos de compilar;


2) Recompile o nmap especifcando o diretrio de instalao como sendo
/opt;
3) Verifque se o pacote do nmap existe no repositrio do Debian;
4) Veja a descrio do pacote nmap;
5) Instale o pacote do nmap via aptitude, verifque se ele foi instalado e
teste com a mquina do instrutor.

Leia tambm:

The Linux Documentation Project TLDP

Captulo 3 Compilando Programas 52

Captulo 4
Bibliotecas

4.1. Objetivos

Mesmo depois que um programa esteja instalado precisamos nos certifcar que
as suas bibliotecas foram carregadas;

Mostrar como carregar as bibliotecas;

As diferenas entre as bibliotecas;

As bibliotecas so utilizadas pelos executveis do sistema, sem elas no h


execuo.

Captulo 4 Bibliotecas 53
4.2. Introduo Terica
Hoje em dia muito simples instalar um programa j compilado, com a ajuda
de gerenciadores de pacotes como rpm, dpkg, aptitude e outros. Mas voc vai
encontrar muitos programas disponveis somente em cdigo-fonte, e s vezes nem
to bem documentados assim. Entretanto, compilar um programa no algo de outro
mundo, no um bicho de sete cabeas. A funo destas bibliotecas lembra um
pouco a dos arquivos .dll no Windows. Existem bibliotecas estticas e dinmicas.
As dinmicas so usadas por vrios programas e necessrias para instalar programas
distribudos em cdigo fonte (os famosos arquivos tar.gz).

4.2.1. Tipos fundamentais de programas executveis

Em sistemas Linux existem dois tipos fundamentais de programas executveis.


O primeiro chamado de esttico. Esse tipo de programa contm todas as funes
que ele precisa para ser executado, em outras palavras, completo. Por isso, os
executveis estticos no dependem de nenhuma biblioteca externa para funcionar.
O segundo tipo o executvel dinmico. Este, como esperado, exige a presena de
bibliotecas externas para funcionar.
Mas como descobrir se um executvel dinmico ou esttico? Para isso,
podemos usar o comando abaixo, que produz uma lista de dependncias:
# ldd <caminho_do_executvel>
Obs: Deve ser colocado o caminho completo do executvel, no somente o
nome do comando.
Para facilitar, pode-se usar o comando abaixo em vez de digitar o caminho
completo do executvel:
# ldd $(which ls)

Captulo 4 Bibliotecas 54
Exemplo de executvel esttico:
# aptitude install module-assistant
# ldd /usr/bin/module-assistant
not a dynamic executable
Exemplo de executvel compartilhado:
# ldd /bin/ln
linux-gate.so.1 => (0xffe000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7ded000)
/lib/ld-linux.so.2 (0xb7f29000)
Verifcando tamanhos:
# du -h /usr/bin/module-assistant ; du -h /bin/ln
64K /usr/bin/module-assistant
40K /bin/ln
Note que um executvel esttico bem maior que o executvel dinmico, isso
ocorre pois o esttico j contm o que precisa dentro do prprio executvel.
Obviamente, bibliotecas compartilhadas tendem a gerar executveis menores.

4.2.2. Modo Esttico e Compartilhado

O modo esttico ligeiramente mais rpido, pois no precisa buscar bibliotecas


em diretrios, mas consome mais espao (dado que cada programa teria uma cpia
da biblioteca dentro de si).
O modo compartilhado ligeiramente mais lento, pois precisa sempre abrir o
arquivo da biblioteca, mas ocupa menos espao dado que s se tem uma cpia da
biblioteca e facilita, centralizando a manuteno. Se voc precisar mudar a verso de
uma biblioteca, no tem de recompilar o programa, basta trocar o
biblioteca.

arquivo da

Captulo 4 Bibliotecas 55
O padro usar bibliotecas compartilhadas, e geralmente a deciso

mais

sbia, mas todas as bibliotecas necessrias precisam estar presentes no sistema para
o perfeito funcionamento do executvel.
No Linux, bibliotecas estticas tm nomes como libname.a, enquanto
bibliotecas compartilhadas so chamadas libname.so.x.y.z onde x.y.z alguma
forma de nmero de verso.
A ltima fase do desenvolvimento de um software a biblioteca, ou seja, reunir
todas as partes fundamentais para haver execuo. Existem tarefas que a maioria
dos softwares iram querer realizar como abrir arquivos, por exemplo, e esse tipo de
tarefa realizada atravs de bibliotecas. No Linux, as bibliotecas podem ser
encontradas, normalmente, em /lib e /usr/lib/.

4.2.3. Exemplo Real

Um exemplo real a linguagem C, que rica em poder de expresso, mas


relativamente pobre em funcionalidades. Para construir aplicaes que fazem uso de
funcionalidades especfcas, como interfaces grfcas, comunicao via rede,
frmulas matemticas complexas, etc, devem ser usadas bibliotecas.
As bibliotecas mais comuns, utilizadas por todas as aplicaes e utilitrios do
sistema, so:

libc: na verdade um grande "pacote" de bibliotecas que prov funcionalidades


bsicas de entrada/sada, de acesso a servios do sistema, rede, etc.

ld-linux: prov as funes necessrias para a carga de bibliotecas dinmicas,


durante a inicializao do programa.
Por padro, essas duas bibliotecas so automaticamente includas e ligadas em

todos os programas. Ao usar uma biblioteca esttica, o linker encontra as partes


que os mdulos do programa precisam, e as copia fsicamente no arquivo de sada
executvel que ele gera.
Para bibliotecas compartilhadas no. Em vez disso, ele deixa uma nota na sada

Captulo 4 Bibliotecas 56
dizendo ao programa que quando for executado, ele ter que carregar primeiro esta
biblioteca. Diversos programas, para no terem sempre que reinventar a roda,
usam bibliotecas, como a libc, por exemplo.

4.3. Prtica Dirigida

1) Utilizando o comando ldd:


# which ping
# ldd /bin/ping
Neste exemplo, todas as bibliotecas foram encontradas, carregadas e se
encontram listadas ao lado direito. Para instalar uma biblioteca necessria, devemos
copi-la em um dos diretrios listados no arquivo /etc/ld.so.conf e em seguida
executar o comando ldconfg.

Dica LPI: Opcionalmente, podemos editar o arquivo e adicionar diretrios


onde o ldconfg procurar as bibliotecas, e depois reexecut-lo. Para
verifcar todas as bibliotecas presentes em nossa mquina usamos a opo
-p, assim: ldconfg -p.

2) Agora, para vermos a importncia disso, vamos fazer uma


simulao, vamos esconder uma biblioteca da aplicao ping.
Ento, mudando o nome da biblioteca:
# mv /lib/i686/cmov/libresolv.so.2 /lib/teste

3) Perceba, que ela ainda encontra a biblioteca:


# ldd /bin/ping
#ping -c 2 -w 2 192.168.200.254

Captulo 4 Bibliotecas 57
4) Portanto, ainda existe uma biblioteca, porque a que acabamos de
mover era apenas um link simblico (veremos mais tarde com
detalhes). Ento:
# ls -l /lib/libresolv.so.2
# mv /lib/libresolv.so.2 /lib/teste-2

5) Agora devera aparecer NOT FOUND:


# ldd /bin/ping

6) Teste o ping e veja a mensagem de erro:


# ping -c 2 -w 2 192.168.200.254
ping: error while loading shared libraries: libresolv.so.2: cannot open shared object
fle: No such fle or directory
Ele no est conseguindo localizar

a biblioteca

libresolv.so.2, pois

simulamos sua inexistncia.

7) Vamos checar as bibliotecas que faltam:


# ldd /bin/ping

8) Voc j imaginou fcar sem a libresolv.so.2? Sem essa lib, muitos


recursos de redes responsveis pela resoluo de nomes, no iram
responder. Vamos consertar isso:
# mv /lib/teste /lib/libresolv.so.2
Assim restabelecemos o arquivo original da biblioteca.

9) Vamos checar se a biblioteca est sendo detectada novamente:


# ldd /bin/ping

Captulo 4 Bibliotecas 58
10)

Vamos testar o ping:

# ping -c 2 -w 2 192.168.200.254

11)
O arquivo /etc/ld.so.conf contm os diretrios onde procurar
dependncias:
# cat /etc/ld.so.conf
/lib e /usr/lib j esto automaticamente inclusas!

12)
Existe tambm a varivel de ambiente LD_LIBRARY_PATH, que
instrui o carregador dinmico para checar um certo diretrio:
# export LD_LIBRARY_PATH=/usr/lib/velho:/opt/lib/novo

13)
Temos tambm outro arquivo chamado /etc/ld.so.cache, que
contm uma lista de todas as bibliotecas compartilhadas que ld.so
ou ld-linux.so iro procurar na mquina. Esse arquivo sempre
gerado e atualizado por ldconfg baseando-se no arquivo
/etc/ld.so.conf:
# fle /etc/ld.so.cache

Dica LPI: Se apagarmos o arquivo /etc/ld.so.cache, s executar o


comando ldconfg que ele ser recriado.

Captulo 4 Bibliotecas 59
4.4. Exerccios Tericos

1) Quais so as diferenas entre o modo esttico e o compartilhado? Defna os


dois.
_________________________________________________________________________________
_________________________________________________________________________________

2) Em qual diretrio esto localizadas as bibliotecas do Sistema?


_________________________________________________________________________________

3) Qual arquivo que guarda onde podemos encontrar as bibliotecas?


_________________________________________________________________________________

4) Como eu fao para checar se uma biblioteca est faltando?


_________________________________________________________________________________

Captulo 4 Bibliotecas 60

Captulo 5
Data e Hora do Sistema e Servidor de
NTP

5.1. Objetivos

Horrio nos servidores devem estar sempre atualizados;

Ajustar o horrio do sistema e da BIOS;

Criar um servidor de horrios, sempre com hora e data atualizados;

Entender a importncia de um servidor de horrios.

Captulo 5 Data e Hora do Sistema e Servidor de NTP 61


5.2. Introduo Terica
Manter o sistema com o horrio correto uma tarefa muito importante e que
muitas vezes negligenciada pelos administradores. Sem o horrio ajustado
corretamente, fca difcil agendar tarefas a serem executadas periodicamente, ou at
mesmo fazer a leitura dos logs e determinar em que horrio um determinado evento
ocorreu. Esse detalhe torna-se ainda mais importante quando temos um servidor de
e-mail rodando na mquina. Imagine um e-mail que pode ser enviado a/de qualquer
parte do mundo e, somando a diferena de fuso horrio, um servidor com a hora
errada, fca muito difcil determinar a hora na qual o e-mail foi enviado.
H basicamente duas formas de ajustar as confguraes de horrio do sistema:
manualmente, utilizando os comandos date e hwclock ou usando o servio de
NTP - Network Time Protocol.
O comando date utilizado para mostrar ou ajustar a data e hora do sistema.
J o comando hwclock utilizado para mostrar ou ajustar a hora da BIOS da
mquina sendo conhecido como RTC - Real Time Clock. Este o relgio que fca
continuamente em funcionamento mesmo que a mquina esteja desligada; de forma
que o horrio esteja atualizado da prxima vez que a mquina for religada. Sua forma
de utilizao bastante simples:
# hwclock [opes]
sendo suas opes mais comuns:

sem opo apenas mostra o horrio da BIOS;

w ajusta o horrio da BIOS utilizando o horrio do sistema;

--set --date=mm/dd/YY HH:MM:ss'' ajusta o relgio de acordo com os


argumentos passados a ele.

Dica LPI: O comando hwclock com o parmetro -s, ajusta o horrio do


sistema utilizando o horrio da BIOS.

Captulo 5 Data e Hora do Sistema e Servidor de NTP 62


Outro ponto importante no que diz respeito s confguraes de data e hora do
sistema a confgurao da timezone, ou seja, o fuso horrio em que a mquina se
encontra. Essa confgurao pode ser efetuada utilizando os comandos tzconfg
(especfco do Debian) e tzselect em distribuies como RedHat, Suse e Gentoo. O
Debian tambm aceita esse ltimo comando.

5.2.1. NTP - Network Time Protocol

O protocolo de sincronizao de horrios NTP foi desenvolvido a fm de


possibilitar que qualquer computador ligado internet possa ajustar sua data e hora
automaticamente utilizando um servidor de hora preciso. O NTP um servio na
camada de aplicao que utiliza o protocolo UDP na camada de transporte fazendo
uso da porta 123 para realizar a sincronizao de horrios.
O NTP, criado em 1985, um dos protocolos de internet mais antigos ainda em
uso e pode atingir uma preciso de aproximadamente 200s.
5.2.2. Organizao em Strata

A hierarquia do NTP dividida em vrios nveis, o conjunto deles denominado


strata e cada um deles corresponde a um stratum. A raiz desse sistema o
denominado stratum 0 e que corresponde aos relgios nucleares espalhados pelo
mundo, aos quais esto conectados os servidores de stratum 1, ou seja, so eles
que fazem o processamento da informao recebida do stratum 0.
Conectados aos stratum 1 h o stratum 2 que em geral esto conectados a
mais de um servidor de stratum 1 e determinam de fato qual a hora padro com
base nos dados recebidos dos stratum 1 utilizando o algoritmo do NTP.
Os stratum 2 responde ao stratum 3 que responde ao stratum 4 e assim
por diante at atingir, no mximo, 16 nveis. Uma representao esquemtica dessa
estrutura pode ser vista na fgura.

Captulo 5 Data e Hora do Sistema e Servidor de NTP 63

A menos que estejamos montando um servidor para ser um stratum 1, 2 ou 3,


nunca devemos utilizar os servidores stratum 1 ou 2 para sincronizarmos nossos
servidores; mas sim acessar um stratum 3. Dessa forma deixamos os nveis mais
baixos para as mquinas que realmente precisam acess-los.
Ainda assim, nossa poltica de acesso aos stratum 3 deve ser tambm
bastante criteriosa. Se nossa rede possu diversas mquinas, no h sentido em
fazermos todas elas se sincronizarem em um stratum 3, mas sim escolher uma de
nossas mquinas para ser um stratum 4 e nossos clientes realizarem a
sincronizao a partir dela.
Sendo assim, vamos proceder com a confgurao dos servidores e dos clientes.

Captulo 5 Data e Hora do Sistema e Servidor de NTP 64


5.3. Prtica Dirigida

5.3.1. Ajuste Manual de Horrio

1) Verifque qual a sua localizao geogrfca:


# cat /etc/timezone

2)

Antes de testar o comando tzconfg, olhe o caminho para seu


executvel, e tambm seu contedo:

# cat $(which tzconfg)


#!/bin/sh
echo "WARNING: the tzconfg command is deprecated, please use:"
echo " dpkg-reconfgure tzdata"

Ajuste sua timezone utilizando comando dpkg-reconfgure tzdata, que


especfco para o Debian Lenny 5.0. Escolha um fuso qualquer, diferente de
Amrica/So Paulo:
# dpkg-reconfgure tzdata

3) Verifque que seu horrio foi trocado e seu timezone tambm:


# date
# cat /etc/timezone

Captulo 5 Data e Hora do Sistema e Servidor de NTP 65


4) Para o RedHat e tambm para o Debian utilizamos o comando
tzselect, mas o tzselect, ao contrrio do tzdata, somente exibe
a tela abaixo:
RedHat:
# tzselect

5) Verifque que sua mquina permanece com a confgurao antiga:


# date
# cat /etc/timezone

6) Retorne para a confgurao Amrica/So Paulo:


# dpkg-reconfgure tzdata

7) Verifque a data e hora do sistema e da BIOS:


# date
# hwclock

8) Ajuste a hora do sistema para o horrio que o instrutor lhe pedir:


# date mmDDHHMMYYYY

9) Verifque novamente a hora e data do sistema e da BIOS:


# date
# hwclock

10)
Como o horrio da BIOS est diferente do horrio do sistema,
vamos sincroniz-los considerando que o horrio do sistema o
correto:
# hwclock -w

Captulo 5 Data e Hora do Sistema e Servidor de NTP 66


11)

Verifque novamente o horrio:

# date

5.3.2. Trabalhando com NTP nos Clientes

1) Instalar o cliente NTP:


# aptitude install ntpdate

2) Para as mquinas da rede que forem os clientes NTP, possvel


fazer a sincronizao do horrio com o servidor por meio do
comando ntpdate, assim:
# ntpdate ip-do-servidor-na-rede

3) Caso no tenha um servidor NTP na rede, podemos simplesmente


reiniciar o daemon do ntpdate.
# ntpdate-debian

Dica

LPI:

No

se

esquea

que

comando

ntpdate

serve

para

sincronizao do horrio com o servidor.

5.3.3. Confgurao do Servidor de NTP

Agora que aprendemos a ajustar manualmente a hora do sistema e da BIOS,


vamos utilizar o mtodo mais preciso, ou seja, criar a estrutura de servidores e
clientes de NTP.

Captulo 5 Data e Hora do Sistema e Servidor de NTP 67


1) Instale o pacote do NTP:
# aptitude install ntp

2) RedHat:
# yum install ntp

3) Vamos confgurar o nosso servidor de NTP. Abra o arquivo de


confgurao:
# vi /etc/ntp.conf
Vamos precisar obter endereos de servidores ofciais de NTP, para isso,
podemos acessar o site http://www.ntp.org, que a pgina do projeto NTP. Logo na
pgina inicial haver um link para a lista de servidores pblicos Public Time
Server Lists. Nesta lista, devemos procurar por um pool de servidores prximos a
ns. Lembrando que devemos evitar utilizar stratum menores que 3 se no
estivermos criando um servidor para fazer parte dos servidores pblicos.
Se escolhermos o pool da Amrica do Sul, chegaremos aos servidores no
Brasil, sendo eles [0|1|2].south-america.pool.ntp.org os endereos que podemos
utilizar. sempre aconselhvel utilizar mais de um servidor para que, caso ocorra
algum erro em algum deles, o nosso sistema possa continuar com a confgurao
correta.

4) No arquivo de confgurao devemos localizar a linha para


confgurao do servidor com o qual sincronizaremos a nossa
mquina:
server 0.south-america.pool.ntp.org iburst prefer
server 1.south-america.pool.ntp.org iburst
server 2.south-america.pool.ntp.org iburst
Os parmetros adicionais iburst fazem com que sejam enviados oito pacotes
em vez de apenas um durante a sincronizao inicial.

Captulo 5 Data e Hora do Sistema e Servidor de NTP 68


5) Vamos adicionar a linha especifcando quais hosts podero
realizar incronizao com a nossa mquina:
restrict 127.0.0.1
restrict 192.168.200.0 mask 255.255.255.0
A primeira restrio est liberando requisies vindas do localhost e a
segunda da nossa rede. Alguns arquivos importantes:

statsdir /var/log/ntpstats/ diretrio onde vo fcar os logs de estatsticas do


meu servidor NTP.

driftfle /var/lib/ntp/ntp.drift arquivo onde

fcar confgurado o valor

estimado de erro de frequncia entre o relgio do sistema e o servidor de


sincronia de stratum anterior.
6) Para que possamos monitorar nossa conexo com os servidores,
precisamos antes determinar os seus endereos IP:
# ping 1.south-america.pool.ntp.org
Ou pingando:
# ping 146.164.48.6
Que o IP do servidor de NTP do Debian.

7) Determinado o endereo IP, podemos monitorar nossa conexo com


este servidor:
# ntpq -p 146.164.48.6

8) Vamos
determinar
se
a
sincronizao
est
funcionando
corretamente. Para isso vamos alterar a hora do sistema e depois
iniciar o servio de NTP:
# date 010101012009
# /etc/init.d/ntp stop

Captulo 5 Data e Hora do Sistema e Servidor de NTP 69


9) Agora, verifque a hora do sistema novamente e veja se funcionou:
# date

10)
Depois disso, vamos reiniciar o daemon do ntp-server para
que ele sincronize e passe a ser um servidor NTP:
# /etc/init.d/ntp restart

11)

Vamos verifcar o log em outro terminal para ver o processo de

sincronizao:
# tail -f /var/log/syslog

12)

Para ajustar o Horrio de Vero:

# aptitude install tz-brasil

Ele j pega a timezone do Brasil e atualiza automaticamente, de acordo com


o Horrio de Vero (caso esteja). Alm disso, na sada do comando ele mostra as
listagens dos anos onde ocorreram horrio de vero, incio e trmino, e sempre da a
hora exata, veja:
+Rule BrazilSP 2007 only - Nov 14 0:00 1:00 S
+Rule BrazilSP 2008 only - Feb 17 0:00 0 +Rule BrazilSP 2008 only - Oct 17 0:00 1:00 S
+Rule BrazilSP 2009 only - Feb 14 0:00 0 Onde eu posso encontrar referncias aos servidores NTP pblicos de
stratum?
http://ntp.isc.org/bin/view/Servers/WebHome

Captulo 5 Data e Hora do Sistema e Servidor de NTP 70


5.4. Exerccios Tericos
1) O que so stratuns? E para que servem os servidores do stratum 0?
___________________________________________________________________________
___________________________________________________________________________

2) Qual o protocolo de boas prticas ao utilizar um servidor de NTP


externo?
____________________________________________________________________________

3) Para que servem os arquivos /etc/default/ntp e /etc/default/ntpdate?


___________________________________________________________________________
___________________________________________________________________________

4) Qual o arquivo de confgurao do Servidor NTP?


____________________________________________________________________________

5) Qual o comando para sincronizar o horrio com o servidor?


____________________________________________________________________________

6) Como fcaria a linha dentro do arquivo /etc/crontab, caso exista um


agendamento para ser feito dia sim, dia no, do daemon do NTP? (linha
completa)
____________________________________________________________________________

7) Qual a verso do servidor NTP que estamos utilizando?


____________________________________________________________________________

Captulo 5 Data e Hora do Sistema e Servidor de NTP 71


8) Qual o site Brasileiro onde podemos ter informaes do NTP?
____________________________________________________________________________

9) Quais as vantagens e desvantagens, de se utilizar o NTP?


____________________________________________________________________________

5.5. Laboratrio
1) Visualize os trabalhos que esto agendados para seu usurio;
2) Insira uma regra para que o horrio seja sincronizado todos os dias, menos
aos domingos, as 00:00;
3) Liste os agendamentos do seu usurio. Veja se o daemon do Ntp e do
Ntpdate esto ativos. Veja se j existe alguma entrada nos agendamentos
do sistema.

Captulo 5 Data e Hora do Sistema e Servidor de NTP 72

Captulo 6
Rsyslog

6.1. Objetivos

Entender o funcionamento do Rsyslog;

Utilizar as facilidades, nveis e destinos do Rsyslog;

Confgurar o Rsyslog para fns de debug;

Ativar gravao de Logs remotos.

Captulo 6 Rsyslog 73
6.2. Introduo Terica
A necessidade de registro das atividades dos usurios e servios dos sistemas
notoriamente, muito importante para Administradores de Sistemas. A norma NBR
ISO/IEC 27002 recomenda no item 10.10.1 as seguintes caractersticas de um
sistema de logs:
1. Identifcao dos usurios;
2. Datas e horrios de entrada e sada de terminais;
3. Hostname ou endereo IP, para servios acessados via rede;
4. Registro das tentativas de acessos aceitos e rejeitados.

6.2.1. Organizao do Rsyslog

Cada linha do arquivo /etc/rsyslog.conf organizada pela seguinte sintaxe:


# facilidade.nvel destino
Vamos explicar o que cada um desses itens:

facilidade - usada para especifcar que tipo de programa est enviando a


mensagem.

nvel - Especifca o nvel de gravidade da mensagem.

destino - Especifca para onde deve ser mandada a mensagem de log.

Vamos entender cada uma delas.

Captulo 6 Rsyslog 74
6.2.2. Facilidades do Rsyslog

auth - Mensagens de segurana/autorizao.

authpriv - Mensagens de segurana/autorizao (privadas).

cron - Servios de agendamento (cron e at).

daemon

Outros

servios

do

sistema

que

no

possuem

facilidades

especfcas.

ftp - Servio de ftp do sistema.

kern - Mensagens do kernel.

lpr - Subsistema de impresso.

Local{0-7} - Reservados para uso local.

mail - Subsistema de e-mail.

news - Subsistema de notcias da USENET.

security - Sinnimo para a facilidade auth.

rsyslog - Mensagens internas geradas pelo rsyslog.

user - Mensagens genricas de nvel do usurio.

uucp - Subsistema de UUCP.

* - Confere com todas as facilidades.


6.2.3. Nveis

emerg - O sistema est inutilizvel.

alert - Uma ao deve ser tomada imediatamente para resolver o problema.

Captulo 6 Rsyslog 75

crit - Condies crticas.

err - Condies de erro.

warning - Condies de alerta.

notice - Condio normal, mas signifcante.

info - Mensagens informativas.

debug - Mensagens de depurao.

* - Confere com todos os nveis.

none - Nenhuma prioridade.

error - Sinnimo para o nvel err.

panic - Sinnimo para o nvel emerg.

warn - Sinnimo para o nvel warning.

6.2.4. Destinos

arquivo

- O Rsyslog enviar os logs para um arquivo. Essa opo a mais

comum.

| - O Rsyslog enviar os logs atravs de um pipe. Muito usado para redirecionar


logs um terminal.

@ - Com a arroba, o Rsyslog enviar seus logs para um computador remoto,


utilizando hostname ou endereo IP.

user1,user2 - Especifcando o usurio, o Rsyslog enviar a mensagem para os


usurios especifcados. Mltiplos usurios so separados por vrgula.

* - Com o asterisco, o Rsyslog enviar os logs para todos usurios logados no


momento, atravs do comando "wall".

Captulo 6 Rsyslog 76
6.2.5. Arquivos importantes

Logs de controle do kernel: /var/log/messages


Logs de depurao de daemons: /var/log/daemon.log
Logs utilizados pelo comando last: /var/log/wtmp
Logs utilizados pelo comando last: /var/log/btmp
Log utilizado pelo comando lastlog: /var/log/lastlog
Logs utilizados pelos comandos w e who: /var/run/utmp

6.3. Prtica Dirigida


1) Instale o pacote do rsyslog:
# aptitude install rsyslog

2) Edite o arquivo de confgurao do rsyslog, e ative a opo de Logs


do cron:
# vi /etc/rsyslog.conf
cron.*
/var/log/cron.log

3) Vamos criar uma poltica de rsyslog que possibilite registrar todos


os acontecimentos:
*.*

/var/log/tudo.log

4) Reinicie o daemon do Rsyslog:


# /etc/init.d/rsyslog restart

Captulo 6 Rsyslog 77
Dica RedHat:
# service rsyslog restart

5) Verifque o arquivo /var/log/tudo.log


# cat /var/log/tudo.log

6.3.1. Logs Centralizados

1) Primeiro, necessrio que o servidor seja habilitado para receber


os logs de outras mquinas, para isto, acrescente o parmetro -r:
# vim /etc/default/rsyslog

2) Modifque o contedo do arquivo, acrescentando o parmetro:


RYSLOGD_OPTIONS="-c2,-r"

Depois, precisamos descomentar no arquivo:


# vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514

3) Nas estaes, preciso alterar o arquivo /etc/rsyslog.conf,


inserindo a linha que indica quais arquivos sero enviados e qual o servidor
de logs:
*.*

@192.168.200.X

Captulo 6 Rsyslog 78
4) Reinicialize o servio Rsyslod:
# /etc/init.d/rsyslog stop
# /etc/init.d/rsyslog start

Dica LPI: O candidato ser questionado sobre como confgurar um log


remoto. Podem ser cobradas tambm, regras para adicionar os nveis,
facilidades e destino, fque atento aos exerccios.

5) Certifque-se de que a porta est disponvel para conexes remotas:


# nestat -putan | grep 514

Instale o pacote do tcpdump:


# aptitude install tcpdump

6) Visualize a atividade do servidor de log na rede:


# mii-tool
# tcpdump -i ethX -X -n -vv src 192.168.200.X and dst 192.168.200.X

6.3.2. Rotao de Logs

Com o tempo, os logs podem ocupar muito do espao disponvel na partio.


Por isso, devemos confgurar corretamente a poltica de rotao dos logs, ou seja,
durante quanto tempo os logs sero armazenados no seu computador.

Captulo 6 Rsyslog 79
Para isso, edite o arquivo /etc/logrotate.conf:
# vim /etc/logrotate.conf
#Definindo rotao de logs semanalmente
weekly
# Manter os logs de 4 semanas
rotate 4
# Criar um arquivo novo para cada rotao de logs
create
# Descomente caso queira compactar os logs em formato .gz
compress
# Todo arquivo dentro deste diretrio ser considerado como uma
configurao de log rotate.
include /etc/logrotate.d
# Configuraes para wtmp e btmp
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
# system-specific logs may be configured here

1) Crie uma confgurao de logrotate:


# vim /etc/logrotate.d/errors

Captulo 6 Rsyslog 80
2) Inclua no arquivo o seguinte contedo:
/var/log/*.err /var/log/*.info {
daily
size 5M
sharedscripts
postrotate
/usr/bin/pkill -1 rsyslog
endscript
rotate 5
}

/var/log/*.err /var/log/*.info - Todos os logs com a extenso err e info.

daily - O sistema de logs ser dirio.

size 5M - Faz a rotao quando o arquivo alcanar 5M.

sharedscripts - Marca o inicio do bloco de comandos.

postrotate - Executa os scripts aps aplicar a rotao aos arquivos.

/usr/bin/pkill -1 rsyslog - Envia sinal 1 ao processo rsyslog.

endscript - Encerra o bloco de comandos.

rotate 5 - Aplica a rotao aos arquivos 5 vezes.

3) Redirecione todos os logs para o arquivo teste.err:


# cat /var/log/* >> /var/log/teste.err
Execute o comando acima at ultrapassar os 5MB estabelecidos na poltica de
logrotate.

4) Agora, execute o logrotate manualmente:


# logrotate -f /etc/logrotate.conf

Captulo 6 Rsyslog 81
5) Redirecione o arquivo teste.err.1 para o arquivo teste.err:
# cat /var/log/teste.err.1 >> /var/log/teste.err

6) Acione o logrotate:
# logrotate -f /etc/logrotate.conf

6.4. Exerccios Tericos

1) Qual o nome do daemon do rsyslog?


_____________________________________________________________________________
_____________________________________________________________________________

2) Como voc faria para criar um servidor de logs centralizados?


_____________________________________________________________________________
_____________________________________________________________________________

3) Suponha que voc necessite que os logs sejam comprimidos. Como voc
faria isso automaticamente?
_____________________________________________________________________________
_____________________________________________________________________________

4) Para que servem os sinais = (igual) antes da prioridade e o - (menos)


antes dos arquivos de logs?
_____________________________________________________________________________
_____________________________________________________________________________
5) Quais as contra medidas corretas que devemos tomar caso a nossa
mquina seja invadida?
_____________________________________________________________________________
_____________________________________________________________________________

Captulo 6 Rsyslog 82

6) Alm do rsyslog, quais outras ferramentas o sistemas disponibiliza para


apurao de fatos?
_____________________________________________________________________________
_____________________________________________________________________________

6.5. Laboratrio

1. Redirecione todos os logs de autenticao para o arquivo /var/log/acessos.log;


2. Redirecione todos os logs para /dev/tty12;
3. Desative o servio de logs remotos.

Captulo 6 Rsyslog 83

Captulo 7
Shell Script I

7.1. Objetivos
Entender a estrutura de um script;
Automatizar tarefas;
Conhecer algumas variveis importantes.

Captulo 7 Shell Script I 84


7.2. Introduo Terica
Tarefas administrativas so, muitas vezes, longas e repetitivas. Podemos
automatizar esses procedimentos atravs de scripts. Na verdade, os scripts
podem nos auxiliar muito, numa vasta gama de atividades.
O que um script? uma sequncia de instrues que so executadas toda
vez que o mesmo chamado.
Mas, qual a diferena entre um script e um programa, j que ambos so
sequncias de instrues?
Um script, um programa no compilado. O processador da mquina s
capaz de executar programas binrios, isto , compilados especifcamente para ele.
Dessa forma, necessrio um programa que interprete esse script, em tempo de
execuo, para que o mesmo possa ser executado. No nosso caso, esse programa
ser uma shell, j que estamos falando de shell scripts.
Sendo uma linguagem de programao, a Shell Script possui uma srie de
estruturas de controle como loops e condicionais, mas que so estudadas apenas
em cursos mais avanados.
7.2.1. Estudando um exemplo

Vejamos o seguinte exemplo de Shell Script:


# vim mps.sh
#! /bin/bash
#Meu primeiro shell script
cd ~
clear
ls -alh
date
cd Este um script bem simples. As linhas que comeam pelo smbolo # so
comentrios, ou seja, tudo que aparece depois do desse caracter desprezado. Os
comentrios so muito importantes nos programas, pois so uma forma de

Captulo 7 Shell Script I 85


document-los. Imagine se voc tiver que fazer uma alterao num programa escrito
a um ano antes. Ser que voc ir se lembrar de todas as estruturas e variveis que
utilizou? Provavelmente no. Se for outra pessoa quem tiver que efetuar essa
mudana, a situao ser pior ainda!
Mas

primeira

linha,

na

qual

aparece

um

comentrio,

possui

uma

caracterstica um tanto estranha. Na verdade, a primeira linha de um script,


quando contiver em seu incio a sequncia #! indica qual ser o interpretador
daquele script. Em nosso exemplo ser o programa /bin/bash, uma shell. Se
estivssemos criando um script com a linguagem de programao Perl, a
primeira linha seria algo como #! /usr/bin/perl.
O script, propriamente dito, executa 4 comandos simples: Acessar o diretrio
do usurio corrente (cd ~); limpar a tela (clear); listar o contedo diretrio corrente
(ls -alh); imprimir a data (date) e voltar ao diretrio original (cd -).
7.2.2. Executando o script

Um programa ou script no Gnu/Linux deve possuir permisso de execuo.


Supondo que nosso script denomina-se s1, para podermos execut-lo, devemos
executar o comando:
# chmod u+x s1

E em seguida executar o script:


# ./s1
Em algumas situaes, pode ser necessrio fornecer parmetros para um
script. Por exemplo, se ao invs de listar o contedo do diretrio pessoal do
usurio, quisssemos que o script listasse o contedo de um diretrio qualquer.

Captulo 7 Shell Script I 86


Supondo que esse novo script chama-se s2, uma possvel forma de
utilizao do script seria:
# ./s2 /etc

Para passar parmetros para esse script, precisamos conhecer a funo de


algumas variveis: $1, $2. Quando passamos algum parmetro para o nosso
script, esse parmetro fca armazenado em uma varivel especifca. Pro exemplo:
# ./script parmetro1 parmetro2 parmetro3

Para conseguirmos resgatar o valor desses parmetro, precisamos chamar as


variveis $1,$2 e $3, por exemplo:
1

#!/bin/bash

#
3 #Esse script pega o valor dos parmetros e imprimi na tela.
4 echo $1
5 echo $2
6 echo $3
7 # ./script3 42 the answer
2

7.2.3. Usando os nmeros

Muitas vezes quando fazemos scripts, precisamos de uma funo que faa o
trabalho das operaes matemticas bsicas como soma, diviso, multiplicao e
subtrao. Em shell script podemos usar o comando expr para realiz-las. J a
contagem de linhas feita pelo comando wc. E o comando cut serve para
cortar a sada no ponto especifcado pelo separador.
Vamos ver esse exemplo: um script que deve dizer quantos usurios esto
presentes, quantos grupos esto presentes e no fnal mostrar quantos objetos meu

Captulo 7 Shell Script I 87


sistema tem, a soma dos usurios e dos grupos:
#!/bin/bash
1 #
2 echo "Aguarde ....."
3 sleep 3
4 G=`wc -l /etc/group | cut -d" " -f1`
5 U=`wc -l /etc/passwd | cut -d" " -f1`
6 echo "O sistema possui $U usurios."
7 echo "O sistema possui $G grupos."
8 echo "O sistema possui `expr $G + $U` objetos."
1

7.3. Prtica Dirigida


1) Crie o script abaixo. D a ele o nome userfltro.

#!/bin/bash

#
3 #Esse programa tem como objetivo filtrar todos os usurios que no
possuem home
4 QTD=`cat /etc/passwd | grep -v /home/ | wc -l`
5 echo "A quantidade de usurios que no possuem home de: $QTD"
2

2) Atribua a permisso de execuo ao script:


# chmod u+x userfiltro

3) Execute o script:
# ./userfiltro

Captulo 7 Shell Script I 88


4) Altere o script para que ele receba um parmetro da linha de
comandos. Por exemplo o arquivo passwd.
#!/bin/bash
2 #
3 #Esse programa tem como objetivo filtrar todos os usurios que no
possuem home
4 QTD=`cat $1 | grep -v /home/ | wc -l`
5 echo "A quantidade de usurios que no possuem home de: $QTD"
1

5) Execute novamente o script, fornecendo agora como argumento a


localizao do arquivo passwd:
# ./userfiltro /etc/passwd

Para a prova bom saber a funcionalidade de algumas variveis!!


$0
Retorna o nome do prprio script, ou seja, quem o executor do comando.

7.3.1. Usando a estrutura se

At o presente momento, fzemos scripts que no possuem escolhas, ou seja,


comandos de execuo em linha de comando em srie, utilizando nossa lgica para
fazer com que aquele script seja executado corretamente. Mas se qualquer coisa
acontecer no meio do caminho, no temos a oportunidade de trabalhar com as
famosas exceptions.
As exceptions, tambm conhecidas como excees, servem para ajudar
quando o resultado de alguma parte do script pode ter vrios rumos. Usando a
condio se, possvel testar o resultado de uma condicional.

Captulo 7 Shell Script I 89


Por exemplo:
a=1
b=2
SE $b > $a ENTO
IMPRIMA $b
SENO
IMPRIMA $a
FIMSE

7.3.2. A varivel $?

A varivel interrogao conhecida por testar o valor de retorno de qualquer


comando quando mostrada aps sua execuo. Com ela podemos verifcar se o
programa foi executado com sucesso ou no. Para isso basta saber que essa varivel
tem dois retornos principais.
# comando1
# echo $?
# 0

Quando o resultado dessa varivel igual a 0: Comando executado com


sucesso!
# comando2
# echo $?
# != 0

Quando o resultado diferente de 0, quer dizer que existiu algum problema


na execuo do comando.
Cada programa tem sua tabela e excees, mas sempre retornam 0 quando o
programa bem executado.

Captulo 7 Shell Script I 90


7.3.3. O comando test

O teste de condicionais (strings, matemticas e em arquivos) em Shell Script


feito atravs do comando test.
Vamos conferir algumas formas de testar condicionais.

7.3.4. Testando strings

# test "uva" = "uva"


# echo $?
# 0

# test "uva" = "banana"


# echo $?
# 1

7.3.5. Testando expresses matemticas


# test 5 -eq 2
# echo $?
# 1

# test 2 -eq 2
# echo $?
# 0

Captulo 7 Shell Script I 91


7.3.6. Testando expresses em arquivos

# test -z $pinga
# echo $?
# 0

#
#
#
#

whisk=blue
test -z $whisk
echo $?
1
Acima mostramos algumas formas de se testar as condicionais utilizadas dentro

da estrutura se. Lembre-se que podemos usar as condicionais tanto dentro, quanto
fora da estrutura se, depende do caso e do meio.
Abaixo podemos ver uma lista de operadores para nossa diverso.
7.3.7. Operadores de strings

Operadores

Funes

==

Igual

!=

Diferente

7.3.8. Operadores de matemticos

Operadores

Funes

Soma

Subtrao

Multiplicao

Diviso

>
>=
<
<=

Maior
Maior ou Igual
Menor
Menor ou Igual

Captulo 7 Shell Script I 92

7.3.9. Operadores para arquivos


Operadores

Funes

-e

Arquivo existe (exists)

-nt

Arquivo mais novo que (newer than)

-ot

Arquio mais antigo que (older than)

-d

um diretrio (directory)

Existem muitos outros operadores para que possamos dominar o mundo e


consequentemente o sistemas UNIX

com shell script. Estes so apenas os

essenciais!
Programar em shell script uma arte, e como na arte, em shell o limite a
sua

imaginao.

Para

se

aprofundar

nesse

assunto

pra

de

bacana:

http://jneves.wordpress.com/

7.3.10. Utilizando a estrutura if

Abaixo alguns exemplos realmente prticos de como utilizar a estrutura if.


#!/bin/bash
## Primeiro script - Verificando se um usurio existe
#
echo "Digite usurio para consulta:"
read USER
REPLY=$(getent passwd | grep $USER)
if [ -z $REPLY ] ; then
echo "Usurio $USER no existe!"
else
echo "Usurio Existe"
fi

Captulo 7 Shell Script I 93


Ao invs de verifcar se a varivel que recebia o resultado do comando estava
vazia, poderamos ter utilizado o comando test antes da estrutura e checar apenas
seu cdigo de erro:
1

#!/bin/bash

#
3 ## Primeiro script - Verificando se um usurio existe
4 #
5 echo "Digite usurio para consulta:"
6 read USER
7 REPLY=$(getent passwd | grep $USER)
2

test -z $REPLY
10 if [ $? -eq 0 ] ; then
11
echo "Usurio $USER no existe!"
12 else
13
echo "Pagamento em dia"
14 fi
9

Podemos fazer diversas operaes no nosso sistema com o shell. Vamos para
o ltimo exemplo:
#!/bin/bash
#
## segundo script - Verificando se um arquivo est vazio
#
# Programa para gerar uma lista de usurios com seus determinados
homes,
# Exportar para um arquivo com um cabealho com usurio e timestamp
# Fazer check de arquivo existente
echo "Deseja prosseguir com a exportao da lista de usurios? (y/n)"
read OP

Captulo 7 Shell Script I 94


if [
echo
read
test
if [
echo
exit
else
echo
echo
echo
echo
echo
echo

$OP = y ]; then
"Nome da lista"
LISTA
-e $LISTA
$? -eq 0 ]; then
"Arquivo existe, impossvel continuar .... saindo"

"Gerando lista ...."


"Colocando o cabealho ..."
"Lista de usurios xpto" >> $LISTA
"Verificando usurios ..."
"Adicionando a lista ... "
"Emitida por:$USER" >> $LISTA

echo $(date +"Emitido dia %d de %B de %Y as %H:%M") >> $LISTA


echo " " >> $LISTA
getent passwd | cut -d: -f1,6 | sed
s/:/\----------------------------\>/ >> /tmp/$0.list
cat $LISTA /tmp/$0.list > /tmp/$0.final
echo " " > $LISTA
cat /tmp/$0.final > $LISTA
echo "Exibindo lista, sua lista gerada chama $LISTA"
cat $LISTA
echo Done.
fi
else
if [ $OP = n ]; then
exit
else
echo "Opo invlida"
fi
fi

Captulo 7 Shell Script I 95


7.4. Exerccios Tericos
1) O que um programa compilado? O que um compilador?
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

2) D exemplos de linguagens de programao, normalmente compiladas.


_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

3) Como so chamados os programas interpretados? De alguns exemplos de


linguagens tpicas.
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

4) O que necessrio para executar um programa no compilado, isto , um


script?
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

5) Compare as vantagens e desvantagens dos programas compilados e


scripts?
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________

Captulo 7 Shell Script I 96


7.5. Laboratrio
1) Crie um shell script que mostre uma poro de um arquivo, onde os
argumentos seriam:
Nome do arquivo
Nmero da primeira linha mostrada
Nmero da ltima linha mostrada

2) Exemplo de uso, supondo o nome do script miolo:


# miolo /etc/passwd 7 18

3) Como resultado, as linhas 7 a 18(inclusive) do arquivo /etc/passwd


devem ser mostradas.
Dica 1: Use os comandos head e tail.

Voc sabe realizar aritmtica de inteiros na shell?

4) Crie um script com as seguintes caractersticas:


Front-end Simples para o comando date;
O script deve receber uma data no formato dd/mm/yy;
O script deve receber uma hora no formato HH:MM;
Aps receber esses dados o script deve fltrar as informaes e alterar
o horrio do sistema.
Com o scrip j funcional, adicione-o ao $PATH;

Captulo 7 Shell Script I 97

Captulo 8
Shell Script II

8.1. Objetivos

Dar continuidade ao captulo de Shell Script I;

Comando utilizados e estrutura de dados em Shell Scripts;

Operadores em Shell e construo de um script de rede.

Captulo 8 Shell Script II 98


8.2. Introduo Terica
Shell Script nada mais do que um conjunto de comandos diversos do
sistema e estruturas de controle fornecidos pela shell a fm de automatizar tarefas
cotidianas.
Conhecer bem as estruturas de controle da shell muito importante. A
seguir, ser feito um breve resumo do funcionamento de algumas dessas estruturas,
entretanto, sugere-se fortemente a leitura do manual da bash (man bash).
Para que possamos utilizar bem as ferramentas fornecidas pela nossa shell
preferida, precisamos saber como funciona um comando no GNU/Linux. Sendo
assim, o quadro a seguir expressa a anatomia de um comando:

Todo comando em um sistema Unix-like tem uma entrada padro, chamada


StdIn, uma sada padro, chamada StdOut e uma sada de erro, chamada
StdErr, alm de um valor de retorno.
A entrada padro de um comando pode ser, por exemplo, um arquivo que ele
ir processar, como no comando:
# grep bash /etc/passwd

Captulo 8 Shell Script II 99


No qual o arquivo /etc/passwd o arquivo de StdIn. J a sada padro desse
comando a tela, pois nela que o resultado ser apresentado. Caso ocorra algum
erro durante a execuo desse programa uma mensagem ser enviada sada de
erro que, por padro, joga a informao tambm para a tela.
Uma forma de descobrir se o ltimo comando executado terminou com sucesso
ou falhou ao ser executado verifcando o valor que ele retornou e que fca
armazenado na varivel $?. Se o valor retornado foi 0, ento o comando foi
executado com sucesso, caso contrrio, houve algum erro durante a execuo e o
nmero retornado pode ser utilizado para determinar qual erro ocorreu. Entenda que
cada erro tem um cdigo de retorno prprio.

8.2.1. Operadores

Conhecendo como um comando funciona, podemos utilizar operadores a fm de


alterar as entradas e sadas dos comandos. Os operadores mais utilizados so:

; separa um comando do outro;

| transforma o StdOut de um comando em StdIn para outro;

> redireciona a StdOut para um arquivo, criando-o ou sobrescrevendo seu


contedo caso ele exista;

>> redireciona a StdOut para um arquivo adicionando o contedo ao fnal


dele;

< joga o contedo de um arquivo para o StdIn;

2>&1 transforma a StdErr em StdOut;

2> redireciona a StdErr para um arquivo;

|| operador ou, testando o valor da varivel $?;

&& operador e, testando o valor da varivel $?.

Captulo 8 Shell Script II 100


Apenas utilizando os operadores j podemos realizar um grande nmero de
tarefas incluindo tomadas de deciso. Entretanto, h momentos em que necessrio
utilizar uma sintaxe mais estruturada para a tomada de decises, como utilizar um
if.
if [ <expresso> ]; then
comando(s)
else
comando(s)
f
Outra estrutura bastante til quando vrios if forem ser utilizados a
estrutura case.
case <valor> in
<padro1>)
comandos
;;
<padro2>)
comandos
;;
<padro3>)
comandos
;;
*)
comandos
;;
esac
Quando repeties so necessrias podemos utilizar estruturas de looping
como while e for.
while [<expresso> ]; do
comandos
done

Captulo 8 Shell Script II 101


O for pode ser utilizado efetuar um looping no estilo do while ou para
processar uma lista.
for VARIAVEL in <lista> ; do
comandos com a VARIAVEL
done
A lista mencionada no for, pode ser o resultado do processamento de algum
comando executado em outra shell utilizando uma das sintaxes abaixo. A LPI pode
cobrar:
$( comando )
`comando`
As duas formas so equivalentes sendo que os caracteres da segunda so
crases. Em um looping comum realizarmos algum tipo de teste utilizando
variveis de controle que podem ser fornecidas pelo usurio interativamente, sempre
que houver uma linha do tipo:
read VARIAVEL
ou pode ser incrementada ou decrementada utilizando alguma das construes:
let VARIAVEL++
VARIAVEL=$((VARIAVEL+1))

8.3. Prtica Dirigida

1) Determine se a mquina do instrutor est na rede utilizando o


comando ping:
# ping 192.168.200.254
Uma vez que conhecemos os principais comandos, imagine a seguinte situao:
voc quer determinar quais hosts na sua rede esto ativos. Suponha que h 15
mquinas que temos que verifcar.

Captulo 8 Shell Script II 102


Como podemos fazer isso de forma inteligente?
A resposta simples, vamos ping-los!

2) Vamos testar o funcionamento do comando


interromper a execuo do comando ping
combinao de teclas:

ping. Para
utilizamos a

CTRL + c (^c):
# ping 192.168.200.1
# ping 192.168.200.2
Perfeito, funciona! Entretanto queremos automatizar o procedimento e para
isso precisamos que o comando ping pare em algum instante. Sendo assim,
utilizamos os parmetros -c e -w.

3) Utilizando o comando ping, envie dois pacotes icmp tipo echorequest em intervalos de 2 segundos:
# ping -c 2 -w 2 192.168.200.1
Perfeito, o ping est operando de forma que podemos utiliz-lo num looping
para mudar o endereo IP.

4) Elabore um looping utilizando o comando for que envie um


ping aos hosts de 192.168.200.1 a 192.168.200.15:
# for IP in $(seq 1 15); do ping -c 2 -w 2 192.168.200.$IP ; done

5) Estamos quase chegando no resultado desejado, mas antes


queremos que seja impresso na tela se a mquina est UP ou se a
mquina est DOWN. Esse resultado pode ser obtido testando o
valor retornado pelo comando ping:
# for IP in $(seq 1 15); do ping -c 2 -w 2 192.168.200.$IP &&
"192.168.200.$IP - UP" || echo "192.168.200.$IP - DOWN" ; done

echo

Captulo 8 Shell Script II 103


6) A sada do comando ping est atrapalhando a visualizao do
resultado. Sendo assim, podemos redirecion-la para o /dev/null,
o buraco negro do Linux!:
# for IP in $(seq 1 15); do ping -c 2 -w 2 192.168.200.$IP > /dev/null && echo
"192.168.200.$IP - UP" || echo "192.168.200.$IP - DOWN" ; done
timo, objetivo atingido! J que esse um script bastante til e no
queremos ter que refaz-lo toda vez que precisarmos determinar quais hosts esto
ativos, vamos grav-lo em um arquivo.

7) Envie o shell script para um arquivo. No, no necessrio


escrev-lo novamente! Se ele foi o ltimo comando que voc
executou, basta utilizar o comando fc:
# fc
Um editor deve ter se aberto contendo todo o ltimo comando, no caso, o nosso
script. J que agora ele est em um arquivo, podemos elabor-lo mais; mas antes
vamos nos preocupar com a identao do script.

8) Faa a identao do script e adicione o interpretador de


comandos a ser utilizado como a seguir e salve-o com o nome
pingHosts.sh:

#!/bin/bash
for IP in $(seq 1 15); do
ping -c 2 -w 2 192.168.200.$IP > /dev/null &&
echo "192.168.200.$IP - UP" ||
echo "192.168.200.$IP - DOWN"
done

Captulo 8 Shell Script II 104


9) D permisso de execuo ao script e execute-o para test-lo:
# cd /sbin
# chmod u+x pingHosts.sh
# pingHosts.sh

10)
Agora vamos construir um script utilizando o comando
"read":
# cd /sbin
# vim add-users

#!/bin/bash
#Inserindo usurio
echo "Entre com o nome do novo usurio:
read user
#pega a resposta e grava na varivel user
echo " "
echo "Inserindo $user"
adduser $user
echo " "
echo "Adicionando usurio aos grupos ..."
echo " "
gpasswd -a $user audio
gpasswd -a $user video
gpasswd -a $user cdrom
gpasswd -a $user floppy
gpasswd -a $user plugdev
echo " "
echo "Grupos que $user pertence:"
groups $user
echo " "

11)

Atribua as permisses corretas e execute:

# chmod +x add-users
# add-users

Captulo 8 Shell Script II 105


A

fm de tornar o script mais genrico e funcional, faamos algumas

generalizaes como pedir que o usurio entre com o range de IP's a ser pingado,
alm de fornecer uma forma do usurio cancelar a execuo do script de forma
natural.
E a ltima melhoria que poderamos fazer tornar o trecho de cdigo que
realiza o ping em uma funo de forma que, se no futuro desejarmos adicionar
mais cdigos ou melhorar o script isso seja feito de forma organizada.
12)

A verso fnal fcar assim:

# cd /sbin ; vim rede


Primeira parte:
#!/bin/bash
# Grava em /var/run/pingHosts.pid o numero do
# processo associado a este script
echo $$ > /var/run/pingHosts.pid ;
# Define variaveis uteis
REDE="192.168.200"
DATA=$(date +%Y%m%d-%H%M)
Segunda parte:
# Guarda nas variveis HOST[1|2] os valores
# digitados pelos usurios
echo "Digite o primeiro HOST: "
read HOST1
echo "Digite o ultimo HOST: "
read HOST2
clear
Terceira parte:
# Define uma forma elegante de sair do
if [ $HOST2 == "q" ]; then
exit
fi

Captulo 8 Shell Script II 106


Quarta parte:
# Define uma funo chamada pinga
function pinga()
{
for MAQUINA in $( seq $HOST1 $HOST2 ); do
IP="${REDE}.$MAQUINA"
ping -c 2 -w 2 $IP > /dev/null &&
echo -ne "$DATA - $IP - UP\n" ||
echo -ne "$DATA - $IP - DOWN\n"
done
}
Quinta parte:
# Faz a chamada a funo pinga
pinga
exit
Fora do arquivo, vamos atribuir as permisses:
# chmod +x rede
# rede

Lembre-se:
A varivel que defne onde os executveis iram fcar:
# echo $PATH

Captulo 8 Shell Script II 107


8.3.1. SQL

Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL,


uma linguagem para banco de dados relacional.

As provas do LPI iro cobrar comandos bsicos de SQL.

8.3.2. Trabalhando com SQL

1) Para os nossos testes, vamos utilizar o MySql:


# aptitude install mysql-server

2) Ganhando acesso ao Banco de dados:


# mysql -u root -p

3) Visualizando databases:
mysql> show databases;

4) Criando database:
mysql> create database lpi;

5) Utilizando database:
mysql> use lpi;

Captulo 8 Shell Script II 108

6) Veremos agora como criar as tabelas, onde os dados sero


armazenados. A sntese de criao de tabelas do MySQL a
seguinte:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tabela
[(defnio_create,...)] [table_options] [select_statement]
Novamente podemos nos valer do parmetro opcional IF NOT EXISTS para
executarmos o comando sem termos certeza da existncia ou no da tabela. Para
criarmos uma tabela executamos a seguinte parte da sintaxe: CREATE TABLE
nome_tabela. Mas mais comum criarmos a tabela j acompanhada de seus campos
(felds). Vamos criar no nosso exemplo a tabela LPI com os seguintes campos:

id - campo de identifcao;

certifcacao - ttulo do nvel da prova;

prova - tipo de prova;

nota - notas da prova;


A sintaxe completa do comando ser:
mysql> create table lpi (
-> id int(10) unsigned not null auto_increment,
-> certifcacao varchar(80) not null,
-> prova int(4) unsigned not null,
-> nota varchar(80) not null,
-> primary key (id));

Os campos so defnidos da seguinte forma:


nome_campo tipo [ NULL | NOT NULL ] [ DEFAULT valor_padro]
[ AUTO_INCREMENT ]
No campo id por exemplo o tipo int(10) com o modifcador unsigned, ele
no aceita valores nulos (not null) e auto_increment, ou seja, seu valor defnido

Captulo 8 Shell Script II 109


automaticamente, aumentando de 1 (um) em 1 (um) toda vez que um novo registro
adicionado. Para fazer uso desta funcionalidade necessrio adicionar o valor 0 ou
null neste campo.
No campo certifcacao escolhemos o tipo varchar(80) o que signifca que
este campo aceita caracteres alfanumricos com no mximo 80 deles. O campo
tambm no pode ser nulo.

7) Visualizando as tabelas:
mysql> show tables;

8) Estrutura da tabela:
mysql> desc lpi;
Com o retorno do comando desc podemos ver quais os campos da tabela,
qual o tipo dos campos, se aceitam ou no valores nulos, se existe uma chave
primria, e se algum campo possui a propriedade auto_increment.

9) Selecionar todos os registros da tabela lpi onde o campo prova


possui a data no ms de Abril:
mysql> SELECT * FROM lpi WHERE MONTH(prova)='04';

10)

Adicionando usurio:
mysql> GRANT ALL PRIVILEGES ON lpi.* TO curso@localhost
IDENTIFIED BY 'cursolinux' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Atribui todos os privilgios todas as tabelas do banco lpi ao usurio curso,


a partir da mquina localhost, cuja senha cursolinux. O comando FLUSH
PRIVILEGES atualiza as novas alteraes no daemon do MySQL. Caso o usurio
curso no exista, um novo usurio ser criado.

Captulo 8 Shell Script II 110


11)

Saindo do Mysql:

mysql> quit

12)

Faa testes de login com o usurio root e o usurio curso:

# mysql -u root -p
# mysql -u curso -p

8.4. Exerccios Tericos

1) O que difere entre uma shell e outra, por exemplo entre tcsh e bash
ou ksh?
____________________________________________________________________________

2) O que realiza o operador pipe (|)?


____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

Captulo 8 Shell Script II 111


3) Explique o que acontece em cada comando a seguir e por que?
# ls -l || df -h
_____________________________________________________________________
2
# ls -z || df -h
_____________________________________________________________________
3
# ls -l && df -h
_____________________________________________________________________
4
# ls -z && df -h
_____________________________________________________________________
5
# ls -l ; df -h
_____________________________________________________________________
6
# ls -z ; df -h
_____________________________________________________________________
1

4) Qual a diferena entre os dois comandos a seguir?


# echo "+" > /etc/arquivo
____________________________________________________________________
2
# echo "++" >> /etc/arquivo
___________________________________________________________________
1

8.5. Laboratrio
1. Crie um script que ser til para o seu dia-a-dia;

Captulo 8 Shell Script II 112

Captulo 9
Gerenciando Processos

9.1. Objetivos

O que um processo?;

Quais os estados dos processos;

Gerenciar processos;

Inicializando, reiniciando e fnalizando processos em GNU/Linux.

Captulo 9 Gerenciando Processos 113


9.2. Introduo Terica
Quando executamos algum comando, script ou iniciamos algum programa, o
kernel atribui a ele um nmero de processo (PID) e passa a gerenciar a quantidade
de recursos disponibilizados para essa atividade. Como havero sempre diversos
processos rodando simultaneamente na mquina, o kernel tem uma lista de
processos que necessitam de recursos. Como no existe atualmente um sistema
realmente multitarefa, capaz de realizar diversas atividades realmente ao mesmo
tempo, o kernel cria uma fla de processos e a percorre, disponibilizando recursos de
mquina para cada um deles por um determinado perodo de tempo. Quanto melhor
essa distribuio for efetuada melhor ser o desempenho do sistema como um todo e
mais prximo de um sistema multitarefas o sistema se parecer.
A forma como o kernel gerncia os processos bastante inteligente e podemos
sempre visualizar o status do processo num determinado instante, para determinar
se ele est sendo executado neste mesmo instante ou se ele est aguardando tempo
de mquina para ser executado.
O kernel defne o status do processo com uma letra. Pode-se ver esse status
utilizando o comando ps aux", por exemplo:

D - Processo morto (usually IO);

R - Running (sendo executado na fla de processos);

S - Dormindo Interruptamente (aguardando um evento terminar);

T - Parado, por um sinal de controle;

Z - Zombie, terminado mas removido por seu processo pai.

Uma descrio mais detalhada desses status pode ser vista na seo
PROCESS STATE CODES do man ps.

Captulo 9 Gerenciando Processos 114


Junto a essas letras podemos encontrar outros caracteres cujos signifcados
so:

> o processo est rodando com prioridade maior que a padro, tendo sido
defnida pelo kernel;

<

o processo est rodando com prioridade menor que a padro, tendo sido

defnida pelo kernel;

o processo um processo pai, ou seja, possui processos flhos;

o processo um session leader, ou seja, possui processos que

dependem dele;

o processo possui mltiplas threads;

o processo possui pginas travadas na memria;

o processo foi defnido com uma prioridade diferente da padro, tendo

sido defnida pelo usurio.


Apesar do kernel gerenciar os processos, ns podemos enviar sinais a esses
processos requisitando que eles alterem seu comportamento. Para isso utilizamos o
comando kill que envia um sinal de controle a um determinado processo.
Dica LPI:Uma listagem completa dos sinais possveis pode ser vista na
seo STANDARD SIGNALS do man 7 signal. Alguns dos sinais mais
utilizados pelo kill podem ser vistos a seguir:

SIGHUP (1) Term Hangup detected on controlling terminal or


death of controlling process;

SIGKILL (9) Term Kill signal;

SIGTERM (15) Term Termination signal;

SIGCONT (18) Continue if stopped;

SIGSTOP (19) Stop process.

Captulo 9 Gerenciando Processos 115


Passando esses sinais aos processos podemos realizar tarefas como reiniciar o
processo e/ou encerr-lo de forma forada.
O nvel de um processo, pode ir de -20 a 19 em representao
numrica. Quanto maior o nmero, menor sua prioridade, e quanto menor
seu nmero, maior sua prioridade.

9.3. Prtica Dirigida


9.3.1. Formas de Visualizao de Processos

1) Vamos conhecer o diretrio /proc, no qual o kernel disponibiliza


suas informaes:
# ls /proc
Dica LPI: Nesse diretrio existem diversos arquivos com informaes gerais
que o kernel nos fornece, por exemplo os arquivos cpuinfo, ioport,
memstat, interrupts, mounts e swaps. Com o comando free,
conseguimos ver a quantidade de swap e memria utilizadas pelo sistema,
e com o comando uptime, conseguimos ver a quanto tempo a mquina
esta ligada.

2) Escolha um nmero de processo e liste o contedo de seu diretrio:


# ls /proc/<PID>

3) Dentro do diretrio escolhido explore o contedo dos arquivos


status e cmdline:
# cat /proc/<PID>;/status
# cat /proc/<PID>/cmdline

Captulo 9 Gerenciando Processos 116


4) Agora que j vimos os processos em execuo direto na fonte
vamos utilizar um aplicativo para ver as informaes deles:
Todos os processos da mquina:
# ps aux |more
Forma de rvore:
# ps faux |more
Na sexta coluna (NI) temos a prioridade do processo:
# ps lax |more

5) Instale os pacotes abaixo:


# aptitude install psmisc sysvinit-utils htop

6) Uma forma alternativa ao ps faux de visualizar a rvore de


processos utilizar o comando:
# pstree

7) Se quisermos monitorar a execuo dos processos vendo uma tabela


que se atualiza de tempos em tempos podemos utilizar um dos
comandos abaixo:
# top
# htop
Acesse a ajuda do top - tecla h - e veja quais so suas funcionalidades.

8) Determine qual o PID do processo associado ao cron:


# ps aux |grep cron
# pgrep cron
# pidof cron

Captulo 9 Gerenciando Processos 117


9.3.2. Gerenciando Processos

1) Para gerenciar os processos devemos saber quais sinais de controle


podemos passar a eles:
# kill -l

2) Mas, o que so esses sinais todos?


# man 7 signal

3) Vamos matar o processo do cron e seus processos flho:


# kill -9 $PPID-cron
# ps aux | grep cron

4) Dentro da bash que voc est, abra uma nova bash e determine
o PPID dela:
# ps fax
# echo $PPID

5) Tente matar a bash pai da bash na qual voc est executando:


# kill -15 $PPID
# kill -9 $PPID

6) Mate todas as bash que voc estiver utilizando


# killall -9 bash

Captulo 9 Gerenciando Processos 118


9.3.3. (re-)Defnindo a Prioridade dos Processos

1)

Inicialize o agendador de tarefas cron, defnindo nvel de


prioridade 19 para o mesmo:

# nice -n 19 cron

2)

Verifque se o cron est realmente sendo executado com a


prioridade 19.

# ps lax | grep cron

3) Mude a prioridade do cron para -19, com o processo em execuo.


# pgrep cron
# renice -19 $(pgrep cron)

4) Verifque se a prioridade do cron mudou para -19.


# ps lax | grep cron

9.3.4. Planos de Execuo

1) Entre no man da bash e pare o processo teclando ^z (SIGSTOP 19):


# man bash
^z (ctrl+z)

2) Visualize os processos atribudos a esse terminal:


# jobs -l

Captulo 9 Gerenciando Processos 119


3) Visualize os processos atribudos a esse terminal:
# jobs

4) Faa o man bash voltar ao plano de frente (foreground) e depois


saia desse man:
# fg -

5) Inicie a atualizao da base de dados do locate e logo aps


interrompa o processo utilizando CRTL+Z:
# updatedb

6) Visualize os jobs e coloque o updatedb em execuo no plano de


fundo (background) e veja o que acontece:
# jobs
# bg # jobs
Dica LPI: Para executar um comando, um script ou um programa em
Background, s acrescentar o caracter: & ao fnal do mesmo.

7) Para colocar o processo Rodando em Background:


# sleep 3600 &
# ps aux | grep sleep
# jobs -l

Captulo 9 Gerenciando Processos 120


9.4. Exerccios Tericos
1) Quais so os dois comandos que podem mudar a prioridade de um
processo?
____________________________________________________________________________

2) O que fazem os sinais SIGSTOP e SIGCONT?


____________________________________________________________________________
____________________________________________________________________________

3) Quais so os comandos que listam os jobs ativos em um terminal,


interrompem um processo, colocam-no em background e em
foreground, respectivamente?
____________________________________________________________________________
____________________________________________________________________________

4) Qual o sinal equivalente ao ^z (CTRL+z)?


____________________________________________________________________________
____________________________________________________________________________

5) Quais so os nveis de prioridades de um processo, e qual o diretrio


responsvel por armazenar os processos? (Dica: man nice)
____________________________________________________________________________
____________________________________________________________________________

6) Informe a linha de confgurao do diretrio /proc, dentro do arquivo


/etc/fstab:
_____________________________________________________________________________

7) Qual comando utilizo para ver a quantidade de memria RAM, memria


swap, e a quanto tempo a mquina est ligada?
____________________________________________________________________________

Captulo 9 Gerenciando Processos 121


9.5. Laboratrio
1) Acesse o man bash, determine o seu PID e, a partir de outro terminal,
envie um SIGSTOP para ele;
2) No terminal desse man, verifque se o job dele est como "Stopped";
3) Envie o sinal SIGCONT a esse processo para que ele volte a ser
executado;
4) Como esse processo voltou a ser executado em background, faa-o voltar
ao foreground;
5) A partir de outro terminal, verifque qual a prioridade de execuo desse
programa e mude-a para -19;
6) Utilize o htop para gerenciar os processos.

Captulo 9 Gerenciando Processos 122

Captulo 10
Inicializao dos Servios e SYSTEM V

10.1. Objetivos

Nveis de execuo, seguindo o padro System V;

Importncia dele em nosso dia-a-dia;

Iniciar servio a partir do boot;

Parar servio a partir do boot;

A diferena entre Bloco e Inode;

A diferena entre Hard Link e Symbolic Link.

Captulo 10 Inicializao dos Servios e SYSTEM V 123


10.2. Introduo Terica
Para que possamos entender a base de funcionamento do sistema de
inicializao padro System V, precisamos antes conhecer um tipo especial de
arquivos: os links. Um link serve para termos o mesmo arquivo em diversos
lugares, sem a necessidade de cpias. Isso permite que se tenha a maior quantidade
de arquivos em diversos lugares e ocupando menos bits de metadados no sistema de
arquivos. O diretrio /etc/init.d por exemplo, guarda os scripts para iniciar, e
parar determinados servios. E dentro do diretrio rcN.d (a letra N corresponde
ao nvel de inicializao)

fcam os links dos scripts que esto dentro de

/etc/init.d para poder determinar a ordem pela qual os scripts sero executados.
Os links nos permitem fazer modifcaes nos arquivos originais, assim no
precisamos alterar o arquivo original e sua cpia. Ao contrrio da cpia, porque a
cpia no guarda atualizaes em seu arquivo original. Faz sentido?
10.2.1. System V

O padro System V defne, entre outras coisas, como deve ser a inicializao
dos servios do sistema. Ele trabalha com nveis de inicializao, os chamados
runlevels, havendo oito deles que sero descritos posteriormente.
A inicializao do sistema comea com um boot loader no qual o usurio
escolhe qual sistema operacional ser iniciado na mquina. Uma vez escolhido, o
boot loader inicia o carregamento do kernel na memria RAM e passa o controle
do sistema a ele. Uma vez que o kernel j esteja controlando a mquina iniciada a
fase de subir os servios necessrios para a utilizao do sistema. Este ltimo estgio
sobre o que trataremos aqui.

Captulo 10 Inicializao dos Servios e SYSTEM V 124


10.2.2. Nveis de Execuo - System V

Em um sistema padro System V existem oito nveis de inicializao. So eles:

Nvel S - Carrega os servios mnimos essenciais ao sistema;

Nvel 0 - Desliga o sistema;

Nvel 1 - Modo mono usurio;

Nveis 2 a 5 - Multi usurio (modo 2 o padro do Debian);

Nvel 6 Reboot, para reinicializar o sistema;


Os primeiros servios a serem inicializados so aqueles do nvel S que

carregam por exemplo o hostname da mquina, que um servio essencial. Aps


esse nvel ter sido concludo passa-se para o nvel seguinte defnido como padro do
sistema no arquivo /etc/inittab. Que no caso do Debian o nvel 2. Neste nvel
so iniciados os outros servios no essenciais, como servidores de SSH, web e
outros.
O sistema System V consiste em agrupar todos os scripts de inicializao
do sistema em um nico diretrio - /etc/init.d - e criar links simblicos para esses
scripts dentro dos subdiretrios dos runlevels apropriados; cada runlevel
possui o seu diretrio, sendo eles localizados em /etc sobre o nome rc#.d, no qual
o caracter # representa o nmero do runlevel.
Nesses diretrios encontraremos links para os scripts de inicializao e/ou
fnalizao dos servios e o nome desses links indicar se o servio deve ser
iniciado ou fnalizado e qual ser a ordem que ser seguida para isso.
Por exemplo, se um servio comea por S89, como o caso do cron, cujo
nome dentro do rc2.d S89cron, ele ser o servio a ser iniciado aps todos os
servios com nmero menor que o dele sejam iniciados. Portanto ele ser iniciado
aps os servio exim4 cujo nome do link S20exim4. Perceba que S20 menor
que S89, certo?

Captulo 10 Inicializao dos Servios e SYSTEM V 125


No caso de um desses links ter seu nome iniciando pela letra K, esse servio
ser fnalizado quando o runlevel correspondente for iniciado. A letra K, faz
referncia ao comando kill. Dessa forma se existir um link chamado K25ssh no
runlevel 3 (/etc/rc3.d), quando mudarmos para esse runlevel, se o ssh estiver
ativo ele ser o vigsimo quinto a ser desativado.
Um script de inicializao nada mais do que um script que realiza
verifcaes essenciais ao funcionamento do servio em questo. Eles possuem uma
estrutura do tipo case que aceitar os argumentos start|stop|restart dentre
outros. Sendo assim, para iniciar um servio basta executar:
# /etc/init.d/<nome_do_servio> start
E para fnalizar um servio basta executar com o parmetro stop. Assim:
# /etc/init.d/<nome_do_servio> stop

Dica LPI: Para saber o nvel de execuo utilizado pelo sistema, execute:
# runlevel
Mais tarde iremos aprender uma srie de comandos e ferramentas especias
para melhor gerenciamento dos runlevels.

RedHat:
Nvel 0 - desliga o sistema;
Nvel 1 - modo mono usurio;
Nvel 2 - multiusurio, sem NFS;
Nvel 3 - multiusurio, com NFS;
Nvel 4 - no usado;
Nvel 5 - multiusurio com NFS e X;
Nvel 6 - reiniciar o sistema;

Captulo 10 Inicializao dos Servios e SYSTEM V 126


10.3. Prtica Dirigida

10.3.1. Trabalhando com Link Simblico e Hard Link

1) Verifque quantos
arquivos:

inodes

esto

disponveis

no

sistema

de

# df -i

2) Crie um arquivo para testes:


# cd /tmp
# echo "Dados do Arquivo" > arquivo.txt

3) Faa um link simblico desse arquivo:


# ln -s arquivo.txt link.sym

4) Veja os metadados de ambos os arquivos atentando para o nmero


dos respectivos inodes:
# stat arquivo.txt
# stat link.sym

5) Altere o contedo do arquivo link.sym e veja o que acontece no


arquivo.txt:
# echo "Mais dados" >> link.sym
# cat arquivo.txt

Captulo 10 Inicializao dos Servios e SYSTEM V 127


6) Remova o arquivo arquivo.txt e veja o que acontece ao link.sym:
# rm arquivo.txt
# ls -l
# cat link.sym

7) Remova o link quebrado:


# rm link.sym

8) Crie novamente o arquivo.txt e crie um hard link:


# echo "Dados do Arquivo" > arquivo.txt
# ln arquivo.txt hard.lnk

9) Veja os metadados desses arquivos:


# stat arquivo.txt
# stat hard.lnk

10)
Altere o contedo do arquivo hard.lnk e veja o resultado em
arquivo.txt:
# echo "Mais dados" >> hard.lnk
# cat arquivo.txt

11)

Apague o arquivo.txt e veja o resultado em hard.lnk:

# rm arquivo.txt
# cat hard.lnk

Captulo 10 Inicializao dos Servios e SYSTEM V 128

10.3.2. Nveis de Execuo

1) Digite o comando runlevel para saber o nvel de execuo que o


sistema est no momento.
# runlevel

2) V para o nvel 1. Depois confra se o sistema, realmente, est neste


nvel:
# init 1
# runlevel

3) Volte para o nvel 2. Depois confra se o sistema, realmente, est


nele:
# init 2
# runlevel

4) Veja todos os processos que so carregados na inicializao do


sistema, antes do nvel de execuo padro:
# cd /etc/rcS.d
# ls -l

5) Veja todos os processos que so carregados no nvel de execuo


padro.
# cd /etc/rc2.d
# ls -l

Captulo 10 Inicializao dos Servios e SYSTEM V 129


6) Veja onde esto os scripts que controlam os daemons do
sistema.
# cd /etc/init.d
# ls -l

10.3.3. Gerenciando servios de acordo com o padro System V

Dica LPI: A maioria das distribuies Gnu/Linux utiliza o padro System V


para gerenciamento dos Daemons e servios que devem ou no ser
carregados nos diferentes nveis de execuo.

Para uma melhor compreenso, interessante que analisemos o arquivo


/etc/inittab para ver como esse gerenciamento funciona.

1) Vamos entrar no arquivo inittab e fazer algumas alteraes:


# vim /etc/inittab

# runlevel padro
id:2:initdefault:
# Script de configurao/inicializao do sistema que roda durante o
# boot
si::sysinit:/etc/init.d/rcS
# Define o comportamento do single mode - pede a senha do root
~~:S:wait:/sbin/sulogin
# /etc/init.d executa os scripts S e K quando mudando de runlevel#

Captulo 10 Inicializao dos Servios e SYSTEM V 130


#
#
#
#

Runlevel 0 - desliga a mquina


Runlevel 1 - entra em Single Mode
Runlevels 2-5 - multi usurio
Runlevel 6 - reboot

l0:0:wait:/etc/init.d/rc
l1:1:wait:/etc/init.d/rc
l2:2:wait:/etc/init.d/rc
l3:3:wait:/etc/init.d/rc
l4:4:wait:/etc/init.d/rc
l5:5:wait:/etc/init.d/rc
l6:6:wait:/etc/init.d/rc

0
1
2
3
4
5
6

# Normally not reached, but fallthrough in case of emergency.


z6:6:respawn:/sbin/sulogin
# Define o comportamento do CTRL+ALT+DEL
ca:12345:ctrlaltdel:/bin/echo -ne "\nNao uso tecnologia
Proprietria :P\n"
# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let
this work."
# Definem o que fazer quando falta energia ou retorna

Captulo 10 Inicializao dos Servios e SYSTEM V 131


pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop
# chamada ao /sbin/getty para os runlevels.
#
# O campo "id" DEVE ser o mesmo que o ltimo caracter
# do dispositivo (depois de "tty").
#
# Formato:
# <id>:<runlevels>:<action>:<process>
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

2) Validar qualquer alterao feita no arquivo /etc/inittab:


# init q
Teste o CRTL+ALT+DEL da mquina.
10.3.4. Inicializando e Finalizando servios

1) Como feito um script de inicializao?


# vi /etc/init.d/cron

2) Desabilite o servio exim4, para que ele no inicialize no nvel 2 e


depois inicialize:
# cd /etc/rc2.d
# mv S20exim4 K20exim4
# mv K20exim4 S20exim4

Captulo 10 Inicializao dos Servios e SYSTEM V 132


3) Para dar um restart no programa:
# /etc/init.d/networking restart
# invoke-rc.d networking restart

4) Para dar um stop no programa:


# /etc/init.d/networking stop
# invoke-rc.d networking stop

5) Para dar um start no programa:


# /etc/init.d/networking start
# invoke-rc.d networking start

6) Removendo um servio:
# update-rc.d -f cron remove

7) Adicionando um servio:
# update-rc.d cron defaults

8) RedHat:
# chkconfg --list
# chkconfg --level 2345 nfs-common stop

Captulo 10 Inicializao dos Servios e SYSTEM V 133


10.3.5. Gerenciando Servios a partir dos runlevels

1) Gerenciando os servios com Rcconf:


# aptitude install rcconf

2) verifque o runlevel, e os servios ativos:


# runlevel
# ls -l /etc/rc2.d/S*

3) Execute o rcconf, e desabilite os servios exim4 e atd:


# rcconf

4) Verifque se os servios foram desativados:


# ls -l /etc/rc2.d/K*

5) Ative os servios exim4 e atd:


# rcconf

6) Verifque que os servios esto ativados:


# ls -l /etc/rc2.d/S*

Captulo 10 Inicializao dos Servios e SYSTEM V 134


10.4. Exerccios Tericos
1) possvel criar hard link e link simblico de uma partio para outra?
Por que?
____________________________________________________________________________
____________________________________________________________________________

2) Em qual arquivo posso confgurar em o nvel no qual o sistema ir


inicializar?
____________________________________________________________________________
____________________________________________________________________________

3) O que um runlevel? Quais so eles?


____________________________________________________________________________

4) Qual o runlevel padro do Debian ?


____________________________________________________________________________
5) Como fao para descobrir o nvel no qual o sistema est trabalhando?
____________________________________________________________________________

10.5. Laboratrio
1) Instale o pacote sysv-rc-conf;
2) Gerencie o SystemV pelo sysv-rc-conf;
3) Crie um script dentro do /etc/init.d/;
4) Coloque este script para executar no nosso runlevel.

Captulo 10 Inicializao dos Servios e SYSTEM V 135

Captulo 11
Quotas de Disco

11.1. Objetivos

Aplicar quotas para grupo e para usurios;

Ter um sistema de quotas bem confgurado;

Aplicar quotas por bloco e por inode.

Captulo 11 Quotas de Disco 136


11.2. Introduo Terica

A utilizao de um sistema de quotas um assunto to importante quanto


dividir o disco rgido em parties. O sistema de quotas serve para limitarmos a
quantidade de blocos e inodes que um usurio ou grupo pode utilizar em uma
determinada partio.
Imagine um HD com 100Mb de home e 10 usurios; se no utilizarmos um
sistema de quota por nmero de blocos possvel que um dos usurios resolva fazer
o download de um arquivo de 90Mb utilizando 90% do espao disponvel, fazendo
com que os outros usurios tenham que dividir os outros 10Mb livres. Se aplicarmos
um sistema de quotas, podemos defnir que cada usurio utilizar no mximo 10Mb,
de forma que cada um ter o mesmo espao disponvel, tornando a diviso justa.
Em um cenrio como este, resolvemos parte do problema, pois o usurio
capaz de criar um nmero, sufcientemente grande de arquivos com tamanho zero de
forma que ele no ocupe os 10Mb atribudos a ele mas estoure o nmero mximo de
inodes que o sistema de arquivos dispe, impossibilitando assim, que outro usurio
grave qualquer coisa neste sistema de arquivos, mesmo que haja espao livre.
A fm de solucionar esses problemas, utilizamos um sistema de quotas de disco
que pode ser de dois tipos: quota verso 1 - para kernel da srie 2.4 e quota verso 3
para o Debian Lenny, cuja verso do kernel maior e portanto ser a que
utilizaremos aqui.
O sistema de quotas uma funcionalidade do fle system e do kernel, sendo
assim, ambos tem que ser capaz de suport-lo. Uma vez que o fle system que
suporta quotas est funcionando, devemos adicionar os parmetros de montagem,
usrquota e grpquota ao fle system que utilizaremos com esse sistema. Isso
feito no arquivo /etc/fstab. Alm disso, temos que criar, na raiz desses fle
systems, os arquivos de controle, chamados aquota.user e aquota.group.

Captulo 11 Quotas de Disco 137


Dica LPI: No esquecer dos parmetros grpquota e usrquota dentro do
/etc/fstab.

Uma vez criada essa estrutura, basta editar os arquivos de controle de quotas e
distribuir as quantidades de forma apropriada.

11.3. Prtica Dirigida


1) Instale o pacote de quota.
# aptitude install quota

2) RedHat:
# yum install quota

3) Verifque se o /home est pronto para a aplicao do sistema de


quotas:
# mount

4) Edite o arquivo /etc/fstab e inclua as opes de quota por usurio


e por grupo em /home:
/dev/sda3

/home

ext3 defaults,usrquota,grpquota

5) RedHat:
LABEL=/home /homeext3 defaults,usrquota,grpquota

Captulo 11 Quotas de Disco 138


6) Remonte o /home para que as alteraes sejam efetuadas:
# mount -o remount /home

7) Verifque se as opes de quota foram aplicadas:


# mount

8) Crie os arquivos de quota na raiz da partio que receber o


sistema de quotas:
# quotacheck -cug /home

9) Certifque-se de que os arquivos de controle de quota foram criados:


# ls -l /home

10)
Verifque se o sistema de quota est ativo, listando as suas
informaes:
# repquota -v -a
Obs.: possvel que o sistema de quotas no seja ativado corretamente at
o prximo reboot.

11.3.1. Quotas por Usurio

Vamos defnir qual a quantidade de recursos do HD que cada usurio poder


utilizar. Vamos impor que o usurio apolo poder utilizar at 50Mb com um limite
mximo de 60Mb ou 100 arquivos com o limite mximo de 110 arquivos.

Captulo 11 Quotas de Disco 139


1) Criando usurio apolo:
# adduser apolo

2) Editando a quota do usurio apolo:


# edquota -u apolo

3) Dentro do edquota, faremos as confguraes. Altere o arquivo


para que fque como mostrado a seguir:
Disk quotas for user apolo (uid 1001):
Filesystem blocks
soft
hard
inodes
/dev/hda8
0
50000
60000
0
^----------NO MEXER----------^

soft
100

hard
110

4) Veja se o limite j est aplicado:


# repquota -v -a
J que fzemos a gentileza de determinar que o usurio poder usar 10Mb ou
10 arquivos a mais caso ele estoure a sua quota, devemos determinar tambm por
quanto tempo ele poder usar esse espao a mais.

5) Determine que o usurio ter 7 dias de grace period:


# edquota -t

6) Consulte a quota do usurio apolo.


# quota -u apolo

Captulo 11 Quotas de Disco 140


7) Efetue login em outro terminal utilizando o usurio apolo e vamos
rodar o script lota-disco.
$ echo teste > a; while true; do cat a >> b; cat b >> a; done

8) Depois que a quota estourou, volte ao terminal do root, examine o


status da quota e veja se a quota do usurio apolo est estourada
por tamanho de arquivo:
# repquota -v -a

9) Voltando ao terminal logado, como usurio apolo, vamos apagar


os arquivos criados:
$ rm a b

10)
Aps apag-los, vamos executar o script gera-arquivos para
estourar o nmero de inodes permitidos:
$ I=1; while true ; do touch arq$I; let I++; done

11)
Depois da quota estourar, volte ao terminal do root e
examine o status da quota:
# repquota -v -a

12)
Defna quota por grupo para o grupo audio utilizando os
mesmos valores que defnimos para o usurio apolo:
# edquota -g audio

13)

Verifque o status da quota por grupo:

# repquota -v -a -g

Captulo 11 Quotas de Disco 141


14)
Verifque os detalhes mais avanados sobre o uso das quotas
nas parties.
# quotastats

15)

Desative a quota da partio.

# quotaof -v /home

16)
Faa uma checagem na quota da partio para ver se est tudo
OK.
# quotacheck -vug /home

17)

Ative a quota da partio novamente.

# quotaon -v /home

18)
Perceba que estamos utilizando EXT3, por padro sistemas de
quotas suporta apenas, fle systems formatados com EXT3. Mas ao
recompilar o Kernel, podemos adicionar novos sistemas de
arquivos.
# cat /etc/fstab

Captulo 11 Quotas de Disco 142


11.4. Exerccios Tericos

1) Defnindo quota por tamanho de arquivo possvel que um usurio estoure


a capacidade do fle system?
____________________________________________________________________________
____________________________________________________________________________

2) Qual a diferena entre quota por blocos e por inodes?


____________________________________________________________________________

3) O que o comando edquota -p faz? (Dica: consulte o man)


____________________________________________________________________________

4) Para que serve o arquivo /etc/adduser.conf?


____________________________________________________________________________

5) Com qual comando eu verifco detalhes das quotas: quotastats ou


quotastatus?
____________________________________________________________________________

6) Qual comando gera essa sada: "ii quota 3.16-7 implementation of the disk
quota system"?
____________________________________________________________________________

7) Aplicando quotas por usurios, possvel que um usurio estoure outras


parties?
____________________________________________________________________________
____________________________________________________________________________

Captulo 11 Quotas de Disco 143


8) Quais os problemas possveis caso no se utilize o sistema de quotas?
____________________________________________________________________________
____________________________________________________________________________

11.5. Laboratrio
1.

Defna que a partio /home utilizar apenas quota por grupo e ative o
sistema de quotas.

2. Defna quotas nos grupos fnanceiro, vendas e diretoria para que eles
usem at 150Mb ou 1500 arquivos. Se for necessrio, crie esses grupos.

Captulo 11 Quotas de Disco 144

Captulo 12
Trabalhando com Mdulos

12.1. Objetivos

Devemos saber identifcar os mdulos do nosso hardware, e confgur-los


corretamente;

Tambm devemos saber a diferena entre um mdulo e um driver.

Captulo 12 Trabalhando com Mdulos 145


12.2. Introduo Terica
Quando instalamos um Debian, RedHat, Suse, Slackware, entre outras
distribuies, estamos utilizando um kernel que foi compilado pelos desenvolvedores
da distribuio.
O kernel que vem por default em uma distribuio, deve ser capaz de rodar em
praticamente qualquer PC e dar suporte a quaisquer tipos de recursos que o usurio
pretenda utilizar, o desenvolvedor compila um kernel que fornece todas as
funcionalidades bsicas e, em separado, compila pedaos de cdigo que do suporte
a funcionalidades mais especfcas. Esses pedaos de cdigo so os chamados
mdulos. Dessa forma, quando o sistema carregado, um kernel bsico se coloca na
memria e passa a controlar a mquina. Neste ponto so verifcadas outras
funcionalidades que se espera que o kernel d suporte, como por exemplo utilizar
uma partio XFS. Neste momento, se o kernel no possuir suporte nativo a esse fle
system ele ir verifcar se o mdulo que d suporte a ele foi compilado e se est
disponvel. Se esse mdulo for encontrado, ele ser carregado expandindo as
funcionalidades do kernel.

Captulo 12 Trabalhando com Mdulos 146


Em um sistema como esse, haver diversos mdulos carregados e um nmero
maior ainda que no estar sendo utilizado, mas disponvel.
Os mdulos disponveis, em geral, encontram-se no diretrio /lib/modules, e
os mdulos que esto carregados podem ser visualizados com o comando lsmod.
Ao mesmo tempo que a capacidade de subir mdulos uma vantagem do ponto
de vista que apenas os mdulos realmente necessrios sero carregados, h a
desvantagem de fragmentao do kernel na memria.

12.3. Prtica Dirigida

1) Determine qual verso do kernel est sendo utilizada:


# uname -r

Dica LPI: O comando que exibe o Kernel em uso, e suas opes : uname -a

2) Determine quais mdulos esto carregados:


# lsmod
# cat /proc/modules

3) Determine quais mdulos esto compilados (disponveis):


# modprobe -l

4) Determine quais mdulos esto compilados explorando o diretrio


/lib/modules:
# fnd /lib/modules/$(uname -r) -name '*ko'

Captulo 12 Trabalhando com Mdulos 147


5) Determine o nmero de mdulos carregados e o nmero de mdulos
disponveis e complete a tabela tab:modulos:
# lsmod |grep -v ^"Module" |wc -l
# modprobe -l |wc -l

Verso do Kernel

Mdulos Ativos

Mdulos Disponveis

6) Determine para que serve o mdulo chamado ext3:


# modinfo ext3

7) Determine quais mdulos so utilizados pelo dispositivo de cdrom:


# lsmod |grep cdrom

8) Tente remover o mdulo cdrom utilizando o rmmod:


# rmmod cdrom

9) Remova o mdulo ide_cd_mod com o comando rmmod, j que


ele est utilizando o mdulo cdrom:
# rmmod ide_cd_mod

Captulo 12 Trabalhando com Mdulos 148


10)
Verifque se o mdulo ide_cd_mod foi removido e veja se o
cdrom ainda est carregado:
# lsmod |grep ide_cd_mod
# lsmod |grep cdrom

11)
J que o mdulo cdrom no est mais sendo utilizado
podemos remov-lo:
# rmmod cdrom
# lsmod |grep cdrom

12)
Remova o mdulo cdrom da memria utilizando o comando
modprobe -r :
# modprobe -r cdrom

13)
Remova
cdrom:

ide_cd_mod

para

que

possamos

remover

# modprobe -r ide_cd_mod

14)

Verifque se o ide_cd_mod foi removido e que o cdrom...

# lsmod |grep ide_cd_mod


# lsmod |grep cdrom

15)

J que removemos o suporte ao CD-ROM, vamos restaur-lo:

# insmod $( modprobe -l cdrom )


# insmod $( modprobe -l ide_cd_mod )
# lsmod |grep cdrom

Captulo 12 Trabalhando com Mdulos 149


16)
Remova o suporte ao CD-ROM para testarmos a forma mais
fcil!
# modprobe -r ide_cd_mod
# lsmod |grep cdrom
# modprobe cdrom
# lsmod |grep cdrom

17)

Continue o teste:

# rmmod cdrom
# modprobe ide_cd_mod
# lsmod |grep cdrom

Dica LPI: Leitura Sugerida, modprobe e lsmod. Mdulos com peso3.

18)
Como o modprobe sabe quais mdulos dependem de quais
mdulos?
# cd /lib/modules/$(uname -r)
# ls -l
# vi modules.dep

19)
No acredita que o modprobe usa esse arquivo? Remova-o e
tente utiliz-lo:
# rm /lib/modules/$(uname -r)/modules.dep
# modprobe -r ide_cd_mod

20)
No funcionou? :) E agora? Construa o arquivo modules.dep
novamente:
# depmod
# modprobe -r ide_cd

Captulo 12 Trabalhando com Mdulos 150


12.3.1. Identifcando Dispositivos

1) Identifque qual a placa de rede do seu computador:


# lspci | grep -i eth

2) Considerando que uma delas uma RealTek 8139C, tente


determinar qual o mdulo que ela utiliza:
# modprobe -l |grep -i realtek
# modprobe -l |grep -i real
# modprobe -l |grep -i tek
# modprobe -l |grep 8139
# modinfo 8139too
# lsmod |grep 8139

No h uma regra geral para determinar qual o mdulo que fornece


suporte a um determinado hardware. As formas mais fceis so utilizar um
kernel genrico e tentar descobrir qual o mdulo que utilizado por meio
dos comandos lsmod e modinfo, procurar na rvore do kernel, ou
procurar nos mecanismos de busca na Internet.

3) Instalando o Assistente de Mdulos:


# aptitude install module-assistant

4) Executando o Assistente de mdulos:


# m-a

Captulo 12 Trabalhando com Mdulos 151


5) Instale o pacote ethtool:
# aptitude install ethtool

6) Para descobrir a placa que est operando:


# mii-tool

7) Para ver a velocidade de sua placa:


# ethtool eth0

8) Para aumentar a velocidade de sua placa:


# ethtool -s eth0 speed $velocidade

12.4. Exerccios Tericos


1) Qual a diferena entre lsmod e modprobe -l?
____________________________________________________________________________
____________________________________________________________________________

2)

Qual a diferena entre insmod e modprobe -i?


____________________________________________________________________________
____________________________________________________________________________

3) Qual a diferena entre rmmod e modprobe -r?


____________________________________________________________________________
____________________________________________________________________________

Captulo 12 Trabalhando com Mdulos 152


4) Considerando a seguinte sada do comando lsmod:
usbcore

108544

uhci_hcd

O que essa linha informa?


_____________________________________________________________________________
____________________________________________________________________________

5) O que contm o arquivo modules.dep?


____________________________________________________________________________
____________________________________________________________________________

12.5. Laboratrio
1) Descubra qual o mdulo que est sendo usado para a placa de rede do
computador que voc est utilizando.
2) Sem utilizar os comandos modprobe ou lsmod, determine o nmero de
mdulos ativos e mdulos disponveis no sistema.
3) Determine qual o mdulo que est sendo utilizado pela placa de som do
computador que voc est utilizando.

Captulo 12 Trabalhando com Mdulos 153

Captulo 13
Conceitos de Redes, TCP e Servios de
Rede

13.1. Objetivos

Conhecer como o Modelo OSI funciona em todas as suas camadas;

Trabalhar com endereos IP's e aprender como dividir uma rede logicamente
utilizando os clculos de de endereos IP;

Mostrar as divises entre os servios de Rede;

Classifcao entre: [x]inetd, portmap ou stand alone;

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 154


13.2. Introduo Terica
13.2.1. Modelo OSI Open System Interconnection
A ISO foi uma das primeiras organizaes a defnir formalmente um mtodo
comum de conectar computadores. Sua arquitetura chamada OSI (Open Systems
Interconnection), Camadas OSI ou Interconexo de Sistemas Abertos.
Esta arquitetura um modelo que divide as redes de computadores em sete
camadas, de forma a se obter camadas de abstrao. Cada protocolo implementa
uma funcionalidade assinalada a uma determinada camada.
A ISO costuma trabalhar em conjunto com outra organizao, a ITU International Telecommunications Union, publicando uma srie de especifcaes de
protocolos baseados na arquitetura OSI. Estas sries so conhecidas como 'X ponto',
por causa do nome dos protocolos - X.25, X.500, etc.
No conjunto de protocolos, o TCP/IP um conjunto de protocolos de
comunicao entre computadores em rede. Seu nome vem dos dois protocolos mais
importantes do conjunto: o TCP - Transmission Control Protocol (Protocolo de
Controle de Transmisso) e o IP - Internet Protocol (Protocolo de Interconexo).
O conjunto de protocolos pode ser visto como um modelo de camadas, onde
cada camada responsvel por um grupo de tarefas, fornecendo um conjunto de
servios bem defnidos para o protocolo da camada superior. As camadas mais altas
esto logicamente mais perto do usurio, a chamada camada de aplicao, e lidam
com dados mais abstratos, confando em protocolos de camadas mais baixas para
tarefas de menor nvel de abstrao.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 155


13.2.2. Camadas de abstrao

13.2.3. Verso 4 do protocolo IP

Um endereo IP, seguindo o padro IPV4 descrito na RFC 791 de 1981,


formado por quatro octetos de 8bits, o que corresponde a um endereo de 32bits.
Para exemplifcar, considere o endereo IP 192.168.0.32, uma vez que computadores
entendem apenas nmeros binrios, esse mesmo endereo pode ser representando,
em sua forma binria por:
11000000.10101000.00000000.00100000 = 8bits X 4 = 32 bits
Sendo assim, podemos concluir que um endereo IP formado por 4 bytes,
sendo 1 byte por octeto. No exemplo acima, o nmero decimal 192 est no que
chamamos de primeiro octeto, o nmero 168 est no segundo e os nmeros 0 e 32,
esto nos terceiro e quarto octetos, respectivamente.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 156


Para que possamos prosseguir com as explicaes devemos, neste ponto, fazer
uma breve reviso de nmeros binrios.

13.2.4. Notao binria e decimal

Voc deve estar lembrado que 1 byte = 8 bits, ou seja, 1 byte corresponde
combinao de 8 dgitos, podendo, cada dgito ter o valor 0 ou 1. Alm disso, o bit
mais direita chamado de bit menos signifcativo e o mais esquerda chamado
de bit mais signifcativo.
Sendo assim, como podemos converter um nmero decimal, digamos 176, para
a sua representao binria?
De fato, bastante simples, basta realizar sua diviso, inteira, por 2 at que
no possamos mais dividi-lo, ou seja, o quociente da diviso ser igual a zero. Veja a
fgura.
Aproveite a fgura, para treinar. Determine a representao binria do nmero
183, completando a fgura:

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 157


Como estamos realizando uma diviso apenas com nmeros inteiros, o resto da
diviso ir fornecer a representao binria do nmero em questo. Basta pegarmos
o resto de cada diviso e escrev-los do ltimo para o primeiro, seguindo a ordem da
seta na fgura fg:binario. Com isso, conclumos que o nmero 176, em sua
representao decimal, pode ser escrito como 10110000 em binrio.
Agora que aprendemos a converter um nmero representado na base decimal,
para ele mesmo na base binria, como fazemos o caminho inverso?
Considere o nmero 10011101, para convert-lo para a notao decimal
devemos escrev-lo na base 2^n, sendo n o nmero do bit, iniciando a contagem
em 0. Veja a tabela tab:base2. Nela, encontramos o valor para cada n.

Bit n

2^n

2^7

2^6

2^5

2^4

2^3

2^2

2^1

2^0

Valor

128

64

32

16

Sendo assim, veja o exemplo da fgura fg:decimal. Para converter um nmero


binrio em decimal, vamos considerar bit a bit, iniciando pelo bit menos signifcativo.
A converso realizada multiplicando o primeiro bit por 2^0 e somando ao segundo
bit multiplicado por 2^1 e assim por diante at chegar soma do bit mais
signifcativo multiplicado por 2^7.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 158


No exemplo da fgura fg:decimal, foi realizada a converso do binrio 10011101
para seu valor decimal, ou seja, 153. Agora sua vez, pode treinar o algoritmo de
converso usando para isso a fgura:

13.2.5. Endereamento IP

Classe

Valor do primeiro octeto

Especifcao dos octetos

1 at 126

rede.HOST.HOST.HOST

128 at 192

rede.rede.HOST.HOST

129 at 223

rede.rede.rede.HOST

224 at 239

240 at 255

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 159


Os valores 0 no 1 octeto no utilizado pois foi reservado para designar
redes. Endereos da rede 127.0.0.0 no so roteados na internet pois so
reservados s interfaces de "loopback".

13.2.6. Criando sub-redes

rede: 172.16.0.0
mscara: 255.255.0.0

Representando a mscara de sub-rede em sua forma binria teremos


11111111.11111111.00000000.00000000

Se pegarmos os 3 bits do terceiro octeto para efetuar a diviso em sub-redes,


teremos a seguinte mscara de sub-rede:
255.255.224.0 = 11111111.11111111.11100000.00000000

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 160


Alm disso, para obter as redes possveis, basta pegarmos as combinaes
possveis dos trs bits mais importantes da seguinte forma:
11111111.11111111.____00000.00000000
^^^
000 = 0
001 = 32
010 = 64
011 = 96
100 = 128
101 = 160
110 = 192
111 = 224
Sendo assim, as redes possveis so mostradas na tabela tab:subrede.
Rede

De

At

Broadcast

172.16.0.0

172.16.0.1

172.16.31.254

172.16.31.255

172.16.32.0

172.16.32.1

172.16.63.254

172.16.63.255

172.16.64.0

172.16.64.1

172.16.95.254

172.16.95.255

172.16.96.0

172.16.96.1

172.16.127.254

172.16.127.255

172.16.128.0

172.16.128.1

172.16.159.254

172.16.159.191

172.16.160.0

172.16.160.1

172.16.191.254

172.16.191.255

172.16.192.0

172.16.192.1

172.16.223.254

172.16.223.255

172.16.224.0

172.16.224.1

172.16.255.254

172.16.255.255

Logo, o valor da mscara para todas as sub-redes 255.255.224.0 ou, no


formato binrio, escrevemos 11111111.11111111.11100000.00000000. Os bits em 1
da mscara so utilizados para enderear redes e os bits em 0 para enderear
hosts.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 161


13.2.7. Servios de Rede

Os servios tipo [x]inetd so aqueles que dependem do comumente chamado


super daemon de rede inetd -- InterNET daemon -- sendo o xinetd -- eXtended
InterNET daemon uma implementao do inetd com alguns recursos a mais como
controle de acesso, capacidade de fazer logs e determinar horrios para que o
servio esteja disponvel.
Esse daemon fca escutando nas portas que os servios controlados por ele
trabalham e carregam o programa apropriado quando chega uma requisio na porta
determinada. Exemplos de servios tipo inetd so o telnet, FTP, POP3, etc.
Ao longo do tempo, alguns dos servios que eram controlados pelo inetd passaram
a operar como stand alone a fm de contornar problemas associados ao inetd.
Os servios tipo portmap so aqueles que no possuem uma porta especfca
para operar, como por exemplo o NIS e o NFS. Estes servios enviam uma
chamada RPC - Remote Procedure Call para a mquina servidora, causando a
execuo de uma sub-rotina determinada. Dessa forma, quando um cliente faz a
requisio de NFS a um servidor, ele est enviando um RPC do tipo NFS e que
quando chegar no servidor, ser tratada como tal, carregando a rotina apropriada
para enviar a resposta ao cliente.
Servios tipo stand alone so aqueles em que cada tipo de servidor possui
seu daemon especfco. Esta forma de trabalho preferida hoje em dia pois
possibilita um maior controle sobre cada servio em separado. Servios que operam
dessa forma so, SSH, HTTPD, FTP, POP3 dentre outros. Perceba que
atualmente os protocolos FTP e POP3 j possuem seus prprios daemons
possibilitando sua utilizao desvinculada do [x]inetd.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 162


13.2.8. Telnet

TELNET ou TELetype NETwork um protocolo que pode ser utilizado tanto


localmente quanto na internet. Desenvolvido em 1969, considerado inseguro e seu
uso altamente desencorajado. Quando nos referimos a telnet podemos estar
falando tanto do protocolo e o servidor que o implementa quanto no programa cliente
utilizado para acessar esse tipo de servidor. Por ser um protocolo extremamente
antigo, est disponvel em praticamente todos os sistemas operacionais. Inclui-se a
esta lista muitos SOs de equipamentos de rede, como routers, utilizados como
ferramenta para confgurao dos mesmos.
Atualmente o telnet ainda bastante utilizado para realizar confguraes em
equipamentos de rede especfcos, mas tambm para testar o funcionamento de
servios como um servidor de POP3, eliminando a necessidade de programas
cliente.
O TELNET um protocolo cliente-servidor baseado em uma conexo orientada,
utilizando tipicamente a porta 23/TCP. As trs principais razes para a no utilizao
do TELNET so:

Ao longo dos anos tm sido descobertas diversas vulnerabilidades em suas


implementaes e, provavelmente, h muitas outras que ainda no foram
determinadas;

Por padro, os dados enviados no so criptografados, incluindo usurios e


senhas;

No

possui

esquema

de

autenticao

que

possibilite

garantir

que

comunicao est se dando entre partes confveis, facilitando ataques do tipo


man-in-the-middle.
Essas falhas tm feito cair a utilizao do protocolo TELNET em favor do
SSH, desde sua criao em 1995.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 163


13.2.9. Servios de Rede: LPI

Dica LPI: Fundamentos de Rede


Esses Tpicos so assuntos da prova 102, no +4Linux. Servios de Redes.

Dica LPI: Servios de rede, confgurao do inetd e xinetd.


Outros Tpicos que sero abordados durante o treinamento 452, so cobrados
de forma bsica no exame 102:

Operar e realizar a Confgurao bsica do MTA;

Operar e realizar a Confgurao bsica do Apache;

Gerenciar corretamente os Daemonds do NFS e SAMBA;

Preparar e Confgurar servios de DNS bsico.

13.3. Prtica Dirigida


13.3.1. Netstat

O comando netstat exibe o status das conexes, tabelas de rotas, estatsticas da


interface, conexes mascaradas e participaes em multicast. Vamos ver alguns
exemplos do comando.
1) O comando netstat sem parmetros traduz os IP's para os nomes,
por isso, desse modo, ele demora bastante para gerar um resultado.
Resolve-se esse problema usando a opo -n:
# netstat -n

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 164


2) As opes -t e -l exibem as conexes TCP e as portas disponveis
respectivamente para cada conexo com a sua mquina:
# netstat -nlt

3) A opo -u exibe as conexes UDP:


# netstat -nlu

4) Para formar um comando completo para analise de conexes de


rede, podemos usar um conjunto de parmetros:
# netstat -nltup
Neste caso a opo -p nos mostrar o nmero do processo e o nome do
programa responsvel.

13.3.2. ARP - Address Resolution Protocol

O comando arp exibe a tabela de resoluo de MAC das mquinas do segmento


de rede.
# arp -n

13.3.3. Confgurando o roteamento esttico

1) Confgurao das duas interfaces do roteador:


# ifconfg eth0 192.168.0.1 netmask 255.255.255.128 broadcast 192.168.0.127
# ifconfg eth1 192.168.0.129 netmask 255.255.255.128 broadcast 192.168.0.255

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 165


2) Caso se tenha apenas uma interface, podemos usar o IP virtual e
confgurar dois endereos para essa interface, conforme exemplo
abaixo:
# ifconfg eth0 192.168.0.1 netmask 255.255.255.128 broadcast 192.168.0.127
#

ifconfg

eth0:0

192.168.0.129

netmask

255.255.255.128

broadcast

192.168.0.255

3) Consulte se seu sistema permite repasse entre as interfaces de


rede. Para isso, o valor da diretriz ip_forward deve ser 1:
# sysctl -a | grep ip_forward

4) E tambm ser aceito ping em broadcast. Para nosso teste, o


valor da diretriz icmp_echo_ignore_broadcast deve ser 0:
# sysctl -a | grep icmp_echo_ignore_broadcast

5) Podemos alterar em tempo de execuo caso seja necessrio:


# sysctl -w net.ipv4.ip_forward=1
# sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=0

6) Execute o comando ping para o endereo de broadcast:


# ping -b 192.168.0.255
ou
# ping -b 255.255.255.255

7) Use o comando arp para identifcar o endereo MAC dos hosts


que esto ativos em sua rede:
# arp -an

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 166


8) Habilitando o forward (repasse) de pacotes de forma que fque
permanente:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# cat /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

9) Outra forma interessante


/etc/sysctl.conf:

inserir

uma

entrada

no

arquivo

# sysctl -p /etc/sysctl.conf

13.3.4. Confgurando as estaes nas sub-redes

1) Confgurando um host na sub-rede 192.168.0.0/25:


# ifconfg eth0 192.168.0.2 netmask 255.255.255.128 broadcast 192.168.0.127

2) Para a rede 192.168.0.0/25, o gateway deve ser 192.168.0.1:


# route add default gw 192.168.0.1 ; route -n ; netstat -nltup

3) Confgurando um host na sub-rede 192.168.0.128/25:


# ifconfg eth0 192.168.0.129 netmask 255.255.255.128 broadcast 192.168.0.255

4) Para a rede 192.168.0.128/25, o gateway deve ser 192.168.0.129:


# route add default gw 192.168.0.129
# route -n
# netstat -atun

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 167


13.3.5. Exerccios de Redes

1) Instale o pacote do xorg para fazer os exerccios abaixo.


# aptitude install xserver-xorg gdm gnome
# gdm

2) Instale os pacotes wireshark e nmap, para fazermos testes com


o protocolo TCP:
# aptitude install wireshark nmap

Wireshark, antigo Ethereal, um programa que analisa o trfego de rede, e o


organiza por protocolos. As funcionalidades do Wireshark so parecidas com o
tcpdump mas com uma interface GUI, com mais informao e com a possibilidade
da utilizao de fltros. ento possvel controlar o trfego de uma rede e saber tudo
o que entra e sai do computador, em diferentes protocolos.
Tambm possvel controlar o trfego de um determinado dispositivo de rede
numa mquina que pode ter um ou mais desses dispositivos. se voc estiver numa
rede local, com micros ligados atravs de um hub ou switch, outro usurio pode
usar o Wireshark para capturar todas as suas transmisses.

Dica LPI: Fundamentos de Rede. O Wireshark ser cobrado, de agora em


diante, pelos exames da LPI, e o entendimento dos protocolos tambm.

3) Na sua parte grfca, inicie o wireshark:


# gdm
#wireshark

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 168


4) Com o Wireshark ligado, faa testes e veja os pacotes e suas
fags pela rede:
# nmap 192.168.200.254
# nmap -sV 192.168.200.254
# nmap -sV -O 192.168.200.254

13.3.6. Confgurando o TELNET

1) Vamos instalar o servidor e cliente de TELNET:


# aptitude install telnet telnetd openbsd-inetd

RedHat: A confgurao de um servidor telnet, na realidade feita


confgurando o [x]inetd. No Debian o inetd utilizado, em sistemas
como RedHat o sistema utilizado o xinetd.

2) Verifque que a linha de confgurao do TELNET no est


comentada no arquivo de confgurao do inetd:
# vi /etc/inetd.conf

telnet stream tcp nowait telnetd /usr/bin/tcpd /usr/sbin/in.telnetd


Veja, a seguir, uma descrio das opes acima:

telnet - nome do servio, como est registrado no arquivo /etc/services;

stream - tipo de socket de rede usado pelo protocolo. Possveis valores so


stream, dgram, raw, rdm e seqpacket;

tcp - tipo de protocolo utilizado. Deve ser um protocolo que conste no arquivo
/etc/protocols;

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 169

nowait/wait - (aguardar/no aguardar) signifcativo para tipos de soquete de


datagrama (dgram). Outros tipos de soquete usam o valor nowait;

telnetd - usurio e grupo que iro executar o processo de servidor;

/usr/sbin/tcpd - tcpd o executvel para o programa TCP Wrappers;

/usr/sbin/in.telnetd - o programa que ir lidar com as informaes da


conexo.

Se a linha do TELNET no estiver comentada, signifca que o servio j est


habilitado.

3) Para garantir que o TELNET seja iniciado, vamos reiniciar o


daemon do inetd:
# /etc/init.d/openbsd-inetd stop
# /etc/init.d/openbsd-inetd start
Para poderemos saber se o TELNET est ativo, precisamos saber em qual
porta ele opera. Sendo assim,

4) Consulte a lista de servios a fm de determinar a porta em que o


TELNET trabalha:
grep telnet /etc/services

5) Sabendo que ele utiliza a porta 23, verifque a condio dela:


# netstat -ltan |grep 23
# fuser -v 23/tcp
Uma vez que todos os comandos do check list de conexo foram bem
sucedidos, s fazer um teste no servidor telnet do colega.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 170


6) Conecte-se ao servidor do colega, utilizando o TELNET e o usurio
apolo:
# telnet IP-do-AMIGO

7) Crie, via TELNET, na mquina do colega, um arquivo em /tmp


cujo nome seja o seu nome:
# touch /tmp/;lt;seu_nome;gt;

8) Se desconecte da mquina do colega:


# logout

9) Tente uma nova conexo mquina do colega, mas dessa vez utilize
usurio root:
# telnet IP-do-AMIGO

Para mais informaes a respeito do INETD:


Debian: man DebianNet

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 171


13.3.7. xinetd

RedHat:
Em um sistema que utiliza o xinetd haver um arquivo de confgurao para
cada tipo de servio e eles estaro no subdiretrio /etc/xinetd.d.
/etc/xinetd.d
\_ telnetd
\_ cvspserver
\_ samba

O contedo do arquivo do TELNET, nessa estrutura, o seguinte:


service telnet
{
flags = REUSE
socket_type = stream
wait= no
user= root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable= no
}

13.4. Exerccios Tericos


1) O comando ping usa o protocolo ICMP para medir o tempo e a
velocidade dos pacotes. Qual o outro protocolo que o ping aciona antes
de usar o ICMP?
____________________________________________________________________________
____________________________________________________________________________

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 172


2) Cite dois protocolos do TCP/IP na camada de rede.
____________________________________________________________________________
____________________________________________________________________________

3) Em qual camada do OSI trabalha o protocolo Ethernet?


____________________________________________________________________________
____________________________________________________________________________

4) Cite dois equipamentos que trabalham na camada de enlace de rede.


____________________________________________________________________________

5) Explique, usando suas palavras, o que so os servios [x]inet, portmap


e stand alone e quais so as diferenas entre eles?
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

13.5. Laboratrio

Veja se esta pingando internamente e externamente;

Teste o mtr para medir o tempo de conexo com o resolvedor de nomes.

Captulo 13 Conceitos de Redes, TCP e Servios de Rede 173

Captulo 14
Servidor SSH

14.1. Objetivos

Iremos utilizar o ssh para realizar as conexes at as outras mquinas;

O ssh criptografa os dados pela rede, ao contrrio do telnet;

O ssh muito utilizado por administradores Gnu/Linux e Unix;

Captulo 14 Servidor SSH 174


14.2. Introduo Terica
Secure Shell ou SSH o conjunto de padres e o protocolo associado que
permite estabelecer um canal seguro entre dois computadores. Ele utiliza o sistema
de chave criptogrfca pblica para autenticar um computador remoto, podendo
utilizar esse sistema de chaves, tambm para autenticar usurios. A ideia do SSH
prover confdencialidade e integridade dos dados trocados entre dois computadores
usando criptografa e mensagens de autenticao codifcadas - MACs.
Esse protocolo tipicamente utilizado para conectar-se mquinas remotas e
executar comandos, entretanto, h inmeras outras funcionalidades como realizar
tunelamentos, redirecionamento de portas, conexes X11 (interface grfca), alm
de transferncia direta de arquivos.
Em geral, o SSH utiliza a porta 22/tcp e a alternativa segura ao
TELNET e FTP uma vez que estes no utilizam criptografa.

14.2.1. Chaves de Criptografa Assimtricas

Criar um par de chaves assimtricas tem basicamente duas funes:

Aumentar o nvel de segurana - defnindo uma frase senha;

Facilitar a execuo de scripts remotamente - no defnir uma frase senha.


A criao de chaves assimtricas consiste na gerao de dois arquivos que

contm sequncias de caracteres aleatrios (pseudo) e que s tm funcionalidade se


os dois trabalharem em conjunto. Ou seja, quando criamos um par de chaves ser
criada uma chave pblica e uma chave privada. A chave privada sua e
absolutamente ningum deve ter acesso a ela; a sua chave pblica voc coloca no
servidor remoto. Quando voc tentar estabelecer uma conexo ela s ser possvel se
a chave privada se encaixar na chave pblica. Com esse sistema, existe apenas uma
nica chave privada que se encaixa em uma nica chave pblica.

Captulo 14 Servidor SSH 175


Como s h um par que se completa, apenas quem possuir a chave privada
poder estabelecer uma conexo utilizando a respectiva chave pblica. Uma
ilustrao do par de chaves assimtricas pode ser vista na fgura:

Quando criamos um par de chaves assimtricas devemos tomar o cuidado com a


chave privada para que ningum tenha acesso a ela.

Outro assunto importante cobrado no LPI, sobre: opengpg.

14.3. Formas de Utilizao


O SSH possui diversas formas de utilizao; a mais bsica de todas serve
para estabelecer uma simples shell remota:
# ssh nome_usuario_remoto@ip_servidor

Para copiar arquivos de uma mquina para outra, deve-se seguir a mesma
lgica do comando cp que funciona da seguinte forma:
# cp origem destino

No caso do scp a sintaxe praticamente a mesma:


# scp origem destino

Captulo 14 Servidor SSH 176


A diferena que a origem e/ou o destino podem ser remotos, por exemplo:
# scp arquivo-local usuario-remoto@ip-remoto:path-destino

Para copiar da mquina local para a mquina remota, ou para copiar da


mquina remota para a mquina local!
# scp usuario-remoto@ip-remoto:path-origem destino-local

14.4. Prtica Dirigida

14.4.1. Confgurao do Servidor de SSH

1) Instale o servidor de SSH:


# aptitude install ssh

RedHat:
# yum install ssh

H diversos parmetros de confgurao que podem ser alterados de forma a ajustar


seus parmetros de funcionamento.

Captulo 14 Servidor SSH 177


2) Vamos entender alguns desses parmetros editando o arquivo de
confgurao do servidor de SSH:
# vi /etc/ssh/sshd_confg

Port 22
Protocol 2
LoginGraceTime 60
PermitRootLogin yes
PubkeyAuthentication yes
PermitEmptyPasswords yes
Dica LPI: Leitura Sugerida: Para conhecer mais detalhes cobrados na prova
leia o man sshd_confg

3) Aps realizar as devidas alteraes, vamos subir o daemon do


servidor SSH:
# /etc/init.d/ssh stop
# /etc/init.d/ssh start

4) Determine qual a porta utilizada pelo SSH:


# grep ssh /etc/services

5) Verifque que a porta 22 est aberta e escutando:


# netstat -ltan | grep 22
# fuser -v 22/tcp

Captulo 14 Servidor SSH 178


14.4.2. Utilizao do Cliente de SSH
Agora, como usurio comum, vamos realizar as seguintes tarefas:
1) Conecte-se ao servidor na mquina de um colega utilizando o
usurio criado para voc durante o captulo do telnet:
$ ssh ip_servidor
$ ssh usuario@ip_servidor
$ ssh -l usuario ip_servidor

2) Execute um comando na mquina remota sem estabelecer conexo:


$ ssh usurio@ip_servidor du -hs /usr

14.4.3. Copiando Arquivos Remotos

1) Copie um arquivo da sua mquina local para a mquina remota


utilizando o scp:
$ echo "Meu primeiro SCP" > /tmp/seu_nome
$ scp /tmp/seu_nome <usuario>@<ip_servidor>:diretorio_destino

2) Crie um arquivo na sua mquina e d permisso para que qualquer


usurio possa copi-lo:
$ echo "Alguma frase" > /tmp/$HOSTNAME
$ chmod 777 /tmp/$HOSTNAME

3) Agora, utilizando o scp, copie o respectivo arquivo da mquina de


um colega para a sua:
$ scp seu_nome@ip_servidor:/tmp/micronumero .

Captulo 14 Servidor SSH 179


14.4.4. SSH com Chaves Assimtricas

Quando criarmos o par de chaves assimtricas, ser criado um diretrio


~/.ssh na home do usurio.
1) Em nossa mquina local, sem ser via ssh, vamos criar o par de
chaves:
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key
(/home/;lt;seu_usuario;gt;/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
/home/;lt;seu_usuario;gt;/.ssh/id_rsa.
Your public key has been saved in
/home/;lt;seu_usuario;gt;/.ssh/id_rsa.pub.
The key fingerprint is:
c6:51:3e:75:0e:10:b7:98:5d:6d:81:5f:8a:8f:38:2a
The key's randomart image is:
+--[ RSA
seu_usuario;gt;@micro#
Obs.: o nome do arquivo pode ser o padro mesmo! Basta pressionar a tecla
enter. Mas, perceba que ele pede uma passphrase no uma password.
Isso porque a ideia aumentar a segurana, o que inclui uma senha maior!

2) Verifque que as chaves foram criadas:


$ ls ~/.ssh

Captulo 14 Servidor SSH 180


3) Agora que criamos as chaves, precisamos copiar a chave pblica
para a mquina remota! Copie a chave pblica para a mquina
remota, assim:
$ scp ~/.ssh/id_rsa.pub seu_nome@ip_servidor:.ssh/authorized_keys

4) Agora s acessar o servidor normalmente, e ver se ele pede a


passphrase para a chave criada:
# ssh seu_nome@ip_servidor

5) Vamos entender alguns desses parmetros editando o arquivo de


confgurao do servidor de SSH:
# vi /etc/ssh/sshd_confg

Port 65100
PermitRootLogin no
PubkeyAuthentication yes
PermitEmptyPasswords no
Banner /etc/issue.net

14.5. Exerccios Tericos


1) Considere o seguinte parmetro de confgurao do servidor de SSH:
PermitRootLogin forced-commands-only
O que esse parmetro faz e qual a diferena entre usar as opes forced-commandsonly e no?
____________________________________________________________________________

Captulo 14 Servidor SSH 181


2) Considere os dois comandos a seguir:
# scp /tmp/arquivo usuario@192.168.200.254:
# scp /tmp/arquivo usuario@192.168.200.254:/home/teste
Qual a diferena entre eles?
____________________________________________________________________________
____________________________________________________________________________

3) Para que serve o arquivo knowhosts dentro de ~/.ssh/?


____________________________________________________________________________
____________________________________________________________________________

14.6. Laboratrio
1. Utilizando o comando scp, envie uma cpia do diretrio /etc local para o
diretrio home remoto do seu usurio.
2. Altere a confgurao do servidor para que o root no possa se conectar via
ssh mas possa dar comandos remotos. Realize testes para ver se funciona.
3. Gere uma chave assimtrica para o root, sem senha, e realize testes para ver
se funcionou.

Captulo 14 Servidor SSH 182

Captulo 15
TCP Wrappers

15.1. Objetivos

Utilizar o sistema de wrapper para limitar os acessos aos principais servios


existentes em nosso servidor.

Captulo 15 TCP Wrappers 183


15.2. Introduo Terica
Os TCP Wrappers so usados para aplicar regras de acesso aos servidores
utilizados em seu sistema, podendo permitir ou negar conexes a eles. Eles so
controlados

por

dois

arquivos:

/etc/hosts.allow

confgurao

de

acessos

permitidos para determinados IPs e /etc/hosts.deny - confgurao de acessos


negados para determinados IPs. TCP - Sigla para "Transmission Control Protocol".

15.3. Prtica Dirigida


1) Para saber se o seu servio tem suporte a TCP/Wrappers:
# which sshd
# ldd /usr/sbin/sshd
A existncia da libwrap confrma:
libwrap.so.0 => /lib/libwrap.so.0 (0xb7ef7000)

2) Bloqueie todos os acessos ao nosso servidor de telnet:


# vi /etc/hosts.deny
Inserir ao fnal do arquivo:
in.telnetd : ALL

3) Libere o nosso servidor de telnet apenas para as mquinas da


nossa rede:
# vi /etc/hosts.allow

Captulo 15 TCP Wrappers 184


Inserir ao fnal do arquivo:
in.telnetd: 192.168.200.0/24

Dica LPI: Os TCP Wrappers so cobrados na LPI

4) Agora vamos bloquear o acesso SSH para todos, exceto para a


rede 192.168.200.0:
# vi /etc/hosts.deny
Inserir ao fnal do arquivo:
sshd : ALL EXCEPT 192.168.200.0/24

185

Captulo 16
Servidor de Impresso

16.1. Objetivos

Confgurar Servidor de Impresso;

Confgurao do cliente;

Gerenciamento do Servidor de Impresso.

Captulo 16 Servidor de Impresso 186


16.2. Introduo Terica

O CUPS - Common Unix Printing System uma das formas mais utilizadas
atualmente para trabalhar com impresso no mundo GNU/Linux. Ele utiliza

protocolo IPP - Internet Printing Protocol para gerenciar as flas e trabalhos de


impresso. Com o IPP voc pode imprimir de qualquer lugar, atravs da internet
para sua impressora domstica, por exemplo. Alm disso, o CUPS fornece uma
interface Web para gerenciamento de quotas de impresso e que oferece suporte
maioria das impressoras existentes.
A melhor documentao a respeito do CUPS pode ser encontrada online no
manual

ofcial no projeto, disponvel no endereo http://www.cups.org/doc-

1.1/sam.html

16.3. Prtica Dirigida

Antes de comearmos o processo de instalao do CUPS, devemos instalar no


sistema o gs e o gs-esp, que so interpretadores de arquivos Postscripts, pois o
sistema de impresso utiliza arquivos no formato PPD, que so os responsveis
pela comunicao com o driver da impressora atravs do padro Postscript.
1) Para instalar o gs e o gs-esp, execute:
# aptitude install gs gs-esp

2) Agora sim, vamos instalar os pacotes do CUPS:


# aptitude install cupsys cupsys-client
cupsys - servidor de impresso CUPS
cupsys-client - cliente de impresso do CUPS

Captulo 16 Servidor de Impresso 187


3) Agora precisamos saber se o nosso sistema possui o suporte ao
driver da nossa impressora. Para isso execute:
# gs -h
Por exemplo, se a sua impressora for uma HP, voc ter suporte a ela, atravs
do driver "hpijs".
Se a sua impressora no for suportada, voc pode procurar pelo driver
correspondente ela em http://www.linuxprinting.org

4) Vamos visualizar o arquivo de confgurao do servidor de


impresso, para conhecermos algumas de suas opes mais
importantes:
# cat /etc/cups/cupsd.conf

5) Reinicie o CUPS
# /etc/init.d/cups restart

Agora

podemos

gerenciar

as

confguraes

relacionadas

fla

de

impresso, impressoras instaladas, etc. Para isso utilizaremos a interface de


gerenciamento do CUPS via browser. Para isso, abra seu navegador
preferido e digite http://localhost:631.

Captulo 16 Servidor de Impresso 188

Para adicionar uma nova impressora, basta clicar no boto Add Printer e ele
abrir a tela a seguir:

Determine no campo Name: o nome da nossa impressora, que ser "teste".

Captulo 16 Servidor de Impresso 189


Depois clicamos em Continuar e ele abrir a prxima tela:

Nesta

tela

selecionamos

o tipo

de device

onde

impressora

est

conectada(porta paralela, usb, scoket ou compartilhada na rede). No nosso


exemplo, estamos usando uma impressora plugada numa porta usb. Portanto
selecionamos a opo USB #1.

Feito isso, clicamos em Continue e a prxima tela aparecer:

Captulo 16 Servidor de Impresso 190


Nessa tela, o CUPS mostra os PPDs disponveis a partir do driver
especifcado, que neste caso ele relacionou os modelo para Deskjet e Laserjet. Como
estamos usando Deskjet, marcamos a opo HP New Deskjet Series. Depois
podemos dar a opo Continue. Clicando em Add Printer aparecer, a tela para
autenticao com algum usurio que pertena ao grupo lpadmin (por padro, s o
root):

Aparecer ento a tela dizendo que a confgurao da impressora foi bem


sucedida.

6) Testando para ver se o servio est funcionando corretamente:


# lpstat -t
Clique no link com o nome da impressora criada e abra as propriedades da
impressora. Perceba que pode-se at testar a impressora, clicando em Print Test
Page.

Captulo 16 Servidor de Impresso 191


7) Confgurao do Cliente:
# vi /etc/cups/client.conf
Esse arquivo deve conter o endereo IP do Servidor de Impresso na rede:
ServerName (ip-servidor)

8) Todas essas informaes foram geradas no arquivo de confgurao


da impressora no CUPS, e confguraes do cliente. Esses
parmetros esto no arquivo /etc/cups/printers.conf:
# cat /etc/cups/printers.conf

9) Defnimos nossa impressora conectada atravs da porta USB, mas


e se fosse uma impressora da rede, ou Paralela? Podemos conferir
como ela seria referenciada usando o comando abaixo:
# lpinfo -v

10)
Vamos ver agora o arquivo no qual o sistema busca as
defnies das impressoras existentes:
# vi /var/run/cups/printcap
Dica LPI: Se voc tivesse um impressora em na segunda porta paralela, esta
seria referenciada como /dev/lp1.

11)
Podemos agora fazer um teste de impresso com o comando
lp:
# lp -dteste /etc/shadow
Dica LPI: a opo "-d" recebe o nome da minha impressora

Captulo 16 Servidor de Impresso 192


12)

Verifco agora a fla de impresso atual:

# lpq -Pteste

13)

Tambm podemos verifcar a fla de impresso desta forma:

# lpstat -t

14)
Se eu quiser remover um trabalho da fla de impresso tenho
que indicar o nome da impressora e o nmero da job:
# lprm -Pteste 5
Dica LPI: Onde "5" o nmero da job do arquivo na fla de impresso.

16.4. Exerccios Tericos


1) Qual o arquivo de confgurao do servidor de impresso ?
____________________________________________________________________________
____________________________________________________________________________

2) Qual a porta padro do servidor de Impresso ?


____________________________________________________________________________
_____________________________________________________________________________

193

Captulo 17
Compilao do Kernel

17.1. Objetivos

Onde obter o fonte do kernel";

Reconhecer nosso hardware;

Otimizar o kernel para aumentar a qualidade do Sistema.

Captulo 17 Compilao do Kernel 194


17.2. Introduo Terica
O centro atravs do qual todas distribuies so construdas o kernel do
sistema operacional Gnu/Linux. Ele fca entre os programas de usurio e o hardware
do sistema. o kernel quem fornece suporte ao hardware, protocolos e alguns
softwares. Vimos no captulo de Mdulos que kerneis genricos baseiam-se na
utilizao de mdulos, ou seja, o desenvolvedor compila um kernel bsico e compila
todo o resto em forma de mdulos, de maneira que todos os suportes adicionais
sejam adicionados de forma modular.
Quando compilamos um kernel, a ideia torn-lo mais enxuto e seguro.
Frequentemente seremos forados a realizar uma compilao a fm de adicionar o
suporte a alguma funcionalidade que no veio habilitada por padro.
De certa forma, queremos passar de um esquema modular a um esquema em
que a maioria, se no todas, as funcionalidades que iremos utilizar estejam built in
no kernel, ou seja, no modular, como pode ser visto na fgura abaixo.

Captulo 17 Compilao do Kernel 195


A perfeio seria ter um kernel bem compilado contendo apenas o conjunto
de partes estritamente necessrias ao funcionamento do nosso servidor e no ter
nenhum mdulo externo compilado. Retiraramos at o suporte a carregar mdulos.
Confgurar

um

kernel

manualmente

frequentemente

tido

como

procedimento mais difcil que um usurio de Gnu/Linux tem que fazer. Isso no
bem verdade, depois de confgurar uns dez kerneis voc nem lembrar que foi
difcil :) Como tudo na vida mais uma questo de prtica do que de inteligncia.
No entanto, uma coisa verdade: voc deve conhecer muito bem seu sistema
quando voc comear a confgurar o kernel manualmente. A maior parte das
informaes pode ser obtida utilizando o comando lspci.

17.3. Prtica Dirigida

1) O primeiro passo para compilarmos um kernel fazer o download


de seu cdigo fonte a partir do site:
http://www.kernel.org

2) Feito isso iremos descompact-lo no diretrio apropriado:


# tar xjf linux-2.6.XX.bz2 -C /usr/src/

3) Crie um link simblico para o diretrio dos fontes para um


diretrio chamado linux:
# cd /usr/src

Captulo 17 Compilao do Kernel 196


4) Vamos conhecer um pouco do hardware antes de iniciarmos a
confgurao do kernel:
#
#
#
#

cat
cat
cat
cat

/proc/interrupts
/proc/ioports
/proc/meminfo
/proc/cpuinfo

Dica LPI: Lembre-se:


/proc/interrupts

- contm as informaes dos canais IRQ;

/proc/ioports

- contm as informaes Input/Output;

/proc/meminfo

- contm informaes da memria;

/proc/cpuinfo

- contm informaes do processador;

/proc/mtab

- contm informaes dos diretrios que esto montados;

/proc/swaps

- contm informaes dos swaps em uso;

/proc/dma

- contm informaes dos canais de DMA em uso;

/proc/flesystems - contm informaes dos sistemas de arquivos;


/proc/modules

- contm informaes dos mdulos carregados;

5) Para obtermos informaes a respeito dos componentes PCI e


USB conectados mquina devemos instalar dois programas o
lscpi e o lsusb:
# aptitude install pciutils usbutils

6) Vamos conhecer os dispositivos PCI e USB conectados mquina:


# lspci
# lsusb
Caso a listagem desses comandos no consiga identifcar algum Hardware
devemos utilizar os comandos update-pciids e update-usbids.
Agora estamos prontos para comear os procedimentos de confgurao do
kernel.

Captulo 17 Compilao do Kernel 197


7) Instale os programas necessrios para confgurao e compilao
do kernel:
# aptitude install make gcc g++ autoconf libncurses5 libncurses5-dev
ncurses-base ncurses-bin ncurses-term
ANTES DE IR ADIANTE, LEIA O ARQUIVO README!!
Um passo extremamente importante antes de confgurar o nosso kernel
sempre adicionar uma EXTRAVERSION afm de organizar uma eventual estrutura de
mdulos no /lib.

8) Utilize o comando date para gerar uma string de extraversion:


# date +"-%Y%m%dc1"

9) Adicione essa string varivel EXTRAVERSION na Makefle


do kernel:
# cd /usr/src/linux
# vi Makefile
EXTRAVERSION = 2.6.XX-<string_gerada>
Se essa no for a primeira compilao desse kernel, sempre
recomendado realizar uma limpeza no diretrio do fonte do kernel:
# make mrproper

10)
# make help

Veja as opes da Makefle do kernel:

Captulo 17 Compilao do Kernel 198


11)

Inicie o processo de confgurao do kernel:

# make menuconfig
A interface de confgurao fornece uma estrutura de menus e sub-menus nos
quais devemos navegar afm de selecionar as opes que desejamos adicionar,
remover ou compilar como mdulos.

12)
Aps salvar as confguraes, podemos visualizar o arquivo
gerado e copi-lo para um lugar seguro:
# cat .config
# cp .config /boot/config-2.6.XX.c1")

13)

Agora que est tudo pronto, vamos compilar o kernel:

# make

Dica LPI: Para a srie 2.4 do kernel os mdulos eram compilados


separadamente do kernel bsico atravs do comando make modules.
Esse passo desnecessrio para os kerneis da srie 2.6

14)
Aps compilar o kernel e seus mdulos, vamos copiar os
mdulos para o diretrio apropriado em /lib/modules:
# make modules_install

Dica

LPI:

Processo

de

compilao

do

kernel:

make

make

modules_install

Depois de compilado o kernel, ser gerado um arquivo da imagem (o


bzImage) no diretrio /usr/src/linux/arch/i386/boot.

Captulo 17 Compilao do Kernel 199


15)

Copie-o para o diretrio /boot, com o nome de kernel:

# cd arch/i386/boot/
# file bzImage
# cp bzImage /boot/kernel-2.6.XX.c1")
Se

nosso

kernel

tiver

sido

compilado com

mdulos

que sejam

extremamente necessrios durante o boot, ser necessrio criar uma


imagem de boot.

16)

Para isso, precisamos instalar o seguinte pacote:

# aptitude install initrd-tools

17)

Agora devemos construir nosso arquivo initrd no /boot:

# mkinitramfs -o /boot/initrd.img-2.6.XX.c1 /lib/modules/2.6.XX.c1

Feitos esses procedimentos devemos confgurar o nosso Boot Loader.

200

Captulo 18
Gerenciadores de Boot

18.1. Objetivos

Confgurar o Grub;

Testar a segurana no Grub.

Captulo 18 Gerenciadores de Boot 201


18.2. Introduo Terica
Um bootloader o software responsvel por carregar o sistema operacional
durante a inicializao do sistema. H vrios bootloaders diferentes disponveis no
GNU/Linux. Os dois mais comuns so o LILO Linux Loader e o GRUB - Grand
Unifed Bootloader. O LILO o mais antigo deles e vem sendo substitudo pelo
GRUB dadas algumas vantagens oferecidas por este ltimo como a capacidade de
enganar sistemas MS-Windows possibilitando que sejam instalados e parties no
primrias, alm da comodidade de no ter que ser reinstalado na MBR toda vez que
alguma alterao for efetuada. O papel do bootloader fornecer uma lista de
opes de sistemas operacionais disponveis na mquina e que podem ser
carregados. Uma vez que o usurio. Escolheu qual sistema deseja subir o GRUB
inicia o carregamento do kernel na memria RAM o qual passa a ter o controle
sobre a mquina.
Ao contrrio da maioria dos programas que colocam seus arquivos de
confgurao no diretrio /etc o grub coloca-os no diretrio /boot/grub.

18.2.1. GRUB

Para que nosso novo kernel, possa ser inicializado, devemos confgurar nosso
bootloader. Veremos agora como fazer isso no Grub.

Captulo 18 Gerenciadores de Boot 202


18.3. Prtica Dirigida
1) Adicione as entradas para iniciar o novo kernel no arquivo de
confgurao do GRUB:
# vi /boot/grub/menu.lst

3
4
5
6

title
root
kernel
initrd

Meu Primeiro Kernel (hd0,0)


/kernel-2.6.XX-<versao> root=/dev/sda2 ro
/initrd.img-2.6.XX-<versao>

Aps feitas essas alteraes, reinicie o computador, e veja se o nosso Novo


kernel "boota".

18.4. Laboratrio
1. Reinicie a mquina;
2. Teste o GRUB sem senha;
3. Deixe o usurio root sem senha;
4. Coloque senha no GRUB;
5. Troque as cores do GRUB na inicializao.

Captulo 18 Gerenciadores de Boot 203

Captulo 19
Confgurao de Rede Wireless

19.1. Objetivos

Teoria de Rede Wireless;

Compilao do driver da placa de rede Wireless;

Utilizao da placa de rede Wireless;

Mtodos bsicos de Rede Wireless;

Utilizao dos modos: Ad-hoc e Managed com e sem senha WEP;

Utilizao de mtodos bsicos de segurana.

Captulo 19 Configurao de Rede Wireless 204


19.2. Introduo Terica
As redes sem fo vm se tornando cada vez mais comuns com o barateamento
dos equipamentos e aumento da disponibilidade dos servios que possuem
HotSpot, como aeroportos, cafs e lanchonetes. Nesse captulo iremos aprender
como funciona a Rede Wireless, e sua confgurao no GNU/Linux.
H basicamente duas formas de preparar uma rede sem fo, utilizando um
concentrador - Access Point - ou ponto a ponto, conhecida tambm como Ad-Hoc.
As redes sem fo Ad-Hoc so similares s primeiras redes de computadores
com fos utilizando cabos coaxiais e conectores BNC, no qual um computador
conectava-se a outro diretamente. Entretanto, essa analogia no perfeita no sentido
de que se uma mquina sair da rede Ad-Hoc ela no comprometer a rede como um
todo como era o caso em redes de cabos coaxiais.
Em redes utilizando concentradores ou Access Point (AP), toda a comunicao
e confguraes fcam centralizadas em um nico ponto, no AP. Nessa estrutura,
todas as mquinas na rede se comunicam umas com as outras atravs de um nico
ponto. Outra vantagem dessa estrutura a facilidade de integrao com redes com
fo.
Em uma rede sem fo, todo o trfego est viajando pelo ar de forma que
qualquer um com uma placa wireless pode captar o sinal e capturar o trfego de
dados. Sendo assim imprescindvel confgurar a sua rede para que ela utilize
criptografa. Atualmente, os dois tipos de criptografa mais utilizados so a WEP e
a WPA.
Neste captulo, utilizaremos o tipo WEP ou Wired Equivalent Privacy. Esse
tipo de criptografa est presente na grande maioria dos dispositivos wi-f e baseiase em algortimos simtricos, de forma que se faz necessria a troca de chaves entres
as partes envolvidas na comunicao.
A segurana do WEP composta de dois elementos bsicos: uma chave
esttica, que deve ser a mesma em todos os equipamentos da rede e um componente
dinmico que, juntos, iro formar a chave usada para criptografar o trfego.
Aps a defnio dessa chave, sero geradas quatro novas chaves atravs de

Captulo 19 Configurao de Rede Wireless 205


uma expresso matemtica. Quando a conexo for estabelecida uma dessas chaves
ser escolhida e s ser alterada quando a chave original for trocada. Por isso esse
protocolo torna-se fcil de ser quebrado constituindo um risco de segurana. O
protocolo WPA ou Wi-Fi Protected Access surgiu a fm de substituir o WEP, pois
implementa diversas funcionalidades de segurana a mais que o WEP no possui.

19.3. Prtica Dirigida


19.3.1. Compilao do mdulo da placa Wireless

1) A primeira coisa que devemos saber para confgurar a nossa rede


wireless descobrir qual a nossa placa wireless.
# aptitude install pciutils
# lspci
Algumas placas j possuem suporte nativo no kernel, mas a placa que
vamos utilizar no suportada pelo nosso novo kernel. Ento, vamos ter
que

baixar

driver

da

internet

no

seguinte

site:

http://madwif.sourceforge.net/. Mas o Debian j tem o pacote madwif e


podemos utiliz-lo.

2) Agora que j sabemos que a nossa placa utiliza o driver


madwif, podemos instal-lo a partir do pacote disponvel no
Debian:
# aptitude install madwif-source

Captulo 19 Configurao de Rede Wireless 206


3) Qual o primeiro passo quando vamos compilar um programa a
partir do cdigo fonte?
# cd /usr/src/
# tar -xf madwif.tar.bz2
# cd modules/madwif/ ; ls -l
# vi INSTALL

Dica LPI: A LPI cobra Wireless, compilao de mdulos, arquivos e


comandos relacionados. Dica: Qual o arquivo que armazena a verso do
sistema operacional, do kernel e sua distribuio: /proc/version, Peso 3.

4) Analisando o INSTALL podemos ver que esse mdulo precisa das


bibliotecas do kernel que estamos utilizando. Se ainda no as
tivermos, devemos instalar o pacote kernel-headers da verso do
nosso kernel para t-las.
# uname -a
# aptitude install linux-headers-`uname -r`

5) Agora que o kernel-headers j est instalado, podemos seguir os


passos seguintes do arquivo INSTALL e compilar o nosso mdulo.
# make
# make install

6) Veja se os mdulos esto compilados e foram colocados no diretrio


correto:
# ls /lib/modules/$(uname -r)/net

Captulo 19 Configurao de Rede Wireless 207


7) Agora que temos os nossos mdulos instalados, podemos carreglos, assim:
# modprobe ath_pci
# lsmod | grep ath

8) Verifque se o seu dispositivo - placa ath0 - est disponvel.


# ifconfg -a

9) Nossa placa ainda no est confgurada. Vamos instalar o software


wireless-tools que fornece ferramentas para manipulao e
confgurao de dispositivos wireless, para poder faz-lo:
# aptitude install wireless-tools

10)

Para visualizar as placa de rede wireless em uso:

# iwconfg

11)

Precisamos destruir a placa de rede e ativ-la novamente:

# wlanconfg ath0 destroy


# wlanconfg ath0 create wlandev wif0 wlanmode adhoc

Dica: Outra maneira de instalar os mdulos utilizando o programa


module-assistant.

19.3.2. Confgurando uma rede wireless Ad-Hoc

Agora que nosso mdulo est carregado, podemos confgurar a nossa rede.
Para isso, alm de usarmos o comando ifconfg para atribuir um IP, vamos utilizar o

Captulo 19 Configurao de Rede Wireless 208


pacote wireless-tools para confgurarmos a rede wireless. Nossa primeira
confgurao de rede ser uma rede Ad-Hoc, que permite que uma mquina se
comunique com a outra sem a utilizao de AP - Access Point, fazendo uma conexo
ponto a ponto.
# iwconfg ath0
1) Temos que defnir que nossa placa vai trabalhar no modo AD-HOC:
# iwconfg ath0 mode ad-hoc

2) Podemos ver se nossas placas entraram novamente na frequncia do


AP:
# iwconfg ath0
Repare no campo Encryption key onde ele mostra a chave em
Hexadecimal.

3) Vamos defnir um ESSID para nossa rede. ESSID o nome que


identifca a rede, a qual permite que outras mquinas possam fazer
parte dessa rede. Neste exemplo, damos um ESSID nico para
cada uma das duas mquinas, permitindo que tenham uma conexo
ponto a ponto:
# iwconfg ath0 essid redeX

4) Agora que nossas redes j possuem um ESSID, podemos atribuir


os IP's para nossas mquinas:
# ifconfg ath0 192.168.200.X

5) Podemos ver se nossas mquinas fxaram uma frequncia:


# iwconfg ath0

Captulo 19 Configurao de Rede Wireless 209


6) Para testar a conectividade:
# ping 192.168.200.X

19.3.3. Rede Wireless Managed - sem criptografa

Em uma rede wireless managed, no vamos mais ter conexes ponto a ponto,
mas sim um centralizador em nossa rede que vai administrar as conexes. Esse
centralizador o Access Point.

1) Antes de mais nada vamos ativar a placa de rede:


# ifconfg ath0 up

2) Veja as informaes da ath0:


# iwconfg ath0

3) Verifque se h alguma rede disponvel por perto, encontre a da


nossa sala de aula:
# iwlist ath0 scan

4) Agora que determinamos o ESSID da rede, vamos tentar nos


conectar a ela, considerando que o ESSID dela 4linux:
# iwconfg ath0 essid 4linux

5) Vamos ver se a nossa placa de rede entrou na frequncia do AP:


# iwconfg ath0

Captulo 19 Configurao de Rede Wireless 210


6) J estamos com um endereo IP na interface ath0? Se no
estivermos podemos tentar adquirir um via DHCP ou defni-lo
manualmente:
# dhclient ath0
# ifconfg ath0 ;lt;seu_i

7) Sendo assim, j estamos com o IP confgurado, e agora podemos


fazer um teste para ver se estamos enxergando todas as mquinas
da rede:
# ping 192.168.200.255 -b

19.3.4. Rede Wireless Managed - com criptografa WEP

Nossa rede est confgurada e funcionando, s que redes Wireless so muito


vulnerveis. Podemos torn-la um pouco mais segura utilizando criptografa WEP.
Essa Criptografa confgurada no Access Point, e nele cadastrada uma chave
que pode ser em hexadecimal ou em ASCII. Essa chave tem que ser confgurada
nas estaes, pois somente assim elas conseguiro entrar na rede.

1) Agora que o instrutor confgurou a criptografa WEP no AP,


podemos ver se nossas mquinas ainda continuam se comunicando
com a rede:
# ping 192.168.200.255 -b
As mquinas no se comunicam mais, pois a chave precisa ser defnida. A chave
que vamos utilizar est em ASCII.

2) Vamos acrescentar a chave em nossas estaes:


# iwconfg ath0 key s:LINUX

Captulo 19 Configurao de Rede Wireless 211


3) Podemos ver se nossas placas entraram novamente na frequncia do
AP:
# iwconfg ath0
Perceba que o campo Encryption key passou a mostrar a chave em
hexadecimal.

4) Podemos testar nossa rede novamente.


# ping -b 192.168.200.255

19.4. Exerccios Tericos


1. Qual a diferena entre os modos Managed e Ad-Hoc?
_________________________________________________________________________________
_________________________________________________________________________________

2. Quais so os problemas de utilizar criptografa WEP?


_________________________________________________________________________________
_________________________________________________________________________________

3. Qual o arquivo onde posso defnir minha placa de rede wireless, e IP fxo,
em todo reboot? E como fcaria esse arquivo?
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________

Captulo 19 Configurao de Rede Wireless 212

REFERNCIAS
BIBLIOGRFICAS
JULIO CESAR NEVES. Programao em Shell Linux. 6. edio.
Brasport. 2006
The Linux documentation Project, website: http://www.tldp.org.
Acesso em 28 de maro de 2008.
Pritchard, Pessanha, Langfeldt, Stranger and Dean. Certifcao
Linux LPI 2. edio. AltaBooks. 2007
Gagn, Moving to Linux.
1 edio, Addilson Wesley
Rubem E. Ferreira, Guia de Administrao Linux.
2 edio, Novatec, 2008

You might also like