Sie sind auf Seite 1von 322

Florianpolis

2010

Proibida a reproduo total ou parcial desta obra.

V181a Valle, Odilson Tadeu.


Administrao de redes com linux: fundamentos e prticas/
Odilson Tadeu Valle. Florianpolis: Publicaes do IF-SC,
2010.
302 p. : il. ; 15x21 cm.

ISBN: 978-85-64426
1. Redes de computadores. 2. Linux. 3. Ttulo.
CDD: 004.6

Catalogado por: Coordenadoria de Bibliotecas IF- SC


Knia Raupp Coutinho CRB14/951

Este livro dedicado s pessoas que do sentido minha vida:


Maria,
Bruno e
Cludia.

Agradecimentos
Quero agradecer especialmente ao Emerson pelos ensinamentos e
ajustes no LATEX, a Cludia pela reviso do texto e ao Cassiano pela
linda capa. Quero agradecer tambm aos colegas Alexandre, Eraldo, Evandro, Marcos, Mrio, Saul e todos os demais professores da
rea de Telecomunicaes do IF-SC, pelo apoio e companheirismo
ao longo destes anos de trabalho. Ao IF-SC pelo suporte e publicao
deste livro.
Agradeo tambm a minha famlia, por todo histrico de vida e
que responsvel por ser eu quem sou.

Prefcio
Este livro fruto da compilao de roteiros didticos, de anos de trabalho com disciplinas de Administrao de Redes no IF-SC. Muitos
destes roteiros so adaptaes de materiais encontrados na Internet.
Ele tem por objetivo ser base para o ensino de Administrao de
Redes com uso do sistema Operacional Linux. A abordagem dada
nos captulos sempre inicia com uma pequena introduo terica sobre determinado assunto ou servio, seguido por um roteiro prtico
para experimentao do mesmo. Do mesmo modo que a abordagem
terica sucinta e breve, a experimentao tambm o . So abordados dezenas de tpicos desde a parte introdutria at a parte mais
avanada na administrao de servios de rede usando o Linux. Por
isto no se tem a pretenso de uma abordagem profunda sobre todos
os temas abordados.
O diagrama da Figura 1 apresenta os captulos integrantes do
livro agrupados em 6 blocos. O objetivo ilustrar a categorizao de
assuntos e indicar a sequncia de leitura, indicada pelas setas entre
blocos, que pode ser utilizada para um melhor aprendizado. O bloco
base pretende dar um embasamento mnimo ao leitor para poder
acompanhar o desenvolvimento do texto como um todo. Em seguida
existe o bloco que trata das configuraes mnimas necessrias a
serem feitas num servidor de produo. A programao do Shell
pretende dar suporte para agilizar tarefas repetitivas em todo o
sistema. Os prximos trs blocos so relativos aos servidores de rede
que so o principal foco de estudo do livro. Dependendo do nvel de
conhecimento preliminar do leitor, etapas podem ser puladas, ou a

Odilson Tadeu Valle

Figura 1: Diagrama esquemtico para leitura dos captulos

sequncia de leitura pode ser modificada.


Todos os roteiros experimentais so baseados na distribuio
Mandriva Linux, portanto, dependendo da distribuio Linux adotada, podem ser necessrios ajustes.
Odilson Tadeu Valle

viii

Sumrio
1

Introduo

Inittab

2.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

2.2

Configurao . . . . . . . . . . . . . . . . . . . . .

Instalao de Aplicativos com RPM

3.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

3.2

Base de Dados RPM . . . . . . . . . . . . . . . . .

3.3

Rtulo dos Pacotes . . . . . . . . . . . . . . . . . .

3.4

Vantagens e desvantagens do formato . . . . . . . .

3.5

Acessrios relacionados . . . . . . . . . . . . . . . .

3.6

Instalao/remoo de aplicativos com URPMI . . . .

10

3.6.1

Remoo de aplicativos . . . . . . . . . . .

11

Mdias do URPMI . . . . . . . . . . . . . . . . . . .

11

3.7
4

Sistema de Arquivos

13

4.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

13

4.2

Particionando e formatando discos . . . . . . . . . .

17

4.3

Montando parties . . . . . . . . . . . . . . . . . .

18

4.4

A estrutura de diretrios . . . . . . . . . . . . . . .

22

Odilson Tadeu Valle

LVM - Logical Volume Manager

25

5.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

25

5.2

O que o LVM . . . . . . . . . . . . . . . . . . . .

26

5.3

Implantando LVM . . . . . . . . . . . . . . . . . . .

28

5.4

Modificando o tamanho de parties LVM . . . . . .

31

Administrao de Usurios e Grupos

35

6.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

35

6.2

Criao de contas de usurios e grupos . . . . . . . .

36

6.3

Parmetros das contas . . . . . . . . . . . . . . . . .

37

6.4

Arquivos de definies para contas . . . . . . . . . .

39

6.5

Alterando parmetros das contas . . . . . . . . . . .

39

6.6

Removendo contas . . . . . . . . . . . . . . . . . .

40

Permisso de Acesso Arquivos

43

7.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

43

7.2

Permisses de acesso . . . . . . . . . . . . . . . . .

44

7.3

Alterando a permisso de acesso . . . . . . . . . . .

46

7.3.1

Formato octal do modo de permisses . . . .

46

7.3.2

Formato simblico do modo de permisses .

47

7.3.3

Mudando as permisses padro . . . . . . .

48

7.3.4

Modificando o grupo dono de um arquivo . .

49

7.3.5

Dono de um arquivo . . . . . . . . . . . . .

49

Cotas em disco

51

8.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

51

8.2

Instalando o Sistema de Cotas . . . . . . . . . . . .

52

8.3

Manipulando Cotas . . . . . . . . . . . . . . . . . .

54

8.3.1

54

Cotas para Usurios . . . . . . . . . . . . .

8.3.2

Cotas para Grupos . . . . . . . . . . . . . .

54

8.3.3

Mltiplas Cotas Simultneamente . . . . . .

55

8.3.4

Verificando Cotas . . . . . . . . . . . . . . .

55

Crontab

57

9.1

Introduo . . . . . . . . . . . . . . . . . . . . . . .

57

9.2

Uso do Crontab . . . . . . . . . . . . . . . . . . . .

58

10 Backups e Polticas

61

10.1 Introduo . . . . . . . . . . . . . . . . . . . . . . .

61

10.2 Tipos de backup

. . . . . . . . . . . . . . . . . . .

62

10.2.1 Backups totais . . . . . . . . . . . . . . . .

62

10.2.2 Backups incrementais . . . . . . . . . . . . .

63

10.2.3 Backups diferenciais . . . . . . . . . . . . .

63

10.3 Modos de backup . . . . . . . . . . . . . . . . . . .

64

10.3.1 Backups online . . . . . . . . . . . . . . . .

64

10.3.2 Backups offline . . . . . . . . . . . . . . . .

64

10.4 Armazenamento . . . . . . . . . . . . . . . . . . . .

65

10.4.1 Discos Rgidos . . . . . . . . . . . . . . . .

65

10.4.2 Unidades de Fitas . . . . . . . . . . . . . . .

65

10.4.3 CD e DVD . . . . . . . . . . . . . . . . . .

66

10.5 Polticas de backup . . . . . . . . . . . . . . . . . .

66

10.6 O sistema Amanda . . . . . . . . . . . . . . . . . .

68

10.6.1 Instalao e configurao . . . . . . . . . . .

69

10.6.2 Configurando o cliente . . . . . . . . . . . .

73

10.6.3 Uso do Amanda . . . . . . . . . . . . . . . .

73

11 Programao do Shell
11.1 Introduo . . . . . . . . . . . . . . . . . . . . . . .

79
79
xi

Odilson Tadeu Valle

11.2 Comandos Bsicos . . . . . . . . . . . . . . . . . .

80

11.2.1 Variveis e Parmetros . . . . . . . . . . . .

80

11.3 Comandos de testes no shell . . . . . . . . . . . . .

83

11.3.1 A Estrutura if . . . . . . . . . . . . . . . . .

83

11.3.2 A Estrutura case . . . . . . . . . . . . . . .

86

11.4 Laos de Repetio . . . . . . . . . . . . . . . . . .

87

11.4.1 A Estrutura while . . . . . . . . . . . . . . .

87

11.4.2 A Estrutura for . . . . . . . . . . . . . . . .

88

11.5 Funes . . . . . . . . . . . . . . . . . . . . . . . .

89

12 Rede e Roteamento

91

12.1 Introduo . . . . . . . . . . . . . . . . . . . . . . .

91

12.2 Configurao de Interface de Rede . . . . . . . . . .

91

12.2.1 Apelidos de IP . . . . . . . . . . . . . . . .

93

12.2.2 Conferindo e Testando . . . . . . . . . . . .

94

12.3 Roteadores e sub-redes . . . . . . . . . . . . . . . .

96

12.3.1 Montando Tabelas Estticas de Roteamento .

97

12.3.2 Configurando o roteador . . . . . . . . . . .

99

12.3.3 Configurando sub-redes . . . . . . . . . . . 100


13 Servidor DNS com Bind

103

13.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 103


13.2 Domnios Hierrquicos . . . . . . . . . . . . . . . . 104
13.3 Resoluo de Nomes . . . . . . . . . . . . . . . . . 105
13.4 Instalao e configurao . . . . . . . . . . . . . . . 109
13.4.1 Caso de estudo . . . . . . . . . . . . . . . . 109
14 Servidor Apache

117

14.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 117


xii

14.2 Instalao e configurao . . . . . . . . . . . . . . . 118


14.2.1 Direcionamento . . . . . . . . . . . . . . . . 119
14.2.2 Hospedeiros Virtuais . . . . . . . . . . . . . 119
14.2.3 Pginas de Usurios . . . . . . . . . . . . . 120
14.2.4 Restrio de acesso pginas . . . . . . . . 122
14.2.5 Pginas em https . . . . . . . . . . . . . . . 123
15 Servidor Postfix

125

15.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 125


15.2 Funcionamento do Correio Eletrnico . . . . . . . . 126
15.3 Instalao e configurao . . . . . . . . . . . . . . . 127
15.4 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 130
16 Servidor Samba

133

16.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 133


16.2 Instalao e configurao . . . . . . . . . . . . . . . 134
16.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 136
17 Servidor NFS

139

17.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 139


17.2 Instalao e configurao . . . . . . . . . . . . . . . 139
17.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 141
18 Servidor LDAP

143

18.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 143


18.2 Instalao e configurao . . . . . . . . . . . . . . . 144
18.2.1 Para configurar um cliente Linux . . . . . . . 151
18.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 152
xiii

Odilson Tadeu Valle

19 Servidor DHCP

153

19.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 153


19.2 O protocolo DHCP . . . . . . . . . . . . . . . . . . 154
19.3 Instalao e configurao . . . . . . . . . . . . . . . 156
19.4 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 158
20 Servidor FTP

159

20.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 159


20.2 Instalao e configurao . . . . . . . . . . . . . . . 159
20.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 160
21 Servidor SSH

163

21.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 163


21.2 Instalao e configurao . . . . . . . . . . . . . . . 163
21.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 165
22 Servidor Proxy/Cache

167

22.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 167


22.2 Instalao e configurao . . . . . . . . . . . . . . . 168
22.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 170
22.4 Listas de controle de acesso . . . . . . . . . . . . . . 171
22.4.1 Exemplos de ACLs e usos . . . . . . . . . . 171
23 Firewall com iptables

175

23.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 175


23.2 Princpio de funcionamento do firewall . . . . . . . . 177
23.2.1 Regras iptables . . . . . . . . . . . . . . . . 178
23.2.2 Instalando e configurando . . . . . . . . . . 178
23.2.3 Salvando e recuperando as regras . . . . . . 178
xiv

23.3 Tabela Filter . . . . . . . . . . . . . . . . . . . . . . 179


23.3.1 Opes . . . . . . . . . . . . . . . . . . . . 179
23.3.2 Chains . . . . . . . . . . . . . . . . . . . . 180
23.3.3 Dados . . . . . . . . . . . . . . . . . . . . . 180
23.3.4 Aes . . . . . . . . . . . . . . . . . . . . . 182
23.3.5 Exemplos comentados de regras . . . . . . . 183
23.3.6 Impasses . . . . . . . . . . . . . . . . . . . 184
23.3.7 Extenses . . . . . . . . . . . . . . . . . . . 185
23.3.8 Exemplo Prtico . . . . . . . . . . . . . . . 185
23.4 Tabela nat Network Address Translation . . . . . . 188
23.4.1 Chains . . . . . . . . . . . . . . . . . . . . 188
23.4.2 Dados . . . . . . . . . . . . . . . . . . . . . 189
23.4.3 Aes . . . . . . . . . . . . . . . . . . . . . 190
23.4.4 Exemplos comentados de regras . . . . . . . 190
24 Firewall com Shorewall

193

24.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 193


24.2 Zonas . . . . . . . . . . . . . . . . . . . . . . . . . 194
24.3 Instalao e configurao . . . . . . . . . . . . . . . 194
24.3.1 shorewall.conf . . . . . . . . . . . . . . . . 194
24.3.2 zones . . . . . . . . . . . . . . . . . . . . . 195
24.3.3 interfaces . . . . . . . . . . . . . . . . . . . 196
24.3.4 policy . . . . . . . . . . . . . . . . . . . . . 196
24.3.5 rules . . . . . . . . . . . . . . . . . . . . . . 196
24.3.6 masq . . . . . . . . . . . . . . . . . . . . . 197
24.3.7 Outros arquivos de configurao . . . . . . . 197
24.4 Alguns exemplos prticos com Shorewall . . . . . 198
24.4.1 Firewall em uma tpica rede de zonas e interfaces . . . . . . . . . . . . . . . . . . . . . 198
xv

Odilson Tadeu Valle

24.4.2 Mltiplas zonas sobre uma interface . . . . . 199


25 DenyHosts

203

25.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 203


25.2 Instalao e configurao . . . . . . . . . . . . . . . 204
25.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 206
26 Antivrus

209

26.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 209


26.2 Instalao e configurao . . . . . . . . . . . . . . . 211
26.2.1 Integrando o CLAMAV ao Postfix . . . . . . 212
26.2.2 Integrando o CLAMAV ao Samba . . . . . . 213
26.2.3 Escanear diretrios em busca de vrus . . . . 213
27 VPN

215

27.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 215


27.2 Aplicaes para redes privadas virtuais . . . . . . . . 216
27.2.1 Acesso remoto via Internet . . . . . . . . . . 216
27.2.2 Conexo de LANs via Internet . . . . . . . . 216
27.2.3 Conexo de computadores numa intranet . . 217
27.3 Requisitos bsicos . . . . . . . . . . . . . . . . . . . 218
27.3.1 Autenticao de Usurios . . . . . . . . . . 219
27.3.2 Gerenciamento de Endereo . . . . . . . . . 219
27.3.3 Criptografia de Dados . . . . . . . . . . . . 219
27.3.4 Gerenciamento de Chaves . . . . . . . . . . 219
27.4 Tunelamento . . . . . . . . . . . . . . . . . . . . . 219
27.4.1 Protocolos de tunelamento . . . . . . . . . . 220
27.5 Instalao e configurao . . . . . . . . . . . . . . . 220
27.5.1 Configurao da Matriz . . . . . . . . . . . . 221
xvi

27.5.2 Configurao da filial . . . . . . . . . . . . . 223


27.5.3 Configuraes nos firewalls . . . . . . . . . 224
28 SNMP

227

28.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 227


28.2 Componentes Bsicos do SNMP . . . . . . . . . . . 227
28.3 Arquitetura . . . . . . . . . . . . . . . . . . . . . . 228
28.3.1 Master Agent . . . . . . . . . . . . . . . . . 228
28.3.2 Subagent . . . . . . . . . . . . . . . . . . . 229
28.3.3 Management Station . . . . . . . . . . . . . 229
28.4 Nomes de objetos e MIB . . . . . . . . . . . . . . . 229
28.5 Instalao e Configurao . . . . . . . . . . . . . . . 230
28.6 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 231
29 MRTG

233

29.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 233


29.2 Instalao e configurao . . . . . . . . . . . . . . . 233
29.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 235
30 Cacti

237

30.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 237


30.2 Instalao e configurao . . . . . . . . . . . . . . . 238
31 Nagios

241

31.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 241


31.2 Instalao e configurao . . . . . . . . . . . . . . . 242
31.2.1 Monitorando outras mquinas . . . . . . . . 244
31.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . 247
xvii

Odilson Tadeu Valle

32 Webmin

249

32.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 249


32.2 Instalao e configurao . . . . . . . . . . . . . . . 250
A Sistema Operacional

253

A.1 Processos . . . . . . . . . . . . . . . . . . . . . . . 255


B Linux

257

B.1 Histrico . . . . . . . . . . . . . . . . . . . . . . . 257


B.2 Uma viso geral do Linux . . . . . . . . . . . . . . . 260
B.3 Kernel/Shell . . . . . . . . . . . . . . . . . . . . . . 261
C Editor vi

263

C.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 263


C.2 Os trs modos de operao do vi . . . . . . . . . . . 264
C.3 O Buffer de edio . . . . . . . . . . . . . . . . . . 264
C.4 Criao e edio de arquivos . . . . . . . . . . . . . 265
C.4.1

Alguns comandos teis . . . . . . . . . . . . 265

D Estrutura de Arquivos e Diretrios

267

D.1 Diretrios . . . . . . . . . . . . . . . . . . . . . . . 268


D.1.1 Diretrio de Entrada . . . . . . . . . . . . . 269
D.1.2 Diretrios Corrente . . . . . . . . . . . . . . 270
D.2 Substituio do Nome do Arquivo . . . . . . . . . . 271
D.3 Marcao do Caracter Especial . . . . . . . . . . . . 272
E Manipulando Arquivos e Diretrios

275

E.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . 275


E.2 Comandos para Arquivos e Diretrios . . . . . . . . 276
xviii

F Comandos Bsicos

289

F.1

Introduo . . . . . . . . . . . . . . . . . . . . . . . 289

F.2

Ciclo de Execuo do Comando . . . . . . . . . . . 290

F.3

Comandos . . . . . . . . . . . . . . . . . . . . . . . 290

G Redirecionamentos

293

G.1 Entrada e Sada dos comandos . . . . . . . . . . . . 293


G.2 Entrada e Sada Padro . . . . . . . . . . . . . . . . 293
G.3 Redirecionamento de Entrada e Sada . . . . . . . . 294
G.3.1 Smbolos de redirecionamento . . . . . . . . 295
G.3.2 Redirecionamento de entrada . . . . . . . . . 295
G.3.3 Redirecionamento de sada . . . . . . . . . . 295
G.3.4 Pipes . . . . . . . . . . . . . . . . . . . . . 296
G.3.5 Redirecionamentos mltiplos

. . . . . . . . 297

G.3.6 Redirecionamento de erro padro . . . . . . 298

xix

Captulo 1

Introduo
Como princpio o gerenciamento de redes consiste em controlar os
dispositivos que compe a rede local e prover servios de rede aos
usurios da maneira transparente e fcil aos mesmos, sem esquecer a
segurana da mesma.
Usurios de rede acessam servios como: correio eletrnico,
navegao na internet, servidor para hospedar as pginas de seus projetos, um lugar seguro para guardar seus dados e documentos, impressoras etc. A tica dos mesmo que os servios devem estar sempre
disponveis, na mxima velocidade e sem impeclios em seu uso.
A direo da instituio normalmente enxerga a rede como um
recurso para melhorar a produtividade mas com um custo muitas
vezes elevado. Sendo assim estabelece limites para gastos, seja com
equipamentos, seja com contratao de enlaces com a Internet ou
ponto a ponto.
Por outro lado, do ponto de vista do administrador da rede, para
prover estes servios de maneira estvel e segura so necessrios uma
srie de outros servios e equipamentos que, a princpio, no interessa
diretamente ao usurio ou direo, sendo que muitas vezes os mesmos no percebem a existncia destes. Ao administrador da rede cabe
a tarefa de manter a rede ativa e funcional, sob todas as perspectivas,
seja do usurio em busca de servios, seja da direo da instituio

Odilson Tadeu Valle

com as polticas de permissionamento de acessos, seja do ponto de


vista de estabilidade, disponibilidade e confiabilidade que todos esperam da mesma.
Na Figura 1.1 apresentado um diagrama com exemplos de
servios bsicos de rede que um administrador de sistemas deve ofertar. Deve-se observar que os servios podem ou no estar agrupados
na mesma mquina.
Internet

DNS
WWW
E-mail
FTP
SSH
Cota
Backup
etc

DNS
SSH
LDAP
Samba
Cota
etc

DMZ

DHCP
Backup
SSH
etc

Firewall
Proxy/Cache
SSH

NFS
Cota
SSH
etc

....
Cliente A

Cliente B

Figura 1.1: Servios de Rede

A seguir so apresentados dezenas de tpicos, separados por


captulos. Inicia-se pela configurao bsica do servidor, Captulos
2 10, onde so abordados temas relativos configurao e
manuteno do servidor propriamente dito. Normalmente estas
tarefas devem ser executadas no incio da vida til do servidor, para
que o mesmo tenha longevidade.
Em seguida, como um captulo a parte, abordado rapidamente
conceitos da programao shell, Captulo 11, que tem por objetivo
2

Introduo

auxiliar o administrador nas tarefas repetitivas de manuteno dos


servidores e da rede.
Chega-se ento ao foco do livro: os servios de rede. Entre
os Captulos 12 32 so rapidamente abordados vrios exemplos
de servios que devem fazer parte de uma rede. Iniciando-se pelos servios propriamente dito, Captulos 12 21, passando-se pelos
servios relacionados segurana da rede, Captulos 22 27 e, finalmente chegando aos servios que permitem o monitoramento da
mesma, Captulos 28 32.
O texto tem por objetivo prover uma configurao bsica dos
vrios servios, com um conhecimento bsico terico/prtico dos
mesmos. Em caso de necessidades de configuraes avanadas
nos servios, deve-se consultar bibliografias especializadas.
Todos os servios e configuraes realizadas ao longo do texto
tem como base o sistema operacional Linux, ver Apndices A e B.
Mais especificamente foi utilizada a distribuio Mandriva. O
Linux foi escolhido principalmente por motivos didticos, j que
a configurao de parmetros agrupados em arquivos texto,
normalmente acrecidos de comentrios, levam a um melhor
entendimento dos processos envolvidos.

Captulo 2

Inittab
2.1

Introduo

O arquivo inittab descreve que processos so iniciados no boot e


durante a operao normal. O init distingue mltiplos runlevels,
cada um dos quais pode ter o seu prprio conjunto de processos que
sero iniciados. Runlevels vlidos so 0-6.

2.2

Congurao

Antes que qualquer script de inicializao tenha sido executado pelo


sistema operacional, ver Apndice A, o arquivo /etc/inittab lido.
Cada linha neste arquivo possui o seguinte formato:

ID:runstate:ao:processo
Cada um destes campos indicam:

ID identificador da entrada
runstate nvel de operao na qual esta entrada usada
ao indica como o processo executado. Por exemplo, o valor
wait indica que o processo deve ser executado e aguardar pelo
seu encerramento

Odilson Tadeu Valle

processo indica o comando ou processo a ser executado.


A linha

s3:3:wait:/sbin/rc3
indica que o script /sbin/rc3 executado quando o sistema se
encontra no nvel de operao de nmero 3 e que o processamento
deve ser encerrado antes que qualquer ao adicional seja tomada.
Uma das principais atribuies deste arquivo a definio do
nvel de inicializao do sistema (runlevel), que podem ser:

0 halt (no o deixe como padro)


1 Modo monousurio
2 Modo multiusurio, sem NFS (basicamente sem rede)
3 Modo multiusurio completo (com rede)
4 No usado (pode ser usado para definir um modo prprio)
5 X11 (ambiente grfico)
6 reboot (no o deixe como padro)
Por exemplo:

id:5:initdefault:
indica que est mquina inicializa no modo grfico.
Outra atribuio deste arquivo habilitar ou no o reboot pela
associao das teclas <Ctrl>+<Alt >+<Delete >, com uma linha do
tipo:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now


Se comentarmos esta linha o reboot pelo teclado ser desabilitado.

Captulo 3

Instalao de Aplicativos
com RPM
3.1

Introduo

RPM, um acrnimo de Red Hat Package Manager que um sistema


de gerenciamento de pacotes para Linux. RPM instala, atualiza, desinstala e verifica softwares. RPM o formato base da Linux Standard
Base. Originalmente desenvolvido pela Red Hat Linux. RPM agora
usado por muitas distribuies Linux e tambm portado para outros
sistemas operacionais como NetWare da Novell e AIX da IBM.

3.2

Base de Dados RPM

Na base do gerenciador de pacotes est o banco de dados rpm. Ele


consiste de uma lista duplamente ligada que contm todas as informaes de todos os rpm instalados. O banco de dados armazena todos os arquivos que so criados ou modificados quando um usurio
instala um programa e facilita a remoo destes mesmos arquivos,
quando da remoo do programa. Se o banco de dados corrompido,
0

http://pt.wikipedia.org/wiki/RPM

Odilson Tadeu Valle

as ligaes duplas garantem que eles possa ser reconstrudo sem nenhum problema. Nos computadores com o sistema operacional RedHat e derivados instalado, este banco de dados se encontra em /var/
lib/rpm.

3.3

Rtulo dos Pacotes

Todo pacote RPM tem um rtulo de pacote (package label), que contm as seguintes informaes:
<nome>-<verso>-<release>.<arquitetura>.rpm
O nome do software.
A verso do software (a verso tirada da fonte original do pacote).
A edio do pacote (o nmero de vezes que o pacote foi refeito
utilizando a mesma verso do software).
A arquitetura sob a qual o pacote foi feito (i386, i686, athlon,
ppc, noarch etc.).
Um exemplo:
nano-0.98-2.i386.rpm
Note que o rtulo do pacote est contido no arquivo e no precisa necessariamente ser o mesmo que o nome do arquivo.
O cdigo-fonte tambm pode ser distribudo em pacotes RPM. O
rtulo de tais pacotes no contm a parte destinada para a arquitetura
e em seu local inserem src. Exemplo:
libgnomeuimm2.0-2.0.0-3mdk.src.rpm
8

Instalao de Aplicativos com RPM

3.4

Vantagens e desvantagens do formato

As vantagens de utilizar os pacotes RPM em com relao a outros


mtodos de adquirir e instalar software so:
Um mtodo uniforme para o usurio instalar programas.
Maior simplicidade para desinstalar os programas.
Popularidade: muitos pacotes disponveis.
Instalao no-interativa: facilita uma instalao automtica.
Cdigo-fonte original includo (.tar.gz, .tar.bz2): fcil de verificar.
Verificao criptogrfica com o GPG e o md5.
As desvantagens incluem:
comum haver mudanas no formato de pacote incompatveis
com verses anteriores.
Documentao incompleta e desatualizada.
Pouca aprendizagem sobre os pacotes.

3.5

Acessrios relacionados

O RPM comumente usado por outros acessrios para manipular dependncias, como o Yellow dog Updater Modified - yum ou o (verso
compatvel com RPM) Advanced Packaging Tool (apt).
Alguns gerenciadores de pacotes so:
dpkg usado com o Advanced Packaging Tool (apt) no Debian
Linux.
portage usado no Gentoo Linux.
urpmi usado no Mandriva.
9

Odilson Tadeu Valle

3.6

Instalao/remoo de aplicativos com

URPMI

No caso do Mandriva sempre a opo mais fcil usar o urpmi, j que


o mesmo tenta adivinhar o que estamos querendo instalar e instala
todas as dependncias, se for o caso. Por exemplo, se desejarmos
instalar o digikam (software para manipulao e gerenciamento de
fotos), mas no lembramos exatamente o nome e digitamos
urpmi digi
O sistema retornar algo parecido com o apresentado abaixo.
nenhum nome de pacote digi
Os seguintes pacotes contem digi:
acroread-plugins-digitalsignature
digicamerge
digikam
digikamimageplugins
digitemp
libdigidoc2
libdigidoc2-devel
libdigikam0
libdigikam0-devel
rmedigicontrol
vdr-plugin-digicam
x11-driver-input-digitaledge
Como houve problemas digitamos ento o nome completo do
pacote, conforme uma das sugestes apresentadas.
urpmi digikam
10

Instalao de Aplicativos com RPM

3.6.1 Remoo de aplicativos


Para desinstalar (extrair) basta digitarmos:
urpme nome_do_pacote

3.7

Mdias do URPMI

Mdia o local onde tem-se pacotes rpm para o Mandriva. O cd-rom,


o dvd, diretrio nfs, ftp, http todos so mdias.
Geralmente a maioria chama de repositrio devido ao costume
de se trabalhar com o Debian e Conectiva com a ferramenta APT.
Estas so facilmente gerenciadas com alguns comandos:
urpmi.addmedia Adiciona mdias base de dados
urpmi.removemedia Remove mdias da base de dados
As mdias podem ser stios da internet, permitindo
assim o administrador manter o sistema sempre atualizado.
Existe um excelente stio para cadastro de mdias que o
http:\slash\slasheasyurpmi.zarb.org\slash. Neste stio
configuramos as mdias de acordo com a verso e necessidades,
basta seguir o roteiro do stio.

11

Captulo 4

Sistema de Arquivos
4.1

Introduo

Um dispositivo de armazenamento um dispositivo fsico construdo


para armazenar informaes na forma binria, zeros e uns. So exemplos: discos rgidos, pen-drives, disquetes, cartes de memria etc.
Um dispositivo de armazenamento pode ser dividido em vrias
partes, cada uma destas partes conhecida como partio que so
meramente divises lgicas. Ao particionar um dispositivo obtm-se
algumas vantagens, as principais so:
A possibilidade de se instalar vrios sistemas operacionais.
Cada partio, ou conjunto de parties, pode conter um
sistema operacional distinto. A escolha do sistema a ser
executado se dar na inicializao da mquina, atravs de um
gerenciador de inicializao. No Linux os principais so o
Grub - Grand Unified Bootloader - e o Lilo - Linux Loader.
Este est caindo em desuso.
Maior aproveitamento do espao, j que para cada sistema de
arquivos existe uma granulometria mnima, ou seja, o espao
fsico mnimo que um arquivo pode ocupar. Este espao pode
ser maior que o tamanho do arquivo.

Odilson Tadeu Valle

Maior segurana nos dados. Se possui uma nica partio, ao


ter-se problema com o sistema de arquivos perde-se todos os
dados. Se possui-se vrias parties provavelmente o problema
se restringir uma partio, portanto perde-se somente os dados relativos mesma.
O MBR (Master Boot Record) uma parte especial do dispositivo. um setor de boot de tamanho de 512 bytes, que o primeiro
setor de um dispositivo de armazenamento particionado. Ele pode ser
utilizado para uma ou mais das seguintes funes: armazenar a tabela
de parties, inicializar o sistema operacional aps a BIOS (Basic Input Output System) repassar a execuo para as instrues de cdigo
de mquina contidas no MBR e identificao nica dos dispositivos
de armazenamento.
Sistema de arquivos1 o modo como os dados so armazenados numa partio do dispositivo de armazenamento. Cada partio
pode ter seu sistema de arquivos prprio, mas nunca mais de um. J
um disco com vrias parties pode ter vrios sistemas de arquivos.
Para armazenar dados deve-se organiz-los e armazenar conjuntamente vrias informaes que permitam identificar estes dados, suas
relaes com os demais, a quem pertencem etc.
Fazendo analogias, tal organizao assemelha-se a uma biblioteca escolar. O bibliotecrio organiza os livros conforme o seu
gosto, cuja busca, convenientemente, procura deixar mais fcil, sem
ocupar muitas prateleiras e assegurando a integridade destes. Ainda,
certamente, organiza os livros segundo suas caractersticas (assunto,
autor etc). Depois de organizados, ou durante a organizao, o bibliotecrio cria uma lista com todos os livros da biblioteca, com seus
assuntos, localizaes e cdigos respectivos.
O Sistema Operacional (Apndice A) seria o bibliotecrio da
biblioteca de dados do computador: o dispositivo de armazenamento. Exatamente igual organizao de uma biblioteca, o Sistema
Operacional/Sistema de Arquivos (ver Captulo 4) guarda os
dados nos espaos vazios do disco, rotulando-os com um FCB (File
1

14

http://pt.wikipedia.org/wiki/Sistema_de_cheiros

Sistema de Arquivos

Control Block) e ainda criando uma lista com a posio deste dado,
chamada de MFT (Master File Table).
Sabendo a posio do arquivo a ser aberto/gravado, o Sistema
Operacional solicita a leitura desta, decodifica/codifica e realiza a
abertura/gravao do dado.
Um sistema de arquivos , assim, uma forma de criar uma estrutura lgica de acesso a dados numa partio.
Sistema de arquivos e parties so normalmente confundidos,
quando na verdade so conceitos totalmente diferentes. As parties
so reas de armazenamento, criadas durante o processo de particionamento, sendo que cada partio funciona como se fosse um dispositivo de armazenamento. Para se utilizar uma partio, entretanto,
deve-se criar um sistema de arquivos, ou seja, um sistema que organize e controle os arquivos e diretrios desta partio.
Quando um sistema de armazenamento e particionado com uma
nica partio e formatado com um sistema de arquivos do Linux,
o mesmo dividido em 4 partes, Figura 4.1.

Figura 4.1: Estrutura de um sistema de arquivos genrico no


LINUX

O bloco de boot contm o boot do sistema operacional.


O superbloco contm informaes sobre o sistema de arquivos,
como nmero de inodes, inodes livres, nmero de blocos, blocos
livres etc.
A tabela de inodes contm informaes sobre cada arquivo (diretrio um tipo especial de arquivo). Cada inode tem 64 bits e
contm as seguintes informaes:
UID e GID (identificao do usurio e grupo dono)
Tipo de arquivo. Arquivo comum, diretrio, link, dispositivo
etc., ou 0 (zero) se o inode no estiver em uso.
15

Odilson Tadeu Valle

Permisses.
Data e hora de criao, acesso e ltima modificao.
Nmero de links para o mesmo.
Tamanho.
Localizao dos blocos onde est armazenado seu contedo.
O bloco de dados contm os dados propriamente ditos dos arquivos.
O Linux tem suporte dezenas de sistemas de arquivos, sendo
que os principais so:
ext: sistema de arquivos estendido (extended filesystem). o
sistema de arquivos mais utilizado no Linux. Existem ramificaes (ext2, ext3 e ext4), sendo o ext3 o mais amplamente utilizado pela comunidade Linux atualmente. Ele fornece padres
para arquivos regulares, diretrios, arquivos de dispositivos,
links simblicos e suporte a transaes (journalling), entre outras caractersticas avanadas. O ext4, lanado no final de 2008,
amplia os limites de armazenamento para 64 bits, aproximadamente 18 Exa Bytes, alm de melhorias de desempenho etc.
vfat: este o sistema de arquivos (volume FAT) dos sistemas
Windows9x e Windows NT.
ntfs:
este o sistema de arquivos dos sistemas
Windows2000, Windows XPe NT, entre outros.
nfs: sistema de arquivos de rede, utilizado para acessar diretrios de mquinas remotas, que permite o compartilhamento
de dados na rede.
reiserfs: sistema de arquivos com suporte a caractersticas
como, por exemplo, melhor performance para diretrios muito
grandes e suporte a transaes (journalling). No suporta
nativamente cota para usurios e grupos.
16

Sistema de Arquivos

xfs: Projetado especialmente para trabalhar com arquivos


grandes (de at 9 mil petabytes) e diretrios com vrios
arquivos. Oferece suporte a quotas para usurios e grupos.
Suporta transaes (journalling).
iso9660: sistema de arquivos do CD-ROM.

4.2

Particionando e formatando discos

O Linux trata os discos, diferentemente do Windows, por nomes hda,


hdb, hdc e hdd para discos IDE; sda, sdb etc para discos SATA e
SCSI.
As parties so numeradas dentro de cada disco, do tipo
hda1, hda2 etc. Sendo que o Linux normalmente cria uma partio
primria, uma estendida e as demais lgicas dentro desta estendida.
Sendo assim os nomes das parties seriam hda1, hda5, hda6 etc.
Para particionar-se discos pode-se usar as ferramentas fdisk,
cfdisk ou, no caso especfico do Mandriva, o diskdrake.
Exemplo:
Para criar uma partio no espao livre em disco da mquina
executa-se a seguinte sequncia de comandos:
1. cfdisk /dev/sda - abrir uma janela conforme Listagem 4.1.
1

cfdisk ( util linuxng 2.14.2)

2
3
4
5

Disco: /dev/sda
Tamanho: 160041885696 bytes, 160.0 GB
Cabecas: 255 Set . por Trilha : 63 Cilindros : 19457

6
7
8
9
10
11
12
13

Nome Opcoes Tipo


Tipo SA
Tamanho (MB)
Particao
[Rotulo]

sda1 Inic .
Primaria Linux ext3
41940,71
sda5
Logica
Linux ext3
20003,89
sda6
Logica
Linux swap/ Solaris
1998,75
sda7
Logica
Linux ext3
10001,95
17

Odilson Tadeu Valle

14
15

Pri / log
Primaria

sda3

Espaco livre
Linux ext3

29652,14
56441,88

16
17
18

[ Iniciali .] [ Excluir ] [ Ajuda ] [ Maximize ]


[ Mostre ] [ Sair ] [ Tipo ] [Unidades] [ Gravar ]

19
20

Alterna a opcao da particao atual como inicializavel

Listing 4.1: Tela exemplo do cfdisk

2. Selecionar, com as setas, Espao livre.


3. Selecionar, no menu inferior, Nova.
4. Selecionar, no menu inferior, conforme desejado uma partio
do tipo Primria ou Lgica.
5. Informar o tamanho desejado para a partio a ser criada.
6. Selecionar, no menu inferior, conforme desejado que a nova
partio ocupe o Incio ou Fim do espao livre no disco.
Em seguida deve-se formatar a partio com o comando:
mkfs.ext3 /dev/hdaX
Onde X o nmero da partio recm criada. Muito cuidado, pois
se informado o nmero errado detona-se uma partio indevida. Se
no lembrar do nmero use o cfdisk para ter certeza.

4.3

Montando parties

Uma vez formatado deve-se montar a nova partio para que ela se
torne acessvel aos usurios. O primeiro passo criar um diretrio
onde ser montado a nova partio e em seguida a montagem. Por
exemplo:
mkdir /dados
18

Sistema de Arquivos

Tabela 4.1: Exemplo do arquivo /etc/fstab

Device
/dev/hda4
/dev/hda5
/dev/hda6
/dev/hdb

Moint point File


System
/
/home
swap
/mnt/cdrom

ext3
ext3
swap
iso9660

/dev/fd0

/mnt/oppy

auto

/dev/hda2

/media/win

ntfs

Options Dump Fsck


relatime
relatime
relatime
relatime,
noauto,
user
relatime,
noauto,
user
noexec

1
1
0
0

1
2
0
0

mount /dev/hdaX /dados


Assim tem-se a nova partio disponvel para uso mas, deste
modo, isto valer somente at reiniciarmos a mquina. Se desejamos
usar sempre tal partio deve-se informar ao sistema sobre isto.
O arquivo /etc/fstab2 (File System Table) guarda as informaes de montagens das parties desejadas. Este arquivo lido
em toda inicializao do kernel e define as parties a serem montadas automaticamente. O fstab tambm serve para montar outras
parties com outros sistemas de arquivos, por exemplo sua partio
Windows, toda vez que ligar o computador. Tambm usado para
montagens dos dispositivos como cd-rom, dvd, floppy-disk, pen-drive
etc.
Na Tabela 4.1 tem-se um exemplo de um arquivo /etc/fstab,
que pode ser editado com o vi (Apndice C).
O modelo de entrada no arquivo fstab assim:
[dispositivo] [ponto de montagem] [sistema de
2

http://www.linuxbsd.com.br/phpLinuxBSD/modules/artigos _tecnicos/fstab.htm
19

Odilson Tadeu Valle

arquivos] [opes] [opo para o dump] [opo para


o fsck]

dispositivo Nesse campo colocado o dispositivo a ser


montado ou um sistema de arquivos remoto. Para montagens
NFS deve ser colocado <mquina>:<dir>, exemplo:
servidor.de.arquivos:/home/minhapasta.

ponto de montagem Ele identifica em qual pasta ser montada


a partio, para parties swap esse campo deve ser especificado como swap. No nosso exemplo na primeira linha tem-se
a pasta raiz do Gnu/linux, j na segunda linha a pasta /home
que ser montado no sistema.

sistema de arquivos Nesse campo descreve-se qual o sistema


de arquivo. Consulte /proc/filesystems para saber quais
sistemas de arquivos so suportados pelo seu kernel.

opes Abaixo tem-se algumas das opes disponveis no fstab


e seus significados:

noauto Essa opo faz com que o dispositivo no montado


automaticamente durante o boot, a opo que deve ser
usada para disquetes e cd-roms no fstab, pois seno o
Gnu/Linux iria tentar mont-los mesmo que no existissem discos inseridos.

user Essa opo tima tambm para discos removveis,


ela permite que qualquer usurio possa montar esse dispositivo.

noexec Essa opo muito til quando monta-se parties


Windows, pois ele no gerencia os arquivos com permisses como no Gnu/Linux, com isso os arquivos ficam todos como executveis, se clicar em cima de um arquivo
mp3, usando o konqueror por exemplo, ele vai tentar
executar o arquivo claro que sem funcionar, usando
essa opo faz-se com que isso no ocorra.
20

Sistema de Arquivos

uid Essa opo til quando se monta parties FAT, pois


elas no trabalham com permisses de arquivo, assim todas as parties que forem montadas com esta opo tero
como dono dos arquivos o root. Assim um usurio normal no poderia ter total controle desse diretrio.

gid Com essa opo pode-se redefinir o grupo do diretrio,


na verdade a mesma funo da opo acima, s que faz
isso com o grupo.
jean:x:522:700::/home/jean:/bin/false
No exemplo o gid do grupo 700.

umask serve para indicar quais sero as permisses dos arquivos, j que os sistemas FAT e derivados no tem sistema de permisses. O padro a mscara do processo
atual. O valor dado em formato octal. O padro geralmente representado por 022, ou seja, bit w(permisso
de escrita) apenas para o dono.

ro O dispositivo ser montado somente para leitura.


rw Monta o sistema de arquivos com permisso de leitura e
gravao.

exec Permite a execuo de binrios.


suid Permite o uso dos bits de configurao de identificao
do usurio e do grupo.

dev Interpreta dispositivos especiais de blocos ou caracteres


no sistema de arquivos.

relatime Usa as opes padro: rw, suid, dev, exec, auto,


nouser, e async.

opo para o dump Essa opo usada pelo comando dump


para determinar quais sistemas de arquivos precisam de cpias
de segurana. Caso no tenha sido escrito nada nesse quinto
campo o valor dele ser considerado zero, e o dump assumir
que esse sistema de arquivos no precisa ser copiado.

opo para o fsck Nesse campo deve-se colocar a ordem em


que os sistemas de arquivos sero verificados pelo fsck - File

21

Odilson Tadeu Valle

System Check - durante o boot. A partio raiz ( /), sempre


como 1, e os outros sistemas de arquivos devem ter esse campo
a partir de 2 fazendo seqncia de acordo com o nmero de
parties que se quer montar. Sistemas de arquivos em um
mesmo dispositivo, sero verificados seqencialmente, e sistemas de arquivos em dispositivos diferentes, sero verificados
ao mesmo tempo para utilizar o paralelismo disponvel com o
hardware. Caso esse campo no exista ou esteja com o valor 0
o fsck no ir checar essa partio ao inicializar o Gnu/Linux.

4.4

A estrutura de diretrios

O GNU/Linux segue o Filesystem Hierarchy Standard para


nomeao de arquivos e diretrios, ver detalhes nos Apndices D e
E. Este padro permite aos usurios e programas predizerem a
localizao de arquivos e diretrios. O diretrio de nvel raiz
representado simplesmente pela /. No nvel raiz, todos os sistemas
incluem os diretrios listados abaixo como padro.

bin Binrios (executveis) de comandos essenciais.


boot Arquivos estticos, gerenciador de inicializao e imagem
do kernel.

dev Arquivos associados a ponteiros para dispositivos.


etc Arquivos de configurao dos sistemas e servidores instalados
na mquina.

home Diretrios de usurios.


lib Bibliotecas essenciais compartilhadas e mdulos do kernel.
media Diretrio para montagem de sistemas de arquivos temporrios.

proc Diretrio virtual de informaes de processos e hardware do


sistema.
22

Sistema de Arquivos

root Diretrio home do usurio root.


sbin Binrios essenciais do sistema do usurio root.
tmp Arquivos temporrios.
usr Unix System Resources - A maioria dos aplicativos esto neste
diretrio.

var Dados variveis.


opt Aplicativos adicionais e pacotes de softwares.

23

Captulo 5

LVM - Logical

Manager
5.1

Volume

Introduo

O LVM tem por objetivo facilitar a administrao do espao em disco.


Permite a ampliao ou reduo da capacidade de armazenamento de
uma determinada partio virtual, atravs do aumento ou diminuio
do espao ocupado pela mesma, dentro de um disco virtual.
Por outro lado o disco virtual pode ser expandido pela insero
de novas parties no mesmo, permitindo assim uma ampliao
ilimitada do espao de armazenamento. Esta insero feita com
alguns comandos, transparente aos usurios e so executadas com
o sistema de arquivos completamente operacional, sem precisar de
nenhuma interrupo de acesso aos mesmos. Cabe ressaltar que para
insero de um novo disco fsico no sistema deve-se ter um
hardware que comporte hot-swap, ou seja, os dispositivos podem ser
conectados ou desconectados com o sistema ligado.
O melhor momento de configurao do LVM na instalao do
servidor. Deve-se reservar uma rea mnima para o diretrio / (raiz)
e /boot, j que somente estes diretrios no podem ser montados em
parties LVM, e deixar todo o espao restante do disco como LVM,

Odilson Tadeu Valle

Figura 5.1.

Figura 5.1: Modelo de particionamento com LVM

5.2

O que o LVM

O Gerenciador de Volumes Lgicos consiste em uma camada adicional entre os dispositivos fsicos e a interface de E/S no kernel para
fornecer uma viso lgica no armazenamento.
Ao contrrio do mtodo tradicional de particionamento, a implementao LVM cria um grande disco virtual, que pode inclusive
ter mais de um dispositivo de armazenamento, e o divide em parties
virtuais.
A grande vantagem permitir o redimensionamento das reas
de modo dinmico, ou seja, com o sistema operacional sendo utilizado.
A grande desvantagem que por ser um nico disco virtual, a
recuperao de dados em uma eventual pane no sistema de armazenamento bastante prejudicada.
A camada LVM composta pelas seguintes partes:
PV (Physical Volume) - Os volumes fsicos so as parties de
discos alocadas para o LVM.
VG (Volume Group) - o grande disco virtual. Um conjunto
(1 ou mais) de PVs forma um VG. Um conjunto de PVs podem
ser necessrios para criar filesystems maiores que a limitao
fsica de um disco rgido. Pode-se ter mais de um VG num
nico sistema.
26

LVM - Logical Volume Manager

PE (Physical Extent) - Quando um PV inserido em um VG o


LVM o divide em vrias partes de igual tamanho e essas partes
so associadas a uma LE (Logical Extent), o menor valor de
alocao dentro de um VG (do ponto de vista do LVM).
LV (Logical Volume) - a partio virtual. Esse elemento
formado por um conjunto de LEs, na qual criamos o filesystem.
Ao criar-se um volume lgico, recebe-se um device para referenciar, ao criar ou manipular, o sistema de arquivos. O nome
do dispositivo do tipo /dev/nome_do_vg/nome_do_lv.
VGDA (Volume Group Descriptor Area) - Numa analogia
mais grosseira, essa rea uma tabela de alocao do VG.
Nela h todos os dados do VG. dividida em quatro partes
bsicas: descritor de PV, descritor de VG, descritor de LV e
vrios descritores de PE e LE. Os backup automticos da
VGDA so guardados em /etc/lvm-conf/.
Na Figura 5.2 pode-se observar um exemplo de uso do LVM,
onde tem-se 3 discos rgidos. O primeiro e o terceiro discos contm partes utilizadas pelo o LVM e parties normais. O segundo
disco completamente ocupado pelo LVM. Supondo que o tamanho
da P V1 , P V2 , P V3 e P V4 sejam respectivamente 158 GB, 120 GB,
60 GB e 40 GB, tem-se assim um VG totalizando 378 GB. Este ser
o grande disco rgido visto pelo sistema operacional. Este disco
poder ser particionado e formatado, com os procedimentos j vistos
no Captulo 4. Durante o uso do mesmo pode-se redimensionar estas parties, j que as mesmas encontram-se alocadas nesta unidade
virtual de armazenamento.
Num sistema pode-se ter vrios VGs independentes. Cada um
deles ser interpretado com um disco fsico pelo sistema operacional
e, portanto, seus limites no podero ser ultrapassados.
A qualquer momento pode-se adicionar novos PVs a um determinado VG. Isto muito interessante para o caso de um sistema estar
chegando ao limite de sua capacidade de armazenamento j que, com
o LVM, pode-se acrescentar um novo disco rgido, criar uma ou mais
PVS e incrementar o VG. Assim sendo o VG, que o disco virtual,
27

Odilson Tadeu Valle

Figura 5.2: Como a camada LVM

ter sua capacidade de armazenamento aumentada e pode-se ampliar


as capacidades de armazenamento de uma ou mais LV, que so as
parties virtuais, sem a necessidade de parada do sistema.

5.3

Implantando LVM

Se o LVM no foi instalado juntamente com o sistema pode-se instalar/configurar o mesmo posteriormente. Como primeira ao deve-se
instalar os pacotes necessrios para gerenciamento e criao de parties LVM. Para isto usa-se o comando:
urpmi lvm2
No exemplo abaixo cria-se um grupo de volumes de nome
vgteste, numa partio j existente na mquina.
Primeiro
"inicializa-se"o LVM com o comando:
28

LVM - Logical Volume Manager

vgscan
Cria-se um volume fsico - PV - para cada partio que desejase alocar ao LVM. O comando abaixo deve ser executado um para
cada partio. No caso da Figura 5.2 teria-se 4 PVs: PV1, PV2, PV3
e PV4.
pvcreate /dev/hdaX (X = nmero da partio existente)
Inclui-se todos os volumes fsicos PV no grupo de volumes
VG com o comando:
vgcreate vgteste /dev/hdaX /dev/hdbX ...
Atualiza-se o LVM com o comando:
vgscan
Ativa-se o grupo de volumes VG com o comando:
vgchange -a y
Verifica-se a criao com o comando:
vgdisplay -v vgteste
Dentro do grupo de volumes VG cria-se, por exemplo, dois
volumes lgicos lv1 de 300 MB e lv2 de 500 MB com os comandos:
lvcreate -L 300M -n lv1 vgteste
lvcreate -L 500M -n lv2 vgteste
Ative os volumes lgicos com os comandos:
29

Odilson Tadeu Valle

lvchange -a y /dev/vgteste/lv1
lvchange -a y /dev/vgteste/lv2
Formatam-se as parties lgicas criadas com os comandos
abaixo, ou de acordo com o sistema de arquivos usado: mkfs.xfs,
mkfs.ext3 e mkfs.reiserfs.
mkfs.ext4 /dev/vgteste/lv1
mkfs.ext4 /dev/vgteste/lv2
Criam-se os diretrios, onde sero montadas as parties, com
o comando:
mkdir /dados /backup
Montam-se as parties com os comandos:
mount /dev/vgteste/lv1 /dados
mount /dev/vgteste/lv2 /backup
Verificam-se as parties montadas com o comando:
df -h
As parties j esto disponveis para uso. Podem ser copiados
arquivos e diretrios. Se for necessrio pode-se aumentar o tamanho
da parties.
30

LVM - Logical Volume Manager

5.4

Modicando o tamanho de parties


LVM

Para aumentar o tamanho de uma partio preciso primeiro verificar a disponibilidade de espao no volume group - VG. O espao
disponvel pode ser visto com o comando:
vgdisplay
Para verificar quais so os volumes lgicos - LV - utiliza-se o
comando:
lvdisplay
No exemplo abaixo aumenta-se o volume lgico lv1 em 100
MB:
lvextend -L +100M /dev/vgteste/lv1
Procuram-se e reparam-se erros do volume lgico:
e2fsck -f /dev/vgteste/lv1
Pronto a partio j foi aumentada. O nico problema que
o sistema de arquivos ainda no sabe disso. Executa-se o prximo
passo de acordo com o sistema de arquivos:
Sistemas de arquivos XFS:
xfs_growfs /dados
Sistemas de arquivos ReiserFS:
resize_reiserfs -f /dev/vgteste/lv1
31

Odilson Tadeu Valle

Sistemas de arquivos EXT3 ou EXT4:


resize2fs /dev/vgteste/lv1
A reduo de tamanho de um volume lgico LV deve ser
feita com muito cuidado, j que pode-se incorrer no erro de diminuir
para um tamanho aqum do j ocupado pelos dados gravados. Podese ter problemas de o simples no funcionamento ou, o que pior,
de perda de dados. Neste caso deve-se ter em mente que o caminho
a ser percorrido o inverso do caminho para aumento. Esta operao
deve ser feita com o sistema de arquivos desmontado, portanto, para
o exemplo do caso /dados:
umount /dados
Em seguida procuram-se e reparam-se eventuais erros do volume lgico:
e2fsck -f /dev/vgteste/lv1
Diminui-se o tamanho do sistema de arquivos. No caso do sistema de arquivos ReiserFS possvel a especificao da quantidade
a diminuir, como no exemplo abaixo com a flag -s, ou pode-se especificar o novo tamnho desejado. J para o caso do EXT3 e EXT4,
deve-se especificar o novo tamanho total desejado. J o XFS no permite diminuir o tamanho.
resize_reiserfs -s -50M /dev/vgteste/lv1 50M
resize2fs /dev/vgteste/lv1 200M
E por ltimo reduz-se o tamnho do volume lgico LV. Este
tamanho deve ser compatvel (o mesmo) com o especificado no sistema de arquivos. Para o exemplo abaixo est-se reduzindo o tamanho
total em 50 MB.
32

LVM - Logical Volume Manager

lvreduce -L -50M /dev/vgteste/lv1


Agora j possvel a montagem e uso da partio com seu novo
tamanho:
mount /dev/vgteste/lv1 /dados
df -h

33

Captulo 6

Administrao de
Usurios e Grupos
6.1

Introduo

Um usurio Linux uma entidade que possui uma identificao no


sistema onde os principais parmetros so: login, senha e nmero de
identificao. Estas informaes permitem ao Linux controlar como
o acesso garantido ao usurios e o que ele pode fazer depois de obter
a permisso de acesso.
Cada pessoa que queira acessar o sistema dever ter uma conta
de usurio que ter permisses exclusivas a determinados recursos.
Um grupo um conjunto de usurios. Cada grupo tambm possui identificao nica no sistema, um nome e um nmero. O administradores de sistemas normalmente fazem controle de acesso por
meio dos grupos.
Normalmente os grupos so um conjunto de usurios com alguma afinidade, por exemplo que trabalham no mesmo setor ou departamento. Os grupos compartilham recursos, como por exemplo:
pastas, impressoras etc. Na criao de grupos o administrador dever
ter em mente a estrutura organizacional da empresa para cri-los de
maneira pertinente.

Odilson Tadeu Valle

Um usurio deve pertencer obrigatoriamente a pelo menos um


grupo e este seu grupo primrio. Outros grupos podem ser associados ao usurio e sero seus grupos secundrios. Ao criar um arquivo
este ser associado a um usurio, o criador, e a um grupo, o grupo
primrio do usurio criador. No Apndice F existe uma relao de
alguns comandos que podem ser teis.

6.2

Criao de contas de usurios e grupos

Para criar um grupo usa-se o comando:


groupadd nome_do_grupo
Para criao de uma conta de usurio usa-se o comando:
adduser login
Pode-se ainda sofisticar a criao de contas com algumas flags, as
principais so apresentadas a seguir.

-d Pode-se informar qual ser o diretrio home do usurio.


-g Pode-se definir o grupo primrio a que o usurio pertencer. Se
este no for informado o Linux cria um grupo com o mesmo
nome de usurio.

-G Define o(s) grupo(s) suplementar(s) ao(s) qual(is) o usurio


pertencer.

-c Normalmente o nome completo do usurio, endereo etc. Campos separados por vrgulas.

-s Esta opo interessante se desejado, por exemplo, que um


usurio no acesse a mquina com sua conta. Para isto informase /bin/false.
Em seguida define-se a senha com o comando:
passwd login
36

Administrao de Usurios e Grupos

6.3

Parmetros das contas

As contas de usurios e grupos ficam armazenadas nos seguintes arquivos /etc/passwd, /etc/group e /etc/shadow.
O arquivo /etc/passwd armazena informaes de todos os
usurios cadastrados no sistema. Por padro contas com UID e GID
abaixo de 500 so contas do sistema, normalmente pre-definidas, ou
criadas no momento de instalao de algum servio. Este arquivo
deve ter permisso de leitura para todos os usurios. A separao dos
campos feita pelo caractere : segundo o modelo:
login:x:503:500:comentrio:/home/login:/bin/bash
A descrio dos respectivos campos so:

login O login do usurio.


x Este campo continha a senha. Nos sistemas modernos esta pas-

sou para o arquivo shadow, descrito abaixo, por questes de


segurana, j que este arquivo de acesso geral.

503 UID, User Identification, nmero nico de identificao do


usurio.

500 GID, Group Identification, nmero que identifica o grupo


primrio.

comentrio Pode conter nome completo do usurio, endereo


etc.entre aspas simples e campos separados por vrgulas.

home/login Define o diretrio home do usurio.


/bin/bash O shell do usurio.
O arquivo /etc/group tem uma relao dos grupos do sistema.
Este arquivo deve ter permisso de leitura para todos os usurios.
Segue o modelo:
37

Odilson Tadeu Valle

nome_do_grupo:senha:500:lista_de_usurios
A descrio dos respectivos campos so:

nome_do_grupo O nome do grupo.


senha A senha (criptografada) do grupo. Se este campo estiver
vazio, nenhuma senha est atribuda ao grupo. Para atribuir
uma senha a um grupo usamos o comando gpasswd.

500 O identificador numrico do grupo.


lista_de_usurios Login de todos os membros suplementares
do grupo, separados por vrgulas. Usurios primrios no so
visveis neste arquivo.
O arquivo /etc/shadow contm as senhas dos usurios. Este
arquivo de uso esclusivo do usurio root e no acessvel a
usurios comuns. Sendo assim, nenhum usurio consegue copiar
este arquivo para uma possvel tentativa de quebra de senha. Segue o
modelo:
login:$1$/
clCUNfk$9UE29qRp5oJi0:13581:0:99999:7:2::
A descrio dos respectivos campos so:

login nome de usurio.


$1$/clCUNfk$9UE29qRp5oJi0 Senha criptografada.
13581 Nmero de dias, desde 01/01/1970, em que a senha sofreu
a ltima alterao.

0 O prazo, em dias, em que a senha no pode ser alterada.


99999 O prazo, em dias, em que a senha dever ser alterada.
38

Administrao de Usurios e Grupos

7 A partir de quantos dias antes da expirao da senha o usurio


receber aviso para alter-la.

2 Quantos dias aps a expirao da senha a conta ser desabilitada.


em branco Nmero de dias, desde 01/01/1970, que a conta est
desabilitada. Se este campo estiver vazio significa que a conta
est ativa.

em branco Campo reservado.

6.4

Arquivos de denies para contas

O arquivo /etc/login.defs contm uma srie de diretivas e


padres que sero utilizados na criao das contas de usurios. Vale
ressaltar que as alteraes neste arquivo tero efeito a partir das
prximas contas criadas, ou seja, no tem valor sobre contas j
existentes. Seu principal contedo apresentado na Tabela 6.1.
O arquivo /etc/default/useradd tambm contm padres
para criao de contas. Seu principal contedo apresentado na
Tabela 6.2.

6.5

Alterando parmetros das contas

Para modificar uma conta j existente pode-se usar o comando


usermod opes login
Onde as principais opes so apresentadas a seguir.

-c Comentrio: nome completo, endereo, telefone etc.


-d Diretrio home.
-e Data de expirao. Data, na forma AAAA-MM-DD (ano-msdia), que a conta ser desativada.
39

Odilson Tadeu Valle

Tabela 6.1: Principais diretivas do arquivo /etc/login.defs


Diretiva

Valor padro

MAIL_DIR
PASS_MAX_DAYS

/var/spool/mail
99999

PASS_MIN_DAYS

PASS_MIN_LEN

PASS_WARN_AGE

UID_MIN
UID_MAX
GID_MIN
GID_MAX
CREATE_HOME

500
60000
500
60000
yes

Comentrio

Diretrio de e-mail
Nmero de dias at que a
senha expire
Nmero mnimo de dias entre duas trocas senha
Nmero mnimo de caracteres para composio da
senha
Nmero de dias para noticao da expirao da
senha
Nmero mnimo para UID
Nmero mximo para UID
Nmero mnimo para GID
Nmero mximo para GID
Criar ou no o diretrio
home

-g Grupo primrio.
-G Grupo(s) suplementar(es).
-l Novo login.
-L Trava a senha e portanto a conta de usurio.
-s Shell do usurio.

6.6

Removendo contas

Para remover um grupo usamos o comando:


groupdel nome_do_grupo
Para remover contas de usurio usamos o comando:
40

Administrao de Usurios e Grupos

Tabela 6.2:
useradd
Diretiva=

Principais diretivas do arquivo /etc/default/


Valor padro

GROUP=

100

HOME=

/home

INACTIVE=

-1

EXPIRE=

AAAA/MM/DD

SHEL=
SKEL=

/bin/bash
/etc/skel

Comentrio

GID primrio para os usurios criados


Diretrio a partir do qual sero criados os homes
Quantos dias aps a expirao da
senha a conta desativada
Dia da expirao da conta. Ano/
mes/dia
Shell atribudo ao usurio
Arquivos e diretrios padro para os
novos usurios

userdel login
A principal opo :
-r apaga o diretrio home do usurio e todo seu contedo.

41

Captulo 7

Permisso de Acesso
Arquivos
7.1

Introduo

H uma maneira de restringir o acesso aos arquivos e diretrios para


que somente determinados usurios possam acess-los. A cada arquivo e diretrio associado um conjunto de permisses. Essas permisses determinam quais usurios podem ler, e escrever (alterar) um
arquivo e, no caso de ser um arquivo executvel, quais usurios podem execut-lo.
Quando um usurio cria um arquivo ou um diretrio, o Linux
determina que ele o proprietrio (owner) daquele arquivo ou diretrio. O esquema de permisses do Linux permite que o proprietrio determine quem tem acesso e em que modalidade eles podero
acessar os arquivos e diretrios que ele criou. O super-usurio (root),
entretanto, tem acesso a qualquer arquivo ou diretrio do sistema de
arquivos.

Odilson Tadeu Valle

7.2

Permisses de acesso

O conjunto de permisses dividido em trs classes: proprietrio,


grupo e usurios. Assim, pode-se dar permisses de acesso diferentes
para cada uma destas trs classes.
Quando executa-se ls -l em um diretrio qualquer, os arquivos
so exibidos de maneira semelhante ao seguinte:
1
drwxr-xr-x
-rw-r- -r- -rw-r- -r- -rw-r- -r- -rw-r- -r- -

2
4
1
1
1
1

3
mar
ze
root
ze
root

4
adm
adm
root
prof
root

5
4096
11188
112614
900186
917615

6
Abr
Out
Dez
Out
Jan

7
2
31
27
31
5

8
14:48
21:28
14:47
22:04
21:27

9
BrOffice/
bro.bz2
bro.rpm
BrOo.exe
BrOo2.exe

As colunas que aparecem na listagem so:


1. Esquema de permisses (-rw-r--r--).
2. Nmero de ligaes do arquivo ou quantos outros arquivos esto associados a este.
3. Nome do usurio dono do arquivo.
4. Nome do grupo dono do arquivo.
5. Tamanho do arquivo, em bytes.
6. Ms da criao do arquivo.
7. Dia da criao do arquivo.
8. Hora da criao do arquivo.
9. Nome do arquivo.
O esquema de permisses est dividido em 10 colunas, que indicam se o arquivo um diretrio ou no (coluna 1), e o modo de
acesso permitido para o proprietrio (colunas 2, 3 e 4), para o grupo
44

Permisso de Acesso Arquivos

(colunas 5, 6 e 7) e para os demais usurios cadastrados no sistema


(colunas 8, 9 e 10).
Existem trs modos distintos de permisso de acesso: leitura
(read), escrita (write) e execuo (execute). A cada classe de usurios
pode-se atribuir um conjunto diferente de permisses de acesso. Por
exemplo, atribuir permisso de acesso irrestrito (de leitura, escrita e
execuo) para o dono do arquivo, apenas de leitura para usurios
que esto no mesmo grupo do dono, e nenhum acesso aos demais
usurios.
Deve-se aplicar a permisso de execuo somente a arquivos
que podem ser executados, como programas j compilados ou script
shell, caso contrrio ocorrero erros de execuo por parte do shell.
Para caso de diretrios a permisso de somente leitura implica
na possibilidade de um usurio, que se enquadra nesta permisso, visualizar o contedo do mesmo atravs de um comando do tipo ls,
mas no permite que este usurio entre no mesmo. J a permisso de somente execuo, permite que usurio entre no diretrio,
mas sequer consiga listar seu contedo, mesmo estando dentro do
mesmo.
Os valores vlidos mais comuns para cada uma das colunas
so os seguintes:
Coluna
1

valor
d

2,5,8

3,6,9

4,7,10

atributo
se o arquivo for um
diretrio
se existe permisso
de leitura
se existe permisso
de alterao
se existe permisso
de execuo

valor
-

atributo
se for um arquivo comum
se no existe permisso de leitura
se no existe permisso de alterao
se no existe permisso de execuo

O conjunto de permisses pode ser encarado, em resumo, como


as permisses para leitura, escrita ou execuo de seu contedo. O
contedo de um arquivo comum , por exemplo, seu texto e, portanto,
algum usurio que tem permisso de escrita sobre este arquivo, pode
45

Odilson Tadeu Valle

inclusive apagar todo o seu contedo mas talvez no possa apagar


o prprio arquivo, j que este pertence a um diretrio (tipo especial
de arquivo). Portanto as permisses de um diretrio podem afetar a
disposio final das permisses de um arquivo. Outro exemplo, se o
diretrio d permisso de gravao a todos os usurios, os arquivos
dentro do diretrio podem ser removidos, mesmo que esses arquivos
no tenham permisso de leitura, gravao ou execuo para o usurio
que vai remove-lo.

7.3

Alterando a permisso de acesso

Para alterar a permisso de acesso a um determinado arquivo usa-se


o comando:
chmod modo-de-permisso arquivo
O modo-de-permisso na linha de comando pode ser informada em um dos dois formatos: octal (absoluto) ou simblico. O
formato octal usa valores numricos para representar as permisses.

7.3.1 Formato octal do modo de permisses


H oito valores numricos possveis (0 -7) que representam o modo
de permisso para cada classe de usurios. Estes valores so obtidos
pela soma do tipo de permisso desejada, segundo a tabela abaixo:
permisso
valor

r
4

w
2

x
1

Exemplo : Usando o formato octal, muda-se o modo de permisso do arquivo arq1 para que o proprietrio tenha acesso total e
todos os outros usurios (grupo e outros) tenham apenas permisso
de leitura e execuo:
46

Permisso de Acesso Arquivos

chmod 755 arq1 7=rwx (4+2+1); 5=r-x (4+1)


ls -l arq1

-rwxr-xr-x 1 guest users 1475 May 20 11:02 arq1

7.3.2 Formato simblico do modo de permisses


O formato simblico usa letras e smbolos para indicar o modo de
permisso. Ele composto de trs elementos:
Tipo de usurio
u Usurio dono do arquivo.
g Grupo dono do arquivo.
o Outros ou demais usurios do sistema.
Ao significa como sero alteradas as permisses em relao
ao estado atual.
+ Acrescenta permisso(es).
- Remove permisso(es).
= Atribui a permisso explicitamente. O resultado ser
exatamente o indicado, no levando em considerao o
estado passado.
Tipo de permisso
r Leitura (read).
w Gravao (write).
x Execuo (execute).
A combinao desses trs elementos formam o modo de permisso no formato simblico.
Exemplos :
Tira-se a permisso de execuo, sobre o arquivo teste, do grupo
e dos outros usurios:
47

Odilson Tadeu Valle

chmod go-x teste


ls -l teste

-rwxrw-rw- 2 guest user s 512 May 20 14:04 teste


Mudam-se as permisses do arquivo prog2 para que todos os
usurios possam ler e execut-lo:
chmod a=rx prog2
ls -l

-r-xr-xr-x 1 guest users 1986 May 20 08:26 prog2

7.3.3 Mudando as permisses padro


Para modificar o conjunto de permisses que sero aplicadas a todos
os novos arquivos a serem criados, deve-se usar o comando:
umask [ permisso ]
Modifica a permisso padro para os novos arquivos a serem
criados. No comando, nmero um nmero octal de trs dgitos,
como visto no comando chmod. Com o comando umask ao se especificar nmero igual a 777, se estar negando acesso a todas as classes
em qualquer modo, seria equivalente a aplicar um chmod 000. De
fato, a permisso que ser concedida dada pela diferena entre a
permisso padro original, que 777 para diretrios e 666 para arquivos, e a permisso especificada em umask.
Por exemplo para diretrios a permisso padro 777 (rwxrwx
rwx), ao atribuir-se um valor de umask 023 e criar-se novos diretrios
tem-se as permisses 754 (rwxr-xr--). J para arquivos a permisso
padro 666 (rw-rw-rw-), ao atribuir-se um valor de umask 022 e
criar-se novos arquivos tem-se as permisses 644 (rw-r--r--).
Sem especificar um nmero o comando umask mostrar o valor
corrente da mscara de permisses. Os arquivos e diretrios criados
antes do uso do comando permanecem com as permisses inalteradas.
48

Permisso de Acesso Arquivos

Se deseja-se modificar em definitivo o valor de umask deve-se


editar o arquivo .profile e redefinir o campo apropriado.

7.3.4 Modicando o grupo dono de um arquivo


chgrp grupo arquivo
O comando chgrp muda a identificao do grupo dono de um
arquivo. Pode ser utilizado para conceder permisso de leitura e escrita para outro grupo que no o do seu usurio, sem ter que conceder
as mesmas permisses para todos os demais usurios. Pode-se mudar
somente grupos de arquivos sendo o usurio proprietrio do mesmo
ou sendo o usurio root.
No exemplo a seguir muda-se o grupo dono do arquivo arq1
para users2.
ls -l arq1

-rw-r--r-- 1 guest users 984 May 12 11:02 arq1


chgrp users2 arq1
ls -l arq1

-rw-r--r-- 1 guest users2 984 May 12 11:02 arq1

7.3.5 Dono de um arquivo


chown usurio arquivo
Usado para mudar a identificao de proprietrio associada a
um arquivo. Pode-se mudar somente o dono de arquivos sendo o
usurio proprietrio do mesmo ou sendo o usurio root.
No exemplo a seguir muda-se o proprietrio do arquivo arq1
para guest2.
49

Odilson Tadeu Valle

ls -l arq1

-rw-r-xr-- 1 guest users 1765 May 17 13:34 arq1


chown guest2 arq1
ls-l arq1

-rw-r-xr-- 1 guest2 users 1765 May 17 13:34 arq1

50

Captulo 8

Cotas em disco
8.1

Introduo

O sistema de cotas em disco muito importante pois permite um controle efetivo do espao em disco a ser utilizado por usurios e grupos.
Permite que o administrador controle o sistema sendo equnime com
os usurios e grupos, antecipando, por exemplo, travamentos por parties lotadas.
A implementao do sistema de cotas no Linux se d por parties, ou seja, em todas as parties onde deseja-se um efetivo controle deve-se configurar o sistema de cotas. O controle se d dentro de
determinada partio, onde todos os arquivos pertencentes a determinado usurio/grupo sero contabilizados em sua cota, independente
do diretrio onde est contido.
As cotas so determinadas por usurio e/ou grupo, sendo que
pode-se impor limites por espao ocupado e/ou por nmero de arquivos e diretrios criados. Por exemplo, se um determinado usurio
recebe uma cota de 100 MB, ele poder ocupar no mximo 100 MB
de espao na partio, seja qual for o diretrio da partio. Ao mesmo
tempo no ter contabilizado em sua cota algum arquivo ou diretrio
salvo em outra partio.

Odilson Tadeu Valle

Tabela 8.1: Arquivo /etc/fstab, sem e com sistema de cotas


Arquivo original

/dev/hda5
/dev/hda7
/dev/hda9
/dev/hda1
/dev/hda8
none
/dev/hda6

/
/home
/dados
/mnt/win_c
/mnt/win_d
/proc
swap

ext3
ext3
ext3
ntfs
vfat
proc
swap

relatime
relatime
relatime
umask=0,nls=utf8,ro
umask=0,iocharset=utf8
relatime
relatime

1
1
1
0
0
0
0

1
2
2
0
0
0
0

/dev/hda5
/dev/hda7
/dev/hda9
/dev/hda1
/dev/hda8
none
/dev/hda6

/
/home
/dados
/mnt/win_c
/mnt/win_d
/proc
swap

ext3
ext3
ext3
ntfs
vfat
proc
swap

relatime
relatime,usrquota
relatime,usrquota,grpquota
umask=0,nls=utf8,ro
umask=0,iocharset=utf8
relatime
relatime

1
1
1
0
0
0
0

1
2
2
0
0
0
0

Arquivo modicado

8.2

Instalando o Sistema de Cotas

Como primeira etapa deve-se instalar os pacotes que permitiro o uso


do sistema de cotas, com o comando:
urpmi quota
Em seguida deve-se informar ao sistema de arquivos em
qual(is) partio(es) pretende-se implantar o sistema de cotas. Para
isto deve-se editar o arquivo /etc/fstab e inserir ao final da quarta
coluna, separado por vrgula, a diretiva usrquota e/ou grpquota,
dependendo se deseja-se quotas para usurios, grupos ou ambas. No
exemplo da Tabela 8.1 habilitam-se cotas para usurios na partio
/home e para usurios e grupos na partio /dados. Na primeira
parte tem-se o arquivo original e na segunda parte o mesmo arquivo
com a insero do sistema de cotas em disco.
Aps isto deve-se desmontar e montar a(s) partio(es) onde
se est implantando as cotas, para que o gerenciador de sistema de arquivos do kernel releia o arquivo fstab e remonte segundo os novos
52

Cotas em disco

parmetros. Para isto deve-se: ou reinicializar a mquina ou usar a


sequncia de comandos abaixo.
Ao utilizar um ambiente grfico deve-se sair do mesmo, j que
neste ambiente existem vrios arquivos temporrios abertos e o
Linux no permite o desmonte de alguma partio com algum
arquivo aberto. Pode-se sair do modo grfico e entrar num modo
texto puro, por exemplo com o comando:
init 3
Loga-se como usurio root. E ento desmonta-se e monta-se
as parties onde se est implantando cotas. Aqui cabe a observao
que ao estabelecer cotas na partio / (raiz) o desmonte/monte somente ser possvel com a reinicializao da mquina, j que no
possvel o desmonte desta partio com o sistema em uso.
umount /home /dados
mount /home /dados
Inicializa-se o sistema de cotas com o comando:
quotacheck -augv
Aps isto sero criados os arquivos /home/aquota.user,
/home/aquota.group,
/dados/aquota.user
e
/dados/aquota.group. Estes arquivos so uma espcie de banco
de dados que contm uma relao entre usurios/grupos e o espao
em disco usados pelos mesmos.
Em seguida deve-se ativar o sistema de cotas com o comando:
quotaon -augv
Poder-se-ia desativar, caso desejado, o sistema de cotas com o
comando:
53

Odilson Tadeu Valle

quotaoff -augv
Se desejado pode-se retornar ao modo grfico a partir deste
ponto.

8.3

Manipulando Cotas

8.3.1 Cotas para Usurios


Para o estabelecimento de cotas para usurios ou grupos utiliza-se o
comando:
edquota user
Este comando abrir um editor de texto vi, ver Apndice C,
habilitando a edio de cotas para o usurio. O formato do arquivo
apresentado a seguir. Na primeira linha tem-se a informao do
usurio, seu login e seu UID (User Identification). As demais linhas
so divididas em colunas com os significados: Filesystem informa
qual partio tem o sistema de cotas habilitada; blocks informa o
espao em disco j em uso pelo referido usurio; soft a cota do
espao em disco; hard o limite mximo de espao em disco ocupado
pelo usurio; inodes informa a quantidade de arquivos e diretrios
em nome do usurio; soft e hard informa as cotas para a quantidade
de arquivos e diretrios em nome do usurio.
O limite entre soft e hard poder ser usado por at uma semana, aps a qual o usurio no conseguir salvar ou modificar mais
nenhum arquivo, s conseguir apagar arquivos at que fique abaixo
do valor de soft. 0 (zero) significa que no h limites.

8.3.2 Cotas para Grupos


Para edio da cota de grupo o processo exatamente o mesmo sendo
que deve-se adicionar a flag -g no comando, por exemplo:
edquota -g grupo
54

Cotas em disco

Disk quotas
Filesystem
/dev/hda7
/dev/hda9

for user user (uid 534):


blocks
soft
hard
43460 102400 112640
57360
62400
72640

inodes
482
432

soft
0
0

hard
0
0

8.3.3 Mltiplas Cotas Simultneamente


Estabelecendo cotas para vrios usurios e/ou grupos
No caso que tenhamos que implantar cotas para vrios usurios
e/ou grupos no vivel ficar editando as cotas individualmente.
Neste caso recomenda-se editar a cota para um determinado usurio
padro e replicar a mesma para os demais com o comando:
edquota -p padro user

8.3.4 Vericando Cotas


Pode-se verificar a cota individual de algum usurio ou grupo [-g]
com o comando:
quota [-g] nome_do_grupo
Para verificar a cota de todos os usurios ou grupos [g] usa-se o
comando:
repquota -a[g]

55

Captulo 9

Crontab
9.1

Introduo

O cron um programa de agendamento de tarefas. Com ele pode-se


fazer a programao para execuo de qualquer programa numa certa
periodicidade ou numa data exata. Um uso bem comum do cron
o agendamento de tarefas administrativas de manuteno do sistema,
como por exemplo, anlise de segurana do sistema, backup, atualizaes etc. Estas tarefas so programadas para serem automaticamente
executadas atravs da crontab e um script shell comum, todo
dia, toda semana ou todo ms. A configurao do cron geralmente
chamada de crontab.
Os sistemas Linux possuem o cron na instalao padro. A
configurao tem duas partes: uma global, e uma por usurio. Na
global, que o root quem controla, o crontab pode ser configurado para executar qualquer tarefa de qualquer lugar, como qualquer usurio. J na parte por usurio, cada usurio tem seu prprio
crontab, sendo restrito apenas ao que o usurio tem permisso de
executar (e no tudo, como o caso do root).

Odilson Tadeu Valle

Tabela 9.1: Campos editveis do Crontab


Minuto

Hora

Dia do ms

Ms

0-59

0-23

1-31

1-12

9.2

Dia da semana
0-6 (0 o
domingo)

Programa a ser
executado
Nome do programa

Uso do Crontab

Primeiramente deve-se iniciar o servidor cron:


service crond start
Para configurar um crontab por usurio, utiliza-se o comando
crontab, junto com um parmetro, dependendo do que se deseja
fazer. Abaixo a relao de possibilidades.
Comando
crontab -e
crontab -l
crontab -r

Funo
Edita a crontab atual do usurio logado
Exibe o atual contedo da crontab do usurio
Remove a crontab do usurio

Se o desejado verificar os arquivos crontab dos usurios,


deve-se ser root. O crontab armazena os arquivos dos usurios
no diretrio: /var/spool/cron/nome_de_usurio.
Onde
nome_de_usurio corresponde ao usurio dono do arquivo
crontab. Por outro lado, se o desejado editar o crontab global,
este fica no arquivo /etc/crontab, e s pode ser manipulado pelo
root.
Cada tarefa agendada configurada numa linha. O formato da
linha do crontab que vai dizer o que executar e quando. A linha
dividida em 6 campos separados por tabs ou espao. Na Tabela
9.1 so apresentados os campos e suas respectivas faixas de valores
aceitos.
A especificao dos campos numricos podem ser dadas por
valor absoluto, por intevalo, por peridiocidade ou pela
58

Crontab

combinao destes. No valor absoluto explicita-se o valor exato


do campo, se desejado pode-se explicitar mais de um valor
separando-os por ,. No intervalo fornece-se uma faixa dentre os
possveis valores, deve-se separar o valor inicial e o final por ,
neste caso os eventos ocorrero em todos os valores cheio. Na
periodicidade deve-se especificar o valor absoluto ou intervalo
seguido do perodo, separado pelo caractere /. O caractere especial
* significa todos os valores do respectivo campo.
Alguns exemplos:
Executar o comando ls -l, salvando seu contedo em /tmp/
lixo.txt (ver redirecionamentos em G), toda hora (*), todo dia (*),
nos minutos 1, 21 e 41
1,21,41 * * * * ls -l /tmp/lixo.txt
Apagar o arquivo /tmp/lixo.txt toda segunda-feira, de hora
em hora aos 30 min, no intervalo das 4 s 10h da manh.
30 4-10 * * 1 rm -f /tmp/lixo.txt
Executar o comando backup com periodicidade de 5 em 5 dias
s 19h45min.
45 19 */5 * * /usr/local/bin/backup
Executar o script entre as 19 e 23 de 2 em duas horas.
0 19-23/2 * * * /root/script
No arquivo do crontab global, o sexto campo pode ser substitudo pelo nome do usurio, e um stimo campo adicionado com o
programa para a execuo, como mostrado no exemplo a seguir onde
executa-se o mrtg como usurio root de 5 em 5 minutos:
*/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg
59

Captulo 10

Backups e Polticas
10.1

Introduo

Um dos principais quesitos de segurana de redes a integridade


fsica dos dados e informaes armazenadas.
A cpia de segurana ou backup consiste de uma ou vrias
cpias dos dados, que permite sua recuperao em caso de acidente.
Objetiva assegurar a integridade dos dados contra possveis problemas com os discos de armazenamento ou apagamento, seja acidental
ou intencional.
Existem vrias formas de se garantir a disponibilidade da informao, a mais importante sem dvidas a cpia dos dados em local
seguro, pois traz flexibilidade instituio de, a qualquer momento,
recuperar dados de uma data qualquer passada.
O conceito de um local seguro por muitas vezes o maior ponto
de variao dentro do assunto backup e este merece ateno especial,
pois por muitas vezes se pensa que o local seguro possa ser a torre do
prdio ao lado, o que nem sempre verdade. Para dados com necessidade extrema de recuperabilidade deve-se providenciar vrias cpias
e estas devem ser armazenadas em prdios e/ou cidades distintas. Nos
dias atuais, com as facilidades de enlaces confiveis e velozes, podese providenciar estas cpias por meio da rede, permitindo assim um

Odilson Tadeu Valle

espalhamento fsico dos dados de uma maneira rpida e segura.


Existem vrias formas de se fazer o backup dos dados. Formas
simples e baratas para pequenas empresas e usurios domsticos, que
possuem poucas informaes. Formas mais complexas e caras nas
mdias e grandes corporaes, onde a quantidade de informaes
imensa e se tem absoluta necessidade do backup desses dados. Isso
leva a questo de poltica de backup e formas de armazenamento,
com questo de custo X segurana. Neste caso tem-se num extremo a
confiabilidade e no outro o baixo custo. A escolha de uma boa poltica
aplicada a uma forma de armazenamento suficientemente adequada a
situao pode trazer empresa um custo compatvel com o valor da
informao que ela deseja salva-guardar.

10.2

Tipos de

backup

O tipo de backup a ser utilizado varia de acordo com a necessidade


de cada organizao, dependendo da quantidade de informao, e da
velocidade que estas informaes so atualizadas. Cabe ao administrador de rede e/ou gestor de poltica de segurana, analisar e definir
a melhor forma. Basicamente existem 3 tipos.

10.2.1 Backups totais


Um backup total captura todos os dados, incluindo arquivos de todas
as unidades de disco rgido. Uma fita, ou conjunto de fitas, atualizada de backup total pode ser usada para restaurar completamente
um servidor em um determinado momento.
Como vantagens deste mtodo tem-se a cpia total dos dados,
significando que existe uma cpia completa de todos os dados num
mesmo dispositivo. O rpido acesso aos dados de backup, j que no
necessrio a pesquisa em vrias fitas para localizar o arquivo que
deseja-se restaurar, j que os backups totais incluem todos os dados
contidos nos discos rgidos em um determinado momento.
62

Backups e Polticas

As desvantagens so os dados redundantes, j que vrios backups totais vo manter a cpia de todos os dados, alterados ou no, em
fitas ou conjuntos distintos. Backups totais podem ser muito demorados. Se a quantidade de dados a ser salva muito grande. H um
desperdcio de fitas, devido a redundncia dos dados.

10.2.2 Backups incrementais


Backup incremental captura todos os dados que foram alterados
desde o ltimo backup total ou incremental. Deve-se usar uma fita
de backup total (no importa h quanto tempo ela tenha sido criada)
e todos os conjuntos de backups incrementais subsequentes para
restaurar um servidor.
Como vantagens pode-se citar o uso eficiente do tempo, j que
o processo de backup incremental leva menos tempo porque apenas
os dados que foram modificados ou criados desde o ltimo backup
total ou incremental so copiados para a fita. Uso eficiente da mdia
de backup.
Como desvantagens tem-se que a restaurao completa fica
mais complexa, j que pode-se precisar de um conjunto de vrias
fitas para obter uma restaurao completa do sistema. Restauraes
parciais demoradas, j que pode-se ter que pesquisar em vrias fitas
para localizar os dados necessrios para uma restaurao parcial.

10.2.3 Backups diferenciais


Um backup diferencial captura os dados que foram alterados desde o
ltimo backup total. necessrio uma fita de backup total e da fita
diferencial mais recente para executar uma restaurao completa do
sistema.
Como vantagem pode-se citar a rpida restaurao, j que h
menos fitas envolvidas. Uma restaurao completa exige no mximo
duas fitas ou conjuntos: a fita do ltimo backup total mais a do ltimo
backup diferencial.
63

Odilson Tadeu Valle

Como desvantagens tem-se backups mais demorados e maiores,


em relao aos backups incrementais, porque quanto mais tempo tiver
se passado desde o ltimo backup total, possivelmente mais dados
tero sido modificados e portanto mais dados devem ser copiados para
a fita diferencial.

10.3

Modos de

backup

O modo de backup determina como o backup deve ser executado em


relao ao tipo de dados a serem includos nele. H duas maneiras de
executar os backups de dados.

10.3.1 Backups online


So backups feitos em servidores que precisam estar 24h por dia
disponvel aos usurios. Geralmente so banco de dados, servidores
de e-mail etc. Um detalhe bastante importante que o software de
backup e a aplicao precisam ter suporte a este tipo de backup.
A vantagem que o servidor vai estar sempre disponvel, podendo ser realizado o backup durante o expediente normal de trabalho.
A desvantagem est em relao ao desempenho do servidor que
prejudicado durante a realizao do backup, j que sero consumidos recursos do sistema para faz-lo.

10.3.2 Backups oine


So backups de dados feitos quando ningum est tentando acessar
as informaes. Geralmente agendado para ser realizado noite ou
na madrugada.
Como vantagem tem-se a rapidez do backup, j que o servidor
estar fazendo apenas, possivelmente, o backup dos dados.
64

Backups e Polticas

10.4

Armazenamento

Unidades de armazenamento - fitas - e seus dispositivos controladores


guardam uma relao direta entre a qualidade e tamanho com seu
custo, trazendo muitas vezes a soluo para o nvel considerado bom
e no timo. Quando fala-se em unidades de armazenamento tambm
necessrio pensar em local para armazen-las.
de extrema importncia que, seja qual for a tecnologia utilizada, esteja-se seguro de que suas fitas esto sendo corretamente
armazenadas. As fitas no podem ser simplesmente guardadas em
um caixa de papelo localizada sobre o monitor do servidor ou sequer na mesma sala. idealizado o fato de se guardar em um cofre,
em local distante e resistente a no mnimo fogo, umidade e tremores.
Uma boa referencia so as salas cofres descritas na ISO 17799.
No mercado tem-se dispositivos para armazenamento em fitas
magnticas, discos rgidos e discos pticos. Dentro de cada categoria
existem prs e contras.

10.4.1 Discos Rgidos


Os discos rgidos so uma tima unidade no ponto de vista do custo
por quantidade de informao armazenada. Esta soluo tem sido utilizada para realizao do backup incremental para sempre (RAID
- Redundant Array of Independent Drives). Possui alta capacidade
de armazenamento e boa velocidade de acesso. Esta soluo no
confivel como nica forma de backup, devido a sua grande sensibilidade a choques mecnicos, baixa durabilidade e dificuldade na troca
de dispositivos em caso de estouro de capacidade.

10.4.2 Unidades de Fitas


Certamente a categoria mais indicada para backups profissionais.
Existem os mais variados modelos e fabricantes com as mais
variadas capacidades de armazenamento e velocidades
65

Odilson Tadeu Valle

de acesso/gravao.
Atualmente encontram-se modelos com
capacidade de at 1,6 TB para gravao de dados compactados.

10.4.3 CD e DVD
Unidades com baixa capacidade de armazenamento. Sua vida esperada de 75 anos em casos de extremos cuidados. Pode ser utilizado
como forma de backup rpido e para pouco tempo de reteno. Adequado para uso domstico.

10.5

Polticas de

backup

Uma poltica de backup tem a funo de formalizar todos os procedimentos tcnicos e no tcnicos de uma cpia de segurana dos dados.
Dentro dele devem estar disponveis informaes sobre o que feito
no backup, dos tempos, validao dos dados e armazenagem.
Definir a poltica de backup no um procedimento puramente
tcnico, no compete somente a um administrador de redes a sua construo. Esse ponto importante devido ao fato de que nesta poltica
dever estar descrito exatamente o que dever ser salvo, por quanto
tempo e onde ser armazenado.
Agora se est entrando no maior ponto de problemas
relacionado a backup, o que salvar e o que no salvar. Quando
entra-se nesta discusso fica claro que o melhor, por garantia,
aquela vamos salvar tudo, mas o que tudo? Pode-se salvar
tudo? timo! Cabe a uma poltica definir o tudo, informando
caminhos completos destes arquivos, por quanto tempo e onde sero
armazenados, s ento entra o administrador, que o responsvel
pela operacionalizao dos procedimentos descritos. importante
que haja completa descrio para que toda a empresa possa saber
onde deixar seus arquivos, seja na rede ou numa estao especfica,
tendo a certeza de que neste local as informaes esto seguras
contra perdas ou apagamentos.
66

Backups e Polticas

Devido a limitaes tcnicas, impossvel que se faa a cpia


de segurana dos dados a cada segundo. O mesmo fala-se com relao restaurao. E ainda, seja por falta de espao fsico ou limitao financeira, nem todas estas cpias podero ser mantidas ad
aeternum.
A tarefa, quando falamos em poltica de backup, definir os
seguintes pontos:

Quando esta cpia ser feita Neste ponto,

precisa-se
detalhar de quanta em quantas horas, dias, semanas ou meses
os dados sero salvos.
Se existirem diferentes tempos
de backup para os dados, estes tambm necessitam de
especificao. Definir este tempo inclui, novamente, mais
pessoas alm do administrador, que ser responsvel por dar o
aval do que tecnicamente possvel realizar ou no.

Quanto tempo demora esta cpia (Backup

Window )

necessrio saber quanto tempo leva para o backup


ser concludo, para que se possa estimar com preciso a
periodicidade mxima de backup.

Quanto tempo uma recuperao de dados ir levar


Alm de saber os tempos relacionados ao procedimento de
cpia, importante que se tenha conhecimento do tempo que
demora para efetuar a restaurao dos dados do backup, j que
isto pode interferir no tipo de tecnologia adotada.

Por quanto tempo uma cpia estar disponvel

Seja
qual for o local para armazenar as fitas do backup, sabe-se que
haver limitaes, seja de espao fsico, lgico ou realmente
de quantidade de unidades de armazenamento. Isto leva a
realizar um rodzio no backup, no qual para se salvar novos
dados, abre-se mo de outros considerados mais antigos. A
poltica ento deve ser capaz de informar em quanto tempo um
dado antigo e por quanto tempo este dado antigo precisa ser
mantido. O modelo de rotacionamento mais genrico e
famoso que tem-se o Grandfather-Father-Son GFS que
67

Odilson Tadeu Valle

se define em realizar backups dirios filhos (incrementais),


backups semanais pais (full) e um mensal (full), o av.
Estes itens so considerados como bsicos a uma poltica genrica.
Em determinados casos pode se tornar necessrio adicionar mais pontos a esta, como por exemplo, segmentando um backup por setores,
ou filiais, adicionando responsveis ao processo. Salienta-se que a
poltica de backup, assim como uma poltica de tica empresarial,
precisa ser ajustada de acordo com a empresa, os dados considerados
valiosos de uma podem no ser o de outra, e principalmente, o tempo
de reteno da cpia de dados.

10.6

O sistema Amanda

O Amanda1 (Advanced Maryland Automatic Network Disk Archiver)


um sistema de backup cliente/servidor. Ele permite a programao
das polticas de backup de uma maneira simples, econmica e segura.
Um servidor Amanda ir realizar numa nica unidade controladora de fita, o backup de qualquer nmero de computadores que
tenham o cliente Amanda e uma conexo em rede com o servidor.
Um problema comum em locais com um grande nmero de discos que a quantidade de tempo requerida para o backup dos dados
diretamente na fita excede a quantidade de tempo para a tarefa. O
Amanda resolve este problema utilizando um disco auxiliar para realizar o backup de diversos sistemas de arquivos ao mesmo tempo.
O Amanda cria conjuntos de arquivos que so um grupo de
fitas utilizadas sobre o tempo para criar os backups completos de todos os sistemas de arquivos (diretrios) listados no arquivo de configurao do Amanda. O conjunto de arquivos tambm pode conter
backups incrementais (ou diferenciais) noturnos de todos os sistemas
de arquivos.
O arquivo de configuraes prov um controle total da realizao dos backups e do trfego de rede que o Amanda gera. O Amanda
1

68

http://www.amanda.org/

Backups e Polticas

utilizar qualquer programa de backup para gravar os dados nas fitas,


por exemplo tar.
O Amanda faz controle total das fitas rotulando-as. Sendo assim
ele no permite a sobrescrio de fitas indevidamente e controla a
exata sequncia dos backups de acordo com a poltica adotada.
O Amanda est disponvel como pacote, porm ele no instalado por padro.
O Amanda permite polticas de backup bem complexas. Isto
conseguido criando-se vrios esquemas de configuraes, cada um
contendo uma parte da poltica que compor o todo. Ao ser instalado
o Amanda cria um conjunto dirio, que definido dentro do diretrio
/etc/amanda/DailySet1/. Caso deseje-se mais esquemas devese fazer cpias, de todo o contedo deste diretrio, com os nomes
desejados. Por exemplo semanal, mensal, anual etc. Dentro de cada
um dos diretrios pode-se configurar o que, de onde, e por quanto
tempo salvar.
Para restaurar um sistema de arquivos necessrio o backup
completo mais recente e os incrementais. Este controle feito pelo
prprio Amanda que, na necessidade de um restauro, requisitar ao
administrador as fitas necessrias e sua ordem.

10.6.1 Instalao e congurao


Para instalar o Amanda basta digitarmos o comando:
urpmi -a amanda
Aps
a
instalao
o
/etc/amanda/DailySet1/, estar criado.

diretrio

padro

Como exemplo vai-se simplesmente configurar um backup


dirio mas, como j dito, pode-se ter vrios esquemas estabelecidos,
em diretrios distintos. Neste diretrio esto contidos os arquivos de
configurao do respectivo esquema. Abaixo tem-se os principais
parmetros de cada arquivo.
69

Odilson Tadeu Valle

No amanda.conf os principais parmetros a serem configurados so o org, onde deve-se informar um nome sugestivo para o esquema. O mailto que define o endereo eletrnico do responsvel
pelo backup. O tapecycle que define a quantidade de fitas no backup.
O tapedev que define o dispositivo de fita. O tapetype que define
o tipo de fita usado, o Amanda tem suporte nativo para vrios dispositivos de fita, caso necessrio pode-se buscar no stio do Amanda
atualizaes para novos modelos de dispositivos de fita. O labelstr
o rtulo que ser dado cada fita, no exemplo: diario01 diario99.
O dumpcycle define o nmero de dias entre os backups totais. O
continer holdingdisk traz as informaes do disco local auxiliar,
onde sero feitas as cpias temporrias. No exemplo isto feito no
disco hd1, no diretrio /amanda com tamanho mximo de 21 GB.
Recomenda-se que o tamanho deste diretrio deve ser maior ou igual
a capacidade de armazenamento da fita em uso.
org diario
mailto administrador@domnio.com.br
tapecycle 21 tapes
tapedev /dev/nst0
tapetype DDS4
labelstr diario[0-9][0-9]*
dumpcycle 4 weeks
holdingdisk hd1 {
comment main holding disk
directory /amanda
use 21 Gb
}

O arquivo disklist contm a listagem de todos os diretrios


que devem ser mantidos em backups, seja do computador local ou
70

Backups e Polticas

computadores remotos. Evidentemente estes devero ser acessveis


na rede pelo nome indicado e ter um cliente Amanda, ver seo 10.6.2,
devidamente configurado.
serv1.domnio.com.br /scripts comp-root-tar
serv1.domnio.com.br /etc comp-root-tar
[....]
serv2.domnio.com.br /etc comp-root-tar
serv2.domnio.com.br /root comp-root-tar
[....]
serv3.domnio.com.br /var/www comp-root-tar
serv3.domnio.com.br /home comp-root-tar
[....]

Cada linha deve conter o nome da mquina, por exemplo


serv1.domnio.com.br, seguido do diretrio a ser backupeado e o
mtodo de backup. Este pode assumir diversos valores pr-definidos,
conforme apresentados na Tabela 10.1.
Pode-se tambm
personalizar o mtodo de backup, para tanto necessrio criar uma
nova definio no arquivo amanda.conf.
Em seguida deve-se rotular todas as fitas que pertencero ao
esquema. No exemplo abaixo rotula-se uma nova fita, pertencente ao
esquema diario, com o rtulo diario04.
amlabel -f diario diario04
Durantes a rotulao das fitas o arquivo tapelist ser criado
e conter a sequncia de fitas a serem usadas no respectivo esquema
pelo Amanda.
71

Odilson Tadeu Valle

Tabela 10.1: Mtodos de backup no Amanda

Mtodo de
always-full

backup

root-tar
user-tar
high-tar
comp-root-tar
comp-root-tar-low
comp-user-tar
holding-disk
comp-user
nocomp-user
comp-root
nocomp-root
comp-high
nocomp-high
nocomp-test
comp-test
72

Aplicao
Backup completo para todas

as cpias
Parties root copiadas com o
tar
Parties de usurios copiadas
com o tar
Parties copiadas com o tar
Parties root copiadas com
compresso
Parties root copiadas com
compresso e baixa prioridade
Parties de usurios copiadas
com compresso
Salva diretamente na ta, no
armazenando no disco auxiliar
Parties no root em
mquinas
razoavelmente
rpidas
Parties no root em
mquinas lentas
Parties root com compresso
Parties root sem compresso
Parties muito importantes
em mquinas muito rpidas
Parties muito importantes
em mquinas lentas
Testa a cpia sem compresso
Testa a cpia com compresso

Backups e Polticas

10.6.2 Congurando o cliente


Em qualquer mquina que ir pertencer a um domnio Amanda, deve
ser instalado o cliente Amanda. Esta instalao deve ser feita inclusive no prprio servidor Amanda, caso deseje-se fazer backup de algum diretrio deste. A instalao dos pacotes feita com o seguinte
comando:
urpmi -a libam amanda-client
Aps isto deve-se editar o arquivo /etc/xinetd.d/amanda
e modificar a diretiva disable para que assuma o valor no. E ento reinicia-se o servio xinetd, que habilitar respostas ao servidor
Amanda, com o comando:
service xinetd restart
Por
ltimo,
deve-se
editar
o
arquivo
/var/lib/amanda/.amandahosts e incluir o nome do servidor, ou
servidores, que tero permisso de contatar o cliente em busca de
dados a backupear. Este arquivo deve conter o nome da mquina
(FQDN) e o usurio a ser invocado, normalmente o amanda. Um
exemplo de uma linha deste arquivo: hendrix.sj.ifsc.edu.br
amanda.

10.6.3 Uso do Amanda


Para testar as configuraes, no servidor, digita-se o comando a
seguir. Este faz a verificao de todo o estado do Amanda, se
o dispositivo contm a fita correta (esperada), se h espao
livre suficiente no disco auxiliar e se as mquinas clientes esto
adequadamente configuradas.
/usr/sbin/amcheck diario
73

Odilson Tadeu Valle

Obtm-se uma mensagem do tipo:


Amanda Tape Server Host Check
----------------------------Holding disk /amanda: 22985136 kB disk space available, thats
plenty
NOTE: skipping tape-writable test
Tape diario04 label ok
WARNING: tapecycle (21) <= runspercycle (21).
Server check took 0.023 seconds
Amanda Backup Client Hosts Check
----------------------------Client check: 3 hosts checked in 0.090 seconds, 0 problems found
(brought to you by Amanda 2.4.5)

Backups com o Amanda


Para backup dos diretrios descritos no disklist deve-se usar o amdump com a sintaxe:
amdump diario
Este tambm o comando que deve ser programado na crontab
para os backups peridicos.

Restaurando

backups com o Amanda

Para restaurar os backups utilizado o amrecover. Na mquina


servidora, como root, cria-se um diretrio de restauro e entra-se no
mesmo.
74

Backups e Polticas

mkdir restauro
cd restauro
Em seguida chame-se o programa de recuperao:
amrecover diario
Deste modo entra-se num shell especfico do Amanda, que
ir habilitar uma srie de comandos prprios. Dentro deste ambiente
pode-se listar os arquivos armazenados, por data, por servidor etc.
A seguir mostra-se um exemplo de recuperao de alguns arquivos e
alguns comandos teis.
Pode-se ter uma viso geral dos diretrios e clientes Amanda
com o comando:
listdisk
Como primeira etapa determina-se a data em que foi
armazenado o arquivo que pretende-se restaurar. Evidentemente esta
uma informao que deve ser passada pelo usurio que est
requisitando a recuperao de algum arquivo. O formato a ser
utilizado AAAA-MM-DD, onde AAAA o ano, com quatro
dgitos, MM o ms e DD o dia. No exemplo abaixo ajusta-se a
data para 05 de setembro de 2009.
setdate 2009-09-05
O prximo passo determinar de qual cliente Amanda se quer
restaurar o backup. No exemplo abaixo seleciona-se o localhost,
mas pode-se optar por qualquer cliente definido na seo 10.6.2.
sethost localhost
A seguir determina-se de qual diretrio do respectivo cliente
Amanda se restaurar o backup. Abaixo, um exemplo, de como extrair
somente um arquivo do diretrio /etc.
75

Odilson Tadeu Valle

setdisk /etc
Agora pode-se navegar pelos sub-diretrios do diretrio escolhido, ou simplesmente listar seu contedo.
cd rc.d
ls
O prximo passo adicionar todos os arquivos a serem restaurados. Lembre-se que pode-se usar coringas, como o * para adicionar todos os arquivos, ou pode adicionar um diretrio completo
bastando informar seu nome.
add rc.local
Continua-se adicionando diretrios e arquivos, conforme o
necessrio.
Depois disso resta extrair os arquivos. Os arquivos e diretrios
marcados para extrao sero salvos no diretrio de entrada, ou seja,
no diretrio a partir de onde se lanou o comando amrecover, no exemplo restauro.
extract

Comandos Extras do Amanda


No pretende-se abordar todas as facilidades do Amanda, somente as
mais usuais.
Como j informado o Amanda faz cpias temporrias dos arquivos num disco auxiliar, ver Seo 10.6.1. Caso o Amanda no encontre a fita correta ou a mesma no esteja na unidade, o sistema no
far a cpia para fita e portanto os dados permanecero neste disco.
Para descarregar o contedo do disco auxiliar para a fita, deve-se fazer
uso do comando amflush.
76

Backups e Polticas

Caso tenha ocorrido alguma interrupo em qualquer fase de


backup ou descarrego do Amanda, podem ocorrer problemas com arquivos corrompidos ou incompletos. Para limpeza geral nos arquivos
do Amanda executa-se o amcleanup.
Para tarefas administrativas amadmin. Aqui define-se permisso de usurios, arquivos de configurao etc.
Para gerenciamento de empilhadores e trocadores de fita, se
houver, use o amtape.
Para esboar grfico da atividade do Amanda em cada dump
que for executado, use o amplot.

Exemplo de Crontab do Amanda


A seguir mostra-se um exemplo de configurao do Crontab do
usurio Amanda, que o usurio padro de controle do servio
Amanda. Neste exemplo coloca-se um agendamento dirio, para o
esquema dirio. Ao meio dia faz-se uma verificao do sistema
Amanda, enviando os resultados por correio eletrnico (-m) ao
administrador. De posse desta mensagem o administrador ser
lembrado de trocar a fita, caso seja necessrio, ou verificar qualquer
problema que possa estar acontecendo. meia-noite faz-se o
backup e ao seu trmino a fita ser ejetada. Estes backups ocorrero
todos os dias, de segunda a sexta-feira.
0 12 * * 1-5 /usr/sbin/amcheck -m diario
0 12 * * 1-5 /usr/sbin/amdump diario && eject /dev/nst0
Recomenda-se ainda fazer os respectivos agendamentos para
os demais esquemas: semanais, mensais, anuais etc. Seguindo o
padro j apresentado. Abaixo tem um exemplo de agendamento para
esquema semanal, que dever ser devidamente configurado conforme
o apresentado na seo 10.6.1. Neste caso estes backups ocorrero
todos os sbados.
77

Odilson Tadeu Valle

0 12 * * 6 /usr/sbin/amcheck -m semanal
0 12 * * 6 /usr/sbin/amdump semanal && eject /dev/nst0

78

Captulo 11

Programao do
11.1

Shell

Introduo

Programao Shell permite que administradores criem pequenos programas para automatizar a administrao do sistema, configurar melhor o sistema e entender vrios recursos do prprio sistema operacional Linux, por exemplo, toda a configurao da sequncia de boot
do UNIX envolve scripts shell.
A programao shell permite a criao de um arquivo de texto
contendo comandos do UNIX e comandos especiais do shell para
definir e utilizar: variveis, fazer testes no sistema, laos de
repetio, funes, comentrios etc.
Existe uma relao direta entre conhecimento dos comandos
do shell e a complexidade dos scripts que podem ser escritos. Este
livro parte do pressuposto do conhecimento preliminar dos mesmos e
no tem a inteno de se aprofundar nestes comandos, no Apndice
F so citados alguns poucos e seus usos.
Um script shell1 interpretado pelo respectivo shell e, portanto, no um programa a ser compilado. Isto pode tornar um script
shell lento, j que cada comando que o script chama dispara um pro1

http://walfredo.dsc.ufpb.br/cursos/suporte20012/progsh/index.htm

Odilson Tadeu Valle

cesso. Caso se deseje um melhor desempenho deve-se partir para uma


linguagem de programao propriamente dita.
Este livro no pretende passar conceitos de lgica de programao. O intuito to somente passar a sintaxe dos principais comandos que daro base para composio de bons scripts.

11.2

Comandos Bsicos

Recomenda-se que um script shell inicie com a definio de qual ser


o shell a interpret-lo. Como todo programa recomenda-se tambm
escrever comentrios para facilitar a compreenso do mesmo, isto
pode ser feito em qualquer parte do programa bastando iniciar o comentrio com o caractere especial #. Todo texto que estiver aps o
caractere # e at o final da linha ser considerado um comentrio e,
portanto, no ser interpretado. A exceo a definio do shell. Na
linha 1 da Listagem 11.1 tem-se a definio do shell, na linha 2 um
comentrio sobre o programa, este tipo de comentrio pode ocorrer
em qualquer posio do programa, e na linha 4 o comando que ir
imprimir no shell corrente uma frase.
1
2

# !/ bin /bash
# Este programa diz alo

3
4

echo "Alo $LOGNAME, tenha um bom dia!"

Listing 11.1: Script que imprime uma mensagem de boas vindas

Para executar o programa deve-se mudar suas permisses para


execuo, veja na seo 7.3, e em seguida execut-lo com o comando:
./alo.sh

11.2.1 Variveis e Parmetros


O shell possui vrias variveis pr-definidas, como por exemplo:
$LOGNAME, $HOSTNAME, $TERM etc. Para obter uma listagem
80

Programao do Shell

completa da variveis basta executar o comando printenv. Pode-se


criar variveis com qualquer nome e contedo dentro de um script
shell, para tanto no necessrio uma pr-definio de seu tipo,
basta us-la no momento adequado. Por exemplo, na linha 4 na
Listagem 11.2 tem-se uma varivel string e na linha 5 uma varivel
numrica. O Shell no distingue as variveis por seus tipos, esta
distino aparecer somente com o uso das mesmas, por exemplo,
caso tente-se fazer uma operao matemtica com uma string haver
um erro. Ambas as variveis so utilizadas na linha 6 para imprimir
seus contedos no shell. O resultado da execuo de tal script ser:
Esta e uma varivel do tipo string 5.
1
2

# !/ bin /bash
# Script mostrando o uso de variveis

3
4
5
6

var_string ="Esta e uma varivel do tipo string "


var_numerica=5
echo $var_string " " $var_numerica

Listing 11.2: Script com variveis

Outro conjunto interessante de variveis o que pode ser passado diretamente do shell ao script. Isto feito imediatamente com
o uso do caractere especial $ ao longo do script. O $0 retorna
ao script seu prprio nome, o $1 $9 retorna respectivamente os
campos 1 9 passados junto com o nome do script em sua execuo,
o $# retorna o nmero de parmetros passados e o $* retorna todos
os parmetros do programa, se em alguma linha do script tem-se o
contedo echo $*, todos os parmetros passados sero impressos. No
exemplo da Listagem 11.3, tem-se um teste simples para verificar a
entrada de parmetros num script. Neste script, entre as linhas 5 e
8, faz-se o teste buscando a presena de 1 (um) parmetro passado
ao script, caso isto no acontea o script retorna uma mensagem de
erro, informando como o mesmo deve ser executado e termina sua
execuo. O comando exit encerra o shell e retorna um status para o
processo pai.
1
2

# !/ bin /bash
# Script mostrando a manipulacao de variveis
81

Odilson Tadeu Valle

3
4
5
6
7
8

# Verificando os parametros passados


if [ $# ne 1 ]; then
echo " Falta parametro Rode o script com o comando ./$0 variavel "
exit
fi
. . .

Listing 11.3: Script com manipulao de variveis

Para tornar um script menos suscetvel a erros pode-se definir


um valor padro para determinada varivel. Isto pode ser interessante para o caso de no termos certeza que um valor ser atribudo
mesma. Isto muito comum em scripts que requisitam valores durante sua execuo. Para a definio de um valor padro de variveis
faz-se uso do seguinte modelo:

${variavel:-valor_padrao}
ou

${variavel:?mensagem_desejada}
No primeiro caso a varivel assumir o valor_padrao caso
nenhum valor seja inserido e no segundo caso ser apresentada ao
usurio uma mensagem de erro com contedo mensagem_desejada.
No exemplo da Listagem 11.4 tem-se um script que ir somar 3 valores passados ao mesmo, caso um ou mais dos valores no sejam
passados, os mesmos sero assumidos com o valor 0 (zero). Por exemplo, ao executar-se o script com valores 2, 4 e 7 tem-se como resposta A soma e 13, sem valores tem-se como resposta A soma e
0.
1
2

# !/ bin /bash
# Script mostrando a manipulacao de variveis

3
4
5

valor =expr ${1:0} + ${2:0} + ${3:0}


echo A soma e $valor

Listing 11.4: Script com manipulao de variveis padro


82

Programao do Shell

Parmetros compostaos podem ser utilizados desde que estejam agrupados dentro de aspas duplas - . Por exemplo o comando
echo a b c d apresenta 4 parmetros, j o echo a bc d apresenta 3,
j que a b sero encarados como um nico parmetro.
Num script, como em qualquer outra linguagem de programao, pode-se ter entrada e sada de parmetros. J foi apresentada
a possibilidade de sada (print) de parmetros com o comando echo
e entrada na chamada do script. Para uma leitura de parmetros em
qualquer posio do script utiliza-se o comando read. No exemplo
apresentado na Listagem 11.5 tem-se na quarta linha uma requisio,
ao usurio que executou o script, de insero de seu nome, o -n
serve para a no insero de nova linha aps a mensagem. Na quinta
linha faz-se a leitura propriamente dita da varivel, no caso nome, e
na ltima linha utiliza-se esta varivel para imprimir uma mensagem
ao usurio. Caso o usurio no insira caracteres ser impresso: Seu
nome e sem_nome.
1
2

# !/ bin /bash
# Script modelo para interacao com usuario . Entrada e saida de
parametros

3
4
5
6

echo n "Por favor informe seu nome: "


read nome
echo "Seu nome e ${nome:sem_nome}"

Listing 11.5: Script para interao com usurio

11.3

Comandos de testes no shell

11.3.1 A Estrutura if
Como em qualquer linguagem de programao um script shell
pode executar testes com variveis. Abaixo tem-se as principais formaes da estrutura se (if ).

if comando
83

Odilson Tadeu Valle

then
execuo se "comando" retornar status "ok" (=0)
else
execuo se "comando" retornar status "no ok"
fi
if comando1
then
execuo se "comando1" retornar 0
elif comando2
execuo se "comando2" retornar 0
else
execuo se no entrar nos "if" acima
fi
if comando1 && comando2
then
execuo se "comando1" E "comando2" retornarem 0
fi
if comando1 || comando2
then
execuo se "comando1" OU "comando2" retornarem 0
fi
Os comandos, da estrutura se podem ser substitudos por
variveis, neste caso devem ser inseridas entre colchetes - [ ]. Na
Listagem 11.6 tem-se algumas possibilidades de uso desta estrutura,
inclusive com variveis. Entre as linhas 4 e 7 o if testa o nmero
de parmetros passados, se for igual a zero aborta a execuo. Entre
as linhas 9 e 15 o if executa o comando ls em dois arquivos. Se os
dois existirem o script envia uma mensagem que os arquivos foram
encontrados. Caso pelo menos um deles no exista o retorno do comando sera no ok e o script envia uma mensagem de erro e aborta
a execuo.

84

Programao do Shell

1
2

# !/ bin /bash
# Script com exemplos da estrutura if

3
4
5
6
7
8

# Teste de passagem de parametros . Caso o numero de parametros passado


seja igual a zero o script e abortado
if [ $# eq 0 ]; then
echo " Falta parametro Rode o script ./ estruturas_if . sh parametro1 [
parametro2 ...] "
exit
fi

9
10
11
12
13
14
15
16
17

# No teste abaixo o script verifica a existencia ou nao do arquivos :


arq1 e arq2 .
if ls arq1 && ls arq2
then
echo "Arquivos arq1 e arq2 encontrados !"
else
echo "Pelo menos um dos arquivos nao encontrados caindo fora "
exit 1
fi

Listing 11.6: Script com estruturas `se'

Existem vrios testes padronizados no shell os principais so


mostrados nas tabelas a seguir. Na Tabela 11.1 mostra-se testes especificos para tratamento de strings, na 11.2 testes para manipulao
numrica, na 11.3 testes para verificao de propriedades de arquivos
e na 11.4 outros operadores.
Tabela 11.1: Testes de strings

Expresso

Verdeiro se

-z string
-n string
string1 = string2
string1 != string2
string

o tamanho da string 0 (zero)


o tamanho da string NO 0 (zero)
string1 igual a string2
string1 NO igual a string2
string NO nulo

85

Odilson Tadeu Valle

Tabela 11.2: Testes numricos

Expresso

Verdeiro se

int1
int1
int1
int1
int1
int1

int1
int1
int1
int1
int1
int1

-eq int2
-ne int2
-gt int2
-ge int2
-lt int2
-le int2

igual a int2
NO igual a int2
maior que int2
maior ou igual a int2
menor que int2
menor ou igual a int2

Tabela 11.3: Testes de arquivos


Expresso Verdeiro se
-r arquivo
-w arquivo
-x arquivo
-f arquivo
-d arquivo
-h arquivo
-c arquivo
-b arquivo
-p arquivo
-u arquivo
-g arquivo
-k arquivo
-s arquivo

arquivo
arquivo
arquivo
arquivo
arquivo
arquivo
arquivo
arquivo
arquivo
arquivo
arquivo
arquivo
arquivo

existe
existe
existe
existe
existe
existe
existe
existe
existe
existe
existe
existe
existe

e
e
e
e
e
e
e
e
e
e
e
e
e

pode ser lido


pode ser gravado
pode ser executado
normal (regular)
um diretrio
um link simblico
um dispositivo especial a caractere
um dispositivo especial a bloco
um pipe
tem bit setuid ligado
tem bit setgid ligado
tem bit sticky ligado
tem tamanho diferente de zero

Tabela 11.4: Operadores adicionais

Expresso Propsito
!
-a
-o
( expr )

inverte expresso lgica


operador AND
operador OR
agrupar expresses

11.3.2 A Estrutura case


O case pode ser considerado um if mltiplo. Na Listagem 11.7 podese ver um exemplo de sua aplicao. Na linha 7 faz-se uma leitura de
86

Programao do Shell

uma varivel, na linha 8 inicia-se o tratamento da mesma. Entre as


linhas 9 e 11 explicita-se o tratamento para o caso de a varivel ter
valor s ou S, no lugar da linha 10 pode-se colocar vrias aes a
serem executadas neste caso. Entre as linhas 12 e 14 repete-se o caso
anterior, j entre as linhas 15 e 17 d-se o tratamento para excees,
ou seja, caso a varivel no tenha se enquadrado em nenhuma da
opes anteriores o tratamento dado ser este.
1
2

# !/ bin /bash
# Script com exemplo de uso da estrutura case .

3
4

...

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

echo n "Sua reposta : "


read var
case "$var" in
S* | s *)
resp="sim"
;;
N* | n*)
resp="nao"
;;
)
*
resp=" talvez "
;;
esac
echo $var

Listing 11.7: Script com estrutura `case'

11.4

Laos de Repetio

11.4.1 A Estrutura while


A estrutura while utilizada para a repetio de comandos at que
algum evento de trmino ocorra. A estrutura bsica de seu funcionamento pode ser vista a seguir.

while comando
87

Odilson Tadeu Valle

do

execuo enquanto "comando" retornar 0


done
No exemplo da Listagem 11.8 se observa seu emprego. Na
linha 4 o argumento passado como parmetro ao script associado
nomeArq. Na linha 5 inicializa-se a varivel numLinha, para contagem de linhas do arquivo. Em seguida, entre as linhas 6 e 10, lido
sequencialmente uma a uma as linhas do arquivo nomeArq. Entre as
linhas 8 e 9 feito o respectivo tratamento dos dados, para cada uma
das linhas do arquivo. O script encerrado quando terminam as linhas do nomeArq, linha 6. O script como um todo, simplesmente lista
o arquivo passado como parmetro numerando suas linhas.
1
2

# !/ bin /bash
# Exemplo de uso da estrutura while

3
4
5
6
7
8
9
10

nomeArq=$1
numLinha=1
while read linha
do
echo "$numLinha $linha"
numLinha=expr $numLinha + 1
done < nomeArq

Listing 11.8: Script com estrutura `while'

11.4.2 A Estrutura for


Outra estrutura de repetio a for. A estrutura bsica de seu funcionamento pode ser vista a seguir.

for var in lista


do
execuo para cada componente ($var) da "lista".
done
No exemplo da Listagem 11.9 tem-se um exemplo de script
que gera um arquivo com mensagem de boas vindas para todos os
88

Programao do Shell

usurios contidos no arquivos lista_de_usuarios.txt. Na linha 4


o for faz a leitura de cada uma das linhas do arquivo

/caminho/do/diretorio/lista_de_usuarios.txt
e a atribui varivel user. Na linha 6 gerado o arquivo.
1
2

# !/ bin /bash
# Exemplo de uso da estrutura for .

3
4
5
6
7

for user in cat \caminho\do\ diretorio \ lista_de_usuarios . txt


do
echo "Ola $user . Seja bemvindo a instituicao " > ~$user/boas_vindas .
txt
done

Listing 11.9: Script com estrutura `for'

11.5

Funes

Apesar das limitaes na programao do shell possvel criar


funes. Na Listagem 11.10 apresentado um exemplo de seu uso.
Entre as linhas 7 e 15 encontra-se a estrutura da funo e entre a 17 e
25 o programa principal. Neste caso a funo simplesmente verifica
a existncia ou no do arquivo passado como parmetro e informa ao
Programa principal atravs do cdigo 0 - existe ou cdigo 1 no existe.
1
2
3

# !/ bin /bash
#
# Exemplo de uso das Funcoes

4
5

nome_do_arquivo=$1

6
7
8
9
10
11

# Funcao para verificacao da existencia ou nao de determinado arquivo


verificaArquivos () {
if [ r $* ]
then
return 0
89

Odilson Tadeu Valle

12

else
return 1
fi

13
14
15

16
17

# Programa principal

18
19
20
21
22
23
24
25

if verificaArquivos $nome_do_arquivo
then
echo "Arquivo $nome_do_arquivo existe . "
else
echo "Arquivo nao encontrado . "
exit 1
fi

Listing 11.10: Script com exemplo do uso de funo

90

Captulo 12

Rede e Roteamento
12.1

Introduo

Neste captulo no se tem a inteno de abordar a arquitetura das redes e nem seus protocolos. O objetivo to somente mostrar como
configurar as interfaces de rede de uma mquina com sistema operacional Linux, bem como configur-la como roteador ou roteador de
borda.
Parte-se do prvio conhecimento das camadas do protocolo
TCP/IP Transmission Control Protocol /Internet Protocol, do endereamento IP e dos protocolos de roteamento.

12.2

Congurao de Interface de Rede

Ao adicionar-se uma mquina rede obrigatria a configurao de


no mnimo dois parmetros, o endereo IP e a mscara de rede. Com
estes dois parmetros a mquina j est apta a se comunicar com outras mquinas da mesma rede local.
Para uma configurao completa necessrio configurar-se
ainda o nome de mquina, o roteador padro (default gateway) e o
servidor de nomes, neste caso podem haver vrios.

Odilson Tadeu Valle

Todos estes parmetros podem ser configurados estaticamente


ou por meio de um servidor DHCP - Dynamic Host Configuration
Protocol. A configurao esttica recomendada para servidores de
rede, j a dinmica a clssica para estaes de uso comum.
Para configurar estes parmetros deve-se editar o arquivo
/etc/sysconfig/network-scripts/ifcfg-ethN, onde N o
nmero da interface. No Mandriva tem-se um arquivo por interface,
iniciando-se por ifcfg-eth0. Na Tabela 12.1 tem-se um exemplo
onde aparecem a configurao esttica e a dinmica (dhcp).
Tabela 12.1: Arquivo de congurao de Interface de Rede

Congurao dhcp

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

Congurao esttica

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.2.1
NETMASK=255.255.255.0
BROADCAST=192.168.2.255
GATEWAY=192.168.2.1
MS_DNS1=172.18.0.1
MS_DNS2=200.135.37.65

Alm do arquivo acima deve-se configurar do arquivo /etc/


sysconfig/network, que define basicamente o nome da mquina
(hostname).

HOSTNAME=nome_de_maquina.nome.do.dominio
Uma vez ajustados estes parmetros, basta reiniciar a interface
de rede com o comando:
service network restart
Os parmetros ajustados acima sero assumidos como o padro
da mquina e, sempre que a mquina ou interfaces de rede forem
reiniciadas, os valores setados sero dados por estes arquivos.
92

Rede e Roteamento

O comando ifconfig serve, entre outras coisas, para modificar dinamicamente alguns destes parmetros. Para um teste, por
exemplo, pode-se mudar os parmetros da interface de rede sem modificar estes arquivos. Para isto usamos o comando ifconfig com a
seguinte sintaxe:
ifconfig interface ip/mascara up/down
Por exemplo, no comando abaixo estamos mudando a
configurao da interface de rede eth0 para assumir o endereo IP
192.168.2.23 com mscara de rede 255.255.255.0. Isto passar a
valer imediatamente mas ao reiniciarmos a interface, ou mquina, os
arquivos de configurao sero lidos e a interface voltar a ter os
parmetros pr-ajustados.
ifconfig eth0 192.168.2.23/24 up

12.2.1 Apelidos de IP
No Linux, a mesma interface de rede pode responder por mais de um
endereo IP. Isto pode ser til em algumas configuraes especiais de
rede, por exemplo, duas sub-redes no mesmo domnio de coliso ou
um servidor Apache atendendo a domnios virtuais etc. Para fazer-se
isto basta criar interfaces virtuais com nomes ethN:0, ethN:1 etc. Por
exemplo:
ifconfig eth0:0 10.10.1.23/24 up
Ou
criando
um
arquivo
/etc/sysconfig/network-scripts/ifcfg-eth0:0
com
somente o contedo abaixo e reiniciarmos o servio de rede.

IPADDR=192.168.2.1X
NETMASK=255.255.255.0
93

Odilson Tadeu Valle

12.2.2 Conferindo e Testando


Para conferir o perfeito funcionamento da mquina em rede devese primeiramente certificar-se de que todas as conexes fsicas esto
em perfeita ordem, em seguida inicia-se o processo de conferncia
lgico. O primeiro passo pode ser pode ser o ping para uma mquina
da mesma rede local, sabidamente em pleno funcionamento.
ping 192.168.2.1
Se a resposta for do tipo:
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=1.44 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=0.513 ms
64 bytes from 192.168.2.1: icmp_seq=3 ttl=64 time=0.516 ms
--- 192.168.2.1 ping statistics --3 packets transmitted, 3 received, 0% loss, time 2000ms
rtt min/avg/max/mdev = 0.513/0.824/1.445/0.439 ms

significa que houve xito e a interface est operacional em


relao aos parmetros IP e mscara de rede. Se a resposta for
de erro deve-se conferir os parmetros IP e mscara de rede e a
conexo fsica do equipamento.
Continuando deve-se testar o default gateway, pingando
para um IP conhecido fora da rede local. Por exemplo:
ping 200.135.37.65
Se a resposta tambm for positiva isto significar que o
default gateway tambm est devidamente configurado. Se for
negativa deve-se conferir este parmetro com o comando:
route -n
Na Tabela 12.2 tem-se um exemplo da sada deste
comando. Da terceira linha conclui-se que pacotes destinados a
94

Rede e Roteamento

rede 192.168.2.0/255.255.255.0 sair diretamente pela


interface eth0, sem passar por roteadores, j que neste campo
tem-se como contedo 0.0.0.0. Na quinta linha, por outro lado,
conclui-se que para qualquer destino 0.0.0.0 deve-se usar o
roteador 192.168.2.1 que est acessvel via interface eth0, ou
seja na mesma rede local. Devido a sequncia de regras, todos
os pacotes destinados a rede 192.168.2.0/255.255.255.0
sairo diretamente pela interface eth0, j que esta regra
aparece em primeiro lugar, todos os pacotes destinados a rede
127.0.0.0/255.0.0.0 sairo diretamente pela interface lo
loopback e para os demais destinos atravs do roteador
192.168.2.1.
Tabela 12.2: Tabela de Roteamento

Tabela de Roteamento IP do Kernel


Destino
192.168.2.0
127.0.0.0
0.0.0.0

Roteador
0.0.0.0
0.0.0.0
192.168.2.1

MscaraGen.
255.255.255.0
255.0.0.0
0.0.0.0

Opes
U
U
UG

Mtrica
1
0
0

Ref
0
0
0

Uso
0
0
0

Iface
eth0
lo
eth0

Caso algum dos parmetros apontados esteja incorreto deve-se


corrig-lo e reiniciar o servio de rede.
Por ltimo confere-se o parmetro de servidor DNS. Para isto
pode-se pingar para um nome de mquina, por exemplo:
ping www.sj.ifsc.edu.br
Se a resposta for do tipo:
PING www.sj.ifsc.edu.br (200.135.37.65) 56(84) bytes of data.
64 bytes from hendrix (200.135.37.65): icmp_seq=1 ttl=58 time=8.03 ms
64 bytes from hendrix (200.135.37.65): icmp_seq=2 ttl=58 time=6.66 ms
--- www.sj.ifsc.edu.br ping statistics --2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 6.668/7.353/8.039/0.690 ms

significa que est tudo em ordem, o nome foi resolvido para um


endereo IP (200.135.37.65). Se houver problemas deve-se consultar
95

Odilson Tadeu Valle

o arquivo /etc/resolv.conf e verificar os respectivos parmetros.


Este arquivo contm a listagem dos servidores de nomes setados na
mquina, por exemplo:

nameserver 172.18.0.1
nameserver 200.135.37.65
Para alter-los deve-se redefinir os devidos parmetros na
seo 12.2.

12.3

Roteadores e sub-redes

Um roteador, por definio, um equipamento com no mnimo duas


interfaces de rede que encaminha os pacotes oriundos de uma das
interfaces outra, de acordo com regras pr-definidas. No mercado
existem roteadores com uma interface ethernet e uma, duas ou trs
interfaces WAN (Wide Area Network), normalmente utilizadas para
conexo da rede local com a Internet.
Existem tambm os chamados modem/router que alm de
roteadores so modens, comumente usados para conexo ADSL.
Simplificadamente, em um roteador os dois principais componentes lgicos so: os protocolos de roteamento e as tabelas de encaminhamento. Neste texto no detalham-se os protocolos de roteamento, atem-se to somente a anlise de tabelas de encaminhamento.
Estas que definem a interface de sada de todo e qualquer pacote
que chega ao roteador.
Uma mquina Linux, com duas ou mais interfaces de rede,
tambm funciona como um roteador. Esta pode ser uma opo interessante se desejarmos criar sub-redes na instituio e obrigatria
na implementao de um firewall transparente.
As tabelas estticas de roteamento podem ser uma opo para
pequenas redes. Na anlise destas tabelas um roteador toma as decises de encaminhamento, trabalhando com a leitura linha-a-linha,
96

Rede e Roteamento

de tal modo que quando for encontrada uma regra que atenda a demanda o sistema para imediatamente. Analisando a tabela de roteamento apresentada na Tabela 12.2 pode-se fazer a seguinte interpretao: se um pacote for destinado 192.168.2.0/24 o roteamento
analisar somente a primeira linha e simplesmente jogar o pacote
na interface eth0, se o pacote for destinado a qualquer endereo iniciado com 127 o pacote ser jogado pela interface virtual lo e por
ltimo para qualquer outro destino (0.0.0.0) o pacote ser encaminhado para 192.168.2.1 e este que se vire. Observe que o endereo
192.168.2.1 um endereo atingvel pela interface eth0, ou seja,
encontra-se em sua rede local.

12.3.1 Montando
Roteamento

Tabelas

Estticas

de

Na Figura 12.1, observam-se vrias sub-redes interligadas por


mquinas Linux, configuradas como roteadores, e uma delas
conectada Internet. Por questes de simplicidade supe-se que
todas as mscaras de rede so 255.255.255.0.

Figura 12.1: Exemplo de Rede Local

Baseado na Figura 12.1 montam-se as tabelas estticas de


roteamento para cada uma das mquinas roteadoras, R1, R2 e R3,
analisando-se a rede como um todo e construindo uma rota para cada
uma das demais redes e uma rota final que ser a rota padro para a
Internet. Nas Tabelas 12.3, 12.4 e 12.5 observa-se esta construo.
97

Odilson Tadeu Valle

Tabela 12.3: Tabela Esttica de Roteamento de R1


Rede
Roteador
10.5.7.0
eth0
192.168.5.0 eth1
172.18.4.0
192.168.5.254
10.0.0.0
192.168.5.254
200.135.7.0 192.168.5.254
0.0.0.0
192.168.5.254
Tabela 12.4: Tabela Esttica de Roteamento de R2
Rede
Roteador
192.168.5.0 eth0
172.18.4.0
eth1
200.135.7.0 eth2
10.5.7.0
192.168.5.253
10.0.0.0
172.18.4.254
0.0.0.0
200.135.7.60
Tabela 12.5: Tabela Esttica de Roteamento de R3
Rede
Roteador
172.18.4.0
eth0
10.0.0.0
eth1
10.5.7.0
172.18.4.253
192.168.5.0 172.18.4.253
200.135.7.0 172.18.4.253
172.18.4.0
172.18.4.253

Observe que nas tabelas de roteamento existem algumas rotas que podem eliminadas, j que so desnecessrias pois direcionam
rotas para redes especficas passando pelo roteador padro (0.0.0.0).
Portanto, para a rede proposta na Figura 12.1 as tabelas estticas de
roteamento simplificadas seriam as apresentadas na Tabela 12.6.
Pode-se observar nas tabelas que todos os caminhos so contemplados e todos os roteadores passam a conhecer as demais redes e
98

Rede e Roteamento

Tabela 12.6: Tabelas de Roteamento Simplicadas

Roteador 1

Rede
10.5.7.0
192.168.5.0
0.0.0.0

Roteador
eth0
eth1
192.168.5.254

Roteador 3

Rede
172.18.4.0
10.0.0.0
172.18.4.0

Roteador
eth0
eth1
172.18.4.253

a Internet, muitas vezes usando o roteador padro (default = 0.0.0.0)


para isto. Isto possibilita que qualquer pacote de qualquer cliente
pode chegar ao destino e pode receber sua resposta.
Para definir-se as rotas em uma mquina Linux usa-se o comando route, com a seguinte sintaxe:

route add -net rede/mscara gw ip_roteador


Para a rota padro, seria:

route add default gw ip_do_roteador

12.3.2 Congurando o roteador


Para transformar uma mquina, de uma estao com duas interfaces
de rede, em um roteador basta setar o bit ip_forward para 1. Isto pode
ser feito com o comando:

echo 1 >/proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1
Assim, a mquina imediatamente passar a rotear pacotes de
uma interface outra. Este roteamento ocorrer somente se os pacotes tiverem um destino explcito outra interface, caso contrrio os
pacotes no sero roteados, ou seja, um roteador segmenta a rede, e
seu trfego, criando sub-redes distintas.
99

Odilson Tadeu Valle

Caso deseja-se deixar permanentemente o roteamento habilitado deve-se editar o arquivo /etc/sysctl.conf e acrescentar ao
final no mesmo o seguinte contedo:

# To enable routing
net.ipv4.ip_forward = 1

12.3.3 Congurando sub-redes


Para efeitos didticos analizar-se- a estrutura de sub-redes mostrada
no diagrama esquemtico na Figura 12.2. Neste diagrama existem 4
sub-redes cada uma composta de 1 roteador e 1 cliente para testes. A
mquina R1, que tambm um roteador, interligar estas sub-redes
rede local e Internet. Esta mquina ser o roteador padro de cada
um dos 4 roteadores secundrios.

Figura 12.2: Diagrama com sub-redes


100

Rede e Roteamento

Congurao dos Roteadores


No roteador deve-se, em primeiro lugar, configurar as interfaces de
rede, conforme apresentado na seo 12.2. Por questes de simplicidade, pode-se usar ip aliases, ou seja, uma nica interface de
rede do roteador responder pelos dois IPs, mesmo sendo de classes
diferentes. Isto permitir que no seja necessrio reestruturar o cabeamento.
Deve-se adotar a numerao do diagrama esquemtico. Por
exemplo para o roteador mais a esquerda:
vi /etc/sysconfig/network-scripts/ifcfg-eth0:1

IPADDR=192.168.X.X
NETMASK=255.255.255.0
Reinicia-se o servio de rede com o comando:
service network restart
Adicionam-se as rotas, para as 3 demais sub-redes, com a sequncia de comandos abaixo:
route add -net 172.18.3.0/24 gw 192.168.2.103
route add -net 172.18.4.0/24 gw 192.168.2.104
route add -net 172.18.5.0/24 gw 192.168.2.105
Adiciona-se tambm a rota padro:
route add default gw 192.168.2.101
Habilita-se o roteamento com o comando:

echo 1 > /proc/sys/net/ipv4/ip_forward


101

Odilson Tadeu Valle

Congurao dos Clientes


Para habilitar os clientes basta configurar a interface de rede, conforme seo 12.2, e o roteador padro como sendo o IP da interface
a qual est conectado ao roteador, 172.18.2.1 para o cliente mais a
esquerda.

Testes
Para testar todas as rotas estabelecidas deve-se adotar, por exemplo,
a seguinte sequncia de testes:
1. A partir do cliente pingar a interface mais prxima do
roteador. Se este ping no funcionar deve-se revisar a
configurao fsica e lgica entre este e o roteador.
2. A partir do roteador pingar para 192.168.2.101. Se no pingar por que tem algum erro de configurao fsica ou lgica
na interface externa do roteador.
3. A partir do roteador pingar para a interface interna de um
outro roteador, por exemplo 192.168.4.1. Se houve problemas os motivos podem ser dois: no foi escrita uma rota adequada para tal rede, verifica-se com o comando route -n, e/
ou porque o roteador pingado est mal configurado. Lembrese que os pacotes devem ter rota para ida e volta.
4. A partir do cliente, pingar para outro cliente. Se houver problemas pode ser por m configurao do roteador local ou do
roteador da rede pingada.
5. A partir do cliente, usar o traceroute para outro cliente, verificando a rota utilizada.

102

Captulo 13

Servidor DNS com Bind


13.1

Introduo

Um servio de nomes, como o DNS Domain Name System, armazena o conjunto de um ou mais contextos de atribuio de nomes
conjuntos de vnculos entre nomes textuais e atributos de objetos,
como usurios, computadores, servios e objetos remotos.
O DNS um projeto de servio de nomes cujo banco de
dados de atribuio de nomes usado na Internet. Foi planejado por
Mockapetris, no RFC 1034, para substituir um arquivo central que
era carregado por download, no escalvel e de administrao centralizada. projetado para ser usado em vrias implementaes. Na
prtica, somente amplamente utilizado para atribuio de nomes da
Internet. Os objetos nomeados so principalmente os computadores
com, basicamente, seu endereo IP como atributo.
O Domain Name System um banco de dados global com
estrutura hierrquica com separador ponto .. Sendo que os servidores DNS no reconhecem nomes relativos j que todos os nomes se
referem raiz global.

Odilson Tadeu Valle

13.2

Domnios Hierrquicos

O espao de nomes de domnio so hierrquicos, ou seja, cada parte


do nome pode ser resolvida por um servidor independente. Por exemplo, para o nome www.sj.ifsc.edu.br. ter-se-ia a seguinte estrutura hierrquica para resoluo do mesmo:
Root Level Domain ..
Top Level Domain .edu.br.
Second Level Domain .sj.ifsc.
Os Root Level Domain so localizados majoritariamente nos
Estados Unidos, estes servidores tem conhecimento de todos os Top
Level Domain. O Top Level Domain para o caso brasileiro de
responsabilidade do Registro.br, que conhee todos os Second
Level Domain do Brasil. Neste caso o Second Level Domain
pertence ao IF-SC e ele conhece a mquina www que pertence ao
domnio .sj.ifsc.edu.br.
Deve-se salientar que apesar do sufixo de carter geogrfico
br, um domnio como sj.ifsc.edu.br. poderia ter dados (servidores) localizados em qualquer parte do mundo.
Cada domnio, ou zona, deve ter pelo menos um servidor
DNS, mas cada servidor DNS pode ser responsvel por mais de um
domnio. Cada zona deve conter pelo menos os seguintes dados:
Dados de atributos de nomes em um domnio, menos os subdomnios a ele subordinados.
Nomes e endereos de pelo menos 2 servidores que possuem
autoridade sobre dados da zona.
Nome de servidores que contm autoridade sobre dados de subdomnios delegados.
Parmetros de gerenciamento da zona, como por exemplo: uso
do cache, replicao de dados, TTL etc.
104

Servidor DNS com Bind

Os administradores inserem dados de uma zona em um


arquivo mestre num servidor principal ou mestre e os
servidores secundrios fazem donwload destes dados.
Os principais registros de recursos de um arquivo de zona so
mostrados na Tabela 13.1.
Tabela 13.1: Principais registros DNS

Tipo de Signicado
registro

Contedo principal

NS

Nome de domnio do
servidor
Nome de domnio do

CNAME
SOA
MX
PTR
TXT
WKS
HINFO

13.3

Endereo de computador
Servidor de nome com
autoridade
Nome cannico de um

Nmero IP

Marca o incio dos dados


de uma zona
Responsvel pelo correio eletrnico
Pointer Record (resoluo reversa)
String de texto
Descrio de um servio
conhecido
Informaes de host

Parmetros que governam a zona


Lista de pares <preferncia,host >
Nome de domnio

alias

alias

Texto arbitrrio
Lista de nomes de
servios e protocolos
Arquitetura de mquina
e SO

Resoluo de Nomes

Ao se realizar uma consulta DNS pode-se obter as seguintes informaes principais: resoluo de nomes de mquinas, ou seja, seu
nmero IP; localizao de servidores de correio eletrnico e a resoluo reversa, ou seja, dado um nmero IP obtm-se o nome da
mquina. Alm disto, mas muito pouco utilizado na prtica, podese obter informaes sobre mquinas e servios conhecidos.
105

Odilson Tadeu Valle

O processo recursivo de resoluo de nomes, que o mais


usual, segue o esquema da Figura 13.1. Este processo de resoluo
pode ser descrito do seguinte modo (setas em destaque):
1. O cliente, mquina A, deseja acessar algum servio baseado em
um nome qualquer. Este olha em sua tabela DNS cache e
verifica se tem ou no o endereo equivalente, caso no tenha
solicita esta informao ao DNS local, seu nameserver.
2. O DNS local (nameserver) busca em sua cache o IP de tal
mquina, caso no encontre pede diretamente ao Root Level
Domain.
3. Este responde que no conhece explicitamente o endereo da
mquina mas sabe quem o Top Level Domain responsvel
por aquele endereo.
4. O DNS local pede ento ao Top Level Domain qual o IP da
mquina.
5. Este responde que no conhece explicitamente o endereo da
mquina mas sabe quem o Second Level Domain responsvel por aquele endereo.
6. O DNS local pede ento ao Second Level Domain qual o IP
da mquina.
7. O Second Level Domain, responsvel pelo domnio em
questo informa ento o IP da mquina procurada ao DNS
Local.
8. O DNS local armazena na tabela DNS cahe a correspondncia entre IP e nome, prevendo futuras consultas, e entrega a
informao ao cliente mquina A que tambm guarda em
seu cache.
Sempre que se acessa uma mquina por meio de seu nome,
por exemplo, faz-se uma consulta as tabelas DNS. Um mecanismos
106

Servidor DNS com Bind

Figura 13.1: Resoluo Recurviva de Nomes

bastante utilizado do mesmo so os apelidos ou aliases que servem


para atribuir mais de um nome a mesma mquina, por exemplo:
www.sj.ifsc.edu.br hendrix.sj.ifsc.edu.br.
Pode-se tambm fazer consultas explcitas s bases, para isto
existem vrias ferramentas, entre elas o nslookup e o dig. Por
exemplo a Listagem 13.1 mostra uma consulta recursiva ao nome
www.sj.ifsc.edu.br., que segue o modelo apresentado na Figura
13.1, diferenciando-se pelo fato de neste caso termos um domnio
delegado. Entre as linhas 3 e 15 so listados todos os Root Level
Domain disponveis para consulta. Na linha 16 explicitado qual foi
o servidor DNS local consultado, neste caso 172.18.0.1 que o
servidor DNS da mquina usada no teste. Entre as linhas 18 e 23 so
listados os Top Level Domain disponveis para consulta, estes dados
foram obtidos do B.ROOT-SERVERS.NET, linha 24. Nas linhas 26 e
27 so mostrados os Second Level Domain responsveis pelo
domnio .ifsc.edu.br., informao obtida de B.DNS.br, linha
28. A mquina artemis.ifsc.edu.br, linha 33, repassa a
consulta mquina hendrix.sj.ifsc.edu.br, linha 30, que
delegada pelo subdomnio .sj.ifsc.edu.br. Esta finalmente,
responde consulta, informando o IP equivalente da mquina
www.sj.ifsc.edu.br., linhas 35 39.
107

Odilson Tadeu Valle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

; <<>> DiG 9.6.1P1 <<>> +trace www.sj.ifsc.edu.br


;; global options : +cmd
.
430735 IN NS B.ROOTSERVERS.NET.
.
430735 IN NS D.ROOTSERVERS.NET.
.
430735 IN NS F.ROOTSERVERS.NET.
.
430735 IN NS M.ROOTSERVERS.NET.
.
430735 IN NS I.ROOTSERVERS.NET.
.
430735 IN NS L.ROOTSERVERS.NET.
.
430735 IN NS G.ROOTSERVERS.NET.
.
430735 IN NS H.ROOTSERVERS.NET.
.
430735 IN NS K.ROOTSERVERS.NET.
.
430735 IN NS E.ROOTSERVERS.NET.
.
430735 IN NS C.ROOTSERVERS.NET.
.
430735 IN NS J.ROOTSERVERS.NET.
.
430735 IN NS A.ROOTSERVERS.NET.
;; Received 440 bytes from 172.18.0.1 # 53(172.18.0.1) in 3 ms

17
18
19
20
21
22
23
24

br .
172800 IN NS E.DNS.br.
br .
172800 IN NS F.DNS.br.
br .
172800 IN NS A.DNS.br.
br .
172800 IN NS B.DNS.br.
br .
172800 IN NS C.DNS.br.
br .
172800 IN NS D.DNS.br.
;; Received 288 bytes from 192.228.79.201#53(B.ROOTSERVERS.NET) in
272 ms

25
26
27
28

ifsc . edu.br .
86400 IN NS artemis . ifsc .edu.br .
ifsc . edu.br .
86400 IN NS hermes.ifsc . edu.br .
;; Received 122 bytes from 200.189.40.10#53(B.DNS.br) in 24 ms

29
30
31
32
33

sj . ifsc . edu.br .
3600
sj . ifsc . edu.br .
3600
sj . ifsc . edu.br .
3600
;; Received 134 bytes from

IN NS hendrix. sj . ifsc .edu.br .


IN NS ns.popufsc.rctsc.br.
IN NS ns.popudesc.rctsc.br.
200.18.10.1 #53(artemis . ifsc .edu.br) in 9 ms

www.sj.ifsc .edu.br . 3600


sj . ifsc . edu.br .
3600
sj . ifsc . edu.br .
3600
sj . ifsc . edu.br .
3600
;; Received 182 bytes from
ms

IN A 200.135.37.65
IN NS ns.popudesc.rctsc.br.
IN NS hendrix. sj . ifsc .edu.br .
IN NS ns.popufsc.rctsc.br.
200.135.37.65#53(hendrix . sj . ifsc .edu.br) in 0

34
35
36
37
38
39

Listing 13.1: dig +trace www.sj.ifsc.edu.br


108

Servidor DNS com Bind

13.4

Instalao e congurao

Como primeiro passo deve-se instalar o pacote Bind1 com o comando


abaixo. Com isto todos os pacotes e arquivos padro de configurao
do Bind sero instalados.
urpmi bind

13.4.1 Caso de estudo


Para verificar o funcionamento do DNS propem-se a estrutura lgica mostrada na Figura 13.2. Esta estrutura permite testes em vrios
servidores separados, podendo cada servidor ser administrado por
uma pessoa diferente, e permite tambm verificar a troca de informaes entre servidores. Para permitir testes simples a mquina M1
ter uma cpia de todos os arquivos (zone files) de todos os domnios
e ser a nica a ter domnio reverso de todas as mquinas. Como
ela ter todos os dados esta dever ser usada como servidor DNS de
todos.

Figura 13.2: Diagrama do caso de estudo DNS


1

https://www.isc.org/software/bind
109

Odilson Tadeu Valle

Congurao do servidor principal


Para o servidor DNS na mquina M1 deve-se configurar o arquivo da
zona direta e reversa para o domnio redes.edu.br e tambm
configur-lo para ser escravo dos demais domnios. Para tanto
inicia-se configurando o arquivo /etc/named.conf. Neste arquivo
so configurados vrios parmetros, para uma configurao simples
mantem-se os valores padro para estes parmetros e acrescentam-se
as declaraes das novas zonas que sero criadas. Para isto basta
acrescentar ao final do arquivo as linhas da Listagem 13.2. Na linha
1 cria-se uma nova zona redes.edu.br, que ser do tipo master,
linha 2. O arquivo de especificao (zone file) desta zona ser o
redes.zone, que estar contido dentro do diretrio master do
diretrio padro dos zone files do Bind. Entre as linhas 6 e 9
declara-se a zona reversa, segue o mesmo padro anterior com a
diferena que o nome da zona composto parcialmente pela faixa de
IPs da rede e o restante segue o padro da RFC. Entre as linhas 11 e
27 so declarados as zonas escravas com seus respectivos masters.
1
2
3
4

zone "redes . edu.br" IN {


type master ;
file "master / redes . zone";
};

5
6
7
8
9

zone " 2.168.192. inaddr.arpa" IN {


type master ;
file " reverse / redes . rev" ;
};

10
11
12
13
14
15

zone "redes2 . edu.br" IN {


type slave ;
file " slaves / redes2 . zone";
masters { 192.168.2.102; };
};

16
17
18
19
20
21
22

110

zone "redes3 . edu.br" IN {


type slave ;
file " slaves / redes3 . zone";
masters { 192.168.2.103; };
};

Servidor DNS com Bind

23
24
25
26
27

zone "redes4 . edu.br" IN {


type slave ;
file " slaves / redes4 . zone";
masters { 192.168.2.104; };
};

Listing 13.2: Anexos ao /etc/named.conf

Agora
edita-se
o
arquivo
/var/lib/named/var/named/master/redes.zone de acordo
com o modelo da Listagem 13.3. Na linha 1 tem-se a definio do
TTL (Time To Live) que neste caso significar por quanto tempo, em
segundos, que a cpia permanecer no cache do servidor que o
copiou. Na linha 2 tem-se a demarcao do incio da zona (Start Of
Authority) seguida do endereo eletrnico do responsvel pelo
domnio. Na terceira limha tem-se o nmero serial do arquivo. Este
nmero deve ser incrementado a cada alterao do arquivo, sob pena
de inconsistncia com as cpias cache espalhadas pela Internet. A
recomendao que este nmero seja composto pela data, na ordem
inversa, mais dois dgitos para o nmero serial do dia. As linhas 4 e
5 afetam principalmente o mantenedor da zona e os prestadores de
servios secundrios e pode ser negociado entre eles. O campo
expiry, linha 6, define a validade dos dados da zona, portanto os
dados de cache podem ser utilizados mesmo que o servidor master
esteja fora do ar. A linha 7 determina o valor padro para todos os
TTL dos registros sem valor explcito. Na linha 8 e 9 esto
declarados quais so os servidores de nomes (Name Servers)
responsveis pelo domnio. Nas linhas 10 e 11 os servidores de
correio eletrnico, sendo que o mail1 o principal, prioridade 0, e o
mail2 o secundrio, prioridade 10. Na linha 12 definido o
endereo (Address) da mquina localhost.
Na linha 13 o
$ORIGIN define a extenso que valer todos os endereos definidos
na sequncia. Da linha 14 em diante so definidos todos os
endereos de mquinas do domnio, por exemplo a mquina
m1.redes.edu.br. ter o endereo 192.168.2.101. Cabe
salientar que as declaraes entre as linhas 18 e 21 servem para fazer
um balanceamento de carga entre os servidores declarados. Neste
caso, a cada consulta o DNS entregar um IP distinto, num esquema
111

Odilson Tadeu Valle

de rodzio, para o solicitante, sendo assim, cada servidor receber


aproximadamente um quarto das consultas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

$TTL 86400
@
IN SOA m1.redes.edu.br root (
2009123100
; serial (d. adams)
3H
; refresh
15M
; retry
1W ; expiry
1D )
; minimum
IN NS
m1.redes.edu.br .
IN NS
m7.redes.edu.br .
IN MX 0
mail1. redes . edu.br .
IN MX 10 mail2.redes.edu.br .
localhost
IN A
127.0.0.1
$ORIGIN redes.edu.br.
m1 A 192.168.2.101
m7 A 192.168.2.177
mail1 A 192.168.2.201
mail2 A 192.168.2.202
www A 192.168.2.155
www A 192.168.2.156
www A 192.168.2.157
www A 192.168.2.158

Listing 13.3: Arquivo de declarao da zona direta

Por
fim
edita-se
o
arquivo
/var/lib/named/var/named/master/redes.rev de acordo
com o modelo apresentado na Listagem 13.4.
Este arquivo
segue o mesmo padro de configurao do redes.zone. Neste
caso objetiva-se a declarao da zona reversa, ou seja, dado um
nmero IP qual o seu nome equivalente. Entre as linhas 10 e
13 esto declarados os nmeros IPs de 101 104, da classe
192.168.2 definido no arquivo /etc/named.conf, com seus nomes
equivalentes, por exemplo m1.redes.edu.br..
1
2
3
4
5

112

$TTL 86400
@
IN

SOA

m1.redes.edu.br . root .m1.redes.edu.br .


2009123100 ; Serial
28800
; Refresh
14400
; Retry

Servidor DNS com Bind

3600000
86400 )

7
8

IN

9
10
11
12
13

101
102
103
104

; Expire
; Minimum

NS
m1.redes.edu.br .
IN
NS
m7.redes.edu.br .
IN
PTR
m1.redes.edu.br .
IN
PTR
m2.redes2.edu.br .
IN
PTR
m3.redes3.edu.br .
IN
PTR
m4.redes4.edu.br .

Listing 13.4: Arquivo de declarao da zona reversa

Inicia-se o servio de DNS com o comando:


service named start
Verifica-se o arquivo de log em busca de possveis problemas,
neste log sero indicados o arquivo e linhas dos mesmos. Usa-se o
comando:
tail /var/lib/named/var/log/default.log

Congurando os demais servidores


Para os demais servidores basta a configurao do arquivo /etc/
named.conf e o zone file. No arquivo /etc/named.conf deve-se
acrescentar as linhas conforme o exemplo para a mquina M2, ver
Listagem 13.5. O arquivo de declarao da zona direta deve ficar
conforme o exemplo da Listagem 13.6. Lembre-se que para este caso
de estudo, estes servidores no tero a zona reversa configurada.
1
2
3
4

zone "redes2 . edu.br" IN {


type master ;
file "master / redes2 . zone";
};

Listing 13.5: Anexos ao /etc/named.conf para M2


113

Odilson Tadeu Valle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$TTL 86400
@
IN SOA m2.redes2.edu.br root (
2009123100
; serial (d. adams)
3H
; refresh
15M
; retry
1W ; expiry
1D )
; minimum
IN NS
m2.redes2.edu.br .
IN NS
m15.redes2.edu.br .
IN MX 0
mail . redes2 . edu.br .
localhost
IN A
127.0.0.1
$ORIGIN redes2.edu.br.
m2 A 192.168.2.102
mail A 192.168.2.102
www A 192.168.2.102

Listing 13.6: Arquivo de declarao da zona direta para M2

Inicia-se o servio de DNS com o comando:


service named start
Verifica-se o arquivo de log em busca de possveis problemas,
neste log sero indicados o arquivo e linha do mesmo que esto com
problemas. Use o comando:
tail /var/lib/named/var/log/default.log

Testes de funcionamento
Como primeiro teste configura-se a mquina M2, por exemplo,
para ser sua prpria cliente, editando o /etc/resolv.conf e
adicionando a diretiva nameserver 192.168.2.102 no incio do
arquivo. Em seguida d-se um ping para m2.redes2.edu.br (a
prpria mquina). Se pingar sinal de que o prprio servidor est
funcionando.
Para poder resolver os nomes das demais mquinas deve-se
configurar as mquinas para serem cliente DNS da mquina M1, editando o arquivo /etc/resolv.conf e deixando-o com o contedo:
114

Servidor DNS com Bind

nameserver 192.168.2.101
Em seguida pode-se testar a resoluo de nomes com
qualquer cliente ou com as ferramentas especficas, como o dig ou
nslookup. Por exemplo, para testes de resoluo direta usa-se o
dig m2.redes2.edu.br e para resoluo reversa dig -x
192.168.2.102.

115

Captulo 14

Servidor Apache
14.1

Introduo

Um servidor web um programa de computador, ou o computador que executa este programa, responsvel por responder a pedidos
HTTP (Hypertext Transfer Protocol) feitos por clientes incluindo opcionalmente dados. As requisies geralmente so pginas web, tais
como documentos HTML com objetos embutidos como imagens, arquivos etc.
O servidor Apache12 (Apache server) o mais bem sucedido
servidor web livre. Foi criado em 1995 por Rob McCool, ento
funcionrio do NCSA (National Center for Supercomputing Applications), Universidade de Illinois.
O servidor compatvel com o protocolo HTTP verso 1.1.
Suas funcionalidades so mantidas atravs de uma estrutura de mdulos, permitindo inclusive ao usurio escrever seus prprios mdulos
utilizando a API do software.
disponibilizado em verses para os sistemas Windows,
Novell Netware, OS/2 e diversos outros do padro POSIX (Unix,
GNU/Linux, FreeBSD etc..
1
2

http://pt.wikipedia.org/wiki/Servidor_Apache
http://www.apache.org/

Odilson Tadeu Valle

14.2

Instalao e congurao

Como primeiro passo deve-se instalar o pacote com o comando:


urpmi apache apache-doc
Em seguida inicia-se o servidor com o comando:
service httpd start
O servidor Apache j estar rodando numa configurao
padro que pode atender boa parte das demandas deste tipo de
servio. Testes podem ser feitos usando um navegador acessando o
endereo http://localhost/. Pode ser acessado tambm o
endereo http://localhost/manual/, que contm o manual
(apache-doc) do servidor com uma srie de textos explicativos
sobre possveis configuraes e links importantes.
O principal arquivo de configurao do Apache o
/etc/httpd/conf/httpd.conf que est dividido em trs sees:
global, opes do servidor e mquinas virtuais. Alm deste podem
ser adicionados novos mdulos, via include no arquivo principal,
que permitem ampliar as funcionalidades do servidor.
As pginas publicadas ficam, por padro, no diretrio /var/
www/html. Como um primeiro teste pode-se sobrescrever o contedo
do arquivo index.html, deste diretrio, pelo exposto abaixo. Fas-ze
um novo acesso http://localhost/ e verifica-se o resultado.

<html><body><h1>Esta minha pgina de testes.


Servidor 192.168.2.X</h1></body></html>
A seguir sero apresentadas vrias (re)configuraes possveis,
seja implementadas no arquivo principal ou seja pela adio de novos
mdulos.
118

Servidor Apache

14.2.1 Direcionamento
A diretiva Listen diz ao servidor para aceitar requisies somente
da porta ou da tupla <endereo, porta >. Por exemplo, para fazer o
servidor aceitar conexes na porta 80 e 8080 em todas as interfaces
basta:

Listem 80
Listem 8080
Para o servidor aceitar conexes na porta 80 numa interface e
na porta 8080 em outra:

Listem 192.168.2.1:80
Listem 192.168.2.10:8080

14.2.2 Hospedeiros Virtuais


O termo Hospedeiro Virtual refere-se a prtica de hospedar mais
de um stio web num mesmo servidor Apache. O Hospedeiro Virtual pode ser baseado em IP, ou seja, tem-se um nmero IP distinto
para cada stio web, ou baseado em nome, significando que tem-se
mltiplos nomes para o mesmo IP. O fato de estar rodando no mesmo
servidor Apache no ser visvel ao usurios que acessarem os diversos Hospedeiros.
Como um teste rpido cria-se um domnio virtual baseado em
IP. Como primeiro passo deve-se criar um apelido de IP, conforme
Seo 12.2.1, por exemplo 192.168.2.188. Em seguida cria-se o arquivo /etc/httpd/conf/vhosts.d/vhosts.conf com o seguinte contedo:

<VirtualHost 192.168.2.188>
ServerAdmin webmaster@redes.edu.br
DocumentRoot /var/www/docs/virtual
ServerName virtual.redes.edu.br
ErrorLog logs/virtual-error_log
119

Odilson Tadeu Valle

TransferLog logs/virtual-access_log
<\slash VirtualHost>
<VirtualHost >e </VirtualHost >so usados para delimitar um
conjunto de diretrizes que se aplicam apenas a um Hospedeiro Virtual especfico. Qualquer diretiva que permitido em um contexto
de acolhimento virtual pode ser utilizada. As diretivas apresentadas
no exemplo so auto-explicativas, sendo a principal a DocumentRoot
que especifica o diretrio que conter os arquivos html e outros relativos ao Hospedeiro Virtual em questo. Quando o servidor recebe
um pedido de um documento em um Hospedeiro Virtual especfico,
ele usa as diretivas de configurao includo na seo <VirtualHost >.
Cria-se o diretrio virtual com o comando:
mkdir -p /var/www/docs/virtual
Cria-se mais um arquivo index.html dentro deste diretrio
com o contedo:

<html><body><h1>Esta minha pgina virtual.


Servidor 192.168.2.188</h1></body></html>
Reinicia-se o servidor, para que ele releia as configuraes de
domnios virtuais, com o comando:
service httpd restart
Agora testa-se e observa-se que possui-se duas
pginas independentes acessando http://192.168.2.1 e
http://192.168.2.188.

14.2.3 Pginas de Usurios


Para permitir que os usurios tenham sua pgina pessoal, seja em formato html ou simplesmente como repositrio de arquivos (Indexes)
procede-se do seguinte modo. Primeiramente instala-se o mdulo
userdir com o comando:
120

Servidor Apache

urpmi apache-mod_userdir
Com isto, entre aoutras coisas, ser criado um arquivo /etc/
httpd/modules.d/67_mod_userdir.conf, que conter as definies de
compartilhamento dos diretrios pessoais. Este arquivo pode conter um continer com o seguinte formato:

<Directory \slash home\slash */public_html>


AllowOverride All
Allow from all
Options Indexes FollowSymLinks MultiViews
<IfModule mod_access.c>
Order allow,deny
Allow from all
<\slash IfModule>
<\slash Directory>
O significado das diretivas :

AllowOverride All Aceita todo tipo de diretivas de


autenticao.

Allow from all Permite acesso a todos.


Options Indexes FollowSymLinks MultiViews

Indexes, se no houver o arquivo index.html mostra em


formato de diretrio. FollowSymLinks, pemite seguir os links
da pgina. MultiViews, tenta servir a pgina na lngua do
usurio.

<IfModule mod_access.c > Se o mdulo de controle de


acesso, access, existir define o tipo de acesso.

Order allow,deny Ordem de avaliao das diretivas para permitir ou negar acesso ao recurso.

Allow from all Permite para todos.


121

Odilson Tadeu Valle

Reinicia-se o Apache com o comando:


service httpd restart
Assim qualquer usurio, que tiver um diretrio public_html
dentro de seu diretrio de entrada, ter uma pgina no ar. Dentro
do public_html pode ser colocado um arquivo index.html, em
linguagem html, ou simplesmente arquivos e diretrios para permitir
o download externo.

14.2.4 Restrio de acesso pginas


O Apache permite que seja requisitado um login e senha para
acesso a determinadas pginas. Para prover esta funcionalidade
deve-se acrescentar algumas diretivas nos respectivos continers de
definio das pginas ou acrescentar um arquivo chamado, por
padro, .htaccess na raiz de cada diretrio das pginas a serem
protegidas. Um exemplo do contedo deste arquivo:

require valid-user
AuthType Basic
AuthName "Aqui define-se o nome da janela que
ser aberta solicitando login e senha"
AuthUserfile /etc/httpd/conf/senhas.pw
O login e senha requisitados pelo Apache podem ser consultados em uma base LDAP, veja no Captulo 18, ou podem ser formados por uma pequena base local do prprio Apache. Neste caso
devem ser criados com o seguinte comando:
htpasswd
-c
nome_do_usuario

/etc/hhtpd/conf/senhas.pw

Este comando diz ao Apache para criar (-c) o arquivo de senhas


(/etc/hhtpd/conf/senhas.pw) para o usurio nome_do_usuario. Em
seguida ser requisitada a senha. Pode-se atribuir senhas a outros
usurio repetindo-se o mesmo comando, simplesmente eliminando a
flag -c.
122

Servidor Apache

14.2.5 Pginas em https


O mdulo mod_ssl fornece uma interface para a biblioteca
OpenSSL, que fornece criptografia forte usando os protocolos
Secure Sockets Layer e Transport Layer Security. Para instalar este
mdulo, com um certificado auto-assinado, basta executar o seguinte
comando:
urpmi apache-mod_ssl
Com isto o sistema j gera os certificados e permite que
o acesso de todas as pginas, inclusive as dos usurios,
sejam feitos com criptografia. Se desejado pode-se bloquear
o acesso das pginas no certificadas atravs da diretiva
Listem no arquivo httpd.conf. Juntamente com o mdulo
sero instalados os arquivos de configurao, iniciando pelo
/etc/httpd/ modules.d/40_mod_ssl.conf, que define, entre
outras coisas, a escuta no endereo/porta 0.0.0.0:443.
Outro
arquivo
criado

o
/etc/httpd/conf/vhosts.d/01_default_ssl_vhost.conf
que cria um servidor virtual para as pginas https, que entre
outras coisas tem um diretiva SSLCertificateKeyFile que
aponta para a chave criptogrfica que fica localizada no arquivo
/etc/pki/tls/certs/localhost.crt. Esta chave gerada no
momento de instalao do mdulo.

123

Captulo 15

Servidor Postx
15.1

Introduo

Um servidor de correio eletrnico1 gerencia os e-mails que so enviados e recebidos. Os servidores de e-mail podem ser servidores Internet, onde e-mails enviados e recebidos podem ser transitados para
qualquer lugar do mundo, ou servidores de correio de intranet onde
as mensagens trafegam apenas dentro da empresa. Atravs do correio
eletrnico podem ser criados grupos de discusso sobre quaisquer assuntos. Estes grupos so chamados de listas ou refletores. Um refletor
uma caixa postal eletrnica falsa. Todas as mensagens enviadas para
esta caixa postal, so transmitidas para as pessoas cadastradas na lista
deste refletor. Desta forma, cada membro do grupo passa a dispor das
mensagens enviadas para o refletor em sua caixa postal ou mailbox.
Cada membro, pode ler as mensagens e dar a sua opinio sobre elas,
enviando uma nova mensagem para o refletor.
Como exemplo de sistemas de correio eletrnico livres pode-se
citar o Postfix23 , que um dos candidatos a substituir o SendMail.
O Postfix hoje uma das melhores alternativas para todas as insti1

http://pt.wikipedia.org/wiki/Sistema_de_correio_eletrnico
http://www.postx.org/postconf.5.html
3
http://www.postx.org/
2

Odilson Tadeu Valle

tuies que desejam utilizar um servidor de e-mail sem ter grandes


gastos, ele foi escrito de forma direta e clara e visa facilitar e ajudar
o Administrador Linux j que esse software muito fcil de utilizar.
Alm de apresentar grande facilidade para sua configurao ele um
servidor de e-mail robusto e com vrios recursos.

15.2

Funcionamento do Correio Eletrnico

Antes de implementar um servio de correio eletrnico importante


que o administrador entenda como funciona a troca de mensagens,
seja na Internet, seja em uma rede local. Para uma simples troca de
mensagens entre dois usurios, pode ser necessria a utilizao de
vrios protocolos e de vrias aplicaes. Ser visto a seguir como
isso acontece.
Um usurio que queira enviar uma mensagem para outro utilizar um aplicativo cliente de e-mail, tambm conhecido como MUA
(Mail User Agent). Ao terminar de redigir a sua mensagem o MUA
enviar a mensagem a um MTA (Mail Transfer Agent), que se encarregar ento de entregar a mensagem ao MTA do destinatrio, caso
ele se encontre em outra mquina, ou simplesmente colocar a mensagem na caixa postal do destinatrio, caso ele se encontre no mesmo
servidor. A transferncia da mensagem entre o MUA e o MTA se efetua utilizando um protocolo chamado SMTP (Simple Mail Trasnfer
Protocol) ou Protocolo Simples de Transferncia de Mensagens. O
protocolo SMTP ser utilizado tambm entre o MTA do remetente e
o MTA do destinatrio. Figura 15.1.
O servidor de e-mail do destinatrio, ao receber uma mensagem para um dos seus usurios, simplesmente a coloca na caixa
postal deste usurio. Se o usurio possui uma conta shell neste
servidor, ele poder ler os seus e-mails direto no servidor, caso contrrio o usurio dever ler sua mensagens com o seu cliente de email. A transferncia de mensagens recebidas entre o servidor e o
cliente de e-mail requer a utilizao de outros programas e protocolos. Usualmente utilizado para este fim o protocolo POP (Post
Office Protocol), Protocolo de Agncia de Correio, que recebe este
126

Servidor Postfix

Figura 15.1: Protocolos para troca de mensagens de Correio


Eletrnico

nome por agir como uma agncia de correios mesmo, que guarda as
mensagens dos usurios em caixas postais e aguarda que estes venham buscar suas mensagens. Outro protocolo que pode ser utilizado
para este mesmo fim o IMAP (Internet Message Access Protocol),
Protocolo para Acesso de Mensagens via Internet, que implementa,
alm das funcionalidades fornecidas pelo POP, muitos outros recursos. Os protocolos POP e IMAP so protocolos para recebimentos de
mensagens, ao contrrio do protocolo SMTP, que serve para enviar
mensagens, logo, possuem funcionalidades diferenciadas, como por
exemplo, autenticao do usurio.
O recebimento de mensagens pelo cliente se d atravs da solicitao do MUA do usurio ao seu servidor de e-mail, que aps a
autenticao do usurio vai informar se existem mensagens em sua
caixa postal e quantas so. A seguir o MUA solicita a transferncia
das mensagens para a mquina local, finalizando assim o processo de
troca de mensagens entre dois usurios.

15.3

Instalao e congurao

Deve-se instalar os pacotes com o comando:


127

Odilson Tadeu Valle

urpmi postfix
O servidor de correio eletrnico4 exige o funcionamento em
conjunto com um servidor DNS, ou melhor, necessrio que exista
um servidor DNS apontando para a mquina que pretende-se instalar o Postfix. Para configurar o Servidor DNS corretamente veja o
Captulo 13. Para funcionamento na mquina local, trocando mensagens somente entre os usurios da prpria mquina, o Postfix j
vem pronto, bastando inici-lo. Para funcionar como um servidor
de Intranet ou Internet deve-se configurar o segundo bloco do arquivo /etc/postfix/main.cf, acrescentando/mudando somente os
parmetros apresentados na Listagem 15.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# User configurable parameters


myhostname = m1.redes.edu.br
mydomain = redes.edu.br
myorigin = $mydomain
inet_interfaces = all
mynetworks_style = subnet
mydestination = $myhostname, $mydomain
# Filtros ..
smtpd_recipient_restrictions =
permit_mynetworks,
reject_invalid_hostname ,
check_client_access hash :/ etc / postfix / access ,
reject_non_fqdn_hostname,
reject_non_fqdn_sender ,
reject_non_fqdn_recipient ,
reject_multi_recipient_bounce ,
reject_sender_login_mismatch ,
permit_sasl_authenticated ,
reject_unauth_destination ,
reject_unknown_client ,
reject_unknown_sender_domain,
reject_unknown_recipient_domain ,
reject_rbl_client relays . ordb. org ,
reject_rbl_client opm. blitzed . org ,
reject_rbl_client list . dsbl . org ,
reject_rbl_client sbl . spamhaus.org,
4

http://www.conectiva.com/doc/livros/online/10.0/servidor/pt_BR/
ch11.html
128

Servidor Postfix

27
28
29
30

reject_rbl_client cbl . abuseat . org ,


reject_rbl_client rbl . brasilrbl .com.br,
reject_rhsbl_client rhsbl . brasilrbl . com.br,
reject_rhsbl_sender dsn. rfc ignorant.org

Listing 15.1: Principais diretivas do arquivo /etc/postfix/


main.cf

Algumas diretivas tem funo evidente e no sero comentadas. Na linha 4 define-se a extenso do e-mail, ou seja, o campo a
ser colocado aps o @. O inet_interfaces, linha 5, define em quais
interfaces o servidor de correio vai atender. mynetworks_style,
linha 6, define a rede de confiana do servidor, ou seja, quais os
clientes podero acess-lo. Pode ser class, confia em toda a classe
de rede onde o servidor est alocado, subnet confia somente na subrede local, host confia somente na prpria mquina. Na linha 7
definido os domnios de e-mail aos quais o servidor receber correspondncias.
A filtragem de spans sempre um motivo de preocupao para
os administradores do Postfix. Como primeira tentativa de evit-los
so propostas algumas regras, entre as linhas 9 e 31, novamente algumas so auto explicativas. Na linha 12 definido um arquivo onde
pode-se colocar manualmente endereos de email ou endereos de
domnios que sero bloqueados, isto serve para evitar envios reincidentes de fontes maliciosas e que no so filtradas pelas outras regras.
Na linha 16 define-se o cdigo padro de resposta ao endereo bloqueado. Na linha 17 so rejeitados os e-mails de usurios onde no
h casamento entre o usurio logado e o nome de usurio que envia o e-mail, ou seja, quando um usurio tenta se passar por outro.
O reject_rbl_client, linhas 23 28, consulta o stio informado
e verifica uma lista reversa de endereos de rede contendo possveis
spammers, caso o emitente esteja nesta lista seu e-mail ser rejeitado.
o mesmo caso para reject_rhsbl_client a diferena que neste
caso a consulta para endereos diretos. possvel a consulta a
vrios stios. Deve-se tomar cuidado com este tipo de consulta j que
as mesmas podem apresentar falso positivo, ou seja, conterem um
endereo que efetivamente no gerador de spam.
129

Odilson Tadeu Valle

Para aprimorar a configurao deve-se adicionar regras para


minimizar o trfego de spams e correspondncias infectadas por
vrus. Uma boa ferramenta para tal o Greylinsting, encontrado
em http://projects.puremagic.com/greylisting/. Alm
disto, pode-se usar um anti-vrus como apresentado mais adiante no
Captulo 26.
Outra diretiva interessante a se acrescentar em um caso real
home_mailbox = Maildir/. Esta diretiva salvar os e-mails destinados a determinado usurio em seu diretrio home, dentro de uma
pasta chamada Maildir. Com as vantagens de poder contabilizar os
arquivos em sua cota, caso exista, e deixar os mesmos fisicamente
alocados na pasta do usurio, garantindo livre acesso e permissionamento.
O Postfix tambm permite que se crie grupos de
usurios (listas ou refletores). Para isto basta editar o arquivo
/etc/postfix/alias e criar diretivas do tipo nome_do_grupo:
usurio1, usurio2, . . . , usurion. Executar o comando
newaliases e recarregar o Servidor. Assim toda vez que chegar um
e-mail destinado nome_do_grupo@dominio.edu.br este ser
copiado para todos os usurios relacionados. Poder-se-ia tambm
criar listas de discusso, onde tambm possvel a criao de grupos
de email e ter-se um maior controle das trocas de mensagens. Uma
boa ferramenta para isto o Mailman5 .
Finalmente inicializa-se o servio com:
service postfix start

15.4

Testes

Para realizar alguns testes no servidor deve-se ter uma ferramenta


cliente de e-mail. Para isto pode-se usar uma ferramenta a nvel
de linha de comando, mail (se no existir deve-se instalar o pacote
mailx).
5

130

http://www.gnu.org/software/mailman/index.html

Servidor Postfix

Para enviar uma mensagem procede-se do seguinte modo:

mail usuario@redes.edu.br <Enter>,


inserir o subjet <Enter>,
inserir a mensagem. <Enter>
Continuar a mensagem... <Enter>
<Ctrl>+<d>.
Como primeiro teste pode-se enviar uma mensagem, como exposto acima, para um usurio da prpria mquina e monitorar a troca
de mensagens ou eventuais problemas no arquivo de log com o comando:
tail -f /var/log/mail/info
Se aparecer algo do tipo apresentado na Listagem 15.2
porque est tudo certo. O principal aviso o status=sent, linha 4.
1
2
3
4

Mar 23 09:56:29 m1 postfix /pickup[15108]: 81A7C2C44C80: uid=1572 from


=<usuario>
Mar 23 09:56:29 m1 postfix / cleanup[15113]: 81A7C2C44C80: messageid
=<20070323125629.81A7C2C44C80@m1.redes.edu.br>
Mar 23 09:56:29 m1 postfix /qmgr[15109]: 81A7C2C44C80: from=<
usuario@redes.edu.br>, size=454, nrcpt=1 (queue active )
Mar 23 09:56:29 m1 postfix / local [15115]: 81A7C2C44C80: to=<root@redes.
edu.br>, orig_to=<root>, relay =local , delay =0.29, delays
=0.23/0.01/0/0.04, dsn =2.0.0, status =sent ( delivered to mailbox)
Mar 23 09:56:29 m1 postfix /qmgr[15109]: 81A7C2C44C80: removed

Listing 15.2: Exemplo de log do Postx

Uma vez que esteja funcionando localmente, pode-se enviar


email para qualquer outro surio da Internet. Lembrando que os emails externos no chegaro/retornaro ao servidor, caso no se tenha
um domnio vlido, devidamente cadastrado no Registro.br.
Para ler mensagens basta digitar mail, aparecer uma listagem
de e-mails, e em seguida o nmero da mensagem que se pretende ler.

131

Captulo 16

Servidor Samba
16.1

Introduo

O SAMBA1 um software criado por Andrew Tridgell, que veio


para facilitar a integrao do mundo UNIX e o mundo Windows,
integrando-os por meio do protocolo SMB (Service Message Blocks).
Tem como funo principal o compartilhamento de arquivos e impressoras com a famlia Windows.
Um domnio Windows um conjunto de computadores que
residem na mesma sub-rede e pertencem ao mesmo grupo de trabalho, e um deles atua como controlador de domnio. O PDC, Primary Domain Controller, o controlador de domnio primrio, onde
est contido o banco de dados SAM, Security Account Manager, que
o banco de dados dos usurios do domnio Windows. O SAM
usado para validar os usurios no domnio. As mudanas, que por
ventura ocorrerem, so propagadas para o BDC. O BDC, Backup Domain Controller, o reserva do controlador de domnio. Pode haver
nenhum, um ou mais de um BDC num domnio mas um nico PDC.
Pelo ambiente de rede Windows pode-se navegar pelos computadores que esto disponveis pela sub-rede e acessar seus recursos
compartilhados. O servidor WINS, Windows Internet Name Server,
1

http://www.samba.org/

Odilson Tadeu Valle

uma implementao do servidor de nomes NetBIOS, Network Basic Input/Output System. O WINS dinmico: quando um cliente
iniciado so requeridos seu nome, endereo e grupo de trabalho. Este
servidor manter estas informaes para futuras consultas e atualizaes.
O Samba tem condies de exercer todos os papis de uma rede
Windows, com exceo do BDC. Mais especificamente o Samba
pode ser: servidor de arquivo, servidor de impresso, PDC e servidor
WINS, entre outros.

16.2

Instalao e congurao

Para instalar o samba basta executar o comando:


urpmi samba
O principal arquivo de configurao do samba o
/etc/samba/smb.conf. Este arquivo dividido em duas sees,
global e referente aos compartilhamentos. Deve-se edit-lo e
modificar/acrescentar as diretivas segundo apresentado na Listagem
16.1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

134

[ global ]
workgroup = redes
netbios name = m1
security = user
encrypt passwords = yes
smb passwd file = / etc /samba/smbpasswd
passwd program = / usr / sbin /smbldappasswd u "%u"
passwd chat = "Mudando senha para*\nNew password*" %n\n "*Redigite a
nova senha" %n\n"
ldap suffix = dc=redes,dc=edu,dc=br
ldap admin dn = "cn=Manager,dc=redes,dc=edu,dc=br"
passdb backend = ldapsam:ldap ://127.0.0.1/
ldap user suffix = ou=People
ldap group suffix = ou=Group
ldap machine suffix = ou=People
add user script = / usr / sbin /smbldapuseradd m "%u"

Servidor Samba

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

ldap delete dn = No
add machine script = / usr / sbin /smbldapuseradd w "%u"
add group script = / usr / sbin /smbldapgroupadd p "%g"
add user to group script = / usr / sbin /smbldapgroupmod m "%u" "%g
"
delete user from group script = / usr / sbin /smbldapgroupmod x "%u"
"%g"
load printers = yes
printcap name = cups
[homes]
comment = Home Directories
browseable = no
[ software ]
comment = Softwares
path = /dados/ software
guest ok = no
public = no
writable = yes
browseable = yes
force create mode = 0555
force directory mode = 0555
veto files = /*. mp3/
valid users = user1 , user2
force group = admin

Listing 16.1: Principais diretivas do arquivo smb.conf

Na linha 2, da Listagem 16.1, definido o grupo de trabalho


ou Domnio Windows qual o servidor pertencer. Na linha 3
define-se o nome da mquina que aparecer nos compartilhamentos
Windows. Entre as linhas 9 e 21 so definidos parmetros para integrao com a base LDAP, veja detalhes no Captulo 18. Entre as
linhas 25 e 26 definido o compartilhamento de todos os diretrios
homes dos usurios cadastrados no servidor. Entre as linhas 28 e
38 definido o compartilhamento do diretrio /dados/software,
linha 29, com nome software, linha 27, que pode ser escrito, linha
32, navegvel, linha 33, onde novos arquivos e diretrios sero criados com o permissionamento 555 (ver Captulo 7), linhas 34 e 35.
Arquivos com a extenso mp3 no sero aceitos, linha 36. Somente
os usurios user1 e user2 podero acessar este compartilhamento,
linha 237. Neste caso poderia-se tambm usar @nome_do_grupo,
135

Odilson Tadeu Valle

para definir o grupo que teria permisso de acesso, evidentemente,


desde que tenha acesso ao diretrio propriamente dito. Finalmente,
na linha 38 definido o grupo dono dos novos arquivos e diretrios
a serem criados. Aqui cabe uma observao, quando da criao de
um arquivo ou diretrio o Linux atribui, por padro o grupo dono do
mesmo como sendo o grupo primrio do usurio que est executando
a operao, com este artifcio do Samba possvel mudar este comportamento.
Como o padro de senhas do SMB diferente do Linux devese criar as senhas SMB para os usurios da mquina. Isto feito
com o comando:
smbpasswd -a nome_de_usuario
Aps a configurao deve-se iniciar ou reiniciar o servio com
o comando:
service smb start

16.3

Testes

A primeira verificao feita pelo comando:


testparm
que verifica a integridade e coerncia do arquivo /etc/samba/
smb.conf. Caso exista alguma inconsistncia no arquivo, a mesma
ser apontada neste momento.
Pode-se tambm testar os compartilhamentos disponveis com
o comando abaixo, que listar todos os compartilhamentos ativos no
respectivo servidor.
smbclient -L redes -U nome_de_usurio
136

Servidor Samba

Para testes de compartilhamento propriamente dito, deve-se


acessar uma mquina Windows, logar com um usurio e senha
cadastrado no servidor, acessar o Windows Explorer e fazer um mapeamento de rede apontando para //redes/nome_de_usuario ou /
/192.168.2.1/nome_de_usuario, ou seja, pelo nome do grupo de
trabalho ou pelo nmero IP.
Tambm possvel o mapeamento com mquinas Linux, neste
caso usa-se o comando mount.cifs, conforme o modelo:
mount.cifs
//192.168.2.1/nome_de_usurio
./diretorio_local_de_montagem
-o
username=nome_de_usurio
Aps isto pode-se fazer testes criando/copiando/removendo arquivos e diretrios, seja via mquina Windows ou Linux.

137

Captulo 17

Servidor NFS
17.1

Introduo

NFS Network File System o sistema de compartilhamento de


arquivos em rede local nativo Linux (Unix). Permite que os diretrios
remotos (servidor) sejam montados localmente (cliente) passando a
impresso ao usurio de que o sistema de arquivos local.
A segurana aos arquivos e diretrios dada pelo permissionamento de arquivos e diretrio padro do Linux, sobreposto uma
mscara configurada no servidor de arquivos. Deve-se tomar o
cuidado para garantir que todos os usurios tenham a mesma identificao (UID e GID) no servidor e cliente para no gerar furos na
segurana de arquivos.

17.2

Instalao e congurao

Para instalar o servidor NFS usa-se o comando:


urpmi nfs-utils
A configurao dos diretrios a serem compartilhados feita
por meio do arquivo /etc/exports, que por padro no existe e de-

Odilson Tadeu Valle

ver ser criado com o primeiro compartilhamento. O formato deste


arquivo bastante simples. Nele devem ser informados todos os diretrios, um por linha, a serem exportados seguindo o formato:

diretrio [cliente(s) opes]


Onde diretrio o prprio diretrio a ser
exportado/compartilhado. Se informado simplesmente o diretrio,
todas as mquinas tero permisso de escrita e leitura no dito
diretrio. Em cliente deve pode ser informado: o nome da
mquina cliente ou seu IP; coringas de domnio como por exemplo
*sj.ifsc.edu.br, que representa o conjunto de todas as mquinas do
domnio sj.ifsc.edu.br; pares de endereo IP/mscara, por
exemplo 192.168.2.0/24; *, qualquer mquina. As opes pode ser
ro (read only), rw (read and write) e no_root_squash. Nesta
ltima o usurio root do cliente passa a ter as mesmas permisses
de root no servidor. No recomenda-se o uso desta opo a no ser
entre servidores e com muito cuidado. Deve-se observar que
compartilhamentos de diretrio com opo rw no garante que o
usurio que fizer o mapeamento ter permisso de escrita, deve-se
atentar para as permisses em si do diretrio a ser compartilhado.
Como regra geral o que vale o conjunto de permisses mais
restritivas.
Abaixo tem-se alguns exemplos. No primeiro, os computadores da rede 192.168.2.0 tero acesso para escrita e leitura ao diretrio /home. No segundo, a mquina 192.168.2.7 poder ler e a
mquina 192.168.1.1 ler e escrever sendo que seu usurio root ser
replicado, tendo permisses de root no servidor. No terceiro, a
mquina www.sj.ifsc.edu.br ter acesso de leitura e escrita ao
dito diretrio.
\slash home 192.168.2.0/24(rw)
\slash usr 192.168.2.7(ro) 192.168.2.1(rw,no_root_squash)
\slash var/www/html www.sj.ifsc.edu.br(rw)

Aps definir-se os compartilhamentos deve-se iniciar o servio


com a sequncia de comandos:
140

Servidor NFS

service portmap restart


service nfs-server start
exportfs -a

17.3

Testes

Para verificar os compartilhamentos atuais em um determinado servidor usa-se o comando:


showmount exports ip_do_servidor
Pode-se fazer isto a partir da prpria mquina. O comando
retornar a listagem de todos os diretrios compartilhados.
Agora pode-se montar o diretrio compartilhado no cliente.
Para fins de testes o cliente pode ser a prpria mquina. Sendo assim, cria-se um diretrio local, onde ocorrer a montagem, com o
comando:
mkdir nfs
e monta-se o compartilhamento neste diretrio com o
comando:
mount 192.168.2.X:/usr nfs
Pode-se conferir listando o contedo do diretrio nfs,
copiando arquivos de/para o dito diretrio, com o comando df etc.

141

Captulo 18

Servidor LDAP
18.1

Introduo

O LDAP Lightweight Directory Access Protocol um protocolo


leve para acessar servios de diretrio.
Diretrios so bancos de dados que armazenam informaes
mas com diferenas importantes em relao ao modelo tradicional.
So hierrquicos, utilizando uma estrutura em rvore ao invs de
tabelas. Otimizados para leitura. Permitem distribuio de dados
entre servidores, j que ramos podem estar localizados remotamente.
Possuem um forte padronizao tanto na nomenclatura quando no
tipo de dado.
Em redes locais, Figura 18.1, recomenda-se o uso do LDAP
para centralizar bases de usurios e grupos, j que a maioria dos servidores atuais j disponibiliza integrao com esta base, como por exemplo o Samba, Postfix, Apache, Helpdesks etc. Isto ir facilitar, e
muito, o gerenciamento da rede j que toda a base de usurios ser
nica, no ocorrendo problemas de inconsistncia de senhas, por exemplo. Cabe salientar que no necessariamente deve-se ter um servidor exclusivo para o LDAP, pode-se coloc-lo junto com o Samba por
exemplo.
O schema um conjunto de definies que regem o armazena-

Odilson Tadeu Valle

Figura 18.1: Interligao LDAP e outros servios

mento de informaes no servio de diretrio. Os schemas definem


as classes de objetos, atributos, regras de ordenao e ndices para
atributos e heranas de classes de objetos.
A rvore de diretrios pode ser organizada baseando-se nos
domnios de nomes, DNS, que uma das formas mais
populares atualmente.
Por exemplo:
redes.edu.br
dc=redes,dc=edu,dc=br (dc, domain component).

18.2

Instalao e congurao

Para instalar o OpenLDAP1 deve-se usar o comando:


urpmi openldap-server
Editar o arquivo /etc/openldap/slapd.conf trocar todas as
ocorrncias de dc=example,dc=com por dc=redes,dc=edu,dc=br
1

144

http://www.openldap.org/

Servidor LDAP

e modificar o parmetro rootpw SSHARUHmz+yqoZrZzfNCN5ewu/


Ol77, onde a senha criptografada (segundo campo) obtida do resultado da execuo do comando shell slappasswd -c crypt, que
ser o equivalente criptografado da senha fornecida.
Editar o arquivo /etc/openldap/ldap.conf e modificar os
seguintes parmetros:

BASE
HOST
URI

dc=redes, dc=edu, dc=br


localhost
ldap://localhost

Aps as configuraes iniciais necessrio definir os esquemas


(schemas) e em seguida popular o banco de dados. Para estas tarefas recomenda-se o uso das ferramentas do pacote smbldap-tools,
que, alm do schema pr-definido, permite integrao total com o
Samba, que deve estar previamente instalado e configurado, ver Captulo 16. Inicialmente deve-se instalar o pacote com o comando:
urpmi smbldap-tools
Iniciam-se os servios com os comandos:
service smb (re)start
service ldap (re)start
Aps a instalao deve-se gerar os schemas por meio de um
script j desenvolvido que o configure.pl. Esta ferramenta deve
ser executada com o Samba e OpenLdap pr-configurados e rodando.
Digite o comando:
/usr/share/doc/smbldap-tools/configure.pl
Em seguida sero requisitados uma srie de parmetros, na
maioria dos casos basta teclar Enter, para a configurao padro. Na
145

Odilson Tadeu Valle

Listagem 18.1 apresentada a sequncia de perguntas que este script


faz para gerar os arquivos especficos. As linhas iniciais da execuo
deste script foram propositalmente suprimidas, j que apresentam somente informaes sobre o mesmo. Entre as linhas 3 e 17 so questionadas as configuraes do Samba, veja que o prprio script faz
uma leitura do arquivo /etc/samba/smb.conf e retira automaticamente os parmetros do mesmo. Na linha 18 requisitado o sufixo
da base LDAP, deve-se fornecer de acordo com o pr-configurado
nos arquivos, para o exemplo: dc=redes,dc=edu,dc=br. Nas linhas 29, 30, 34 e 35 requisitado o nome do usurio administrador
da base e sua senha, devendo esta ser a mesma inserida no arquivo
slapd.conf. Nas linhas 52 e 53 informado que os arquivos foram
escritos e os mesmos podem ser futuramente consultados ou alterados.
1

Lets start configuring the smbldaptools scripts ...

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

146

. workgroup name: name of the domain Samba act as a PDC


workgroup name [redes] >
. netbios name: netbios name of the samba controler
netbios name [m1] >
. logon drive : local path to which the home directory will be connected
( for NT Workstations) . Ex: H:
logon drive [] >
. logon home: home directory location ( for Win95/98 or NT Workstation).
(use %U as username) Ex :\\ redes\%U
logon home (press the " . " character if you dont want homeDirectory)
[\\ redes\%U] >
. logon path : directory where roaming profiles are stored . Ex :\\ redes \
profiles \%U
logon path ( press the " . " character if you dont want roaming profile )
[\\ redes \ profiles \%U] >
. home directory prefix (use %U as username) [/home/%U] >
. default users homeDirectory mode [700] >
. default user netlogon script (use %U as username) [] >
default password validation time (time in days) [45] >
. ldap suffix [] > dc=redes,dc=edu,dc=br
. ldap group suffix [] > ou=Group
. ldap user suffix [] > ou=People
. ldap machine suffix [] > ou=Computer
. Idmap suffix [ou=Idmap] >
. sambaUnixIdPooldn: object where you want to store the next uidNumber

Servidor LDAP

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

and gidNumber available for new users and groups


sambaUnixIdPooldn object ( relative to ${ suffix }) [sambaDomainName=
redes] >
. ldap master server : IP adress or DNS name of the master ( writable )
ldap server
ldap master server [127.0.0.1] >
. ldap master port [389] >
. ldap master bind dn [] > cn=Manager,dc=exemplo,dc=com,dc=br
. ldap master bind password [] > insira_a_senha
. ldap slave server : IP adress or DNS name of the slave ldap server : can
also be the master one
ldap slave server [127.0.0.1] >
. ldap slave port [389] >
. ldap slave bind dn [] > cn=Manager,dc=exemplo,dc=com,dc=br
. ldap slave bind password [] > insira_a_senha
. ldap tls support (1/0) [0] >
. SID for domain redes : SID of the domain (can be obtained with net
getlocalsid redes )
SID for domain redes [S
152110666591211851358201519059970] >
. unix password encryption : encryption used for unix passwords
unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] >
. default user gidNumber [513] >
. default computer gidNumber [515] >
. default login shell [/ bin /bash] >
. default skeleton directory [/ etc / skel ] >
. default domain name to append to mail adress [] >
=====================
Use of uninitialized value in concatenation (.) or string at / usr / share /
doc/smbldaptools0.9.2/configure . pl line 314, <STDIN> line 33.
backup old configuration files :
/ etc /smbldaptools/smbldap.conf>/etc/smbldaptools/smbldap.conf.old
/ etc /smbldaptools/smbldap_bind.conf>/etc/smbldaptools/smbldap_bind.
conf.old
writing new configuration file :
/ etc /smbldaptools/smbldap.conf done.
/ etc /smbldaptools/smbldap_bind.conf done.

Listing 18.1: Script para gerao de schemas  configure.pl

Em seguida deve-se popular o banco de dados, baseado nos


schemas gerados com a execuo do script anterior. Isto pode ser
feito com o comando:
147

Odilson Tadeu Valle

smbldap-populate
Este comando gerar uma sada informando todas as entradas
(escritas) que sero feitas no banco de dados. Ao final ser requisitada
a senha para a escrita no mesmo.
A Listagem 18.2 representa parte do diretrio gerado. A representao feita por meio do formato texto chamado LDIF LDAP
Data Interchange Format. O contedo do diretrio pode ser consultado a qualquer momento via o comando slapcat.
1
2
3
4
5
6
7
8
9
10
11
12

dn: dc=redes,dc=edu,dc=br
objectClass : dcObject
objectClass : organization
o: redes
dc: redes
structuralObjectClass : organization
entryUUID: b42dbf2350024e97bd3c6b328f5c5243
creatorsName: cn=Manager,dc=redes,dc=edu,dc=br
createTimestamp: 20091127130738Z
entryCSN: 20091127130738.161251Z#000000#000#000000
modifiersName: cn=Manager,dc=redes,dc=edu,dc=br
modifyTimestamp: 20091127130738Z

13
14
15
16
17
18
19
20
21
22
23
24

dn: ou=People,dc=redes,dc=edu,dc=br
objectClass : top
objectClass : organizationalUnit
ou: People
structuralObjectClass : organizationalUnit
entryUUID: 33590f4142f24fd3ad416d6875066645
creatorsName: cn=Manager,dc=redes,dc=edu,dc=br
createTimestamp: 20091127130738Z
entryCSN: 20091127130738.188550Z#000000#000#000000
modifiersName: cn=Manager,dc=redes,dc=edu,dc=br
modifyTimestamp: 20091127130738Z

25
26
27
28
29
30
31
32

148

dn: uid=usuario ,ou=People,dc=redes,dc=edu,dc=br


objectClass : top
objectClass : person
objectClass : organizationalPerson
objectClass : inetOrgPerson
objectClass : posixAccount
objectClass : shadowAccount

Servidor LDAP

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

uid : usuario
uidNumber: 1000
gidNumber: 513
homeDirectory: /home/usuario
loginShell : / bin /bash
gecos: System User
structuralObjectClass : inetOrgPerson
entryUUID: 0edf9c10714945659e9b77d488b20acd
creatorsName: cn=Manager,dc=redes,dc=edu,dc=br
createTimestamp: 20091127131021Z
userPassword :: e1NTF9T1NsTU11aXVqdEVyKzRoV25Cd2VqUTE=
shadowLastChange: 14575
shadowMax: 45
cn :: VXN1w4PCoXJpbyBUZXN0ZSBMREFQ
sn: LDAP
givenName:: VXN1w4PCoXJpbyBUZXN0ZQ==
entryCSN: 20091127131441.310265Z#000000#000#000000
modifiersName: cn=Manager,dc=redes,dc=edu,dc=br
modifyTimestamp: 20091127131441Z

Listing 18.2: Exemplo de um diretrio

Agora pode-se acrescentar ou modificar usurios com os comandos: smbldap-useradd, smbldap-usermod, smbldap-passwd
etc. As flags para os comandos so praticamente as mesmas dos comandos similares para criao e modificao de contas de usurios no
Linux, ver Captulo 6. Entre as linhas 26 e 51, da Listagem 18.2, est
representado um usurio que foi criado por meio destes comandos.
Alm do j exposto o OpenLDAP, juntamente com o protocolo
LDAP, algumas ferramentas para consulta e manuteno:

slapadd Para acrescentar novas entradas nos schemas.


ldapmodify Para modificar entradas j existentes nos schemas.
ldapsearch Para buscas pelo diretrio.
O Backend BDB possui algumas ferramentas para a
manuteno do diretrio propriamente dito, as principais so:

db_archive Permite a manuteno dos arquivos de registros de


transaes do diretrio.
149

Odilson Tadeu Valle

db_recover Permite a recuperao da base de dados no caso da


ocorrncia de algum problema. A recuperao se d por meio
dos arquivos de registros, normalmente localizados em /var/lib/
ldap.

db_stat Fornece estatsticas sobre o uso da base de dados que


podem levar, por exemplo, a otimizaes.
Para gerenciamento da base de dados, insero e modificao
de usurios, grupos etc. existem vrias ferramentas, uma delas a
j citada smbldap-tools, mas existem tambm as ferramentas com
suporte grfico. Uma delas a phpLDAPadmin2 , que funciona por
meio de um navegador qualquer, na Figura 18.2 tem-se um exemplo desta interface, onde possvel se observar as opes de esquemas, importao, exportao, insero etc. Outra LDAP Admin para
Windows, um aplicativo de deve ser instalado neste tipo de sistema
operacional.

Figura 18.2: Exemplo de uso do phpLDAPadmin

Agora a base est pronta para consultas. Pode-se ento configurar as mquinas, sejam clientes ou outros servidores de rede, para
2

150

http://phpldapadmin.sourceforge.net/

Servidor LDAP

fazer consultas mesma.

18.2.1 Para congurar um cliente Linux


Para o Linux a configurao para consultas base feita primeiramente instalando os pacotes necessrios para o cliente LDAP, com o
seguinte comando:
urpmi nss_ldap openldap-client
pam_ccreds nss_updatedb

pam_ldap

autofs

Para o caso especfico do Mandriva existe a opo de


configurao com o programa drakauth (outras distribuies
tem solues similares), seguindo os passos recomendados
pelo mesmo. As Figuras 18.3 e 18.4 mostram o procedimento
necessrio para configurar um cliente. Este programa configura
devidamente
os
arquivos
/etc/openldap/ldap.conf,
/etc/ldap.conf, /etc/nsswitch.conf, /etc/ldap.secret e
/etc/pam.d/system-auth para que seja possvel a autenticao de
usurios e consultas a base remota.

Figura 18.3: Janela 1 de congurao do DrakAuth


151

Odilson Tadeu Valle

Figura 18.4: Janela 2 de congurao do DrakAuth

18.3

Testes

O primeiro teste fazer uma consulta ao banco de usurios. Aps


a configurao do cliente tem-se todos os usurios locais mais os do
servidor LDAP. Para a consulta use o comando:
getent passwd
Em seguida pode-se logar com um usurio devidamente
cadastrado na base remota. No primeiro login deste usurio, ser
criado seu diretrio pessoal (home), no restante o comportamento
ser exatamente o mesmo de um usurio local.

152

Captulo 19

Servidor DHCP
19.1

Introduo

Conforme visto no Captulo 12, para funcionamento em rede toda


mquina necessita de alguns parmetros mnimos em sua interface
de rede. Em pequenas redes este trabalho pode ser feito manualmente, mquina mquina, mas em uma rede grande, com centenas
de mquinas, esta tarefa de configurao torna-se trabalhosa.
Para facilitar a vida do administrador foi criado um mecanismo
de configurao automtica das interfaces de rede de mquinas em
uma rede TCP/IP: o DHCP (Dynamic Host Configuration Protocol).
Dentre os parmetros que podem ser passados mquina
cliente por DHCP esto: endereo IP, mscara de sub-rede, roteador
padro, servidor(es) DNS, nome de host e/ou de domnio, servidores
e domnio NIS, servidores WINS, servidores NTP, imagens de boot
para terminais burros etc.

Odilson Tadeu Valle

19.2

O protocolo DHCP

O protocolo DHCP1 permite a configurao das interfaces de rede


seguindo uma sequncia de negociao, com trocas de mensagens
com parmetros da camada 2 e da camada 3, da pilha de protocolos
TCP/IP. A seguir esto detalhadas estas trocas de mensagens.

DHCP Discover Quando uma mquina ligada, ela deve ter


um servio (daemon) cliente do DHCP configurado, para
localizar o(s) servidor(s) DHCP. Este cliente DHCP envia um
datagrama UDP com destino porta 67 chamado DHCP
Discover. Este datagrama broadcast tem o endereo IP
de destino 255.255.255.255 e mac address de destino
ff:ff:ff:ff:ff:ff, ver Figura 19.1. Todas as mquinas da
sub-rede local recebero tal datagrama e somente os
servidores DHCP respondero ao mesmo.

Figura 19.1: DHCP Discover

DHCP Oer Os servidores, ao receber o referido datagrama


em sua interface de rede, respondero ao solicitante com um
datagrama destinado ao endereo mac deste, com endereo IP
255.255.255.255 (broadcast). O datagrama de resposta chamase DHCP Offer. Este datagrama conter todos os parmetros
1

154

http://sites.google.com/site/marciokatan/dhcp-mandriva

Servidor DHCP

necessrios para a configurao da interface de rede do solicitante, ver Figura 19.2. O servidor armazena (reserva) o nmero
IP passado para evitar possveis conflitos.
Servidor
DHCP
192.168.2.1
aa:bb:cc:dd:ee:ff

DHCP Offer

00:01:02:03:04:05

Origem
192.168.2.1
aa:bb:cc:dd:ee:ff

DHCP Offer

Destino
?.?.?.?
00:01:02:03:04:05

Proposta: 192.168.2.44

Servidor
DHCP
192.168.2.100
00:aa:11:bb:22:cc

....

Origem
192.168.2.100
00:aa:11:bb:22:cc

Destino
?.?.?.?
00:01:02:03:04:05

Proposta: 192.168.2.144

....

Figura 19.2: DHCP Oer

DHCP Request O cliente ao receber o datagrama do servidor,


decide se aceita ou no a configurao oferecida pois pode receber mais de uma oferta, como o caso representado nas figuras. Em caso positivo, retorna um datagrama, j com seu
nmero IP, comunicando ao servidor que aceitou sua oferta.
Este datagrama chama-se DHCP Request, ver Figura 19.3.
Servidor
DHCP
192.168.2.1
aa:bb:cc:dd:ee:ff

Servidor
DHCP
192.168.2.100
00:aa:11:bb:22:cc

DHCP Request
00:01:02:03:04:05
192.168.2.44

Origem
Destino
192.168.2.1
192.168.2.44
00:01:02:03:04:05 aa:bb:cc:dd:ee:ff

Figura 19.3: DHCP Request

DHCP Ack Para finalizar a conversao entre cliente e


155

Odilson Tadeu Valle

servidor DHCP, este finaliza (efetiva) o aluguel (lease) do


endereo do cliente enviando quele, um datagrama DHCP
Ack, ver Figura 19.4. Armazena em seu arquivo de cache que
o nmero IP passado est alugado, com parmetros de tempo
de aluguel etc. O servidor que no recebeu o DHCP Request,
ter seu temporizador com tempo expirado e liberar o
endereo previamente disposto.
Servidor
DHCP
192.168.2.1
aa:bb:cc:dd:ee:ff

Servidor
DHCP
192.168.2.100
00:aa:11:bb:22:cc

DHCP Ack
00:01:02:03:04:05
192.168.2.44

Figura 19.4: DHCP Ack

19.3

Instalao e congurao

Para instalar o servidor DHCP deve-se executar o seguinte comando:


urpmi dhcp-server
Edita-se o arquivo /etc/dhcpd.conf de acordo com o modelo apresentado na Listagem 19.1. Boa parte das opes so auto
explicativas. Os parmetros das linhas 1 e 2 so parmetros globais e
servem tanto para a primeira como para a segunda sub-rede declarada.
Se um determinado parmetro for colocado dentro do escopo de uma
sub-rede e tambm como parmetro global o que valer o parmetro
interno, o global s valer para os escopos onde os mesmos no esto
explicitamente definidos. Deve-se atentar para o fato que o servidor
156

Servidor DHCP

DHCP atende somente rede(s) (s) qual(is) pertence, portanto a subrede declarada deve ser compatvel, pertencer mesma rede, da qual
sua(s) interface(s) pertena(m).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

ddnsupdatestyle none;
option domainnameservers m1.redes.edu.br;
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.1;
option subnetmask 255.255.255.0;
option domainname "redes.edu.br";
range dynamicbootp 192.168.2.30 192.168.2.60;
range dynamicbootp 192.168.2.91 192.168.2.99;
default leasetime 21600;
maxleasetime 43200;
host novo {
hardware ethernet 12:34:56:78: AB:CD;
fixed address 192.168.2.88;
}
}
subnet 192.168.3.0 netmask 255.255.255.0 {
option routers 192.168.3.1;
option subnetmask 255.255.255.0;
option domainname "redes3.edu.br";
range dynamicbootp 192.168.3.122 192.168.3.144;
default leasetime 21600;
maxleasetime 43200;
}

Listing 19.1: Arquivo de Congurao do DHCP

A opo da linha 1 serve para indicar se o servidor DNS ser


atualizado quando um aluguel de ip for solicitado. Neste caso deve-se
ter tanto o servidor DNS como o DHCP conversando para atualizar
dinamicamente os arquivos do DNS. As linhas 7 e 8 definem a faixa
de IPs que sero alugados para a respectiva sub-rede. A linha 9 define
o tempo padro de aluguel. Aps este tempo o cliente tenta alugar
novamente o mesmo ou um novo endereo. A linha 10 define o tempo
mximo de aluguel. Quando este tempo for excedido a interface do
cliente ser desconfigurada e o mesmo no poder mais acessar a
rede. Entre as linhas 11 e 14 est definido uma mquina que receber
o nome novo, e sempre ter seu nmero IP igual a 192.168.2.88, j
que isto est diretamente atrelado ao seu mac adress. Entre as linhas
157

Odilson Tadeu Valle

16 e 23 esto definidos os parmetros que sero repassados a outra


sub-rede (192.168.3.0).
Aps a configurao do arquivo (re)inicia-se o servidor com o
comando:
service dhcpd restart

19.4

Testes

Para fazer um teste pode-se usar o comando dhclient eth0 numa


mquina qualquer. Se o servidor estiver corretamente configurado
este alugar algum IP e demais parmetros de rede para esta mquina.
Todas as trocas de mensagem para negociao do aluguel de IP podem ser observadas no arquivo de log /var/log/messages, ou capturadas com algum software de captura de pacotes. Pode-se tambm conferir os endereos alugados no arquivo /var/lib/dhcp/
dhcpd.leases.

158

Captulo 20

Servidor FTP
20.1

Introduo

FTP File Transfer Protocol uma forma bastante rpida e verstil


para transferncia de arquivos entre mquinas remotas, sendo uma
das mais usadas na Internet. o padro da pilha TCP/IP para transferir arquivos, um protocolo genrico independente de hardware e
do sistema operacional (A), levando em conta restries de acesso e
propriedades dos arquivos.
O servio FTP dos poucos que abre duas conexes TCP entre
o cliente e o servidor: uma para controle, porta 21, e outra para transferncia de dados, porta 20. Isto conhecido como controle fora de
banda.

20.2

Instalao e congurao

Para instalar o servidor FTP deve-se primeiramente escolher um dos


servidores disponveis na distribuio dentre Proftpd, Pure-ftpd1 ,
Vsftpd2 e Wu-ftpd3 . Um dos mais usados na distribuio Mandriva
1

http://www.proftpd.org/
http://vsftpd.beasts.org/
3
http://www.wu-ftpd.org/
2

Odilson Tadeu Valle

o Proftpd. Cabe salientar que todos so similares na funcionalidade e configurao. Para instal-lo basta executar o comando:
urpmi proftpd
O Proftpd vem absolutamente pronto para uso, no sendo
necessria nenhuma configurao preliminar. Mas ao desejar-se alguma configurao especial deve-se editar o arquivo /etc/
proftpd.conf. Um dos parmetros editveis permite uma dose extra de segurana que enjaular a conexo do usurio, isto significa
dizer que aps a conexo o usurio no poder subir na rvore de diretrios, ele ficar restrito ao seu diretrio e seus subdiretrios. Para
isto deve-se descomentar a opo DefaultRoot .
Agora deve-se iniciar o servio com o comando:
service proftpd start

20.3

Testes

Para testar pode-se usar a prpria mquina como cliente. Para isto
basta executar o comando:
ftp 192.168.2.X
E surgir um prompt com algo parecido com:

Connected to 192.168.2.1.
220 (vsFTPd 2.0.2)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.2.1:odilson):
160

Servidor FTP

Ento deve-se informar o usurio. Em seguida ser requisitada


a senha e aps esta conecta-se ao servidor remoto e pode-se usar praticamente todos os comandos normais do shell para visualizar, criar,
modificar ou apagar arquivos e diretrios. Cabe salientar que todos os
comandos podem ser executados no servidor remoto ou na mquina
local, neste caso iniciando o comando com !. Para transferncias de
arquivos usa-se o comando put nome_do_arquivo, para enviar da
mquina local ao servidor, e get nome_do_arquivo, no caso contrrio. Pode-se a qualquer momento visualizar as opes de comandos disponveis digitando-se help. Para sair da aplicao digita-se o
comando bye.

161

Captulo 21

Servidor SSH
21.1

Introduo

Em informtica, o Secure Shell1 ou SSH , simultaneamente, um programa de computador e um protocolo de rede que permite a conexo
segura com outro computador na rede, de forma a executar comandos de uma mquina remota. Possui as mesmas funcionalidades do
TELNET, com a vantagem da conexo entre o cliente e o servidor ser
criptografada.
O SSH faz parte da sute de protocolos TCP/IP que torna segura a administrao remota de um servidor Linux/Unix.
O scp (Secure Copy) uma maneira segura de fazer cpias de
arquivos e diretrios usando o protocolo SSH.

21.2

Instalao e congurao

Para instalar o servidor OpenSSH2 , uma das implementaes do


servio SSH, deve-se executar o seguinte comando:
1
2

http://pt.wikipedia.org/wiki/SSH
http://www.openssh.com/

Odilson Tadeu Valle

urpmi openssh-server ou urpmi ssh


Por padro o servidor OpenSSH j vem completamente configurado, no sendo necessrio nenhuma ajuste de configurao para as
operaes padro. Mas, se pretender fazer alguns ajustes deve-se editar o arquivo /etc/ssh/sshd_config. A recomendao para este
arquivo descomentar somente o que pretende-se mudar do padro.
Se for descomentada uma linha e deixada no valor padro podem
ocorrem instabilidades no servio. Os principais parmetros que podem ser modificados ou acrescentados so:
PermitRootLogin no O usurio root no poder abrir um
conexo ssh diretamente.
Por questes de segurana
reco-menda-se deixar no, logar como usurio normal e em
seguida dar o comando su.
X11Forwarding yes Se no servidor e cliente existirem as bibliotecas grficas ativas o usurio poder executar um programa
em modo grfico remotamente, sendo que o processo estar rodando no servidor e a janela ser exibida no terminal do cliente.
AllowUsers root user1 user2 Se esta diretiva existir somente os
usurios listados, root, user1 e user2, no caso, podero abrir
conexo ssh.
AllowGroups grupo Idem anterior para grupos.
DenyUsers root user1 user2 O posto do AllowUsers.
DenyGroups grupo Idem anterior para grupos.
UsePAM yes Habilita, por exemplo, o login em bases LDAP.
Feitas as configuraes pode-se (re)iniciar o servio com o comando:
service sshd (re)start
164

Servidor SSH

21.3

Testes

Para testar pode-se usar a prpria mquina como cliente. Para isto
basta executar o comando:
ssh usuario@192.168.2.X
Com isto abre-se uma conexo segura com o servidor,
podendo-se executar todos os comandos, como se logados
localmente.
Pode-se tambm fazer cpias de arquivos com o scp. Por exemplo:
scp -r usuario@192.168.2.1:diretorio ./
Com este comando copia-se recursivamente o diretrio
diretorio do servidor 192.168.2.1 para o diretrio corrente local.

165

Captulo 22

Servidor Proxy/Cache
22.1

Introduo

O servidor Proxy/Cache1 como uma espcie de cache


comunitrio, onde toda pgina web que um usurio acessar, ou
arquivo baixado, ficar armazenada na cache do servidor, Figura
22.1. Quando um usurio acessa determinado contedo, seu
navegador vai fazer tal solicitao ao servidor Proxy/Cache, este
consulta sua base e verifica a existncia ou no de tal contedo em
sua cache, caso esteja disponvel a entrega imediatamente, caso no,
faz a consulta Internet, requisita o contedo, armazena em sua
cache e ento entrega ao requisitante. No caso de uma nova consulta
sobre o mesmo objeto, o servidor acessar de sua base e a entregar
imediatamente ao requisitante.
Alm disto o servidor pode fazer o controle de contedo acessado, barrando ou liberando o acesso a certos stios, por exemplo.
Este controle feito por meio de listas de controle de acesso
ACLs que, em conjunto com diretivas de liberao ou bloqueio,
permitem criar arranjos eficientes no controle de acesso das mquinas
da rede local.
1

http://www.fundao.wiki.br/articles.asp?cod=199

Odilson Tadeu Valle

Requisio

Servidor
Proxy/Cache

Requisio
Requisio

Cliente 1

Cliente 2

Figura 22.1: Funcionamento do Servidor Proxy/Cache

Um dos servidores Proxy/Cache mais conhecidos e mais utilizado o Squid2 .

22.2

Instalao e congurao

Para instalar o Squid basta digitar o comando:


urpmi squid
Em seguida iniciar o servio com o comando:
service squid start
O Servidor Squid j vem com uma configurao padro e
pronto para ser utilizado. Caso deseje-se alguma configurao
2

168

http://www.squid-cache.org/

Servidor Proxy/Cache

especial deve-se editar o arquivo /etc/squid/squid.conf, onde


as principais diretivas so:
http_port 3128 Porta qual o Squid atender. Aqui cabe uma observao, como os servidores Web atendem na porta 80, devese fazer uso de um firewall, ver Captulos 23 e 24, para redirecionar as requisies desta porta, para a porta de atendimento
do Squid.
cache_dir ufs /var/spool/squid 100 16 256 Define o diretrio de
cache do Squid e seus parmetros. O sistema de arquivos
usado pelo Squid ser do tipo ufs, com armazenamento em
/var/spool/squid, ocupando no mximo 100 MB, com 16
diretrios e cada um deles com 256 subdiretrios. Obs.:
recomenda-se aumentar o tamanho total para entender as
necessidades do sistema em uso e mais nenhum outro
parmetro.
cache_mem 8 MB Tamanho da cache em RAM. Se a mquina for
exclusiva para o Squid configura-se para ocupar a metade da
RAM real.
maximum_object_size 4096 KB Tamanho mximo de um nico
objeto a ser armazenado na cache. Recomenda-se 16384 (16
MB). Isto interessante quando faz-se downloads de arquivos
etc. Assim objetos maiores tambm sero armazenados.
visible_hostname m1.redes.edu.br Nome de mquina do servidor.
As mensagens de erro que o Squid envia aos usurios, por exemplo, informando que determinado stio tem acesso proibido, podem ser personalizadas. Existem vrias, em vrias lnguas, j prdefinidas, que esto localizadas no diretrio /etc/squid/errors/
.
169

Odilson Tadeu Valle

22.3

Testes

Para testes simples configura-se o navegador para usar o prprio


servidor Squid. No Firefox, por exemplo, clique em Editar,
Preferncias, Avanado, aba Rede, Configuraes, diminua a
cache do navegador para 0 MB, ajuste para Configurao manual
de proxy e acrescente em HTTP: localhost, Porta: 3128 e clique em
Usar este proxy para todos os protocolos, Figura 22.2.

Figura 22.2: Congurando o Firefox para acessar o Squid

Em seguida acessar um stio qualquer baixar algum


arquivo com tamanho menor que o configurado na diretiva
maximum_object_size. Medir o tempo. Apagar o arquivo e baixar
novamente, se tudo estiver correto no segundo acesso o tempo ser
praticamente nulo.
Os arquivos e pginas acessados so armazenados no diretrio
/var/spool/squid, num formato legvel somente ao Squid, mas
pode-se encontrar os objetos, pelo menos no incio da formao da
cache, pelo seu tamanho aproximado.
170

Servidor Proxy/Cache

22.4

Listas de controle de acesso

Com o Squid possvel o bloqueio ou liberao de acesso a determinados stios, redes, em determinados dias e horrios etc.
Para operacionalizar esta funo primeiramente deve-se criar
as chamadas ACLs (Access Control List) que so simplesmente listas
de stios, nmeros IPs ou classes de rede.
Aps a criao destas listas deve-se criar as regras de acesso
ou bloqueio que referenciaro as listas criadas.
A anlise das regras, por parte do Squid, sequencial, ou seja,
o Squid vai lendo as regras uma a uma e, assim que encontrar uma
regra que enquadre a mensagem, para imediatamente a anlise, e libera ou bloqueia o acesso, dependendo da regra. Portanto, nas regras
pode-se ter duas polticas diversas: libera o acesso a alguns contedos
e probe todo o resto ou probe o acesso a alguns contedos e libera o
restante. A adoo de uma ou outra depende da poltica pretendida.
A regra geral de formao de uma ACL a seguinte:

acl nome tipo (string|"nome_do_arquivo")


onde o parmetro nome pode ser inventado a vontade. O tipo
define origem, destino, padro de texto, tempo etc. O string define
nmeros de IPs ou classes de rede. O nome_do_arquivo deve conter
o caminho e o nome do arquivo que definir uma coleo de nomes
de mquinas ou nmeros IPs, palavras etc.

22.4.1 Exemplos de ACLs e usos


Liberando o acesso internet uma sub-rede:

acl rede_local src 192.168.5.0/24


http_access allow rede_local
Bloqueando o acesso internet, a um nico computador ou
uma rede:
171

Odilson Tadeu Valle

acl rede src 192.168.2.7/32 192.168.9.0/24


http_access deny rede
Bloqueando acesso a stios indesejados. Neste caso, deve-se
criar o arquivo /etc/squid/listas/proibidos e inserir os sites
indesejados, um por linha.
acl lista_sites dstdomain "/etc/squid/listas/proibidos"
http_access deny lista_sites

Bloqueando ou liberando o acesso a stios com


palavras chaves.
Neste caso deve-se criar o arquivo
/etc/squid/listas/palavras e inserir as palavras indesejadas,
uma por linha. Devido a flag -i a busca ser insensvel
capitalizao.
acl proibir_pal url_regex -i "/etc/squid/listas/palavras"
http_access deny proibir_pal

Restringindo o horrio de acesso. Neste caso a rede local somente poder navegar nos dias teis da semana das 8 s 18h. Obs.:
S=domingo, M=segunda, T=tera, W=quarta, H=quinta, F=sexta e
A=sbado.

acl horario time MTWHF 08:00-18:00


http_access allow rede_local horario
http_access deny rede_local
Para um caso um pouco mais completo pode-se montar a sequncia apresentada na Listagem 22.1. Boa parte das ACLs apresentadas j foram descritas. Entre as linhas 9 e 19 so definidas as portas
caracterizadas como seguras, isto j vem pr-configurado no Squid.
Entre as linhas 21 e 22 definido que pode-se gerenciar o Squid somente da mquina local. Nas linhas 23 e 24 definido que o acesso
ser negado exceto para portas seguras (Safe_ports e SSL_ports).
172

Servidor Proxy/Cache

Na linha 25 liberado o acesso para a mquina local. Entre as linhas 26 e 29 tem-se o seguinte, caso o acesso seja lista_sitios
e palavras o mesmo ser bloqueado, e ser liberado somente nos
horrios previsto em horario. Por ltimo, linha 29, bloqueado
qualquer outro acesso.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

acl all src 0.0.0.0/0.0.0.0


acl manager proto cache_object
acl rede_local src 192.168.2.0/24
acl lista_sitios dstdomain " / etc / squid / listas / sitios "
acl palavras url_regex i " / etc / squid / listas / palavras "
acl horario time MTWHF 08:0018:00
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80
# http
acl Safe_ports port 21
# ftp
acl Safe_ports port 443 563 # https , snews
acl Safe_ports port 70
# gopher
acl Safe_ports port 210
# wais
acl Safe_ports port 102565535 # unregistered ports
acl Safe_ports port 280
# http mgmt
acl Safe_ports port 488
# gsshttp
acl Safe_ports port 591
# filemaker
acl Safe_ports port 777
# multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny ! Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny lista_sitios
http_access deny palavras
http_access allow rede_local horario
http_access deny all

Listing 22.1: Exemplo de ACLs no Squid

173

Captulo 23

Firewall com iptables


23.1

Introduo

O Firewall um programa que tem como objetivo proteger a mquina


ou rede local contra acessos e trfegos indesejados, proteger servios
que estejam rodando na mquina e bloquear a passagem de pacotes
que no se deseja receber. No kernel do Linux 2.4, foi introduzido o
firewall iptables (tambm chamado de netfilter1 ) que substitui
o ipchains dos kernels da srie 2.2 e anteriores. Este novo firewall tem como vantagem ser muito estvel, confivel, permitir muita
flexibilidade na programao de regras, mais opes disponveis para
controle de trfego etc.
O iptables um firewall a nvel de pacotes e funciona
baseado no endereo/porta de origem/destino, prioridade etc.
Resumidamente pode-se dizer que o mesmo pode ler e manipular
todos os campos do cabealho IP camada de rede. Com esta
manipulao possvel liberar ou bloquear a passagem de cada
datagrama individualmente, aps a respectiva anlise. Ele tambm
pode ser usado para modificar e monitorar o trfego da rede, fazer
NAT (masquerading, source nat, destination nat), redirecionamento
de pacotes, marcao de pacotes, modificar a prioridade de
1

http://www.netlter.org/

Odilson Tadeu Valle

pacotes que chegam/saem do seu sistema, contagem de bytes,


fazer balanceamento de carga entre mquinas, criar protees
anti-spoofing, contra syn flood, DoS etc.
O iptables ainda tem a vantagem de ser modularizvel,
funes podem ser adicionadas ao firewall ampliando as
possibilidades oferecidas.
Cabe salientar que um firewall no funciona de forma
automtica, necessrio pelo menos conhecimentos bsicos de redes
TCP/IP, roteamento e portas para criar as regras que faro a
segurana de sistema.
Principais caractersticas do firewall iptables
Especificao de endereo/porta de origem/destino.
Suporte a protocolos TCP/UDP/ICMP (incluindo tipos de mensagens icmp).
Suporte a interfaces de origem/destino dos pacotes.
Manipula servios de proxy na rede, ver Captulo 22.
Tratamento de trfego dividido em chains, para melhor
controle do trfego que entra/sai da mquina e trfego
redirecionado.
Permite um nmero ilimitado de regras por chain.
Muito rpido, estvel e seguro.
Possui mecanismos internos para rejeitar automaticamente pacotes duvidosos ou mal formados.
Suporte a especificao de tipo de servio para priorizar o
trfego de determinados tipos de pacotes.
Permite especificar excees s regras.
Suporte a deteco de fragmentos.
176

Firewall com iptables

Permite enviar alertas personalizados ao servio de logs


syslog sobre o trfego aceito/bloqueado.
Permite o redirecionamento de portas.
Permite o mascaramento de pacotes.
Suporte completo ao NAT Network Address Translation.
Contagem de pacotes que atravessaram uma interface/regra.
Limitao de passagem de pacotes no tempo.

23.2

Princpio de funcionamento do

wall

re-

O filtro de pacotes do Linux funciona mediante regras estabelecidas.


No iptables existem 3 tabelas, que devem ser usadas dependendo
do objetivo. As chains (correntes) so uma espcie de roteamento
interno do kernel. Quando um pacote entra no kernel, este verifica o
destino do pacote e decide qual chain ir tratar do pacote. Os tipos
de chains iro depender da tabela em uso no momento.
A tabela filter refere-se s atividades de filtragem propriamente dita no trfego de dados, sem a ocorrncia de NAT. Admite as
chains INPUT, OUTPUT e FORWARD. a tabela padro, quando
no especificada a tabela, a filter ser utilizada.
A tabela nat utilizada quando necessrio a troca de alguma
campo do cabealho IP. Exemplo: passagem de dados de uma rede
privada para a Internet. Admite as chains PREROUTING, OUTPUT
e POSTROUTING.
A tabela mangle (despedaar) usada para marcar pacotes permitindo, por exemplo, o controle de fluxo nas interfaces de entrada e/
ou sada.
177

Odilson Tadeu Valle

23.2.1 Regras iptables


Para cada tabela do iptables, filter, nat e mangle o processamento
da regras sequencial, ou seja, caso o iptables encontre uma regra onde o pacote se enquadre, ele para imediatamente e encaminha
ou descarta o pacote de acordo com a regra. A nica exceo so
os casos de log, onde o que se enquadra regra armazenado e o
processamento das demais regras continua.
A composio das regras (rules) de firewall feita pelo encadeamento de comandos iptables seguindo a sintaxe:
iptables [-t tabela] [opo] [chain] [dados] -j [ao]

Por exemplo, iptables -A FORWARD -d 192.168.2.1 -j


DROP, neste caso a tabela a filter, pois a padro e no precisa ser
explicitada; a opo -A, que significa adicionar; a chain FORWARD;
os dados so -d 192.168.2.1, que significa destinado 192.168.2.1
e a ao DROP, descarte.

23.2.2 Instalando e congurando


Para instalarmos o firewall iptables basta digitarmos o comando:

urpmi iptables

23.2.3 Salvando e recuperando as regras


As regras iptables podero ser salvas com o comando:
iptables-save > /nome/do/diretorio/nome_do_arquivo

A recuperao poder ser feita pelo comando:


iptables-restore < /nome/do/diretorio/nome_do_arquivo
178

Firewall com iptables

23.3

Tabela Filter

Com a tabela filter pode-se construir regras para permisso ou bloqueio de pacotes oriundos de, destinados a, ou de passagem pelo
firewall. As regras devem ser escritas pensando no resultado final
a ser obtido j que sua sequncia define o exato comportamento da
filtragem ou no dos pacotes.
A seguir detalha-se cada um dos campos do comando
iptables, relativo a tabela filter.

23.3.1 Opes
-P Policy. Altera a poltica da chain. A poltica padro de cada
chain ACCEPT. Isso faz com que o firewall inicialmente
aceite qualquer INPUT, OUTPUT ou FORWARD. Para uma
boa segurana, recomenda-se que todas as chains sejam
ajustadas para a poltica DROP e em seguida, libera-se o que
for necessrio com o -A. O -P no aceita REJECT ou LOG.
Exemplos:

iptables -P FORWARD DROP


iptables -P INPUT ACCEPT

-A Append. Adiciona uma nova regra chain. Exemplos:


iptables -A OUTPUT -d 172.20.5.10 -j ACCEPT
iptables -A FORWARD -s 10.0.0.1 -j DROP
iptables -A FORWARD -d www.dominio.com.br -j DROP

-D Delete. Apaga uma regra. Para apagar deve-se escrever a regra


com a mesma sintaxe usada na adio. Exemplos, para apagar
as regras anteriores, usa-se:
iptables -D OUTPUT -d 172.20.5.10 -j ACCEPT
iptables -D FORWARD -s 10.0.0.1 -j DROP
iptables -D FORWARD -d www.dominio.com.br -j DROP
179

Odilson Tadeu Valle

Tambm possvel apagar a regra pelo seu nmero de ordem.


Pode-se utilizar o -L line-numbers para verificar o nmero
de ordem. Verificado esse nmero, basta citar a chain e o
nmero de ordem. No exemplo abaixo apagada a regra de
nmero 4:

iptables -D FORWARD 4

-L List. Lista as regras existentes. Exemplos:


iptables -L
iptables -L FORWARD

-F Flush. Remove todas as regras existentes. No entanto, no


altera a poltica. Exemplos:

iptables -F
iptables -F FORWARD

23.3.2 Chains
Existem 3 chains pr-definidas para a tabela filter: INPUT utilizada quando o destino final a prpria mquina firewall; OUTPUT
pacotes gerado pela mquina firewall com qualquer destino; FORWARD qualquer pacote que atravessa o firewall, oriundo de uma
mquina e direcionado a outra. Figura 23.1. Outras chains podem
ser criadas com o comando iptables -N nome_da_chain.

23.3.3 Dados
Os elementos mais comuns para se gerar dados so os listados as
seguir.

-s Source. Estabelece a origem do pacote. Geralmente uma


combinao do endereo IP com a mscara de rede separados
por uma barra, um nico IP, um nome de mquina etc. Exemplos:
180

Firewall com iptables

Figura 23.1: Cadeias da tabela filter

-s
-s
-s
-s
-s

172.20.0.0/255.255.0.0
172.20.5.10/32
172.20.5.10
www.dominio.com.br
0/0

-d Destination. Estabelece o destino do pacote. A sintaxe a


mesma do -s.

-p Protocol.

Especifica o protocolo a ser filtrado.


O
protocolo IP pode ser especificado pelo seu nmero (vide
/etc/protocols) ou pelo nome. Exemplo:

-p icmp

-i Input interface. Especifica a interface de entrada. As interfaces

existentes podem ser vistas com o comando ifconfig. O -i


no pode ser utilizado com a chain OUTPUT. O sinal + pode
ser utilizado para simbolizar vrias interfaces. Exemplos:
181

Odilson Tadeu Valle

-i ppp0
-i eth+

-o Output interface. Especifica a interface de sada. A sintaxe a

mesma do -i. O -o no pode ser utilizado com a chain INPUT.

! Excluso. Utilizado com -s, -d, -p, -i, -o e outros, para excluir
o argumento. Exemplos:

-s ! 10.0.0.1 ==> Refere-se a qualquer


endereo de entrada, exceto o 10.0.0.1.
-p ! tcp ==> Todos os protocolos, exceto o TCP.

sport Source Port. Especifica a porta de origem. S funciona


com as opes -p udp e -p tcp. Exemplos:

-p tcp --sport 80

dport Destination Port. Especifica a porta de destino. S


funciona com as opes -p udp e -p tcp. Similar a sport.

23.3.4 Aes
As principais aes so:

ACCEPT Permite a passagem do pacote.


DROP Descarta o pacote impedindo sua passagem. No avisa a
origem sobre o ocorrido.

REJECT Igual ao DROP, mas avisa a origem sobre o ocorrido


(envia pacote icmp unreachable).

LOG Cria um log referente regra, em /var/log/messages.


Deve-se usar antes de outras aes, j que esta ao a nica
que permite a continuidade de anlise da regras, por parte do
iptables.
182

Firewall com iptables

23.3.5 Exemplos comentados de regras


Os pacotes oriundos da sub-rede 10.0.0.0/8 e destinados mquina
www.dominio.com.br devero ser descartados.

iptables -A FORWARD -s 10.0.0.0/8


-d www.dominio.com.br -j DROP
Os pacotes oriundos da sub-rede 10.0.0.0/8 e destinados
mquina www.dominio.com.br devero ser descartados. Dever ser
enviado um ICMP avisando origem.

iptables -A FORWARD -s 10.0.0.0/8


-d www.dominio.com.br -j REJECT
Os pacotes destinados mquina www.dominio.com.br devero ser descartados.

iptables -A FORWARD -d www.dominio.com.br -j DROP


Os pacotes destinados sub-rede 10.0.0.0 (mscara 255.0.0.0)
e oriundos da mquina www.dominio.com.br devero ser descartados.

iptables -A FORWARD -d 10.0.0.0/8


-s www.dominio.com.br -j DROP
Os pacotes oriundos da mquina www.dominio.com.br devero ser descartados.

iptables -A FORWARD -s www.dominio.com.br -j DROP


Os pacotes oriundos da sub-rede 200.221.20.0 (mscara
255.255.255.0) devero ser descartados.

iptables -A FORWARD -s 200.221.20.0/24 -j DROP


183

Odilson Tadeu Valle

Os pacotes icmp oriundos da mquina 10.0.0.5 devero ser


descartados.

iptables -A FORWARD -s 10.0.0.5 -p icmp -j DROP


Os pacotes que entrarem pela interface eth0 sero aceitos.

iptables -A FORWARD -i eth0 -j ACCEPT


Os pacotes que entrarem por qualquer interface, exceto a eth0,
sero aceitos.

iptables -A FORWARD -i ! eth0 -j ACCEPT


O trfego de pacotes TCP oriundos da porta 80 da mquina
10.0.0.5 dever ser gravado em log. No caso, /var/log/messages.

iptables -A FORWARD -s 10.0.0.5 -p tcp --sport 80


-j LOG
Os pacotes TCP destinados porta 25 de qualquer mquina
devero ser aceitos.

iptables -A FORWARD -p tcp --dport 25 -j ACCEPT

23.3.6 Impasses
Deve-se tomar cuidado ao montar regras com a poltica DROP. Neste
caso inicialmente probe-se tudo, ento, ao fazer-se uma regra com
um nome de mquina por exemplo, deve-se antes liberar o acesso
ao servidor de nomes. Tambm no pode-se esquecer que deve-se
liberar o caminho de ida e retorno de determinada requisio. No
exemplo abaixo tem-se uma sequncia de regras onde, aps estabelecida a poltica DROP, libera-se ao acesso de ida e volta ao servidor de
nomes e em seguida o acesso ao stio propriamente dito.
iptables
iptables
iptables
iptables
iptables
184

-P
-A
-A
-A
-A

FORWARD
FORWARD
FORWARD
FORWARD
FORWARD

DROP
-s 10.0.0.0/8 -d 200.135.37.65 -j ACCEPT
-s 200.135.37.65 -d 10.0.0.0/8 -j ACCEPT
-s 10.0.0.0/8 -d www.dominio.com.br -j ACCEPT
-s www.dominio.com.br -d 10.0.0.0/8 -j ACCEPT

Firewall com iptables

23.3.7 Extenses
As extenses permitem filtragens especiais, principalmente contra
ataques bem conhecidos. Quando necessrias, devem ser as primeiras
regras do firewall. Alguns exemplos:
Inibe o recebimento e, portanto, respostas ao ping.

iptables -A FORWARD -p icmp --icmp-type


echo-request -j DROP
Limita o recebimento de requisies de ping a no mximo 1
por segundo, ou seja, cobe o ataque do tipo ping da morte (Ping of
Death), onde feita uma inundao de requisies ping. Neste caso
a poltica deve ser DROP.

iptables -A FORWARD -p icmp --icmp-type


echo-request -m limit --limit 1/s -j ACCEPT
Coibe ataques do tipo Syn-flood, ou seja inundaes de abertura de conexo TCP, que tornam os servidores indisponveis para as
demais requisies.

iptables -A FORWARD -p tcp -m limit --limit 1/s


-j ACCEPT
Cobe a varredura de portas ou port scanners, com ferramentas
do tipo nmap.

iptables -A FORWARD -p tcp --tcp-flags


SYN,ACK,FIN,RST -m limit --limit 1/s -j ACCEPT

23.3.8 Exemplo Prtico


Na Listagem 23.1 tem-se um exemplo de um firewall construdo com
iptables. O exemplo construdo para proteger a rede do diagrama
apresentado na Figura 23.2. Entre as linhas 1 e 3 esto definidas as
185

Odilson Tadeu Valle

polticas de bloqueio. Entre as linhas 4 e 7 so liberados os trfegos


desejados. Entre as linhas 8 e 16 mostrada uma tentativa de bloqueio
de trojans, que so os lendrios cavalos de Tria, so aplicativos instalados nas mquinas que liberam portas para futuras conexes externas. A linha 17 vai no mesmo sentido de tentar o bloqueio de
worms. Nas linhas 17 e 18 so os bloqueios aos Syn-Flood e Ping of
Death. Na linha 20 o bloqueio de varredura de portas. Entre as linhas
21 e 33 feito o log de vrias tentativas de acesso portas conhecidas do firewall. E nas duas ltimas linhas liberado o trfego SMTP
(porta 25) para a mquina 200.200.10.40.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

186

iptables P INPUT DROP


iptables P OUTPUT DROP
iptables P FORWARD DROP
iptables A INPUT i ! eth1 j ACCEPT
iptables A INPUT m state state ESTABLISHED,RELATED j
ACCEPT
iptables A OUTPUT m state state ESTABLISHED,RELATED,NEW
j ACCEPT
iptables A FORWARD m state state ESTABLISHED,RELATED,NEW
j ACCEPT
iptables N TROJAN
iptables A TROJAN m limit limit 15/m j LOG loglevel 6
logprefix "FW:trojan: "
iptables A TROJAN j DROP
iptables A INPUT p TCP i eth1 dport 666 j TROJAN
iptables A INPUT p TCP i eth1 dport 666 j TROJAN
iptables A INPUT p TCP i eth1 dport 4000 j TROJAN
iptables A INPUT p TCP i eth1 dport 6000 j TROJAN
iptables A INPUT p TCP i eth1 dport 6006 j TROJAN
iptables A INPUT p TCP i eth1 dport 16660 j TROJAN
iptables A FORWARD p tcp dport 135 i eth0 j REJECT
iptables A FORWARD p tcp syn m limit limit 2/s j ACCEPT
iptables A FORWARD p icmp icmptype echorequest m limit
limit 1/s j ACCEPT
iptables A FORWARD p tcp tcpflags SYN,ACK,FIN,RST m limit
limit 1/s j ACCEPT
iptables A INPUT p tcp dport 21 i eth1 j LOG loglevel 6
logprefix "FW:ftp: "
iptables A INPUT p tcp dport 23 i eth1 j LOG loglevel 6
logprefix "FW:telnet: "
iptables A INPUT p tcp dport 25 i eth1 j LOG loglevel 6

Firewall com iptables

24
25
26
27
28
29
30
31
32
33
34
35

logprefix "FW:smtp: "


iptables A INPUT p tcp dport 80 i eth1 j LOG loglevel 6
logprefix "FW:http: "
iptables A INPUT p tcp dport 110 i eth1 j LOG loglevel 6
logprefix "FW:pop3: "
iptables A INPUT p udp dport 111 i eth1 j LOG loglevel 6
logprefix "FW:rpc: "
iptables A INPUT p tcp dport 113 i eth1 j LOG loglevel 6
logprefix "FW:identd: "
iptables A INPUT p tcp dport 137:139 i eth1 j LOG loglevel
6 logprefix "FW:samba: "
iptables A INPUT p udp dport 137:139 i eth1 j LOG loglevel
6 logprefix "FW:samba: "
iptables A INPUT p tcp dport 161:162 i eth1 j LOG loglevel
6 logprefix "FW:snmp: "
iptables A INPUT p tcp dport 6667:6668 i eth1 j LOG log
level 6 logprefix "FW:irc: "
iptables A INPUT p tcp dport 3128 i eth1 j LOG loglevel 6
logprefix "FW:squid: "
iptables A INPUT p tcp dport 22 i eth1 j ACCEPT
iptables A FORWARD p tcp d ! 200.200.10.40 dport 25 j LOG
loglevel 6 logprefix "FW:SMTP proibido: "
iptables A FORWARD p tcp d ! 200.200.10.40 dport 25 j REJECT

Listing 23.1: Exemplo de sequncias de regras para um rewall

Figura 23.2: Diagrama de rede controlada pelo rewall


187

Odilson Tadeu Valle

23.4

Tabela nat  Network Address Translation

O NAT empregado em vrios recursos da rede. O mascaramento


(masquerading) permite que vrios computadores da rede local
naveguem na Internet com apenas um IP pblico do firewall, ao
mesmo tempo impedindo um acesso direto da Internet a estes
computadores. O redirecionamento de portas (port forwarding) que
permite que algum trfego especial, de alguma porta especfica,
seja reencaminhada para outra mquina.
O redirecionamento
de servidores (forwarding), todos os pacotes destinados a um
determinado nmero IP de um servidor podem ser reencaminhados a
outro. Proxy transparente (transparent proxy), na verdade um
redirecionamento de portas, todo o trfego destinado porta 80 ser
reencaminhado ao servidor Proxy/Cache, ver Captulo 22.
O NAT pode ser subdividido em SNAT Source NAT quando
somente o endereo de origem alterado e DNAT Destination NAT
quando se altera o endereo de destino.
A composio dos comandos iptables para a tabela nat
muito similar aos da tabela filter, mudando somente nos casos (exemplos) apresentados a seguir.

23.4.1 Chains
Para a tabela nat existem as chains listadas abaixo e sua representao na Figura 23.3.

PREROUTING Utilizada para analisar pacotes que esto entrando no kernel para sofrerem NAT. O PREROUTING permite
a troca do endereo de destino do datagrama, isso conhecido
como DNAT (Destination NAT);

POSTROUTING Utilizada para analisar pacotes que esto


saindo do kernel, aps sofrerem NAT. O POSTROUTING
permite a troca do endereo de origem do datagrama, isso
conhecido como SNAT (Source NAT);
188

Firewall com iptables

OUTPUT utilizada para analisar pacotes que so gerados na


prpria mquina e que iro sofrer NAT. O OUTPUT permite
a troca do endereo de destino do datagrama, tambm DNAT.

Figura 23.3: Cadeias da tabela nat

23.4.2 Dados
A maioria dos dados bsicos apresentados para a tabela filter continuam valendo. Por exemplo, -p servir para definir um protocolo
de rede e -d define uma mquina de destino.

to Utilizado para definir IP e porta de destino, aps um DNAT, ou


de origem, aps um SNAT. Deve ser utilizado aps uma ao
(-j ao). Exemplos:

-j DNAT --to 10.0.0.2


-j DNAT --to 10.0.0.2:80
-j SNAT --to 172.20.0.2
189

Odilson Tadeu Valle

dport Define a porta de destino. Deve ser utilizado antes de


uma ao (-j ao). Antes de dport, deve ser especificado
um protocolo (-p). Exemplo:

-d 127.20.0.1 -p tcp --dport 80 -j DNAT


--to 10.0.0.2

sport Define uma porta de origem. Deve ser utilizado antes de


uma ao (-j ao).

to-port Define uma porta de destino, aps um REDIRECT.

23.4.3 Aes
SNAT Utilizado com POSTROUTING para fazer aes de mascaramento da origem, ou seja, troca do nmero IP/porta de
origem.

DNAT Utilizado com PREROUTING e OUTPUT para


fazer aes de redirecionamento de portas e servidores,
balanceamento de carga e proxy transparente. Caso a porta de
destino no seja especificada, valer a porta de origem. No
firewall, a porta que ser redirecionada no pode existir ou
estar ocupada por um daemon.

MASQUERADE Tambm faz mascaramento da origem, diferente do SNAT por ser indicado para mquinas que tenham interface externa configuradas com IP dinmico.

REDIRECT Redireciona uma requisio para uma porta local


do prprio firewall.

23.4.4 Exemplos comentados de regras


Todos os pacotes que sarem pela interface ppp0 (modem) sero mascarados.
190

Firewall com iptables

iptables -t nat -A POSTROUTING -o ppp0


-j MASQUERADE
Redireciona todos os pacotes destinados porta 80 da mquina
10.0.0.2 para a mquina 172.20.0.1. Esse tipo de regra exige a especificao do protocolo. Como no foi especificada uma porta de
destino, a porta de origem (80) ser mantida como destino.

iptables -t nat -A PREROUTING -t nat -p tcp


-d 10.0.0.2 --dport 80 -j DNAT --to 172.20.0.1
Qualquer pacote TCP, originado na mquina firewall, destinado a qualquer porta da mquina 10.0.0.10, ser desviado para a
mquina 10.0.0.1 .

iptables -t nat -A OUTPUT -p tcp -d 10.0.0.10


-j DNAT --to 10.0.0.1
Essa regra faz com que todos os pacotes que iro sair pela interface eth0 tenham o seu endereo de origem alterado para 200.20.0.1.

iptables -t nat -A POSTROUTING -o eth0 -j SNAT


--to 200.20.0.1
Todos os pacotes que entrarem pela eth0 sero enviados para a
mquina 172.20.0.1.

iptables -t nat -A PREROUTING -i eth0 -j DNAT


--to 172.20.0.1
Esta regra para o balanceamento de carga entre servidores.
Todos os pacotes que entrarem pela eth0 sero distribudos entre as
mquinas 172.20.0.1 , 172.20.0.2 e 172.20.0.3.

iptables -t nat -A PREROUTING -i eth0 -j DNAT


--to 172.20.0.1-172.20.0.3
191

Odilson Tadeu Valle

Todos os pacotes TCP que vierem da rede 10.0.0.0, com


mscara 255.0.0.0, destinados porta 80 de qualquer mquina, no
sairo; sero redirecionados para a porta 3128 do firewall. Isso o
passo necessrio para fazer um proxy transparente. No exemplo, o
Squid, dever estar instalado na mquina firewall, servindo na porta
3128.

iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp


--dport 80 -j REDIRECT --to-port 3128
Todos os pacotes que sarem da rede 192.168.1.0 tero seu endereo de origem transformados em 200.20.5.20.

iptables -t nat -A POSTROUTING -s 192.168.1.0/24


-o eth1 -j SNAT --to 200.20.5.20

192

Captulo 24

Firewall com Shorewall


24.1

Introduo

O Shoreline Firewall1 ,
comumente conhecido como
Shorewall, uma ferramenta de alto nvel para configurar o
iptables, facilitando a vida dos administradores mais
inexperientes. Sua configurao simples j que descreve-se as
necessidades de firewall usando entradas/diretivas num conjunto de
arquivos de configurao, o Shorewall l estes arquivos e monta as
regras do iptables para atender as demandas.

Shorewall no um daemon, apesar de ter aparncia de um.


Uma vez que o Shorewall tenha configurado o iptables, seu
servio finaliza e no permanece um processo Shorewall rodando
no sistema. O programa /sbin/shorewall pode ser usado a
qualquer momento para monitorar/ajustar o firewall iptables.
As principais caractersticas do Shorewall so: flexibilidade,
ampla documentao e facilidade de uso.
Algumas alternativas ao Shorewall, para configurao
facilitada do iptables: Firestarter2 , Firewall Builder3 ,
1

http://www.grulic.org.ar/eventos/charlas/shorewall-2005-09.html
http://www.fs-security.com
3
http://www.fwbuilder.org
2

Odilson Tadeu Valle

Arno's IPTABLES Firewall Script4 ,


Webmin5 e FireHOL6 .

24.2

Linux Firewall

do

Zonas

O Shorewall trabalha com conceito de zonas. O Shorewall no


assume nenhum papel especfico a cada zona, caracterstica sobre
a qual recaem a maior parte de sua flexibilidade. Uma zona um
conceito abstrato que identifica a origem e/ou destino de um pacote.
As mesmas so utilizadas para a definio de regras de aceitao ou
recusa de pacotes em funo da zona de procedncia ou destino. As
zonas podem ou no estar associadas a interfaces de rede, sub-redes
ou conjuntos de IPs.
A nica zona explicitamente associada a um equipamento/IP
a zona fw, a qual contm o firewall que se est configurando.

24.3

Instalao e congurao

Para instalar o Shorewall7 digita-se o comando:

urpmi shorewall
Todos os arquivos de configurao do Shorewall so documentados e contm uma srie de exemplos. Abaixo so apresentados alguns parmetros dos principais arquivos de configurao do
mesmo.

24.3.1 shorewall.conf
o principal arquivo de configurao do Shorewall. Algumas das
diretivas importantes a se configurar neste arquivo so:
4

http://rocky.eld.leidenuniv.nl/joomla/
http://doxfer.com/Webmin/LinuxFirewall
6
http://rehol.sourceforge.net
7
http://www.shorewall.net/
5

194

Firewall com Shorewall

STARTUP_ENABLED Recomenda-se configurar para Yes,


caso contrrio o mesmo no ser iniciado junto ao boot da
mquina.

ADMINISABSENTMINDED

Se
estiver
ajustada para No, somente o trfego listado em
/etc/shorewall/routestopped sero aceitos quando o
Shorewall for parado ou reiniciado. Caso esteja em Yes,
todas as conexes abertas continuaro a ser aceitas, isto
muito til durante o processo de manuteno do firewall, j
que, ao fazer uma regra que bloquearia o acesso do prprio
administrador, na reinicializao do mesmo no ocorreria o
bloqueio da mquina em uso, somente aps sua desconexo.

LOGRATE e LOGBURST

Estes
parmetros
indicam/limitam a rotao dos logs e a taxa de pacotes que
so registrados. til quando se geram muitos pacotes
invlidos na rede o que poderia gerar muitssimo consumo do
processador no firewall.

IP_FORWARDING Este parmetro determina se o

Shorewall deve ou no habilitar o encaminhamento de


pacotes IPV4, sem a necessidade de fazer-se manualmente.

24.3.2 zones
Neste arquivo define-se as zonas, que so abstraes que definem
uma mquina, ou um conjunto delas, que tem caractersticas em
comum quanto ao trfego gerado e/ou recebido. No exemplo abaixo
redefine-se a zona firewall, e cria-se a zona net, loc, e dmz, que
dizem respeito respectivamente Internet, rede local e a zona
desmilitarizada.
#ZONE
fw
net
loc
dmz

TYPE
firewall
ipv4
ipv4
ipv4
195

Odilson Tadeu Valle

24.3.3 interfaces
Neste arquivo se definem as interfaces de rede presentes no firewall e
sua possvel associao a uma zona (pode no ser necessrio). Alm
disto se identificam certas propriedades a respeito da interpretao
dos pacotes que entram ou saem pelas mesmas. Exemplo:
ZONE
dmz
net
loc

INTERFACE
eth1
eth1
eth0

BROADCAST
detect
detect
detect

OPTIONS
tcpflags,routefilter,nosmurfs
tcpflags,detectnets,logmartians

24.3.4 policy
Neste arquivo se definem as polticas para os pacotes que trafegam
entre uma zona e outra. As possveis polticas e interpretaes so
praticamente as mesmas do iptables, ou seja, ACCEPT, DROP,
REJECT. Pode ainda especificar a taxa mxima de conexes TCP e
o limite das rajadas. Exemplo:
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW
net
ACCEPT
$FW
dmz
ACCEPT
$FW
loc
ACCEPT
$FW
all
ACCEPT
## Policies for traffic originating from the Internet zone (net)
net
dmz
ACCEPT
net
$FW
ACCEPT
net
loc
DROP
info
net
all
DROP
info
## THE FOLLOWING POLICY MUST BE LAST
all
all
ACCEPT

24.3.5 rules
Provavelmente este o arquivo de configurao mais importante.
Aqui se definem as regras que permitem ou negam o acesso a
196

Firewall com Shorewall

servios e portas deste e a determinadas zonas do firewall. Tambm


se definem as regras de DNAT e registro de certos pacotes. As
principais aes so: ACCEPT, DROP, REJECT, SNAT, DNAT,
REDIRECT, CONTINUE e LOG. No exemplo abaixo aparee na
primeira linha a estrutura (foram omitidos intencionalmente os dois
ltimos campos: RATE LIMIT USER/GROUP), na segunda o
redirecionamento de porta para o servidor Proxy/Cache com exceo
para consultas mquina 200.135.233.1. Na terceira liberado o
acesso da rede local porta 25 (SMTP) da Internet. Na quarta est a
liberao para a mquina da Internet 200.135.233.1, acessar a rede
local. Na sexta linha tem-se o redirecionamento das portas,
20,21,22,53 e 80 do IP 200.135.233.9 para as mesmas portas do IP
192.168.1.9 da rede local. A stima linha tem um redirecionamento
da 200.135.233.9/2222 para 192.168.1.7/22.
##ACTION

SOURCE

DEST

PROTO

DEST PORT

REDIRECT
ACCEPT:info
ACCEPT

loc
loc
net:200.135.233.1

3128
net
loc

tcp
tcp

www
25

tcp
tcp

20,21,22,53,80
2222

## Redirecionamento de IP e portas
DNAT
net
loc:192.168.1.9
DNAT
net
loc:192.168.1.7:22

SOURCE
PORT
-

ORIGINAL DEST

200.135.233.9
200.135.233.9

!200.135.233.1

24.3.6 masq
Este o arquivo utilizado para definir o mascaramento e SNAT.
essencial para as redes locais que desejam se conectar internet via
firewall. Exemplo:
INTERFACE
eth0

SUBNET
eth1

ADDRESS

PROTO

PORT(S)

IPSEC

24.3.7 Outros arquivos de congurao


Existem ainda alguns outros arquivos de configurao do Shorewall.
Alguns exemplos teis so o hosts que utilizado para associar grupos de mquinas a uma zona. Em especial para definir mltiplas
zonas sobre uma interface. O tunnels que utilizado para configurar automaticamente regras para tipos distintos de tneis (IPSEC,
197

Odilson Tadeu Valle

OpenVPN etc.). O conjunto de arquivos iniciados por tc que so utilizados para carregar regras de tc traffic shaping do kernel do
firewall, muito til para controlar a banda por tipo de trfego num
enlace saturado com a Internet.

24.4

Alguns

Shorewall

exemplos

prticos

com

24.4.1 Firewall em uma tpica rede de zonas e interfaces


Este caso corresponde ao de qualquer rede tpica, onde se tem
uma rede interna que se deseja conectar (e proteger da) Internet.
Neste caso assume-se que a rede interna est conectada uma interface ethernet eth0 e a Internet eth1, ver Figura 23.2. Assumese tambm que se deseja fazer masquerading da rede interna e que
o servidor possui um domnio DHCP para a auto configurao das
mquinas na rede local. A seguir esto listados os arquivos de configurao necessrios, e seus respectivos contedos, para atender esta
demanda.

/etc/shorewall/shorewall.conf
STARTUP_ENABLED=Yes
/etc/shorewall/zones
loc Local Local networks
net Net Internet
/etc/shorewall/interfaces
net eth1 - norfc1918,nobogons,routefilter,
logmartians,blacklist,tcpflags,nosmurfs
loc eth0 detect dhcp
/etc/shorewall/policy
198

Firewall com Shorewall

loc
loc
net
all

net ACCEPT
fw ACCEPT
all DROP info
all REJECT info
/etc/shorewall/masq

eth1 eth0
/etc/shorewall/rules
AllowWeb fw all
AllowWeb all fw
AllowSSH fw all
AllowSSH loc fw # Servidor ssh para rede interna
ACCEPT:info net fw tcp 22000 # Idem para Internet
AllowSMB loc fw # Servidor samba
AllowSMB fw loc # Servidor samba
ACCEPT loc fw tcp 3128
ACCEPT fw all tcp 6667:6669

24.4.2 Mltiplas zonas sobre uma interface


Neste exemplo supe-se uma configurao de hardware e rede idntica ao caso anterior, ou seja, um firewall/roteador com duas interfaces, uma ethernet eth0 conectada rede interna que deseja-se
conectar internet e uma interface eth1 que conecta a mquina a dita
rede. A diferena que agora discrimina-se entre duas classes de
mquinas que podem conectar-se Internet: uma com acesso a todos os servios de rede disponveis e outra que pode utilizar somente
http sobre a Internet e smtp no firewall onde est instalado um MTA
(Mail Transfer Agent). Tambm se deseja que as mquinas da rede
interna sejam configurados via DHCP.

/etc/shorewall/shorewall.conf
STARTUP_ENABLED=Yes
199

Odilson Tadeu Valle

/etc/shorewall/zones
loc2 Local Local networks
loc1 Local Local networks
net Net Internet
/etc/shorewall/interfaces
net eth1 - norfc1918,nobogons,routefilter,
logmartians,blacklist,tcpflags,nosmurfs
- eth0 detect dhcp
/etc/shorewall/host
loc1 eth0:192.168.0.0/25
loc2 eth0:192.168.0.128/25
net eth0:0.0.0.0/0
/etc/shorewall/policy
loc1 net ACCEPT
loc2 net REJECT
loc1 loc2 ACCEPT
loc2 loc1 ACCEPT
net all DROP info
all all REJECT info
/etc/shorewall/rules
AllowWeb loc2 net
AllowSMTP loc2 fw
AllowWeb fw all
AllowWeb loc1 fw #
AllowSSH fw all
AllowSSH loc1 fw #
ACCEPT:info net fw
AllowSMB loc1 fw #
200

Servidor http,https
Servidor ssh para rede interna
tcp 22000 # Idem para Internet
Servidor samba

Firewall com Shorewall

AllowSMB fw loc1 # Servidor samba


AllowSMB fw loc2 # Servidor samba
ACCEPT loc fw tcp 3128
ACCEPT fw all tcp 6667:6669

201

Captulo 25

DenyHosts
25.1

Introduo

DenyHosts1 um script escrito por Phil Schwartz para ajudar administradores de sistemas bloquear ataques de fora bruta em seus servidores SSH. Ele monitora o arquivo de log do sistema, /var/log/
auth.log, e quando um ataque detectado adiciona o IP do atacante
no /etc/hosts.deny, sendo assim o prprio sistema se encarregar
de bloquear tentativas de acesso posteriores.
Quando executado pela primeira vez, o DenyHosts ir criar um
diretrio de trabalho para armazenar as informaes coletadas dos
arquivos de log em um formato facilmente legvel e categorizados
por tipo de tentativa.
O script possui uma grande variedade de configuraes que podem ser exploradas, como por exemplo, configurar quantas tentativas
invlidas devem ser consideradas um ataque, ou quantas tentativas
erradas de usurios que no existem no sistema sero aceitas, pode
enviar correspondncias com relatrios etc.
1

http://www.drsolutions.com.br/exemplos/protegersshd.pdf

Odilson Tadeu Valle

25.2

Instalao e congurao

O DenyHosts2 dependente do Python v2.3 ou superior. Exe-cutase o seguinte comando para saber qual a verso Python instalada:

rpm -q python
Caso o Python no esteja instalado, faa-o com o comando:

urpmi python
Agora instala-se o DenyHosts propriamente dito. Faz-se
download da ltima verso do DenyHosts na pgina oficial,
http:\slash\slashdenyhosts.sourceforge.net\slash,
existe um rpm noarch (para qualquer arquitetura que admita rpm) e
um tar.gz que tambm independente de plataforma e pode ser
utilizado em qualquer distribuio, por este motivo os teste sero
feitos com este ltimo.
Desempacota-se o arquivo do DenyHosts baixado com o comando:

tar -zxvf DenyHosts-2.6.tar.gz


Para manter o sistema organizado, move-se o diretrio
DenyHosts criado para , por exemplo, o diretrio /sbin.

mv DenyHosts-2.6 /sbin/DenyHosts
O DenyHosts tem um arquivo de configurao exemplo, podese utiliz-lo como base para o arquivo de configurao propriamente
dito, com os comandos:

cd /sbin/DenyHosts
cp denyhosts.cfg-dist denyhosts.cfg
2

204

http://denyhosts.sourceforge.net/

DenyHosts

Agora edita-se o arquivo de configurao. Na Listagem 25.1


tem-se um exemplo deste arquivo com a principais diretivas. Na linha
1 informa-se ao DenyHosts qual o arquivo de log que ele deve
monitorar, caso no seja informado corretamente, de acordo com o
sistema instalado, o DenyHosts simplesmente no funcionar. Na
linha 2 determina-se o tempo de bloqueio dos IPs, no exemplo est
em duas semanas, caso este campo seja deixado em branco o dito
IP nunca sair da lista de bloqueados. Na linha 3 definido o(s)
servio(s) a ser(em) bloqueado(s), pode ser informado ALL. Na linha
4 definido o nmero de tentativas que uma determinada mquina
poder fazer com usurios invlidos, ou seja, no cadastrados na
mquina do DenyHosts, no exemplo, aps 5 tentativas de conexo
com usurios distintos a mesma ser bloqueada. Na linha 5 tem-se o
bloqueio aps n tentativas com usurios vlidos mas com a senha incorreta. Na linha 6 o mesmo caso anterior mas especfico para conta
de root. Entre as linhas 8 e 14 so definidos os parmetros para envio de correspondncias reportando as tentativas de ataque. Na linha
16 definido a periodicidade em que o DenyHosts varrer o arquivo
de log em busca de ataques.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

SECURE_LOG = /var/log/auth.log
PURGE_DENY = 2w
BLOCK_SERVICE = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
WORK_DIR = /usr/share/denyhosts/data
ADMIN_EMAIL = user@redes.edu.br
SMTP_HOST = smtp.redes.edu.br
SMTP_PORT = 25
SMTP_FROM = DenyHosts <user@redes.edu.br>
SMTP_SUBJECT = Relatorios do DenyHosts
SMTP_USERNAME = user
SMTP_PASSWORD = senha.aqui
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s

Listing 25.1: Arquivo de congurao do DenyHosts

205

Odilson Tadeu Valle

Aps a devida configurao roda-se o DenyHosts, como ele


somente um script, pode-se coloc-lo em modo daemon com o comando:

/sbin/DenyHosts/denyhosts.py
--config=/sbin/DenyHosts/denyhosts.cfg --daemon
Pode ser necessrio criar um arquivo vazio para o DenyHosts
rodar pela primeira vez, caso ocorra uma mensagem de erro. Faz-se
isto com o comando:

touch /var/log/secure
No diretrio /usr/share/denyhosts/data sero criados os
arquivos: hosts, hosts-restricted, hosts-root, offset,
supicious-login, user-hosts, user-invalid e users-valid.
Os arquivos iniciados com hosts trazem uma relao das mquinas
que tentaram ou se conectaram ao sistema. O offset tem uma
informao de controle para o DenyHosts da posio da ltima
busca no arquivo de log. Os arquivos iniciados com user informam
o nome de usurios que tentaram ou se conectaram ao sistema, com
os respectivos IPs de origem.
Lembre-se que este somente um script ento pode ser interessante adicionar o comando para sua inicializao ao final do arquivo
/etc/rc.local, para que o DenyHosts rode sempre que a mquina
for reiniciada.

25.3

Testes

Agora pode-se fazer alguns testes com tentativas de conexo SSH,


informando usurios inexistentes, usurios vlidos mas com senha
incorreta etc. Em seguida observa-se os arquivos criados/modificados
no diretrio /usr/share/denyhosts/data. Por exemplo o arquivo
hosts-restricted conter algo parecido com:
206

DenyHosts

89.119.134.50:0:Wed Jun 6 19:51:04 2007


89.121.0.99:0:Tue Oct 17 05:56:19 2006
89.137.189.2:0:Wed Apr 4 07:25:18 2007
89.171.160.18:0:Sun Jul 29 07:42:05 2007
89.212.5.25:0:Sun Jan 28 02:21:02 2007
89.250.246.112:0:Mon Apr 23 07:04:25 2007

207

Captulo 26

Antivrus
26.1

Introduo

Um vrus de computador1 , da mesma forma que o biolgico, precisa de uma taxa de reproduo maior do que a taxa de erradicao
(morte), para se proliferar. E, se a taxa de reproduo cai abaixo do
nvel de morte, o vrus est condenado extino.
Na plataforma Linux, vrios obstculos reduzem significativamente a taxa de reproduo. E, portanto, praticamente no existem
vrus que o ataquem. O motivo a sobreposio de alguns fatores
listados a seguir.
Para que um vrus infecte um programa executvel num sistema com kernel Linux o executvel precisa estar em arquivo com
permisso de escrita para o usurio que esteja ativando o vrus. Tal
situao incomum. Numa instalao desktop, via de regra os arquivos executveis tm como dono (owner) o administrador do sistema (root), e rodam em processo de usurio comum. Ou seja, a
partir de uma conta no-privilegiada.
Quanto mais inexperiente for o usurio, menos provvel que
tenha ele mesmo feito a instalao do executvel, e portanto, que seja
1

http://www.cic.unb.br/docentes/pedro/trabs/virus_no_linux.html

Odilson Tadeu Valle

o dono do arquivo correspondente. Assim, os usurios de Linux que


menos entendem dos perigos de infeco viral so os que tm pastas
pessoais (diretrio home) menos frteis para isso.
Prosseguindo, ainda que um vrus consiga infectar um programa executvel, sua misso de proliferar-se esbarra em dificuldades
das quais os limites de permisses so apenas o comeo. As dificuldades continuam nos programas para conectividade, por serem estes
construdos conservadoramente no Linux sem, por exemplo, recursos
de macros de alto nvel.
Aplicativos e sistemas baseados em Linux so quase todos de
cdigo fonte aberto. Devido quase totalidade desse mercado estar
acostumado disponibilidade do cdigo-fonte, produtos distribudos
apenas em formato executvel so ali raros, e encontram mais dificuldade para firmar presena. Isso tem dois efeitos no sistema viral, se considera-se que a propagao ocorre em formato executvel.
Primeiro, programas com cdigo fonte aberto so lugares difceis
para vrus se esconderem. Segundo, a (re)instalao por compilao
do cdigo-fonte corta completamente um dos principais vetores de
propagao dos vrus.
Cada um desses obstculos representa uma barreira significativa. Porm, quando essas barreiras atuam em conjunto que a vida
do vrus se complica.
A importncia de antivrus rodando no Linux para a proteo das mquinas clientes, j que o Linux normalmente assume o
papel de servidor de rede. Na verdade, esses programas permitem
que uma mquina Linux procure vrus de computadores pessoais,
mquinas Windows, Macintoshetc. e no propriamente vrus para
Linux. Esses antivrus so muito utilizados quando o Linux est rodando como servidor de e-mail ou arquivos, permitindo que sejam
pesquisadas todas as mensagens que forem recebidas, por exemplo.
210

Antivrus

26.2

Instalao e congurao

O Clan AntiVirus2 um pacote de ferramentas antivrus sobre


licena GPL desenhado especificamente para anlise de correio
eletrnico em servidores de correio, mas pode ser tambm utilizado
para outros fins. Possui um utilitrio de anlise para linha de
comandos e uma ferramenta avanada para atualizao automtica
da Base de Dados. O ncleo do pacote um motor anti-viral
disponvel como biblioteca. Em seguida so listadas as suas
principais funcionalidades:
Analizador de linha de comandos.
Servio rpido, com paralelismo e suporte para anlise
automtica ao acesso.
Interface milter para o sendmail.
Atualizador avanado para a base de dados com suporte para
scripts e assinaturas digitais.
Biblioteca C para anlise viral.
Anlise ao acesso (Linux e FreeBSD).
Multiplas atualizaes dirias da Base de Dados de vrus.
Suporte incorporado para vrios formatos de arquivos,
nomeadamente Zip, RAR, Tar, Gzip, Bzip2, OLE2, Cabinet,
CHM, BinHex, SIS e outros.
Suporte incorporado da maioria dos formatos de correio.
Suporte incorporado de executveis ELF e arquivos
executveis portveis comprimidos com UPX, FSG, Petite,
NsPack, wwpack32, MEW, Upack e ofuscados com SUE,
Y0da Cryptor e outros.
2

http://www.clamav.net/
211

Odilson Tadeu Valle

Suporte incorporado para formatos de documentos comuns


nomeadamente arquivos MS Office e MacOffice, HTML,
RTF e PDF.
Para instalar o CLAMAV basta executar o comando:

urpmi clamav
O CLAMAV vem pr-configurado e pronto para uso mas caso
seja necessrio alguma personalizao deve-se editar o arquivo /etc/
clamav.conf. Deste arquivo as principais diretivas a serem reconfiguradas so: ArchiveMaxFileSize 10M que diz o tamanho mximo
da mensagem em anexo que ser escaneada e ClamukoIncludePath
/var/spool discrimina os diretrios que sero escaneados, podem
ser includas vrias diretivas com os vrios diretrios.
Depois de configurar o clamav.conf, pode-se configurar o
/etc/freshclam.conf, que o responsvel pelas atualizaes do
banco de dados de vrus do CLAMAV. A principal diretiva a ser
reconfigurada neste arquivo DatabaseMirror que contm a lista
com endereos de espelhos para atualizaes, ver em http:\slash\
slashwww.clamav.net\slashmirrors.html. Em seguida faz-se
as atualizaes com o comando:

freshclam

26.2.1 Integrando o CLAMAV ao Postx


Para que o Postfix varra todos os e-mails que entram ou saem do
servidor deve-se configurar o AMaViS A Mail Virus Scanner, que ir
usar o CLAMAV para escanear as mensagens. O AMaViS uma interface entre o MTA (Message Tranfer Agent) e um ou mais sistemas de
antivrus. Primeiramente deve-se instalar o AMaViS com o comando:

urpmi amavis
O servio que j vem previamente configurado, caso se deseje
alterar algum parmetro deve-se acessar o arquivo /etc/amavisd/
212

Antivrus

amavisd.conf. Em seguida deve-se inicializar o mesmo com o comando:


service amavisd start
Supondo que o Postfix j esteja instalado, ver Captulo 15, e
funcionando, no so necessrios mais ajustes, pois os pacotes configuram todos os servios e arquivos necessrios para a integrao
entre Postfix, AMaViS e CLAMAV.

26.2.2 Integrando o CLAMAV ao Samba


Para configurar o samba para escanear todos os arquivos que so
compartilhados por ele deve-se primeiramente instalar o pacote
samba-vscan-clamav com o comando:

urpmi samba-vscan-clamav
Em seguida cria-se um diretrio .recycle em cada um dos
diretrios compartilhados pelo Samba, este deve ter permisso 777,
ou seja acesso livre a todos. E por ltimo deve-se descomentar (ou
acrescentar) as seguintes linhas no arquivo /etc/samba/smb.conf,
ver Captulo 16:

vfs objects = vscan-clamav recycle


vscan-clamav: config-file = /etc/samba/vscanclamav.conf

26.2.3 Escanear diretrios em busca de vrus


Como segurana adicional pode-se programar na cron, que uma
atividade diria de escaneamento de arquivos em busca de vrus. Na
Listagem 26.1 tem-se um pequeno script que faz esta tarefa e, caso
encontre vrus, envia uma correspondncia para as pessoas responsveis avisando sobre o ocorrido.
213

Odilson Tadeu Valle

1
2
3
4
5
6

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# !/ bin /bash
#
# Script que procura por virus , move para / var / infectados , caso encontre
, e envia email.
#
#
# Escaneia as pastas /home e /dados. Caso encontre virus move os
arquivos infectados para / var / infectados e cria uma lista dos
mesmos em /root/ lista_virus
clamscan r i /home/ /dados/ move=/var/infectados/ recursive > /tmp
/ lista_virus 2>&1
# Verifica se o arquivo /tmp/ lista_virus esta vazio , se nao estiver
manda um email de alerta
cat /tmp/ lista_virus | grep FOUND > /tmp/virusencontrado.txt 2>&1
tam_arq=ls l /tmp/ virusencontrado . txt | awk { print $5}
if [ $tam_arq gt 5 ]
then
date >> /tmp/ alerta . txt
echo " " >> /tmp/ alerta . txt
echo "Atencao Administrador!" >> /tmp/ alerta . txt
echo " " >> /tmp/ alerta . txt
echo "Foram encontrados virus no servidor . " >> /tmp/ alerta . txt
echo "Os arquivos infectados foram movidos para o diretorio / var /
infectados . " >> /tmp/ alerta . txt
echo "Segue a listagem dos mesmos." >> /tmp/ alerta . txt
echo " " >> /tmp/ alerta . txt
cat /tmp/ lista_virus >> /tmp/ alerta . txt
/ bin /mail s "Virus encontrado . Listagem em anexo" a /tmp/ alerta . txt
admin1@redes.edu.br
/ bin /mail s "Virus encontrado . Listagem em anexo" a /tmp/ alerta . txt
admin2@redes.edu.br
fi
exit

Listing 26.1: Script para escaneamento em busca de vrus

214

Captulo 27

VPN
27.1

Introduo

O uso de Redes Privadas Virtuais1 representa uma alternativa interessante na racionalizao dos custos de redes corporativas oferecendo
confidencialidade e integridade no transporte de informaes atravs
de redes pblicas.
A ideia de utilizar uma rede pblica como a Internet em vez de
linhas privativas para implementar redes corporativas denominada
de VPN ou Rede Privada Virtual. As VPNs so tneis de criptografia
entre pontos autorizados, criados atravs da Internet ou outras redes
pblicas e/ou privadas para transferncia de informaes, de modo
seguro, entre redes corporativas ou usurios remotos.
A segurana a primeira e mais importante funo da VPN.
Uma vez que dados privados sero transmitidos pela Internet, que
um meio de transmisso inseguro, eles devem ser protegidos de forma
a no permitir que sejam modificados ou interceptados.
Outro servio oferecido pelas VPNs a conexo entre corporaes (Extranets) atravs da Internet, alm de possibilitar conexes
criptografadas que podem ser muito teis para usurios mveis ou
remotos, bem como filiais distantes de uma empresa.
1

http://www.rnp.br/newsgen/9811/vpn.html

Odilson Tadeu Valle

Uma das grandes vantagens decorrentes do uso das VPNs


a reduo de custos com comunicaes corporativas, pois elimina a
necessidade de enlaces dedicados de longa distncia que podem ser
substitudos pelo ponto de acesso Internet. Esta soluo pode ser
bastante interessante sob o ponto de vista econmico, sobretudo nos
casos em que enlaces internacionais ou nacionais de longa distncia
esto envolvidos. A maior desvantagem eu seu uso o overhead
imposto, j que para a criptografia, estabelecimento de tneis etc.
tem-se um gasto adicional de tempo e recursos, quando comparado
a contratao de um enlace dedicado.

27.2

Aplicaes para redes privadas virtuais

Abaixo, so apresentadas as trs aplicaes ditas mais importantes


para as VPNs.

27.2.1 Acesso remoto via Internet


O acesso remoto redes corporativas atravs da Internet pode ser viabilizado com a VPN via ligao local a algum provedor de acesso.
A estao remota se conecta Internet e o software de VPN cria uma
rede virtual privada entre o usurio remoto e o servidor de VPN corporativo atravs da Internet, Figura 27.1.

27.2.2 Conexo de LANs via Internet


Normalmente todas as unidades das corporaes j dispe de uma
conexo com a Internet. Uma soluo para interligar as LANs destas
unidades a contratao de enlaces dedicados, o que garante confiabilidade e confidencialidade, o problema o custo desta soluo.
Uma alternativa o estabelecimento de VPNs entre as unidades, usando os enlaces j contratados, minimizando os custos, e tambm
com bom grau de confiabilidade e confidencialidade. O software
216

VPN

Figura 27.1: Estao acessa a rede comporativa atravs da VPN

de VPN assegura esta interconexo formando a WAN corporativa,


Figura 27.2.

Figura 27.2: Duas redes comporativas interligadas via VPN

27.2.3 Conexo de computadores numa intranet


Em algumas organizaes, existem dados confidenciais cujo acesso
restrito a um pequeno grupo de usurios. Nestas situaes, redes
locais departamentais so implementadas fisicamente separadas da
LAN corporativa. Esta soluo, apesar de garantir a confidencialidade das informaes, cria dificuldades de acesso a dados da rede
corporativa por parte dos departamentos isolados. Outra possibilidade a implantao de VLANs Virtual Local Area Network, permitindo o isolamento parcial de partes da rede corporativa. Isto s
possvel com equipamentos de rede modernos, que permitem a criao e manuteno destas VLANs.
217

Odilson Tadeu Valle

Outra soluo com uso das VPNs que possibilitam a conexo


entre redes locais, restringindo acessos indesejados atravs da insero de um servidor VPN entre elas, Figura 27.3. Com o uso da
VPN o administrador da rede pode definir quais usurios estaro credenciados a atravessar o servidor VPN e acessar os recursos da rede
departamental restrita (invisvel). Adicionalmente, toda comunicao
ao longo da VPN pode ser criptografada assegurando a confidencialidade das informaes. Os demais usurios no credenciados sequer
enxergaro a rede departamental restrita.

Rede
Invisvel

Servidor
VPN

VPN
Rede Corporativa

Figura 27.3: VPN protejendo acesso parte da rede local

27.3

Requisitos bsicos

No desenvolvimento de solues de rede, bastante desejvel que sejam implementadas facilidades de controle de acesso a informaes
e a recursos corporativos. A VPN deve dispor de recursos para permitir o acesso de clientes remotos autorizados aos recursos da LAN
corporativa, viabilizar a interconexo de LANs de forma a possibilitar o acesso de filiais, compartilhando recursos e informaes e, finalmente, assegurar privacidade e integridade de dados ao atravessar
a Internet bem como a prpria rede corporativa. A seguir so enumeradas caractersticas mnimas desejveis numa VPN.
218

VPN

27.3.1 Autenticao de Usurios


Verificao da identidade do usurio, restringindo o acesso s pessoas
autorizadas. Deve dispor de mecanismos de auditoria, provendo informaes referentes aos acessos efetuados - quem acessou, o qu e
quando foi acessado.

27.3.2 Gerenciamento de Endereo


O endereo do cliente na sua rede privada no deve ser divulgado,
devendo-se adotar endereos fictcios para o trfego externo.

27.3.3 Criptograa de Dados


Os dados devem trafegar na rede pblica ou privada num formato
cifrado e, caso sejam interceptados por usurios no autorizados, no
podero ser decodificados, garantindo a privacidade da informao.
O reconhecimento do contedo das mensagens deve ser exclusivo dos
usurios autorizados.

27.3.4 Gerenciamento de Chaves


O uso de chaves criptogrficas que garantem a segurana das mensagens deve funcionar como um segredo compartilhado exclusivamente entre as partes envolvidas.

27.4

Tunelamento

As redes virtuais privadas baseiam-se na tecnologia de tunelamento


cuja existncia anterior s VPNs. Ele pode ser definido como processo de encapsular um protocolo dentro de outro ou do mesmo. As
VPNs, alm do uso do tunelamento, incorporam um novo componente a esta tcnica: antes de encapsular o pacote que ser transportado, este criptografado de forma a ficar ilegvel caso seja inter219

Odilson Tadeu Valle

ceptado durante o seu transporte. O pacote criptografado e encapsulado viaja atravs da Internet at alcanar seu destino onde desencapsulado e descriptografado, retornando ao seu formato original.
O protocolo de tunelamento encapsula o pacote com um
cabealho adicional que contm informaes de roteamento que
permitem a travessia dos pacotes ao longo da rede intermediria.
Tnel a denominao do caminho lgico percorrido pelo pacote ao
longo da rede intermediria. Aps alcanar o seu destino na rede
intermediria, o pacote desencapsulado e encaminhado ao seu
destino final. A rede intermediria por onde o pacote trafegar pode
ser qualquer rede pblica ou privada. Note que o processo de
tunelamento envolve encapsulamento, transmisso ao longo da rede
intermediria e desencapsulamento do pacote.

27.4.1 Protocolos de tunelamento


Para se estabelecer um tnel necessrio que as suas extremidades
utilizem o mesmo protocolo de tunelamento. O tunelamento pode
ocorrer na camada 2 ou 3, respectivamente enlace e rede, na pilha
de protocolos TCP/IP. Os mais famosos da camada 2 so o PPTP
Point-to-Point Tunneling Protocol da Microsoft, o L2TP (Layer
2 Tunneling Protocol) da IETF Internet Engineering Task Force
e o L2F (Layer 2 Forwarding) da Cisco que utilizada para VPNs
discadas.
Nos tunelamentos em Nvel 3 camada rede tem-se como
exemplo o IPSec (IP Security Tunnel Mode) da IETF que permite
que pacotes IP sejam criptografados e encapsulados com cabealho
adicional deste mesmo protocolo para serem transportados numa rede
IP pblica ou privada.

27.5

Instalao e congurao

Como plataforma de testes prope-se a estrutura da Figura 27.4.Com


esta implementao qualquer cliente da rede local da Matriz enxer220

VPN

gar qualquer cliente da rede local da Filial e vice-versa. O usurio


no necessariamente ter noo de que estar usando VPN.

Figura 27.4: Exemplo de uso da VPN

Para implantarmos o modelo da Figura 27.4, primeiramente


deve-se instalar o pacote OpenVPN2 , em ambos os firewalls, com o
comando:

urpmi openvpn
Carregar o mdulo tun com o comando:

modprobe tun
Instalar a biblioteca para compresso de dados, se necessrio, com o
comando:

urpmi liblzo

27.5.1 Congurao da Matriz


O OpenVPN pode operar em 3 modos: nenhuma criptografia (apenas
o tnel), criptografia com chaves estticas e no modo TLS. No ltimo modo as chaves so trocadas periodicamente. Como exemplo,
2

http://www.openvpn.net/
221

Odilson Tadeu Valle

prope-se a criptografia com chaves estticas, que o padro proposto pelo pacote. O diretrio /etc/openvpn onde se encontram
todos os arquivos de configurao.
Como primeiro passo cria-se a chave esttica com o comando:

openvpn --genkey --secret /etc/openvpn/chave


Pode-se visualizar o contedo da chave com o comando:

cat /etc/openvpn/chave
Em seguida cria-se o arquivo /etc/openvpn/matriz.conf,
de acordo com o exposto na Listagem 27.1. Na linha 1 estabelecido o nome do dispositivo que ser criado, por exemplo tun0, que
ser uma interface de rede virtual, veja Captulo 12. Na linha 3 so
definidos os nmeros IP que formaro o tnel, respectivamente da
Matriz e Filial. A linha 5 referencia a chave criptogrfica a ser utilizada. A linha 7 define a porta a ser usada na conexo. Na linha 13
define-se a verbosidade do log e na linhas 14 e 15, seus arquivos.
Caso deseje-se criar mais tuneis, com outras filiais ou clientes, devese repetir o contedo do arquivo com outro nome, outra porta e outro
conjunto de endereos IP.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

dev tun
persist tun
ifconfig 192.168.10.1 192.168.10.2
cd / etc /openvpn
secret chave
persist key
port 5000
user openvpn
group openvpn
complzo
pingtimerrem
complzo
verb 3
status / var / log /openvpnstatus.log
logappend /var/log /openvpn.log

Listing 27.1: Congurao OpenVPN na Matriz


222

VPN

Em seguida, inicia-se o servio com o seguinte comando:

service openvpn start


Pode-se conferir se est tudo em ordem, verificando se foi criada uma interface tun0, com o comando:

ifconfig
Se for mostrado algo como abaixo, o tnel na Matriz j est
pronto a espera da conexo da filial.
tun0 Link encap:No Especificado Endereo de HW 00-00-00-00-00-00-00
inet end.: 192.168.10.1 P-a-P:192.168.10.2 Masc:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Mtrica:1
....

27.5.2 Congurao da lial


A exemplo da Matriz, deve-se instalar o pacote OpenVPN e todas
as dependncias j citadas no incio da seo. Em seguida, devese copiar a chave gerada na matriz para dentro do diretrio /etc/
openvpn/, para isto pode-se usar o scp ou outro mecanismo qualquer.
Cria-se o arquivo /etc/openvpn/filial.conf, com o contedo mostrado na Listagem 27.2. Perceba que as nicas mudanas
para o arquivo da Matriz, Listagem 27.1, ocorrem na linha 3, com a
inverso da ordem nos nmeros IP e o acrscimo da linha 4, que deve
conter o IP acessvel da mquina com a OpenVPN da Matriz.
1
2
3
4
5
6
7
8
9

dev tun
persist tun
ifconfig 192.168.10.2 192.168.10.1
remote 200.200.200.1
cd / etc /openvpn
secret chave
persist key
port 5000
user openvpn
223

Odilson Tadeu Valle

10
11
12
13
14
15
16

group openvpn
complzo
pingtimerrem
complzo
verb 3
status / var / log /openvpnstatus.log
logappend /var/log /openvpn.log

Listing 27.2: Congurao OpenVPN na Filial

Em seguida, inicia-se o servio com o seguinte comando:

service openvpn start


Pode-se conferir se est tudo em ordem, verificando se foi criada uma interface tun0, com o comando:

ifconfig

27.5.3 Conguraes nos rewalls


O estabelecimento das VPNs necessitar da abertura das portas que
sero utilizadas. Caso esteja usando o iptables puro deve-se inserir
as seguintes regras, para o caso de uso da poltica DROP:

iptables -A INPUT -p udp --dport 5000 -j ACCEPT


iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
Caso se esteja utilizando o Shorewall editam-se os arquivos
abaixo, acrescentando as linhas indicadas. /etc/shorewall/
police

$FW vpn ACCEPT


policy:net vpn
policy:vpn
policy:vpn
policy:vpn
policy:vpn
224

DROP
$FW
net
loc
all

ACCEPT
ACCEPT
ACCEPT
ACCEPT

VPN

/etc/shorewall/rules
ACCEPT loc:172.18.0.0/16 vpn
/etc/shorewall/interfaces
vpn

tun0

detect

/etc/shorewall/zones
vpn

ipv4

225

Captulo 28

SNMP
28.1

Introduo

O protocolo SNMP1 Simple Network Management Protocol um


protocolo para gerncia de redes TCP/IP, da camada de aplicao.
Facilita o intercmbio de informao entre os servidores de coleta
e os dispositivos de rede que geram dados, segundo este protocolo.
O SNMP possibilita aos administradores de rede gerenciar o desempenho da rede, encontrar e resolver problemas de rede, e planejar o
crescimento desta.

28.2

Componentes Bsicos do SNMP

Uma rede gerenciada pelo protocolo SNMP formada por trs componentes chaves:
1. Dispositivos Gerenciados um n de rede que possui um
agente SNMP instalado e se encontra em uma rede gerenciada.
Este dispositivo coleta e armazena informaes de gerenciamento e mantm estas informaes disponveis para sistemas
1

http://pt.wikipedia.org/wiki/Simple_Network_Management_Protocol

Odilson Tadeu Valle

NMS atravs do protocolo SNMP. Dispositivos gerenciados,


tambm s vezes denominados de dispositivos de rede, podem
ser roteadores, servidores de acesso, impressoras, computadores, servidores de rede, switches, dispositivos de armazenamento, dentre outros.
2. Agentes um mdulo de software de gerenciamento de rede
que fica armazenado em um dispositivo gerenciado. Um agente
tem o conhecimento das informaes de gerenciamento locais
e traduzem estas informaes para um formato compatvel com
o protocolo SNMP.
3. Sistemas de Gerenciamento de Redes (NMS Network Management Systems) responsvel pelas aplicaes que monitoram e controlam os dispositivos gerenciados. Normalmente
instalado em um (ou mais de um) servidor de rede dedicado,
ou no, a estas operaes de gerenciamento, que solicita informaes (pacotes SNMP) de todos os dispositivos gerenciados
daquela rede.

28.3

Arquitetura

O framework SNMP consiste de: Agentes Mestres (Master Agents),


Sub-agentes (Subagents) e Estaes de Gerenciamento (Management
Stations).

28.3.1 Master Agent


O Master Agent em uma rede gerenciada um software sendo
executado em um dispositivo com suporte a SNMP, por exemplo, um
roteador, que interage com uma estao de gerenciamento. o
equivalente a um servidor, na comunicao cliente/servidor.
Os subagentes so os responsveis por passarem informaes
especficas para o Masters Agent.
228

SNMP

28.3.2 Subagent
Os subagents so pequenos programas em execuo no dispositivo
com suporte a SNMP, responsveis pelo monitoramento de recursos
especficos naquele dispositivo, como por exemplo, o status de um
enlace ethernet em um roteador, ou a quantidade de espao livre
em um disco de um servidor.

28.3.3 Management Station


O Management Station o componente final da arquitetura de uma
soluo SNMP. Funciona como um cliente em uma comunicao
cliente/servidor. Realiza requisies de informaes aos dispositivos
gerenciados. Requisies so feitas via comandos especficos e
podem ou no ser temporizadas. o responsvel por receber
alarmes gerados pelos agentes e gerar sadas para estes alarmes, tais
como, alterar (set) o valor de um determinado parmetro gerenciado
no equipamento, enviar mensagem para o celular do administrador
da rede, dentre outras.

28.4

Nomes de objetos e MIB

Todos os objetos acessados pelo SNMP devem ter nomes nicos


definidos e atribudos. O conjunto de todos os objetos SNMP
coletivamente conhecido como MIB (Management Information
Base). O padro SNMP no define o MIB, mas apenas o formato e o
tipo de codificao das mensagens.
A definio dos objetos do MIB feita com o esquema de
nomes do ASN.1 (Abstract Syntax Notation.1), o qual atribui a cada
objeto um prefixo longo que garante a unicidade do nome, a cada
nome atribudo um nmero inteiro. Tambm, o SNMP no especifica um conjunto de variveis, e que a definio de objetos independente do protocolo de comunicao, permite criar novos conjuntos
de variveis MIB, definidos como standards, para novos dispositivos
ou novos protocolos. Por isso, foram criados muitos conjuntos de
229

Odilson Tadeu Valle

variveis MIB que correspondem a protocolos como UDP, IP, ARP,


assim como variveis MIB para hardware de rede como Ethernet ou
FDDI, ou para dispositivos tais como bridges, switches ou impressoras.
Uma comunidade define um mtodo para autenticar acesso
(senha), visibilidade da MIB, privilgios de acesso MIB. Cada
dispositivo implementa uma ou mais comunidades sendo que existe
uma comunidade padro chamada public.

28.5

Instalao e Congurao

Como primeira etapa para um cenrio ilustrativo instala-se o agente


SNMP em uma mquina Linux, usando o comando:

urpmi net-snmp
Depois de instalado configura-se o SNMP editando o arquivo
/etc/snmp/snmpd.conf. Este arquivo auto-explicativo e vem
pronto para gerar relatrios relativamente completos mas pode-se
personalizar. Por exemplo na Listagem 28.1 tem-se algumas
diretivas que recomenda-se que sejam personalizadas. Na linha 1 e 2
definem-se as parties de disco a serem monitoradas sendo que o
nome que as sucede representa a quantidade mnima de espao livre,
em MB, que deve existir na respectiva partio, antes de serem
gerados alertas. Entre as linhas 3 e 10 so definidos vrios
processos que esto sendo explicitamente monitorados e os nmeros
subsequentes representam o intervalo, mnimo e mximo, de nmero
de processos rodando que no geraro alertas, fora deste intervalo o
SNMP apontar, por meio de MIBS, que houve extrapolamento de
limites. Este arquivo permite tambm controle de acesso s
requisies SNMP por meio de sua(s) comunidade(s).
1
2
3

230

disk / 10000
disk /home 1000
proc portmap 100 0

SNMP

4
5
6
7
8
9
10

proc
proc
proc
proc
proc
proc
proc

syslogd 100 0
/ usr / sbin /sshd 100 0
ntpd 100 0
/ usr / bin / freshclam 100 0
crond 100 0
xinetd 100 0
/ usr / bin / nxserver 100 0

Listing 28.1: Parte do arquivo de congurao do SNMP

Aps as configuraes inicia-se o servio com:

service snmpd start

28.6

Testes

Para testar se o SNMP est ativo na mquina, pode-se fazer uma auto
consulta. As consultas podem conter filtros por MIB etc. Para uma
consulta geral usa-se o comando:

snmpwalk -v2c -c public 192.168.2.1


Onde -v2c significa a verso do SNMP, -c public a comunidade a
acessar e o ltimo campo trata-se do nmero IP do dispositivo consultado. Pode-se fazer vrias consultas vrios dispositivos na rede,
desde que os mesmos implementem o SNMP. Como resultado das
consultas obtm-se um relao de todas as MIB implementadas no
dispositivo e seu estado atual. Algumas so bastante intuitivas, outras nem tanto, veja uma pequena parte de um exemplo de coleta na
Listagem 28.2. A coleta original possua 2005 MIBs.
1
2
3
4
5
6

IPMIB::ipNetToPhysicalPhysAddress.2.ipv4."172.18.0.5 " 0:8:54: b0:8c:c3


IPMIB::ipNetToPhysicalPhysAddress.2.ipv4."172.18.0.254" 0:e0:4c:de :21:
e1
TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".22 0
TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".199 0
TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".389 0
TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".443 0
231

Odilson Tadeu Valle

7
8
9
10
11
12
13
14
15
16
17
18

TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".631 0


TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".636 0
TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".2273 0
TCPMIB::tcpListenerProcess.ipv4." 0.0.0.0 ".5555 0
HOSTRESOURCESMIB::hrStorageDescr.31 /
HOSTRESOURCESMIB::hrStorageDescr.32 /home
HOSTRESOURCESMIB::hrSWRunName.2130 "atd"
HOSTRESOURCESMIB::hrSWRunName.2178 "crond"
HOSTRESOURCESMIB::hrSWRunName.2457 "ifplugd"
HOSTRESOURCESMIB::hrSWRunName.2771 "startkde"
HOSTRESOURCESMIB::hrSWRunName.2856 "dhclient"
HOSTRESOURCESMIB::hrDeviceDescr.768 GenuineIntel: Intel(R) Core(
TM)2 Duo CPU E6750 @ 2.66GHz

Listing 28.2: Parte da consulta via snmpwalk

Fica evidente que a anlise deste tipo de dados muito difcil de ser feita manualmente. Para facilitar a administrao da rede
existe uma srie de servios que coletam e organizam estas informaes de maneira bastante eficiente, personalizveis e com excelente apresentao. Nos prximos captulos sero apresentados algumas destas solues, o MRTG, o Cacti e o Nagios. Outro exemplo o
Zabbix http:\slash\slashwww.zabbix.com\slash que no ser
abordado neste livro.

232

Captulo 29

MRTG
29.1

Introduo

O MRTG1 The Multi Router Traffic Grapher monitora os dispositivos de rede SNMP e desenha grficos mostrando o trfego passante
de cada interface de rede dos equipamentos. Seus grficos so apresentados por meio de navegadores web, num formato universal, que
pode ser acessado de qualquer mquina.
MRTG escrito em perl e funciona em Unix/Linux, bem como
em Windows.

29.2

Instalao e congurao

Para o funcionamento do MRTG necessrio estar com o Apache


instalado e rodando, ver Captulo 14. Em seguida instala-se o prprio
MRTG com o comando:

urpmi mrtg
Cria-se em seguida um arquivo de configurao, com o
cfgmaker, para cada dispositivo a ser monitorado via SNMP. Por
1

http://oss.oetiker.ch/mrtg/

Odilson Tadeu Valle

exemplo, para monitorar a comunidade pblica da mquina local


usa-se o comando:

cfgmaker --global 'WorkDir: /var/lib/mrtg' -output


/etc/mrtg/mrtg.local.cfg public@localhost
Para monitorar um outro equipamento qualquer, com suporte
ao SNMP:

cfgmaker --global 'WorkDir: /var/lib/mrtg' -output


/etc/mrtg/mrtg.router.cfg public@172.18.0.254
Edite os arquivos criados /etc/mrtg/mrtg.local.cfg e /
etc/mrtg/mrtg.router.cfg e acrescente as seguintes linhas, de
acordo com o parmetros desejados:

WorkDir: /var/lib/mrtg Define qual ser o diretrio de trabalho do MRTG, ou seja, o diretrio onde sero salvos os arquivos gerados pelo MRTG (logs, arquivos html, png etc..

Options [_]: growright, bits So duas opes em uma: o


growright faz com que o grfico caminhe da direita para a
esquerda, fazendo com que o horrio atual fique direita no
grfico; j o parmetro bits define que o grfico trar as informaes em bits (por padro, as informaes so expressas em
bytes).

Interval: 10 o tempo, em minutos, em que o MRTG ir buscar


novas informaes estatsticas junto ao host.

Refresh: 600 o tempo, em segundos, em que o navegador ir


atualizar a pgina. Por padro, 300 segundos (5 minutos).

Language: brazilian Linguagem que ser utilizada nos


arquivos HTML que o MRTG gera.

RunAsDaemon: Yes Para rodar o MRTG como daemon, ou


seja, o MRTG ficar carregado e vai buscar os dados da
234

MRTG

mquina conforme o parmetro Interval. Se no for feito


assim deve-se configurar atualizaes dos grficos via
crontab.
Em seguida, cria-se a pgina index do MRTG, a partir dos
arquivos de configurao:

indexmaker --output=/var/lib/mrtg/index.html
/etc/mrtg/mrtg.local.cfg
/etc/mrtg/mrtg.router.cfg
Por fim, mas no menos importante, roda-se o MRTG:

env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.local.cfg


env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.router.cfg

29.3

Testes

Para visualizar os grficos gerados pelo MRTG acessa-se a pgina


http:\slash\slashlocalhost\slashmrtg, o grfico gerado
deve ser algo similar Figura 29.1. Pode-se personalizar os
cabealhos dos grficos da pgina editando os arquivos html:
/etc/mrtg/mrtg.local.cfg e /etc/mrtg/mrtg.router.cfg.

235

Odilson Tadeu Valle

Figura 29.1: Exemplo de grco gerado pelo MRTG

236

Captulo 30

Cacti
30.1

Introduo

Cacti1 uma ferramenta que recolhe e exibe informaes sobre o


estado de uma rede de computadores atravs de grficos. Foi desenvolvido para ser flexvel de modo a se adaptar facilmente a diversas
necessidades, bem como ser robusto e fcil de usar. Monitora o estado de elementos de rede e programas bem como largura de banda
utilizada e uso de CPU.
Trata-se de uma interface e uma infra-estrutura para o RRDTool, que responsvel por armazenar os dados recolhidos e por gerar
os grficos. As informaes so repassadas para a ferramenta atravs
de scripts ou outros programas escolhidos pelo usurio os quais devem se encarregar de obter os dados. Pode-se utilizar tambm o protocolo SNMP para consultar informaes em elementos de redes e/ou
programas que suportam tal protocolo.
Sua arquitetura prev a possibilidade de expanso atravs de
plugins que adicionam novas funcionalidades. Um destes plugins o
PHP Network Weathermap que mostra um mapa da rede e o estado
de cada elemento.
1

http://pt.wikipedia.org/wiki/Cacti

Odilson Tadeu Valle

30.2

Instalao e congurao

Para instalar o Cacti2 necessrio o Apache, ver Captulo 14, e um


banco de dados funcionando no sistema. Todos os dados coletados
so armazenados neste banco de dados, por exemplo o mysql. O
exemplo a seguir considera a instalao do mysql e sua configurao
simplificada, sem preocupaes com segurana e permissionamento
de acesso aos dados. Como primeiro passo instala-se o Cacti e o
mysql:

urpmi cacti mysql


service mysqld start
Em seguida cria-se a base de dados a partir de um modelo que
acompanha o Cacti, com os seguintes comandos:

mysql -u root -p
<Enter> (senha em branco)
CREATE DATABASE cacti;
use cacti
source /usr/share/cacti/cacti.sql
exit
Edita-se o arquivo /etc/cacti.conf para configurar o
usurio e senha que tero acesso a base de dados. Isto feito nos
seguintes campos:

$database_username = "root";
$database_password = "";
Observe que esta no a configurao mais segura. Num caso
real deve-se criar um usurio e senha no banco mysql e dar permisses ao mesmo de acesso base cacti.
2

238

http://www.cacti.net/

Cacti

Uma
vez
configurada
a
base,
o
Cacti
se
configurar
praticamente
de
maneira
automtica,
para isto basta acessar,
via navegador,
a pgina
http:\slash\slashlocalhost\slashcacti\slash e seguir as
orientaes da mesma. Caso no haja nenhum problema basta
aceitar as configuraes padro. Ao final ser requisitado login e
senha, entre com admin X admin, em seguida o Cacti forcar a
troca de senha do usurio admin. O Cacti ento terminar toda sua
configurao, j preparado para coleta de vrios tipos de dados da
mquina local.
Aps isto pode-se clicar na aba graphs e pode-se observar
algo parecido com o da Figura 30.1.Pode-se ainda configurar mais
monitores, para isto basta clicar na aba console, na opo New
Graph e/ou Create New Host e selecionar as opes desejadas.
Existem uma srie de outras opes que podem ser acessadas nos
menus disponveis.

Figura 30.1: Exemplo de grco gerado pelo Cacti

239

Captulo 31

Nagios
31.1

Introduo

O Nagios1 um aplicativo de monitoramento de sistemas e de redes.


Ele checa clientes e servios, especificados em seus arquivos, gerando
alertas de problemas ou na iminncia de.
O Nagios inclui vrias ferramentas, as principais so:
Monitoramento de rede e servios (SMTP, POP3, HTTP,
NNTP, PING etc.).
Monitoramento dos recursos de clientes (carga de processador,
uso de disco etc.).
Organizao simples de plugins que permite aos usurios desenvolverem seus prprios servios de checagem.
Checagem paralela de servios.
Habilidade para definir hierarquia de redes de clientes usando
clientes pais (parent hosts), permitindo a deteco e distino
entre clientes que esto desativados e aqueles que esto inalcanveis.
1

http://www.nagios.org/

Odilson Tadeu Valle

Notificao de contatos quando problemas em servios e


clientes ocorrerem ou forem resolvidos, via e-mail, pager, ou
mtodos definidos pelo usurio.
Habilidade para definir tratadores de eventos (event handlers)
que sero executados durante eventos de servios ou clientes
na tentativa de resoluo de problemas.
Rotatividade automtica de arquivos de logs.
Suporte para implementao de clientes de monitoramento redundantes.
Interface web para visualizao do status atual da rede,
histrico de notificaes e problemas, arquivos de log etc.

31.2

Instalao e congurao

Para instalar o Nagios deve-se ter previamente instalado um servidor


Apache e o SNMP, ver Captulos 14 e 28. Em seguida instala-se o
Nagios propriamente dito com o comando:

urpmi nagios-www
Com este pacote so instalados todos os arquivos necessrios
para o funcionamento do Nagios e, inclusive, reconfigurado automaticamente o Apache para poder acessar as pginas do Nagios.
Sendo necessrio somente criar uma senha para o acesso ao Nagios
com o comando:

htpasswd /etc/nagios/passwd nagios


O Nagios vem pronto para o funcionamento, no sendo
necessria nenhuma alterao de arquivos para o monitoramento das
funes bsicas da mquina local.
De qualquer modo destaca-se os principais arquivos de configurao e suas aplicaes, localizados no diretrio /etc/nagios/:
242

Nagios

nagios.cfg Arquivo principal de configurao do Nagios.


group Usurios que podem configurar o Nagios.
cgi.cfg Arquivo de configurao das CGIs.
passwd e passwd.plaintext Senhas de usurios do Nagios.
resource.cfg Arquivo contendo macros definidas pelo usurio.
Para as definies de monitoramento de equipamentos e
mquinas deve-se acessar o sub-diretrio /etc/nagios/objetcs
onde existem vrios arquivos de configurao:

commands.cfg Definies dos comandos a serem executados


pelo Nagios.

contacts.cfg Indivduos que, possivelmente, devero ser notificados no caso de problemas detectados pelo Nagios.

localhost.cfg Definies de monitoramento da mquina local.


printer.cfg Definies do monitoramento de impressoras.
switch.cfg Definies do monitoramento de switches com suporte ao SNMP.

templates.cfg um arquivo que contm vrios exemplos de


como utilizar as diretivas de monitoramento do Nagios.

timeperiods.cfg Definies de horrios considerados vlidos


para a realizao de checagens e envio de notificaes.

windows.cfg Exemplos de configuraes especficas para monitoramento de mquinas Windows.


Dentro do diretrio do Nagios existe outro sub-diretrio
plugins que contm os principais arquivos de configurao dos
plugins para monitoramentos especficos, como por exemplo
plugins de monitoramento de discos, servidores http, processos
243

Odilson Tadeu Valle

etc.
Existem vrios plugins, dependendo da distribuio
pode ser necessrio a instalao em separado.
No stio
http:\slash\slashnagiosplugins.org\slashnode\slash2
existe a lista completa de todos os plugins disponveis.
Alm disto o Nagios 3 j possui outros diretrios para organizar o monitoramento agrupando as mquinas por seu tipo. Por exemplo: roteadores, servidores, switches etc.
Pode-se fazer uma conferncia inicial da configurao dos arquivos com o comando:

nagios -v /etc/ nagios/nagios.cfg


Inicia-se o Nagios com o comando:

service nagios start


Aps reinciar o servidor Apache j possvel
acessar
a
pgina
do
Nagios,
com
o
endereo
http:\slash\slashlocalhost\slashnagios\slash.
Ser requisitado um usurio, e sua senha, que devem ser o
mesmo criado anteriormente. Observe que esta pgina estar
acessvel somente via localhost, caso deseje-se que a mesma
seja acessvel de outras mquinas deve-se editar o arquivo
/etc/httpd/conf/webapps.d/nagios.conf e mudar as diretivas
allow from para o(s) nmero(s) IP(s) desejados e reiniciar o
Apache.
O Nagios j estar plenamente funcional e monitorando uma
srie de servios e caractersticas do hardware da mquina local. Se
desejado, pode-se acrescentar alguns monitoramentos de algumas
mquinas remotas.

31.2.1 Monitorando outras mquinas


Como
exemplo
edita-se
o
arquivo
/etc/nagios/conf.d/sample.cfg. Este arquivo dividido em
244

Nagios

sees e recomenda-se a manuteno da ordem do mesmo.


completamente comentado e traz um srie de exemplos.

A Listagem 31.1 mostra um exemplo de configurao destes


arquivo, com as respectivas sees utilizadas. No caso mostrado
a incluso de uma nova mquina chamada teste e vrios servios
da mesma a serem monitorados. A maior parte dos campos so intuitivos. Na linha 18 habilitada a notificao para o servio HTTP,
para desabilitar basta trocar o valor do campo para 0. Na linha 24 so
definidos os parmetros de consulta ao ping, basicamente para saber
se a mquina est ou no ativa. Se o tempo de resposta maior que
100 ms e a perda de pacotes maior que 20% ser gerado um alarme
de aviso. Se o tempo de resposta de 500 ms e a perda de pacotes
for 60% ser gerado um alarme crtico. A linha 30 gera um alarme
de aviso quando o espao livre da partio raiz (/) for menor que 20%
e um alarme crtico quando menor que 10%. A linha 36 monitora
a quantidade de usurios logados: aviso 20 ou mais, crtico 50. A
linha 42 monitora os processos. Aviso mais de 250 processos, crtico
mais de 400. A flag -s do comando ps mostra processos com estados especficos, por exemplo R = run, Z = zombie etc. Se desejado
pode-se omitir as diretirvas !RSZDT e assim sero monitorados todos
os processos em todos os estados. E assim por diante.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

## HOST DEFINITION
define host{
use
linuxserver
host_name teste
alias
teste
address
172.18.0.1
}
## HOST GROUP DEFINITION
members
localhost , teste
## SERVICE DEFINITIONS
define service {
use
host_name
service_description
check_command
notifications_enabled
}
define service {

generic service
dk
HTTP
check_http
1

245

Odilson Tadeu Valle

19
20
21
22
23
24

define

25
26
27
28
29
30

define

31
32
33
34
35
36

define

37
38
39
40
41
42

define

43
44
45
46
47
48
49
50
51
52
53
54

define

use
host_name
service_description
check_command
}
service {
use
host_name
service_description
check_command
}
service {
use
host_name
service_description
check_command
}
service {
use
host_name
service_description
check_command
RSZDT
}
service {
use
host_name
service_description
check_command
!5.0,4.0,3.0!10.0,6.0,4.0
}
service {
use
host_name
service_description
check_command
notifications_enabled
}

generic service
dk
PING
check_ping!100.0,20%!500.0,60%

generic service
dk
Root Partition
check_local_disk !20%!10%!/

generic service
dk
Current Users
check_local_users !20!50

generic service
dk
Total Processes
check_local_procs !250!400!

generic service
dk
Current Load
check_local_load

generic service
dk
SSH
check_ssh
1

Listing 31.1: Parte do arquivo de congurao do Nagios

246

Nagios

Figura 31.1: Exemplo de tela do Nagios

31.3

Testes

Pode-se fazer um teste rpido da integridade da configurao com o


comando:

nagios -v /etc/nagios/nagios.cfg
Agora deve-se (re)iniciar o Nagios com o comando:

service nagios (re)start


E pode-se monitorar os novos servios na pgina
http:\slash\slashlocalhost\slashnagios\slash, ver Figura
31.1. Cabe salientar que o monitoramento do Nagios se d em
intervalos de tempo aleatrios, portanto haver um certo retardo at
as informaes serem completadas.
Tambm muito interessante atualizar o endereo para correspondncias eletrnicas do(s) administrador(es) da rede, isto deve ser
247

Odilson Tadeu Valle

feito tambm no arquivo /etc/nagios/conf.d/sample.cfg mudando o campo email na seo CONTACTS. Com isto, qualquer aviso
ou alarme gerado pelo Nagios gerar uma correspondncia enviada
ao(s) endereo(s) informado(s).
Para os administradores de rede existe uma ferramenta
muito interessante associada ao Nagios, que um plugin do
navegador Firefox: Nagios Checker. Com este plugin instalado e
configurado haver avisos sonoros e visuais no prprio navegador
sempre que for gerado algum alarme pelo Nagios.

248

Captulo 32

Webmin
32.1

Introduo

O Webmin1 um gerenciador de sistema baseado numa interface


web. Com este utilitrio pode-se administrar a mquina remotamente
atravs de um navegador comum. Ele bem completo e tem vrios
mdulos de configurao, desde hardware da mquina at servios
que rodam na mesma. Pode auxiliar muito na administrao da rede
por meio de uma interface intuitiva e de fcil configurao.
As principais tarefas possveis de serem executadas por meio
do Webmin2 so:
Mudar senhas, configurar o crontab, configurar scripts de inicializao, backup, configurao do pam, quotas, gerncia de
processos, pacotes, usurios e grupos.
Configurar e administrar servidores majordomo, cvs,
sendmail, qmail, postfix, fetchmail, jabber, samba,
postgresql, proftpd, ssh, squid, wu-ftpd, apache, dhcp,
dns bind, MySQL.
1
2

http://www.devin.com.br/webmin/
http://www.webmin.com/

Odilson Tadeu Valle

Configurar rede, exportaes NFS, NIS, PPP, tneis SSL.


Administrar impressoras, gerenciar boot, cd-roms, raid, parties, LVM, clustering.
shell via web, gerenciador de arquivos, mdulos perl etc.

32.2

Instalao e congurao

Para instalar e rodar o Webmin deve-se executar os comandos:

urpmi webmin
service webmin start
Uma vez instalado ele j estar absolutamente pronto para o
uso, para isto basta acessar com um navegador qualquer o endereo
https:\slash\slashlocalhost:10000\slash. Ou seja uma
conexo segura, https, na porta 10000 do servidor. Ser requisitado
um usurio e senha, que so as mesmas cadastradas na mquina. Se
deseja-se fazer manuteno nos servios o ideal usar a prpria
conta de root. Aps a troca de linguagem de apresentao para
portugues_BR tem-se uma tela do tipo da Figura 32.1. Em seguida
pode-se fazer instalao e configuraes de servios, hardware etc.

250

Webmin

Figura 32.1: Tela de apresentao do Webmin

251

Apndice A

Sistema Operacional
O Sistema Operacional um programa especial que gerencia todos
os recursos da mquina, tais como memria, teclado, vdeo (monitor), mouse, entre outros. atravs do Sistema Operacional que
executa-se outros programas, grava-se ou l-se informaes em disquetes, visualiza-se textos em vdeo ou impressora etc. Sem o Sistema Operacional no consegue-se realizar estas tarefas. Ou seja,
simplesmente no se poderia utilizar o computador.
Existem inmeros Sistemas Operacionais, tais como: UNIX,
OS/2, Windows, Linux etc. Cada um deles possuem caractersticas prprias e so executados em mquinas diferentes. Assim, no
pode-se executar um programa em Sistemas Operacionais distintos, a
no ser que o fabricante do programa garanta esta portabilidade.
de responsabilidade do Sistema Operacional:
Carregar e executar programas.
Controlar dispositivos de entrada e sada (teclado, monitor,
mouse etc..
Gerenciar arquivos e diretrios.
Gerenciar a memria RAM.

Odilson Tadeu Valle

Todo e qualquer programa executado em um computador utiliza a memria RAM (Read Only Access Memory). Da mesma forma,
o Sistema Operacional deve ser carregado, ou seja, copiado do disco
rgido ou disco flexvel para a memria RAM. Denomina-se este processo de BOOT. Toda vez que liga-se o computador, feita uma srie
de testes para verificar o funcionamento dos perifricos e se tudo estiver perfeito, o Sistema Operacional pode ser carregado. Os Sistemas Operacionais ainda podem ser classificados quanto ao nmero
de pessoas que podem utilizar os recursos ao mesmo tempo e quanto
ao nmero de programas que podem ser executados em uma mesma
mquina.

Monousurio Permitem apenas um usurio.


Multiusurio Permitem vrios usurios.
Monotarefa Apenas um programa pode ser executado de cada
vez.

Multitarefa Vrios programas podem ser executados ao mesmo


tempo.
Em geral Sistemas Operacionais que so multiusurios so
tambm multitarefa, como o UNIX, Linux e atuais verses do
Windows, onde pode-se ter vrios usurios em terminais distintos
executando, cada um, uma srie de programas diferentes ao mesmo
tempo. Alm disto, Sistemas Operacionais podem ser classificados
quanto ao tipo de comunicao com o usurio, podendo ser:

Interface por linha de comando Quando o usurio tem que


digitar o comando por extenso na tela do computador. A comunicao, em geral feita em modo texto. Preferencialmente
utilizada por especialistas e em servidores de rede.

Interface grca para usurios (GUI) Quando os comandos so executados em um ambiente grfico auxiliado pelo uso
do mouse. Voltada principalmente para o usurio final.
254

Sistema Operacional

A.1

Processos

Quando um programa ou utilitrio executado, passa a se chamar


processo. Cada processo iniciado possui um estado indicando sua
condio (em execuo, parado, interrompido etc. e a prioridade.
Sendo que os processos do sistema possuem prioridades sobre os do
usurio.
Com base nas informaes sobre os processos em andamento,
a CPU precisa escalonar os processos para dedicar a cada um, um
determinado tempo dando a impresso de que vrios processos esto
sendo executados ao mesmo tempo.
Para ver-se uma fotografia dos processos rodando na
mquina pode-se usar o comando ps aux, sendo que ax mostra
todos os processos e u informa os usurios donos dos processos.
Pode-se usar tambm o top. Neste caso haver atualizao
peridica da tela, fazendo uma amostra on-line de processos ativos.
Mostra ainda outras informaes da mquina, como uso de memria,
tempo de atividade, uso de cpu etc. Para navegar entre janelas do top
usam-se as teclas <>.
Para matar-se um processo em execuo usa-se o comando
kill seguido do nmero do processo (PID). A principal flag o 9, que mata o processo sem salvar dados da memria, se existirem.
Pode-se usar tambm o killall seguido do nome do processo (comando). Neste caso mata-se todos os processos com mesmo nome.

255

Apndice B

Linux
B.1

Histrico

O Sistema Operacional UNIX foi desenvolvido nos laboratrios da


ATeT para uso prprio, baseado em um antigo projeto que deveria ser
o primeiro Sistema Operacional multiusurio e multitarefa, o MULTICS.
Porm, este projeto estava muito alm da capacidade dos
equipamentos para a poca. Desta forma o projeto foi arquivado,
mas alguns de seus idealizadores (Ken Thompson, Dennis Ritchie e
Rudd Canadaday) resolveram escrever uma verso simplificada e
monousurio para um computador com menores recursos. O
resultado impressionou, mesmo sendo utilizada uma mquina
limitada.
Assim, o cdigo foi reescrito para outros computadores melhores, apresentando excelentes resultados. Por coincidncia ou no,
estes computadores para os quais o Sistema Operacional foi reescrito
eram utilizados por quase todas as Universidades que se interessaram
por este Sistema Operacional muito superior aos que vinham sendo
utilizados nos laboratrios de computao.
A partir de ento, a ATeT licenciou seu mais novo projeto para
as Universidades, mostrando uma enorme viso e capacidade ino-

Odilson Tadeu Valle

vadora, pois alm do Sistema Operacional, foi cedido o cdigo do


mesmo para as Universidades, que no mediram esforos em depurar
o programa e incluir novas caractersticas.
Foi dentro das Universidades que o UNIX cresceu e adquiriu
muitas das caractersticas que o tornam poderoso, dando origem diversas verses alm da original proveniente dos laboratrios da ATeT.
Esta caracterstica tornou o UNIX um sistema poderoso na medida
em que foi concebido no apenas por uma equipe de projetistas, mas
sim por toda uma comunidade de pessoas interessadas em extrair o
melhor das mquinas. A princpio, o cdigo do UNIX foi escrito em
linguagem assembler ou de mquina que altamente dependente
do hardware ou parte fsica do computador. Para que o cdigo fosse
reescrito, era necessrio muito esforo e tempo. Entretanto, um dos
criadores do Sistema Operacional UNIX resolveu utilizar uma nova
linguagem para escrever o UNIX, era a linguagem C que oferecia
o poder da linguagem de mquina com a facilidade das linguagens
estruturadas de alto nvel.
A grande vantagem de se utilizar a linguagem C ao invs da
linguagem de mquina prpria do computador a de que a primeira
altamente portvel, isto , um programa escrito em C para um determinado computador poder ser executado quase sem nenhuma modificao em outro tipo de mquina completamente diferente. Enquanto
que se fosse feito um programa em linguagem de mquina para um
determinado computador o programa seria executado somente neste
tipo de computador e no nos demais, para isto, seria preciso reescrever todo o programa.
O UNIX foi projetado para ser executado em computadores de
grande capacidade, ou seja, mini e supercomputadores, pois somente
estas mquinas podiam oferecer suporte aos recursos necessrios para
o ambiente gerado pelo Sistema Operacional.
Nestes quase quarenta anos de existncia do UNIX, os microcomputadores evoluram a ponto de fornecer o mnimo de condies
para que este poderoso Sistema Operacional pudesse ser implementado para os micros IBM -PC e compatveis.
Diversas verses do UNIX foram escritas e licenciadas para
258

Linux

venda com nomes semelhantes (XENIX, UNISYS, AIX etc. porm


com as mesmas caractersticas essenciais, sendo que atualmente existem inmeras verses comerciais e outras tantas verses livres que
foram desenvolvidas em Universidades ou por hackers atravs da rede
Internet.
Apesar de ter sido desenvolvido para lidar com dispositivos de
caracteres, UNIX foi pioneiro na rea de grficos em estaes de trabalhos. As primeiras interfaces grficas para usurios (GUI) foram
projetadas e utilizadas em Sistemas operacionais UNIX, desenvolvidas pelo MIT (Massachussets Institute of Technology). Trata-se do X
Window System.
Como se pode notar, UNIX um sistema de inmeras possibilidades. Praticamente todos os recursos que os sistemas operacionais mais atuais utilizam j haviam sido executados em UNIX h
muito. Todas as reas da computao puderam ser desenvolvidas com
o UNIX.
As tendncias atuais levam a uma tentativa de padronizar o Sistema Operacional UNIX combinando as melhores caractersticas das
diversas verses do mesmo. Prova disto a criao do POSIX, um
padro de Sistema Operacional desenvolvido pela IEEE (Institute of
Eletrical and Eletronic Engineers). Alm da OSF (Open System Fundation) que rene as principais lderes do mercado de equipamentos
para definir o padro de GUI (interfaces grficas) para UNIX.
A verso que ser abordada durante este curso o Linux, um
clone do Sistema Operacional UNIX para microcomputadores IBM
-PC 386 e compatveis. O Linux foi desenvolvido inicialmente por
Linus Torvalds na Universidade de Helsinski na Finlndia.
O Linux possui a vantagem de ser um software livre e ser compatvel com o padro POSIX. Alm de unir em um nico Sistema
Operacional as vantagens das diferentes verses de UNIX comerciais disponveis. Desta forma, Linux torna-se a melhor opo para
que usurios de microcomputadores possam usufruir da capacidade
do UNIX. Apesar de no poder rodar aplicativos para MS- DOS, o
Linux pode rodar todos os softwares de desenvolvidos para UNIX,
alm de estarem disponveis softwares que permitem a emulao do
259

Odilson Tadeu Valle

MS-DOSe do WINDOWS.
O Linux pode ser til em empresas que desejam possuir estaes de trabalho com poder razoavelmente comparvel s estaes
existentes como SUNs e outras usando PCs, com fiel semelhana no
seu uso. O Linux pode conviver pacificamente com outros sistemas
operacionais no PC. Existe uma infinidade de formas de instal-lo:
em uma partio DOS j existente, pode ainda ser instalado em um
HD exclusivamente dedicado a ele.
O Linux pode ser obtido de diversas formas diferentes, existem
diversos livros venda, os quais incluem CDs com distribuies do
Linux. Outra forma de obt-lo inteiramente grtis e via ftp pela INTERNET. Existe hoje, um movimento no sentido de tornar o Linux
um sistema popular, dado que superioridade tcnica ele j possui.
Existem algumas outras verses de UNIX para PCs, tais como
Xenix, SCO Unix, FreeBSD e NetBSD, as ltimas duas tambm
livres, no entanto alm de mais popular, o Linux possui uma srie
de caractersticas a mais, no encontradas em outras verses, mesmo
comerciais, de UNIX.

B.2

Uma viso geral do Linux

A primeira vista, parece que o Linux nada possui de diferente de qualquer outro Sistema Operacional, mas nenhum to bom em unir e
integrar o que h de melhor em um computador de forma harmoniosa
e eficiente devido a sua prpria origem em meio a toda uma comunidade de pessoas interessadas em obter o mximo e o melhor em
desempenho. Cabe ressaltar tambm que o Linux possui todas as caractersticas que fazem do UNIX um excelente sistema operacional,
entre elas : portabilidade, multiusurio, multitarefa, estrutura hierrquica de arquivos, ferramentas, utilitrios, comunicao com
outros sistemas.
Uma rpida olhada em algumas das principais caractersticas e
vantagens que fazem o Linux nico:
260

Linux

Multitarefa. Linux, como as outras verses do UNIX um sistema multitarefa, possibilitando a execuo de mltiplas aplicaes de diferentes usurios no mesmo sistema ao mesmo
tempo.
O X Window System , de fato, um padro na indstria de sistemas grficos para mquinas UNIX. Uma verso completa do
X Window System, conhecida como Xfree86 est disponvel
para Linux.
TCP/IP (Transmission Control Protocol /Internet Protocol).
Com uma conexo Ethernet o Linux permite que seja feita
uma conexo da Internet a uma rede local.
Memria Virtual. O Linux pode usar parte do seu HD como
memria virtual, aumentando assim a capacidade da
memria RAM.
Compatibilidade com o IEEE POSIX. Linux foi desenvolvido
com a portabilidade de software em mente.

B.3

Kernel/Shell

Kernel o ncleo do Sistema Operacional Linux, que permanece


residente na memria. atravs dele que o usurio possui o acesso
aos recursos oferecidos pelo hardware (o computador em si). Todo
o gerenciamento de memria, dispositivos, processos, entre outros
coordenado pelo kernel. Basicamente est dividido em duas partes:
Gerenciamento de dispositivos: supervisiona a transmisso de
dados entre a memria principal e os dispositivos perifricos.
Desta forma, o kernel abrange todos os drivers controladores
de dispositivos que podem ser ligados a um computador.
Gerenciamento de processos: aloca recursos, escalona processos e atende a solicitao de servios dos processos.
261

Odilson Tadeu Valle

Shell o interpretador de comandos do Linux. ele quem


fornece uma interface para que o usurio possa dizer ao Sistema Operacional o que deve ser feito. O shell traduz o comando digitado em chamadas de sistema que so executadas em linguagem
de mquina pelo kernel. Alm disto, fornece um ambiente programvel atravs de scripts.
Existem inmeros shells cada um com ligeiras diferenas entre si. Muitas vezes possvel utilizar vrios shells diferentes em
um mesmo micro rodando Linux, isto porque ele multitarefa e multiusurio, de modo que cada usurio poderia utilizar o shell que lhe
agradar mais. Entre os mais utilizados esto o Bourne Shell, o C
shell e o Korn Shell.

262

Apndice C

Editor vi
C.1

Introduo

O editor vi bastante simples e muito utilizado por ser encontrado


em todas as distribuies Linux. Pode-se optar por um editor um
pouco mais avanado, mas com o inconveniente de encontrar uma
distribuio/instalao onde no dispem-se deste editor. Isto
vlido principalmente para o chamado Linux embarcado onde no
dispomos de memria para outros editores.
O editor vi no objetiva formatar textos: negritos, indentaes,
justificao etc.
Na prtica o vi muito usado para editar textos que no necessitam de formatao em nenhum momento, como por exemplo
cdigos fonte de programas em alguma linguagem de programao,
e que no carreguem o texto com caracteres especiais.
Neste captulo vamos aprender alguns comandos do vi, suficientes para que se entenda o funcionamento do editor e consiga
editar arquivos simples. Um administrador de redes deve constantemente editar os arquivos de configurao dos servidores com rapidez
e segurana e isto perfeitamente factvel com o vi.

Odilson Tadeu Valle

C.2

Os trs modos de operao do vi

O editor vi tem trs modos de operao distintos, que so: modo


insert , modo escape (tambm chamado de modo comando) e
modo last line.
O modo insert usado para a digitao do texto. Neste modo
o vi funciona como uma mquina de escrever, com a diferena de que
pode-se retroceder sobre o texto j digitado para corrigir eventuais
erros. Cada caractere que for digitado aparecer na tela exatamente
como foi digitado.
No modo escape os caracteres comuns (letras, nmeros e
sinais de pontuao) tm um significado especial e quase todos os
caracteres funcionam como comandos; portanto, existem muitos
comandos. Alguns comandos servem para passar para o modo
insert, outros para movimentar o cursor sobre as linhas do texto,
alterar trechos do texto, buscar palavras etc.
No modo last line digita-se os comandos em uma linha especial que aparece no final da tela quando se digita : (dois pontos)
no modo escape. Parte dos comandos do modo escape possuem
similares no modo last line, como por exemplo os comandos de
edio, que ver-se- mais adiante. Os comandos no modo last line
devem ser seguidos por enter, contrariamente ao que acontece no
modo escape.

C.3

Buer

de edio

Quando edita-se um arquivo com o vi, na verdade no se est alterando o arquivo em si. As alteraes feitas so aplicadas em um
buffer (uma rea na memria, que passa a conter o arquivo sendo editado). Quando quiser-se que as alteraes fiquem permanentemente
aplicadas ao arquivo, ser necessrio copiar o contedo do buffer para
o disco, usando o comando write (w) no modo last line. Portanto, se o comando write no for executado antes de deixar o vi,
as alteraes contidas no buffer no sero aplicadas ao arquivo que
264

Editor vi

est no disco.

C.4

Criao e edio de arquivos

Neste livro no pretende-se aprofundar o uso do editor vi. O objetivo


somente atender as necessidades bsicas de um administrador de
rede.
Para criar-se um arquivo simplesmente digita-se vi seguido do
nome do arquivo. Por exemplo:
vi primeiro.arquivo
Aps isto ser aberto o editor com contedo vazio, no modo
comando. Para editar-se qualquer coisa deve-se entrar no modo insero, para isto basta teclar-se a letra i (aparecer  INSERT  na
base da janela). Em seguida digita-se o texto propriamente dito, usando o teclado normalmente.
Para salvar-se o texto deve-se teclar Esc mudando para o
modo comando, e em seguida entra-se no modo last line e salvase com: :w. Assim tem-se o texto salvo.

C.4.1 Alguns comandos teis


Copiando algumas linhas Posiciona-se o cursor na primeira
linha do texto a ser copiado e, no modo de comando, tecla-se
nyy, onde n nmero de linhas que deseja-se copiar. Por
exemplo ao digitar-se 5yy copia-se 5 linhas para o buffer.

Colando o contedo do buer Posiciona-se o cursor na linha


onde pretende-se inserir o texto e, no modo de comando, teclase p (paste) para inserir-se o texto abaixo da linha do cursor
e P para inserir-se o texto acima da linha do cursor.

Excluindo algumas linhas Posiciona-se o cursor no incio do


texto a ser excludo e, no modo de comando, tecla-se ndd
265

Odilson Tadeu Valle

, onde n nmero de linhas que deseja-se excluir. Por exemplo ao digitar-se 3dd apaga-se 3 linhas do texto. Observe que
o texto removido ser armazenado no buffer e poder ser inserido em qualquer outra parte do documento com o comando
p ou P.

Procurar palavras No modo de comando, tecla-se /palavra. O

vi mostrar a primeira ocorrncia da mesma. Para ir para a


prxima ocorrncia tecla-se n (next).

Substituindo uma palavra por outra No

modo
de
comando, tecla-se :s/palavra/outra.
Por exemplo para
subs-tituir-se velha por nova: :s/velha/nova, assim tem-se a
troca da primeira ocorrncia de velha por nova. Para
substituio de todas as ocorrncias no texto deve-se
acrescentar o caractere % no incio do comando. Por exemplo:
:%s/velha/nova

Insero de um texto externo No modo de comando, teclase :r/caminho/e/nome/do/arquivo e o texto do arquivo mencionado ser inserido a partir da posio do cursor.

Salvando com outro nome No modo de comando, tecla-se :w/


caminho/e/nome/do/arquivo.

266

Apndice D

Estrutura de Arquivos e
Diretrios
Existem 4 tipos bsicos de arquivos em Linux :
Arquivo diretrio;
Arquivo convencional;
Arquivo de dispositivo;
Arquivo simblico ou de ligao;
Um arquivo diretrio nada mais do que um tipo de arquivo
contendo informaes sobre arquivos que conceitualmente (e no fisicamente) esto contidos nele. Isso significa que o contedo de seus
arquivos no est armazenado dentro do diretrio. Assim sendo, no
h limite para o tamanho de um diretrio. Teoricamente pode-se colocar no seu diretrio tantos arquivos quanto quisesse, at o ponto de
estourar a capacidade do disco.
Os dados contidos no arquivo diretrio so apenas o nome de
cada arquivo e seu ponteiro para uma tabela de informaes de controle de todos os arquivos do sistema ou tabela de inodes, ver Captulo
4. Esta tabela contm informaes administrativas do arquivo, como

Odilson Tadeu Valle

dados de segurana, tipo, tamanho, datas de acesso e dados que indicam onde ele est gravado no disco.
Quando se usa um arquivo, o sistema operacional consulta o diretrio para verificar se existe no disco um com o nome que se especificou. Em caso afirmativo, o sistema obtm, da tabela as informaes
necessrias para poder manipul-lo. Caso contrrio, o sistema envia
uma mensagem informando que no foi possvel encontrar o arquivo.
Um diretrio pode conter outros diretrios, aos quais chamamse subdiretrios. Um subdiretrio pode conter outros arquivos e subdiretrios, que tambm podem conter arquivos e subdiretrios e assim
por diante. Este um relacionamento pai/filho entre um diretrio e
seus arquivos e diretrios subordinados. Cada diretrio pai guarda informaes sobre os arquivos e diretrios que esto a um nvel abaixo
dele seus filhos.
Um arquivo convencional um conjunto de caracteres presentes em algum meio de armazenamento, como por exemplo um
disco. Ele pode conter texto para uma carta, cdigo de programa ou
qualquer informao armazenada para um futuro uso.
Um arquivo de dispositivo, como um diretrio, no contm
dados. Ele basicamente um ponteiro para um dispositivo perifrico,
como por exemplo uma unidade de disco, um terminal ou uma impressora. Os arquivos especiais associados aos dispositivos perifricos esto localizados no diretrio /dev.
Um arquivo simblico um arquivo convencional que aponta
para outro arquivo em qualquer lugar do sistema de arquivos Linux.

D.1

Diretrios

Todos os arquivos fazem parte de algum diretrio. Assim, eles so


mantidos organizadamente. Se todos os arquivos do sistema fossem armazenados em um mesmo lugar, o Linux levaria muito tempo
para verificar todos os arquivos at encontrar aquele que est procurando. Os diretrios so um meio de oferecer endereos dos arquivos,
de maneira que o Linux possa acess-los rpida e facilmente e os
268

Estrutura de Arquivos e Diretrios

usurios possam organizar seus arquivos separando-os por temas, assuntos etc.
Ao entrar pela primeira vez numa conta, j se est em um subdiretrio do sistema Linux, chamado seu diretrio de entrada (home
directory). A menos que se crie alguns subdiretrios em sua conta,
todos os seus arquivos sero armazenados no diretrio de entrada.
Teoricamente, pode-se fazer isso, mas a manuteno dos arquivos
ser mais eficiente ao criar seu prprio sistema se subdiretrios. Assim ficar mais fcil manter o controle de seus arquivos porque eles
estaro agrupados em diretrios por assunto ou por tipo. O Linux
tambm realiza buscas de maneiras mais eficiente em diretrios pequenos que nos grandes.

D.1.1 Diretrio de Entrada


O diretrio de entrada aquele em que o usurio colocado quando
abre uma sesso em um sistema Linux. Esse diretrio tem o mesmo
nome que o nome de login. Pode-se pensar na conta como uma
verso em miniatura do sistema de arquivos do Linux. No alto do
sistema pessoal de arquivos, em vez do diretrio raiz, est o diretrio
de entrada. Abaixo dele estaro os subdiretrios criados, que podem,
por sua vez, se ramificar em subdiretrios e/ou arquivos.
Os diretrios de entrada dos usurios so iguais a qualquer
outro diretrio de um diagrama de sistema de arquivos. Entretanto,
sendo o diretrio principal da conta, o diretrio de entrada tem um
status especial. Sempre que se entra no sistema, o Linux define uma
varivel chamada HOME que identifica o diretrio de entrada. O
Linux usa o valor da varivel HOME como ponto de referncia para
determinar quais arquivos e diretrios do sistema de arquivos pode-se
acessar e tambm para orientar-se para onde levar o usurio ao mudar
de diretrio corrente.
269

Odilson Tadeu Valle

D.1.2 Diretrios Corrente


O diretrio corrente, ou de trabalho (working directory), o diretrio
em que se est em um determinado momento. Por exemplo, quando
se entra no sistema, o diretrio corrente sempre o diretrio de entrada. Ao passar para um de seus subdiretrios, este passar a ser o
diretrio corrente.
Durante toda a sesso, o Linux mantm o controle do diretrio
corrente. Todos os comandos so executados sobre o diretrio corrente, a menos que se especifique outro. Por exemplo, qualquer arquivo ou subdiretrio que se criar ser em princpio criado no diretrio corrente. Sempre que se digitar ls, ser apresentada uma lista
dos arquivos e diretrios do diretrio corrente.
Todos os diretrios do Linux contm um arquivo chamado .
(ponto), que um arquivo especial que representa o diretrio corrente (um sinnimo). Sempre que se quiser referir-se ao diretrio
corrente, pode-se faz-lo usando um ponto .. Outro arquivo especial, chamado .. (dois pontos) representa o diretrio pai do diretrio
corrente (o diretrio ao qual o diretrio corrente pertence). Quando
precisar se referir ao diretrio pai do diretrio corrente, pode-se usar
dois pontos .. em vez do nome do diretrio.
Quando se digita um comando que opera sobre um arquivo ou
diretrio, precisa-se especificar o nome do arquivo ou do diretrio
desejado. O caminho, de um arquivo ou diretrio a lista de todos os
diretrios que formam a ligao entre ele e o diretrio raiz.
S possvel identificar individualmente cada arquivo e diretrio por seu nome e caminho, porque seu nome pode ser idntico ao de outro arquivo em outro local do sistema. Por exemplo,
suponha que haja duas contas de usurio, chamadas luciene e alfredo,
cada uma contendo um subdiretrio chamado vendas. O Linux pode
diferenciar esses dois subdiretrios por seus caminhos. Um deles seria /.../luciene/vendas e o outro seria /.../alfredo/vendas,
onde as reticncias representam os diretrios intermedirios. Embora
se possa se referir a um arquivo ou diretrio dentro de seu diretrio de
entrada usando apenas seu nome, o Linux sempre interpretar o nome
270

Estrutura de Arquivos e Diretrios

do arquivo ou diretrio como seu nome e caminho inteiro, porque ele


mantm o controle de seu diretrio corrente e pode preencher a parte
do nome de caminho que falta.
Alm do caminho absoluto, tambm pode-se usar o caminho
relativo, de um arquivo ou diretrio. O caminho relativo no comea
com o diretrio raiz, mas com o diretrio mais prximo do diretrio
cujo caminho est sendo definido. Para especificar um caminho relativo para seu diretrio de entrada, pode-se comear o caminho com
$HOME ou com um (til), que um sinnimo para $HOME. Por exemplo, se o diretrio de entrada maria, a varivel HOME ter o valor
/.../maria, onde as reticncias representam os diretrios entre o diretrio raiz (/) e o diretrio maria. Sempre que se digitar $HOME ou
como parte de um nome de caminho, o Linux o interpretar como
o nome de caminho completo de seu diretrio de entrada.
Para especificar um caminho a partir do diretrio corrente,
pode-se iniciar o caminho com um . (que representa o diretrio
corrente), ou com o nome do primeiro subdiretrio naquele caminho.
O ponto opcional neste caso porque se o nome de caminho no
comear com uma /, o Linux considera que o incio se dar pelo o
diretrio corrente.

D.2

Substituio do Nome do Arquivo

Trs caracteres especiais permitem a referncia a grupos de arquivos


ou diretrios em uma linha de comando. Estes caracteres so chamados Meta caracteres ou Coringas.
Asterisco (*)
O * substitui qualquer conjunto de caracteres.
Ponto de interrogao (?)
O caracter ? substitui qualquer caracter.
271

Odilson Tadeu Valle

Colchetes ([ ])
O smbolo [] contm uma lista de caracteres. Um dos caracteres dentro do colchetes ser substitudo. Um hfen separando os
caracteres que esto entre colchetes indica um intervalo. Um ! dentro do colchetes indica o sentido da procura invertido. Esses caracteres especiais poupam tempo de digitao. O mais importante que
eles podem ser usados para fazer referncia a arquivos cujo nome no
se conhece exatamente.
Exemplos :
1. Lista todos os arquivos com extenso .new:
ls *.new
File.new arquivo.new
2. Lista todos os arquivos cujo nome termine com um nmero
entre 1 e 5:
ls *[1-5]
file1 arquivo3 dir5
3. Lista todos os arquivos cujo nome tem trs caracteres e
comeam com f:
ls f??
fig fin

D.3

Marcao do Caracter Especial

Para usar literalmente um caractere especial sem que o shell interprete seu significado ele deve ser marcado. O shell trata um caractere especial marcado como um caractere normal.

Aspas - " Quando se coloca um caractere especial entre aspas

 , o Shell ignora todos os caracteres especiais exceto o cifro


($), o acento grave () e a barra invertida (\).

272

Estrutura de Arquivos e Diretrios

Apstrofe ' Apstrofe mais restritivo. Todos os caracteres especiais entre apstrofes so ignorados.

Barra invertida \ Geralmente, a barra invertida faz o mesmo


que colocar um caractere entre apstrofes. Quando uma barra
invertida usada, ela deve preceder cada caractere a ser marcado.

273

Apndice E

Manipulando Arquivos e
Diretrios
E.1

Introduo

A funo essencial de um computador armazenar informaes (arquivos) e catalog-los de forma adequada em diretrios, fornecendo,
se possvel, algum esquema de segurana de modo que pessoas no
autorizadas no tenham acesso a arquivos importantes.
O objetivo deste captulo aprender como manipular arquivos
e diretrios no Linux. Saber copiar, mover, exibir o contedo de um
arquivo, e localizar um arquivo so algumas das atividades que sero
vistas neste captulo.
Os comandos aqui apresentados no so a totalidade dos comandos disponveis, mas certamente so suficientes para executar
funes tpicas e usuais de um programador ou de um usurio de
aplicativos em ambiente Linux.

Odilson Tadeu Valle

E.2

Comandos para Arquivos e Diretrios

pwd
O comando pwd (print working directory) no possui nenhuma opo
ou argumento. Este comando mostra o nome do diretrio corrente ou
de diretrio de trabalho (working directory). Pode-se utiliz-lo para
situar-se no sistema de arquivos. Por exemplo, sempre til verificar
o diretrio corrente antes de criar ou remover arquivos e diretrios.
Do mesmo modo, o pwd til para confirmar o diretrio corrente
aps vrias trocas de diretrios.

mkdir
Nos diretrios pode-se agrupar informaes afins, isto , arquivos que
possuem alguma inter-relao. O nome do diretrio deve ser significativo e permitir um acesso e uma localizao rpida dos arquivos
armazenados no seu sistema de arquivos.
O comando mkdir (make directory) utilizado para criar diretrios. Os nomes dos diretrios a serem criados so passados como
argumentos para o comando. Estes nomes podem ter at 255 caracteres, e devem ser nicos, isto , no pode haver dois diretrios com
mesmo nome dentro de um mesmo subdiretrio, nem mesmo um arquivo e um diretrio iguais em um mesmo subdiretrio.
Opes:
-m Especifica o modo de permisso de acesso para o diretrio
que est sendo criado;
-p Cria os diretrios pai citados no nome do diretrio que est
sendo criado.
Exemplos:
1. Criar um diretrio chamado teste com o seguinte modo de permisso 711.
276

Manipulando Arquivos e Diretrios

mkdir -m 711 teste


ls-l
total 1
drwxx x 2 guest users 1024 May 15 21:27 teste/
2. Criar um diretrio chamado curso com um diretrio filho
chamado aula1.
mkdir-p curso/aula1
ls-l
total 2
drwxx x 2 guest users 1024 May 15 21:27 teste/
drwxr- xr- x 3 guest users 1024 May 15 21:33 curso/
ls-l curso
total 1
drwxr- xr- x 2 guest users 1024 May 15 21:33 aula1/

ls
ls [AaCFpdlmRrstucx] [nomes]
Normalmente o contedo de um diretrio listado em ordem
alfabtica, um item por linha. As diversas opes do comando ls
permitem adaptar o formato da listagem.
Se nada for especificado em nomes todos os itens do diretrio
corrente so listados. Entretanto em nomes possvel determinar
mscaras (filtros) para selecionar padres de nomes de itens a serem
listados.
Principais opes:
-a All. Lista todos os itens , inclusive os que comeam com
pontos;
-l Long. Lista o contedo de um item que diretrio;
277

Odilson Tadeu Valle

-R Recursive. Lista todos os diretrios encontrados e seus subdiretrios;


-t Time. Ordena os itens por hora/data de modificao;
Exemplo:

ls -la

cd
cd <nome-do-diretrio>
O comando cd (change directory) utilizado para mudar o
diretrio de trabalho corrente.
No h opes para este
comando. O nome do novo diretrio de trabalho indicado em
nome-do-diretrio. Se no for especificado um diretrio, cd far
com que o seu diretrio de entrada (home directory) se torne o seu
diretrio corrente. Se nome-do-diretrio for um subdiretrio do
seu diretrio corrente, basta informar o nome dele. Caso contrrio
pode-se informar o nome relativo ou absoluto do diretrio para o
qual se deseja mudar.

touch
touch <arquivo>
Cria um arquivo vazio de nome arquivo.
Exemplo:
Criar um arquivo vazio de nome teste.arquivo

touch teste.arquivo

echo
echo "texto a ser inserido> <arquivo>
278

Manipulando Arquivos e Diretrios

Insere o texto a ser inserido ao final do arquivo. O comando


echo tambm pode ser utilizado para mostrar (ecoar) valores de variveis e/ou textos em shell scripts.
Exemplo:

echo "teste texto> teste.arquivo

cat
cat [svte] <arquivos>
O comando cat mostra o contedo de arquivos (ou da entrada
padro), apresentado-o na tela (de fato, na sada padro). possvel
utilizar o cat para criar, exibir e juntar arquivos. Quando utiliza-se
o cat para concatenar arquivos, os arquivos da origem permanecem
intactos.
Exemplo: Mostrar o contedo do arquivo teste.arquivo:

cat teste.arquivo curso


teste texto

cp
cp <arquivo-origem> <arquivo-destino>
O comando cp (copy) copia, isto , cria uma cpia de um arquivo com outro nome ou em outro diretrio sem afetar o arquivo
original. Pode-se usar esse comando para criar cpias de segurana
de arquivos importantes ou para copiar arquivos que se queira modificar. Se h algum arquivo que se queira ter em mais de um diretrio,
pode-se usar o comando cp para copi-lo para outros diretrios.
Na linha de comando, arquivo-origem o nome do arquivo que
se quer copiar e arquivo-destino o nome que ser dado cpia.
Lembre-se: se fizer uma cpia de um arquivo no mesmo diretrio,
ela no poder ter o mesmo nome do arquivo-origem. Com este
279

Odilson Tadeu Valle

comando pode-se acidentalmente perder arquivos se j existir um arquivo com o nome arquivo-destino, neste caso o comando cp escreve o novo arquivo por cima do antigo.
Exemplo: Copiar o arquivo arquivo.teste para teste:

cp arquivo.teste teste

mv
mv <arquivo-origem> <arquivo-destino>
O comando mv (move) funciona com arquivos da mesma
maneira como funciona com diretrios. Pode-se usar mv para
renomear um arquivo ou para mov-lo para outro diretrio,
dependendo dos argumentos utilizados.
Na linha de comando, arquivo-origem o nome do arquivo
cujo nome se deseja mudar, e arquivo-destino o novo nome para
este arquivo. Se arquivo-destino j existir, mv primeiro remove
o arquivo j existente e depois renomeia arquivo-origem com o novo
nome. Para evitar este problema, tem-se duas opes:
Examinar o contedo do diretrio antes de renomear um arquivo, para verificar se o novo nome a atribuir j existe.
Usar a opo -i (interactive) que permite uma confirmao da
remoo de um arquivo entes de o comando mv remov-lo.
Se arquivo-destino for o nome de um diretrio presente no
diretrio corrente, ento o comando mv entende que arquivoorigem deve ser movido para o diretrio arquivo-destino, e no
que este deve ser eliminado e substitudo por arquivo-origem.
Se objetiva-se mover um arquivo para um novo diretrio, o
arquivo ter o mesmo nome de arquivo-origem, a menos que se especifique o novo nome tambm, dando o nome do caminho (relativo
ou absoluto) antes do nome do arquivo.
280

Manipulando Arquivos e Diretrios

Exemplo: Mover o arquivo arquivo.teste para o diretrio teste


interativamente:

mv -i arquivo.teste teste

ln
ln [-opes] fonte destino
Uma ligao uma entrada em um diretrio que aponta para
um arquivo. O Sistema operacional cria a primeira ligao a um arquivo quando este criado. O comando ln geralmente usado para
criar mltiplas referncias ao arquivo em outros diretrios. Uma ligao no cria uma cpia de um arquivo, ela simplesmente outra indicao para os mesmos dados, ver Captulo 4. Quaisquer alteraes
em um arquivo so independentes do nome usado para se referir ao
arquivo, ou seja, alterando o arquivo ou a ligao o efeito o mesmo.
As ligaes no podem ser feitas entre sistemas de arquivos
distintos, a menos que a opo -s seja usada. Esta opo cria uma
ligao simblica que um arquivo que contm o nome do caminho
do arquivo ao qual ele est ligado.
Opo:

-s Permite a construo de um arquivo de ligao simblica


para ligar um arquivo em um outro sistema de arquivos. Um arquivo
de ligao simblica contm o nome absoluto do arquivo no outro
sistema de arquivos.
Exemplo:
Criar uma ligao simblica para o arquivo teste chamado
slink:

ln -s arquivo.teste slink
ls -l
Notas: Quando se liga um arquivo a outro, no est criando
um novo arquivo, mas simplesmente dando ao arquivo antigo outro
281

Odilson Tadeu Valle

endereo. As mudanas feitas no arquivo ou em uma de suas ligaes


afetam tanto o arquivo como todas as suas ligaes.
As permisses so as mesmas para todas as ligaes de um
arquivo. Alterar as permisses de uma das ligaes implica em alterar
as permisses de todas as ligaes automaticamente.
As ligaes criadas com ln podem ser removidas com rm. Isto
no significa que o arquivo original ser removido.

rm
rm [ -opes ] arquivo(s)
O comando rm remove o arquivo e/ou as ligaes. Quando a
ltima ligao removida, o arquivo no pode mais ser acessado e
o sistema libera o espao ocupado pelo arquivo para outro uso. Se o
arquivo for de ligao simblica, a ligao do arquivo removida.
Para remover um arquivo exigida a permisso de gravao do
diretrio pai do arquivo. Entretanto no exigido o acesso de leitura
ou gravao ao arquivo. Os caracteres especiais podem ser usados
para se referir a vrios arquivos sem indicar cada nome separadamente.
Opes :

-f Fora a remoo de arquivos com proteo de gravao.


-r Remove recursivamente o diretrio citado e seus subdiretrios.

nd
find diretrios [expresso]
O comando find procura recursivamente por arquivos em diretrios do sistema de arquivos.
282

Manipulando Arquivos e Diretrios

O argumento diretrios especifica em quais diretrios a busca


deve ocorrer. A busca recursiva faz com que a busca ocorra no apenas nos diretrios especificados, mas em todos os subdiretrios dos
diretrios especificados, nos subdiretrios dos subdiretrios deles etc.
O argumento expresso consiste em um ou mais argumentos, que podem ser um critrio de busca ou uma ao que o find deve tomar,
ou ainda ambos os casos. Se vrios argumentos forem especificados,
eles devem ser separados por espao em branco.
O comando find tambm possui um grande nmero de opes
que podem ser utilizados na busca por arquivos em um sistema de
arquivos. Aqui sero explicitados somente os principais.
Expresso:

-iname arquivo Seleciona os arquivos com nomes que correspondam a arquivo, ignorando (i) maisculas e minsculas,
sendo que arquivo pode ser um nome de arquivo, ou um padro
de nomes de arquivos (especificado com o uso de *), mas deve
ser precedido de uma barra invertida;

-user nome Seleciona arquivos que pertencem ao usurio nome;


-exec cmd '{ }' \ Executa o comando cmd nos arquivos selecionados pelo comando find. Um par de chaves representa cada
nome de arquivo que est sendo avaliado; Um ponto e vrgula
marcado encerra a ao;

! Inverte o sentido do argumento que o sucede. Por exemplo,

!-iname arquivo seleciona um arquivo cujo nome no corresponde a arquivo;

-o Permite uma seleo disjuntiva de arquivos, especificada


por dois argumentos distintos.
Isto , quando usamos
dois argumentos para especificar a busca, o arquivo
selecionado se satisfizer ambos os critrios de busca. Com -o
pode-se selecionar arquivos que satisfazem um ou outro dos
argumentos especificado para a busca. Por exemplo, -iname
arquivo-o-user nome selecionar arquivos que possuem
283

Odilson Tadeu Valle

nomes correspondentes a arquivo ou cujo usurio seja


correspondente a nome.
Exemplos :
1. Encontrar o arquivo teste.arquivo a partir do seu diretrio base,
imprimir os caminhos:

find

-iname teste.arquivo

./curso/aula1/teste.arquivo
./teste.arquivo
2. Encontre todos os seus arquivos a partir do diretrio curso:

find /curso -user aluno


/home/guest/curso/aula1
...
3. Encontrar e apagar todos os seus arquivos teste.arquivo:

find ~-iname teste.arquivo -exec rm {}


Notas: Como o comando find verifica todos os arquivos em
um diretrio especificado em todos os subdiretrios contidos
nele, o comando pode tornar-se demorado.

grep
grep [-opes] `sequncia de caracteres'
arquivo(s)
O comando grep procura uma sequncia de caracteres em um
ou mais arquivos, linha por linha. A ao especificada pelas opes
executada em cada linha que contm a sequncia de caracteres procurada.
Se mais de um arquivo for indicado como argumento do comando, o grep antecede cada linha de sada que contm a sequncia
284

Manipulando Arquivos e Diretrios

de caracteres com o nome do arquivo e dois pontos. O nome do arquivo mostrado para cada ocorrncia da sequncia de caracteres em
um determinado arquivo.
Opes :

-i Ignora maisculas ou minsculas;


-n Mostra o nmero de linhas com o output das linhas que
contm a sequncia de caracteres;
-v Anlise contrria. Mostra todas as linhas que no contm
a sequncia de caracteres.
Exemplos:
1. Procurar a sequncia root no arquivo /etc/passwd:

grep root /etc/passwd


2. Procurar a sequncia root em todos os arquivos do diretrio
/etc, independente de maisculas ou minsculas:

grep -i root /etc/*

more/less
So paginadores para visualizao em tela. Quando usa-se o cat
para ver o contedo de um arquivo, e se o mesmo for muito extenso,
tem-se dificuldade em ver o incio do mesmo. Com o more/less
possvel navegar pelo contedo dos arquivos ou da sada padro.
Exemplo: more /etc/passwd

head e tail
Mostram na tela as 10 primeiras ou 10 ltimas linhas de um arquivos,
respectivamente. Muito teis para anlise de log's.
Opes:

-n num Muda a quantidade de linhas a serem apresentadas.


Por exemplo -n 30 mostra 30 linhas do arquivo.
285

Odilson Tadeu Valle

-f Atualiza continuamente o contedo do arquivo, ou seja, se


o arquivo estiver sendo modificado as alteraes aparecero na tela.
Exemplos:

tail -n 20 /etc/passwd
head -n 10 /etc/passwd

gzip e gunzip
Compacta e descompacta arquivos, respectivamente. Um nico por
vez, mudando a extenso do mesmo.
Exemplos:

gzip teste.arquivo.2
ls -l
gunzip teste.arquivo.2.gz
ls -l

tar
tar (abreviatura de Tape ARchive), um formato de arquivamento
de arquivos. Apesar do nome tar ser derivado de tape archive, o
seu uso no se restringe a fitas magnticas. Ele se tornou largamente
usado para armazenar vrios arquivos em um nico, preservando informaes como datas e permisses. Normalmente produzido pelo
comando tar.
tar tambm o nome de um programa de arquivamento desenvolvido para armazenar (backup) e extrair arquivos de um arquivo
tar (que contm os demais) conhecido como tarfile ou tarball.
O primeiro argumento para tar deve ser uma das seguintes opes:
Acdrtux, seguido por uma das seguintes funes adicionais. Os argumento finais do tar so os nomes dos arquivos ou diretrios nos quais
eles podem ser arquivados. O uso de um nome de diretrio, implica
sempre que os subdiretrios sob ele, sero includos no arquivo.
286

Manipulando Arquivos e Diretrios

Usando o tar
O que o gzip no consegue fazer, o tar (Tape ARchives) faz. Ele
um aplicativo capaz de armazenar vrios arquivos em um s. Porm,
no capaz de compactar os arquivos armazenados. Como possvel
notar, o tar serve de complemento para o gzip e vice-versa. Por
isso, foi criado um parmetro no tar para que ambos os programas
possam trabalhar juntos. Assim, o tar junta os arquivos em um s.
Este arquivo, por sua vez, ento compactado pela gzip.
O tar tambm consegue gravar a propriedade e as permisses
dos arquivos. Ainda, consegue manter a estrutura de diretrios original (se houve compactao com diretrios), assim como as ligaes
diretas e simblicas.
A sintaxe do tar :

tar [parmetros] [-f arquivo] [arquivos...].


Parmetros principais:

-c Cria um novo arquivo tar;


-p Mantm as permisses originais do(s) arquivo(s);
-r Acrescenta arquivos a um arquivo tar;
-t Exibe o contedo de um arquivo tar;
-v Exibe detalhes da operao;
-x Extrai arquivos de um arquivo tar;
-z Comprime o arquivo tar resultante com o gzip;
-f Especifica o arquivo tar a ser usado.
A seguir, mostram-se exemplos de utilizao do tar. Em alguns parmetros o uso de - (hfen) no necessrio.

tar -cvf arq.tar arq1 arq2


tar -czvf arq.tgz *
287

Odilson Tadeu Valle

tar -rf arq.tar arq*


tar -tzf arq.tar
tar -xv -f arq.tar

288

Apndice F

Comandos Bsicos
F.1

Introduo

Certos comandos so interativos e outros no-interativos. Comandos interativos so aqueles que aps serem executados, exigem que
algumas perguntas sejam respondidas para que possam prosseguir.
Comandos no interativos simplesmente executam os comandos sem
nada perguntar e retornam linha de comando do Linux.
Exemplos de comandos no interativos:

ls Exibe lista do contedo do diretrio corrente.


date Exibe a data e hora do sistema.
cal <ano> Exibe calendrio do ano especificado.
who Exibe lista de todos os usurios ativos no sistema.
clear Limpa a tela.
Exemplos de comandos interativos:

passwd Modifica a senha.


ftp Permite transferncia de arquivos.

Odilson Tadeu Valle

F.2

Ciclo de Execuo do Comando

O shell analisa a linha do comando separando seus vrios componentes com o uso de espaos em branco. Este procedimento conhecido como parsing (anlise), e composto dos seguintes passos:
1. O shell examina se h algum caractere especial a ser interpretado na linha de comando;
2. Supondo que os caracteres at o primeiro branco se referem
a um comando, o shell procura um arquivo executvel (programa) com o mesmo nome;
3. Se o shell localiza o programa, ele verifica se o usurio que
fez o pedido tem permisso de acesso para usar o comando;
4. O shell continua a examinar o resto da linha de comando para
ver a formatao;
5. Finalmente, ele informa ao kernel para executar o programa,
passando todas as opes e argumentos vlidos para o programa;
6. Enquanto o kernel copia o arquivo executvel do disco para a
memria e executa-o, o shell permanece inativo at que o programa tenha encerrado. O programa em execuo na memria
chamado de processo;
7. Quando o processo termina de ser executado, o controle retorna
ao shell que exibe novamente o prompt para avisar que est
pronto para o prximo comando;

F.3

Comandos

Login
Por ser um Sistema Operacional que suporta vrios usurios (multiusurio), antes de tudo, preciso se identificar. O Linux ento se
290

Comandos Bsicos

encarregar de permitir ou no seu acesso verificando sua senha, se


estiver correta libera o diretrio de entrada e executa arquivos de inicializao locais e o interpretador apropriado. Aps este processo
pode-se executar os comandos do Linux.
Quando o terminal estiver ligado, provavelmente ser apresentado uma mensagem do sistema da seguinte forma:

Login: Isto significa que o sistema est esperando para que o


usurio se identifique com o nome de usurio que lhe foi concedido
pelo Administrador de Sistema junto com uma senha de acesso. Aps
digitar o nome de usurio, pressione ENTER. Ser apresentada uma
nova mensagem:
Password: Esta pede que seja digitada a senha de usurio.
Nota-se que a medida que forem digitados os caracteres, eles no
aparecero no vdeo por medidas de segurana.
Se algo der errado (sendo novamente apresentado o sinal de
login), tenta-se novamente, certificando-se de ter digitado o nome de
usurio e a senha exatamente como recebeu do Administrador pois
o Linux diferencia as letras maisculas das minsculas. Isto quer
dizer que para o Linux A (letra a maiscula) diferente de a (letra
a minscula). Esta uma dica que serve no apenas para iniciar a
sesso, mas tambm para todos os comandos Linux.
Tendo o usurio se identificado com o nome da conta e a senha
(se esta existir, pois existem contas criadas especialmente para uso
sem senha), o Linux checa em um arquivo de configurao pelo nome
da conta e a senha correspondente devidamente encriptada. Estando
ambas registradas e corretas, o Sistema Operacional permite o acesso
ao usurio executando o shell indicado tambm neste arquivo.
O shell providencia uma interface de comunicao entre o
kernel e o usurio. Esta interface consiste de uma linha de comando
(ou prompt) na qual deve ser digitado o comando por extenso seguido
por seus parmetros (se tiver). Em uma linha de comando pode-se ter
mais de um comando em seqncia para serem executados.
O Linux aceita e executa um comando quando, ao terminarmos
de digitarmos o comando, pressionarmos a tecla ENTER, RETURN
291

Odilson Tadeu Valle

ou - (varia de computador para computador).


Caso seja encontrado algum erro na digitao do comando
antes que a tecla ENTER seja pressionada, pode-se corrig-lo
utilizando as teclas de direo e para posicionar-se o cursor na
posio em que o erro foi cometido. Cursor o smbolo grfico que
aparece logo aps a linha de comando e que se movimenta a medida
em que caractere so digitados e aparecem na tela.

Logout
Este comando permite sair da seo shell, ou seja, desconectar o
usurio do sistema.

Reboot
Este comando equivalente init 6 e com ele pode-se reiniciar o
sistema, sem desligamento do hardware.

Halt
Este comando equivalente shutdown -r now e permite desligar
o sistema.

Man
Pginas de manual ou man pages so pequenos arquivos de ajuda que
podem ser invocados pelo comando man a partir de linha de comando
de sistemas baseados em Unix e Linux. A forma de invocar a ajuda
:

man [<seo>] <nome-da-pgina>


Exemplo:

man ls

292

Apndice G

Redirecionamentos
G.1

Entrada e Sada dos comandos

Quase todos os comandos do Linux usam uma entrada e produzem


uma sada. A entrada para um comando so os dados sobre os quais
o comando ir operar. Esses dados podem vir de um arquivo especificado pelo usurio, de um arquivo de sistema do Linux, do terminal
(do teclado) ou da sada de outro comando. A sada de um comando
o resultado da operao que ele realiza sobre a entrada. A sada do
comando pode ser impressa na tela do terminal, enviada a um arquivo,
ou servir de entrada para outro comando.
O objetivo deste captulo o aprendizado da manipulao de
entradas e sadas, para poder criar e ler arquivos durante o uso de
alguns comandos, e tambm aprender a encadear comandos, fazendo
com que um comando utilize como entrada a sada de outro.

G.2

Entrada e Sada Padro

Alguns comandos tm apenas uma fonte possvel para a entrada, por


exemplo o comando date sempre utiliza o sistema interno de relgio para indicar a data e hora. Outros comandos exigem que se

Odilson Tadeu Valle

especifique uma entrada. Se no especificar uma fonte de entrada


juntamente com esses comandos, o Linux considera que ela vir do
teclado, isto , ele esperar que se digite a entrada. Por isso o teclado
chamado de entrada padro.
As informaes do teclado so utilizadas no processamento, e
para sua facilidade o Linux tambm ecoa (apresenta na tela) o que for
digitado. Desta forma, pode-se certificar de ter digitado o comando
corretamente.
Normalmente, quase todos os comandos enviam suas sadas
para a tela do terminal, que chamada de sada padro. Como com as
entradas, tambm possvel redirecionar as sadas dos comandos para
outro destino que no a sada padro, por exemplo para arquivos ou
para a entrada de outros comandos.
Alguns comandos, como rm, mv e mkdir no produzem nenhuma sada. Entretanto esses comandos e muitos outros podem apresentar mensagens de erro na tela se no obtiverem sucesso no seu
processamento. Isto ocorre porque a tela do terminal tambm a
sada de erros padro, isto , o local para onde so enviadas as mensagens de erro. As mensagens de erro dos comandos no devem ser
confundidas com as sadas dos comandos.
O shell do Linux redireciona a fonte e o destino da entrada,
de modo que o comando no percebe se a entrada padro est direcionada para o teclado do terminal ou para um arquivo. Da mesma
forma, o comando no percebe se a sada padro est direcionada
para a tela do terminal, para um arquivo ou para a entrada de outro
comando.

G.3

Redirecionamento de Entrada e Sada

H trs mtodos bsicos para redirecionar a entrada ou sada de um


comando. Uma delas simplesmente fornecer como argumento para
o comando o nome do arquivo que deve ser usado como entrada ou
sada para o comando. Este mtodo funciona com alguns comandos,
como por exemplo cat, pg e outros. J comandos como o pwd no
294

Redirecionamentos

podem receber um arquivo como argumento. Mesmo com os filtros


(classe de comandos a qual pertencem o cat e o pg) nem sempre
possvel especificar a sada.
Outro mtodo para redirecionar a entrada ou sada utilizar
os smbolos de redirecionamento. Como muitos comandos podem
receber arquivos de entrada sob a forma de argumentos, os smbolos
de redirecionamento so mais utilizados para direcionar a sada dos
comandos.
Um terceiro mtodo de redirecionar entradas e sadas usando
pipes, que enviam a sada de um comando para outro, ou seja, a
sada de um comando serve como entrada para outro comando.

G.3.1 Smbolos de redirecionamento


Os caracteres especiais utilizados na linha do comando para fazer o
shell redirecionar a entrada, sada ou erro do programa esto listados e descritos a seguir. O shell interpreta esses caracteres antes do
comando ser executado.

G.3.2 Redirecionamento de entrada


comando <arquivo
O smbolo <(menor que) faz com que a entrada padro seja
direcionada a um arquivo. Em muitos casos, especificar <funciona
exatamente como especificar o nome do arquivo como argumento do
comando. Por exemplo:

cat Arquivo.teste
cat <Arquivo.teste
produziro exatamente o mesmo efeito.

G.3.3 Redirecionamento de sada


comando >arquivo ou comando arquivo
295

Odilson Tadeu Valle

Os smbolos > e redirecionam a sada de um comando para


um arquivo. O smbolo > escreve a sada do comando dentro do arquivo que se indicar, quer esse arquivo exista ou no, sendo que o
contedo do arquivo j existente ser substitudo. O smbolo , ao
contrrio, anexa ao arquivo a sada do comando indicado em vez de
substituir os dados que ele j continha.
Exemplos :
1. Guardar no arquivo data.de.hoje a sada do comando date:

date > data.de.hoje


cat data.de.hoje
2. Acrescentar ao arquivo data.de.hoje a sada do comando
who:

who  data.de.hoje
cat data.de.hoje

G.3.4 Pipes
Os smbolos de redirecionamento permitem realizar mais de uma operao em um mesmo arquivo. Somente com esses smbolos j se tem
condies de realizar tudo o que quiser sobre um arquivo. Suponha,
entretanto, que se queira fazer um conjunto de operaes diferentes
em um mesmo arquivo. Cada operao implicaria a criao de um
novo arquivo, sendo que o nico propsito desses arquivos seria servir
como entrada para outro comando. Entretanto, tudo o que importa
o resultado final. Para situaes como essas o Linux possui outra
maneira de redirecionar entradas e sadas: os pipes.

comando 1 | comando 2
Este smbolo, |, pode ser usado para enviar a sada de um
comando para a entrada de outro. Pode-se usar vrios pipes em
uma linha de comando, de maneira que possvel combinar tantos
comandos quantos necessrios, bastando intercal-los por smbolos
296

Redirecionamentos

de pipe. Uma sequncia de comandos encadeados desta maneira


chamada de pipeline.
Existem algumas regras bsicas para compor um pipeline em
uma linha de comandos Linux. Essencialmente essas regras so o
endosso da intuio de um usurio um pouco mais experiente, que
facilmente percebe que em um pipeline no pode haver vazamentos nem entupimentos do pipe, isto , no pode haver no meio
do pipeline um comando que no produza sadas (como o caso
do mkdir ou rm), ou um comando que no aceite entradas (como o
caso do date e pwd). O primeiro comando do pipeline deve ser um
produtor de sada, obviamente.
Exemplos :
1. Contar o nmero de arquivos que comeam com a sub-string
arq no diretrio corrente:

ls | grep arq | wc -l
3
2. Contar o nmero de usurios que esto presentes no sistema
neste momento:

who | wc -l
2

G.3.5 Redirecionamentos mltiplos


tee [iau] arquivo
O comando tee divide a sada de um comando e redirecionaa para dois destinos: para um arquivo especificado e para a sada
padro. O comando tee em geral utilizado como um pedao de
um pipeline. Se no estiver em um pipeline, o comando tee se
comporta de maneira semelhante ao comando cat: recebendo linhas
na entrada e ecoando-as na sada.
Opes:
297

Odilson Tadeu Valle

-a Faz a sada ser anexada aos arquivos especificados, em vez de


substituir seus contedos.
-i Ignora o sinal de interrupo.
Exemplos :
1. Contar o nmero de arquivos que comeam com a string arq
no diretrio corrente e guardar os arquivos encontrados no arquivo nomes:

ls | grep arq | tee nomes | wc -l


3
cat nomes arq
arq2
arquivo
2. Contar o nmero de ocorrncias da cadeia Linux no arquivo
arq2, guarde as ocorrncias no arquivo resp:

cat < arq2 | grep Linux | tee resp | wc -l


2
cat resp

G.3.6 Redirecionamento de erro padro


A mensagem de erro gerada por um comando normalmente direcionada pelo shell para a sada de erro padro, que a mesma da
sada padro. A sada de erro padro tambm pode ser redirecionada
para um arquivo, utilizando o smbolo <. Uma vez que este smbolo tambm utilizado para redirecionar a sada padro, necessrio
fazer uma distino mais detalhada para evitar ambiguidade.
Os descritores de arquivos a seguir especificam a entrada
padro, sada padro e sada de erro padro:

0 Entrada padro;
298

Redirecionamentos

1 Sada padro;
2 Sada de erro padro.
O descritor do arquivo deve ser colocado imediatamente antes
dos caracteres de redirecionamento. Por exemplo, 1> indica a sada
padro, enquanto 2> indica a sada de erro padro. Assim, o
comando mkdir temp 2>errfile faz o shell direcionar qualquer
mensagem de erro para o arquivo errfile. As indicaes da
entrada padro (0>) e sada padro (1>) so necessrias apenas para
evitar ambiguidade.
Exemplo :

find /-name xinetd.conf >find.res 2>find.erro


cat find.resp
cat find.erro

299

Referncias Bibliogrcas
[1] Ken O. Burtch. Scripts de Shell Linux com Bash. Editora Cincia Moderna, Rio de Janeiro, Brasil, 2004.
[2] Felipe Costa. Ambiente de Rede Monitorado com Nagios e
Cacti. Editora Cincia Moderna, Rio de Janeiro, Brasil, 2008.
[3] George Coulouris, Jean Dollimore, and Tim Kindberg.
Sistemas Distribudos, Conceitos e projeto. Bookman, quarta
edio edition, 2007.
[4] Rubem E. Ferreira. Linux Guia do Administrador do Sistema.
Novatec Editora Ltda., So Paulo, Brasil, 2003.
[5] Craig Hunt. Linux Servidores de rede. Editora Cincia Moderna, Rio de Janeiro, Brasil, 2004.
[6] James F. Kurose and Keith W. Ross. Redes de computadores
e a Internet Uma aobordagem top-down. Pearson Addison
Wesley, terceira edio edition, 2006.
[7] Evi Nemeth, Garth Snyder, Scott Seebass, and Trent R. Hein.
Manual De Administrao do Sistema Unix. Artmed, 3 edition,
2001.
[8] James Stanger, Patrick T. Lane, and Edgar Danielyan. Rede
Segura Linux. Editora Alta Books, Rio de Janeiro, Brasil, 2002.
[9] Chuck V. Tibet. Linux Administrao e Suporte. Novatec
Editora Ltda., So Paulo, Brasil, 2001.

Odilson Tadeu Valle

[10] Odilson Tadeu Valle. Linux bsico, gerncia, segurana e administrao de redes. 2008.
[11] Marco lvarez, Cludia Nasu, Alfredo Lanari, and Luciene
Marin. Curso de introduo ao linux.

302