Você está na página 1de 307

450

Linux Essentials

www.4linux.com.br

Projetos na sua empresa


com a qualidade dos treinamentos

ence
Business Intelig lx8
F
u/
.m
va
http://

BPM
http://va.mu/EuiT

Servidor Java EE
http://va.mu/FlyB

PostgreSQL
http://va.mu/EuhV

Monitoramento
http://va.mu/EukN

Virtualizao
http://va.mu/Flxl

Groupware Yj
u/FN
http://va.m

Backup
http://va.mu/Flxr

Auditoria e Anlise
http://va.mu/Flxu

Segurana
http://va.mu/Flxy

Ensino Distncia
http://va.mu/Flxc

Integrao Continua
http://va.mu/FlyD

GED - ECM
http://va.mu/Flx3

Alta Disponibilidade
http://va.mu/FNbL

Infraestrutura Web
http://va.mu/Flxi

Implantao garantida
http://va.mu/GcFv

Contedo
1 Linux Essentials
1.1

Cenrio do Curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 GNU/Linux: A Origem
2.1

Conhecendo um Novo Mundo . . . . . . . . . . . . . . . . . . . . . . .


2.1.1

Distribuies GNU/Linux

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

3 Linux Inside: Instalao do Sistema Operacional

3
5
9

3.1

Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . .

3.2

Instalao do GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Primeiros Passos

11

4.1

Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . . 11

4.2

Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4.3

4.4

4.2.1

Terminal Virtual

. . . . . . . . . . . . . . . . . . . . . . . . . 13

4.2.2

Logon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.2.3

Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3.1

Configuraes de Teclado no Console

. . . . . . . . . . . . 17

4.3.2

Alterando o Layout do teclado: . . . . . . . . . . . . . . . . . 17

4.3.3

Configuraes do mouse no Console . . . . . . . . . . . . . 19

4.3.4

Histrico de comandos . . . . . . . . . . . . . . . . . . . . . 20

4.3.5

Logout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3.6

Desligando o Computador

4.3.7

Reiniciando o Computador . . . . . . . . . . . . . . . . . . . 23

4.3.8

Sobrevivendo no Modo Texto . . . . . . . . . . . . . . . . . . 24

. . . . . . . . . . . . . . . . . . . 21

Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Contedo

4Linux www.4linux.com.br

5 Obtendo ajuda

29

5.1

Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . . 29

5.2

Introduo Terica
5.2.1

5.3

5.4

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Formas de Documentao . . . . . . . . . . . . . . . . . . . 30

Laboratrio

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.3.1

Comando help . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.3.2

Comando apropos . . . . . . . . . . . . . . . . . . . . . . . . 34

5.3.3

Comando whatis . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.3.4

Comando man . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.3.5

Comando info

5.3.6

Comando whereis . . . . . . . . . . . . . . . . . . . . . . . . 41

5.3.7

Comando which . . . . . . . . . . . . . . . . . . . . . . . . . 41

. . . . . . . . . . . . . . . . . . . . . . . . . . 39

Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6 Aprendendo Comandos do GNU/Linux

43

6.1

Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . . 43

6.2

Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

6.3

Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6.4

6.3.1

Comando ls

. . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6.3.2

Comando touch . . . . . . . . . . . . . . . . . . . . . . . . . 46

6.3.3

Curingas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6.3.4

Comando mkdir . . . . . . . . . . . . . . . . . . . . . . . . . 50

6.3.5

Comando rm/rmdir . . . . . . . . . . . . . . . . . . . . . . . . 51

6.3.6

Comando cp . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6.3.7

Comando mv . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

7 FHS, Hierarquia dos Diretrios

57

7.1

Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . . 57

7.2

Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

7.3

Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

7.4

Pgina ii

7.3.1

Estrutura de Diretrios GNU/Linux . . . . . . . . . . . . . . . 58

7.3.2

Comandos de Localizao . . . . . . . . . . . . . . . . . . . 75

Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Linux Essentials

4Linux www.4linux.com.br

Contedo

8 Editores de texto
8.1

Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . . 83

8.2

Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

8.3

Editores de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

8.4

8.5
9

83

8.3.1

Nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

8.3.2

Vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Laboratrio

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

8.4.1

Funcionalidades do vim . . . . . . . . . . . . . . . . . . . . . 89

8.4.2

Deixando o vim com sua cara: . . . . . . . . . . . . . . . . . 93

Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Administrao da Shell
9.1

9.2

9.3

95

Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.1.1

O que uma shell? . . . . . . . . . . . . . . . . . . . . . . . 95

9.1.2

Variveis em Shell . . . . . . . . . . . . . . . . . . . . . . . . 96

Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9.2.1

Variveis Locais e de Ambiente (globais) . . . . . . . . . . . 98

9.2.2

Alias

9.2.3

Arquivos de Login . . . . . . . . . . . . . . . . . . . . . . . . 104

9.2.4

Arquivos /etc/issue e /etc/motd . . . . . . . . . . . . . . . . . 105

9.2.5

Tipos de shell

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

. . . . . . . . . . . . . . . . . . . . . . . . . . 106

Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

10 Comandos avanados

109

10.1 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109


10.2 Laboratrio

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

10.2.1 Trabalhando com entrada e sada de dados


10.2.2

. . . . . . . . . 109

Alterando os redirecionamentos . . . . . . . . . . . . . . . . 110

10.2.3 O direcionador > . . . . . . . . . . . . . . . . . . . . . . . . . 111


10.2.4 O direcionador . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.2.5 O direcionador < . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.2.6

O direcionador 2> . . . . . . . . . . . . . . . . . . . . . . . . 114

10.2.7 O direcionador 2 . . . . . . . . . . . . . . . . . . . . . . . . 115


10.2.8 O direcionador 2>&1 . . . . . . . . . . . . . . . . . . . . . . . 116
10.2.9 O direcionador &> . . . . . . . . . . . . . . . . . . . . . . . . 117
10.2.10 O direcionador & . . . . . . . . . . . . . . . . . . . . . . . . 118

Linux Essentials

Pgina iii

Contedo

4Linux www.4linux.com.br

10.2.11 O direcionador | . . . . . . . . . . . . . . . . . . . . . . . . . 119


10.2.12 O direcionador tee . . . . . . . . . . . . . . . . . . . . . . . . 119
10.2.13 O direcionador . . . . . . . . . . . . . . . . . . . . . . . . . 120
10.2.14 dd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.2.15 Contagem: wc . . . . . . . . . . . . . . . . . . . . . . . . . . 122
10.2.16 split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
10.2.17 Determinando o tipo de arquivo: file . . . . . . . . . . . . . . 124
10.2.18 who . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10.2.19 w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
10.2.20 ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
10.2.21 Inodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
10.2.22 stat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
10.2.23 Link simblico . . . . . . . . . . . . . . . . . . . . . . . . . . 128
10.2.24 Hard links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
10.2.25 nl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.2.26 Classificao: sort . . . . . . . . . . . . . . . . . . . . . . . . 132
10.2.27 Eliminando linhas repetidas: uniq . . . . . . . . . . . . . . . . 133
10.2.28 Filtragem : grep e egrep e fgrep . . . . . . . . . . . . . . . . 134
10.2.29 grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
10.2.30 egrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10.2.31 fgrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
10.2.32 sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
10.2.33 Filtrar colunas: cut e awk . . . . . . . . . . . . . . . . . . . . 138
10.2.34 Juntando dois arquivos em um: join e paste . . . . . . . . . . 139
10.2.35 join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
10.2.36 paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.3 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
11 Introduo a Redes

143

11.1 Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . . 143


11.2 Introduo terica

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

11.2.1 Entendendo o IP . . . . . . . . . . . . . . . . . . . . . . . . . 144


11.2.2

Entendendo o gateway da rede . . . . . . . . . . . . . . . . 146

11.2.3 O servidor DNS . . . . . . . . . . . . . . . . . . . . . . . . . 146


11.2.4

Pgina iv

Arp e RARP . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

Linux Essentials

4Linux www.4linux.com.br

11.3 Laboratrio

Contedo

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

11.3.1 Configurando a Rede . . . . . . . . . . . . . . . . . . . . . . 148


11.3.2 Configurando IP e Mscara
11.3.3 Configurando o gateway

. . . . . . . . . . . . . . . . . . 148

. . . . . . . . . . . . . . . . . . . . 150

11.3.4 Configurao dos DNS Servers

. . . . . . . . . . . . . . . . 152

11.3.5 Configurao esttica de rede . . . . . . . . . . . . . . . . . 153


11.3.6 Configurando hosts e hostname DEBIAN . . . . . . . . . . . 155
11.3.7 Configurando hosts e hostname CentOS: . . . . . . . . . . . 157
11.4 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
12 Servidor SSH

159

12.1 Contextualizao do Cenrio . . . . . . . . . . . . . . . . . . . . . . . . 159


12.2 Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
12.2.1 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
12.2.2 Chaves de Criptografia Assimtricas . . . . . . . . . . . . . . 160
12.3 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
12.3.1 Acesso SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
12.3.2 Copiando Arquivos Remotos . . . . . . . . . . . . . . . . . . 162
12.3.3

Cpia maq_LOCAL para maq_REMOTA . . . . . . . . . . . 162

12.3.4

Cpia maq_REMOTA para maq_LOCAL . . . . . . . . . . . 163

12.3.5 SSH com Chaves Assimtricas . . . . . . . . . . . . . . . . . 164


12.3.6 Acesso por SSH sem senha com ssh-agent . . . . . . . . . . 166
12.3.7 Configurando o servidor SSH (CentOS): . . . . . . . . . . . . 168
12.3.8 Cpia remota com porta diferente: . . . . . . . . . . . . . . . 173
12.3.9 Tunelamento SSH . . . . . . . . . . . . . . . . . . . . . . . . 173
12.3.10 Mensagem em broadcast: wall . . . . . . . . . . . . . . . . . 175
12.4 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
13 TCP Wrappers

177

13.1 Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177


13.1.1 Entendendo o TCP Wrappers . . . . . . . . . . . . . . . . . . 177
13.1.2 Suporte a TCP/Wrappers . . . . . . . . . . . . . . . . . . . . 179
13.2 Laboratrio

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

14 Instalao de Programas com DPKG e RPM

181

14.1 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Linux Essentials

Pgina v

Contedo

4Linux www.4linux.com.br

14.1.1 Pacotes Debian - DPKG . . . . . . . . . . . . . . . . . . . . . 181


14.1.2 Pacotes RPM . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
14.1.3 Base de dados RPM . . . . . . . . . . . . . . . . . . . . . . . 183
14.2 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
14.2.1 DPKG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
14.2.2 Convertendo extenses de arquivos . . . . . . . . . . . . . . 187
14.2.3 Gerenciando Pacotes em Formato RPM . . . . . . . . . . . . 188
15 Instalando, removendo e atualizando programas

193

15.1 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193


15.1.1 O que um pacote?

. . . . . . . . . . . . . . . . . . . . . . 193

15.1.2 Mas o que um gerenciador de pacotes?


15.2 Laboratrio

. . . . . . . . . . 194

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

15.2.1 Gerenciando pacotes no Debian: . . . . . . . . . . . . . . . . 195


15.2.2 Instalao, Remoo e Atualizao . . . . . . . . . . . . . . 195
15.2.3 Removendo pacotes que no sero mais usados . . . . . . . 201
15.2.4 Atualizar pacotes instalados: . . . . . . . . . . . . . . . . . . 201
15.2.5 Atualizao da distro

. . . . . . . . . . . . . . . . . . . . . . 202

15.2.6 Gerenciamento de pacotes em distros baseadas em rpm.

. 202

15.2.7 Instalando pacotes: . . . . . . . . . . . . . . . . . . . . . . . 204


15.2.8 Removendo pacotes: . . . . . . . . . . . . . . . . . . . . . . 205
15.2.9 Atualizando pacotes . . . . . . . . . . . . . . . . . . . . . . . 206
16 Compilando Programas

207

16.1 Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207


16.2 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
16.2.1 Configure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
16.2.2 Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
16.3 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
17 Bibliotecas

213

17.1 Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213


17.1.1 Tipos fundamentais de programas executveis . . . . . . . . 213
17.2 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
17.2.1 Modo Esttico e Compartilhado . . . . . . . . . . . . . . . . 215
17.2.2 Listando Bibliotecas disponveis . . . . . . . . . . . . . . . . 217

Pgina vi

Linux Essentials

4Linux www.4linux.com.br

Contedo

17.2.3 Localizao das bibliotecas? . . . . . . . . . . . . . . . . . . 217


17.2.4 Adicionando novas bibliotecas ao sistema

. . . . . . . . . . 217

17.3 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221


18 Manipulando Hardware e Dispositivos

223

18.1 Introduo terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223


18.1.1 Explorando o /dev . . . . . . . . . . . . . . . . . . . . . . . . 223
18.1.2 Dispositivos de armazenamento . . . . . . . . . . . . . . . . 228
18.1.3 O que uma partio? . . . . . . . . . . . . . . . . . . . . . 230
18.2 Laboratrio

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

18.2.1 Criando Parties no HD . . . . . . . . . . . . . . . . . . . . 234


18.2.2 Particionamento com FDISK . . . . . . . . . . . . . . . . . . 234
18.2.3 Particionamento com CFDISK . . . . . . . . . . . . . . . . . 236
18.2.4 Aplicando um Filesystem . . . . . . . . . . . . . . . . . . . . 238
18.2.5 O que JOURNALING? . . . . . . . . . . . . . . . . . . . . . 240
18.2.6 Aplicando um FileSystem . . . . . . . . . . . . . . . . . . . . 241
18.2.7 Espao em Disco: df . . . . . . . . . . . . . . . . . . . . . . . 242
18.2.8 Definindo tamanho dos objetos: du

. . . . . . . . . . . . . . 242

18.2.9 Devices, UUID e Labels . . . . . . . . . . . . . . . . . . . . . 243


18.2.10 Rotulando uma partio: . . . . . . . . . . . . . . . . . . . . 247
18.2.11 Usando os dispositivos de armazenamento

. . . . . . . . . 248

18.2.12 Migrando de Filesystem ext sem perder dados: . . . . . . . . 254


18.2.13 SWAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
18.2.14 Montagem automtica de Filesystem no boot . . . . . . . . . 259
18.2.15 Mostrar o uso de memria RAM: free . . . . . . . . . . . . . 260
18.3 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
19 Gerenciamento de Processos

263

19.1 Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263


19.2 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
19.2.1 E como fazemos para gerenciar os processos? . . . . . . . . 268
19.2.2 Definido prioridades dos processos . . . . . . . . . . . . . . 278
19.3 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
20 Inicializao

283

20.1 Introduo Terica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Linux Essentials

Pgina vii

Contedo

4Linux www.4linux.com.br

20.1.1 System V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283


20.2 Laboratrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
20.2.1 Nveis de Execuo - System V . . . . . . . . . . . . . . . . . 284
20.2.2 O que faz um script de inicializao? . . . . . . . . . . . . . . 287
20.2.3 Removendo um script da inicializao: . . . . . . . . . . . . . 290
20.2.4 Gerenciando servios: . . . . . . . . . . . . . . . . . . . . . . 292
20.3 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

Pgina viii

Linux Essentials

Captulo 1
Linux Essentials

1.1 Cenrio do Curso

Neste curso voc conhecer a Dexter Courier, uma empresa que atualmente usa
solues Proprietrias para sua infraestrutura tecnolgica, com exceo do servidor
Intranet que possui uma distribuio Linux chamada CentOS. Esse servidor hospeda
o site do sistema de logstica da empresa.

Seu desafio no Curso Linux Essentials, ser aprender o Sistema Operacional Linux,
usando duas das principais distribuies existentes no mercado atualmente: Debian
e CentOS (que um sistema baseado em RedHat).

No decorrer do Curso e conforme sua evoluo, voc precisar estabilizar o Servidor


Intranet pois suas constantes quedas esto afetando diretamente os negcios da
Dexter.

Passe cada etapa do curso com qualidade, pois todos os steps iro prepar-lo para
que no decorrer da Formao Linux, voc possa migrar a infraestrutura da Dexter
Courier para tecnologia FOSS (Free and Open-Source Software).

1.1 Cenrio do Curso

Pgina 2

4Linux www.4linux.com.br

Linux Essentials

Captulo 2
GNU/Linux: A Origem
2.1 Conhecendo um Novo Mundo
Utilizar um sistema GNU/Linux muito mais do que optar por uma soluo isenta de
custos de licena. usufruir de uma filosofia que antecedeu o software proprietrio,
e que permitiu, por exemplo, que a Internet crescesse de forma livre como a conhecemos hoje. Como usurio de Software Livre, precisamos compreender um pouco mais
sobre essa ideologia e como ela promoveu o surgimento das vrias distribuies.
O sistema GNU/Linux frequentemente chamado apenas pelo seu segundo nome:
Linux. Entretanto, essa designao no faz justia a todos os desenvolvedores que
vm construindo o sistema operacional como um todo.
GNU, que um acrnimo recursivo de GNUs Not Unix. Trata-se, de um grupo que
foi fundado em 1984 por seu idealizador, Richard Stallman, com o intuito de criar
um sistema operacional Unix-like desprovido de amarras e travas ao seu uso. Os
desenvolvedores GNU criaram uma srie de programas bsicos para um sistema
operacional funcional, como editores de texto e compiladores. Entretanto, havia um
pedao de cdigo essencial, que ainda no tinha sido criado: o kernel.
Em 1991, um jovem finlands chamado Linus Torvalds disponibilizou para o mundo
a primeira verso do Linux, um kernel Unix-like. A partir desse ponto, foi possvel

2.1 Conhecendo um Novo Mundo

4Linux www.4linux.com.br

unir o kernel Linux com os softwares GNU, originando o sistema operacional que
chamamos de GNU/Linux.
O mundo GNU/Linux no apenas um conjunto de programas. Ele traz consigo
uma filosofia de Mundo Livre e colaborativo, no qual as pessoas podem utilizar esses
softwares irrestritamente, acima de tudo, aprender com eles, uma vez que seu cdigo
fonte deve ser disponvel a todos que queiram melhor-lo ou apenas aprender com
ele. Para que esse mundo continue livre, Richard Stallman fundou a FSF - Free
Software Foundation, que criou e mantm a licena GNU GPL - GNU General
Public License. Esta licena define, de modo simplificado, que o Software deve
respeitar quatro princpios bsicos, aqui chamados de liberdades. So elas:

Liberdade 0 - liberdade para rodar o programa para quaisquer propsitos;

Liberdade 1 - liberdade para estudar como o programa trabalha e adapt-lo s


suas necessidades. Ter acesso ao cdigo fonte essencial para isso;

Liberdade 2 - liberdade de redistribuir cpias de forma que voc possa ajudar


outras pessoas;

Liberdade 3 - liberdade para melhorar o programa e disponibilizar as melhorias para o pblico, de forma que toda a comunidade possa se beneficiar. Ter
acesso ao cdigo fonte essencial tambm para isso.

Atualmente a GPL est disponvel em trs verses, GPLv1, GPLv2 e GPLv3. Fique
por dentro de suas diferenas em:

http://www.gnu.org/licenses/gpl.html

Como usar as licenas GPL:

Pgina 4

Linux Essentials

4Linux www.4linux.com.br

2.1 Conhecendo um Novo Mundo

http://www.gnu.org/licenses/gpl-howto.pt-br.html

Para mais informaes a respeito do kernel - Linux - podem ser obtidas no site oficial
de seus mantenedores:

http://www.kernel.org

Informaes sobre os projetos GNU e FSF podem ser obtidas nos seus respectivos
sites:

http://www.gnu.org http://www.fsf.org

2.1.1 Distribuies GNU/Linux


Voc j deve ter ouvido falar em Debian, RedHat, Slackware, Suse, Mandriva, Ubuntu,
CentOS dentre outras. Mas, o que realmente isso? O que so todos esses nomes? Essas so distribuies GNU/Linux. Uma distribuio nada mais do que o
kernel Linux, softwares GNU e outros outros aplicativos que so desenvolvidos por
outras comunidades ou grupos, reunidos em um sistema operacional que tem peculiaridades que o diferencia de outros sistemas operacionais GNU/Linux, fazendo-os
nicos.
Mas, por que existem tantas distribuies? Justamente porque se voc no se identifica com nenhuma delas, voc livre para fazer a sua prpria. Por exemplo, em
1993, um rapaz chamado Patrick Volkerding, juntou o kernel e vrios outros aplicativos em uma distribuio chamada Slackware, que foi a primeira a ser distribuda em

Linux Essentials

Pgina 5

2.1 Conhecendo um Novo Mundo

4Linux www.4linux.com.br

CD. A partir desse ponto, foram surgindo diversas outras distribuies que de alguma
forma diferiam da filosofia do Slackware: como Debian ou RedHat.

Atualmente existem centenas de distribuies, algumas mais famosas que outras.


Em sua maioria, as distribuies GNU/Linux so mantidas por grandes comunidades
de colaboradores, entretanto, h outras que so mantidas por empresas. Dessa
forma, podemos dividir as distros, abreviao bastante utilizada na comunidade e
que se refere s distribuies, em duas categorias bsicas:
Distribuies Livres de Custos - Mantidas por comunidades de colaboradores
sem fins lucrativos. Exemplos so: Debian, Slackware, Gentoo, Knoppix e CentOS,
entre outras.
Distribuies Corporativas - Mantidas por empresas que vendem o suporte ao seu
sistema. Exemplos: RedHat, Ubuntu, Suse e Mandriva.
a liberdade do software, garantida pela licena GPL, que perpetua o respeito dos
direitos definidos pela FSF. Isso porque, pela definio de Software Livre, nunca, em
hiptese alguma, permitido que o cdigo fonte seja negado ao cliente, ao receptor
do Software. Assim, por mais que uma empresa queira cobrar por suas verses
do sistema GNU/Linux, enquanto ela estiver utilizando softwares licenciados sob a
licena GPL, ela ser obrigada a distribuir o cdigo fonte dos programas.
Dentro do conjunto de Distribuies, podemos divid-las novamente em duas outras
categorias:

Pgina 6

Linux Essentials

4Linux www.4linux.com.br

2.1 Conhecendo um Novo Mundo

Distribuies Convencionais - So distribudas da forma tradicional, ou seja, uma


ou mais mdias que so utilizadas para instalar o sistema no disco rgido;
Distribuies Live - So distribudas em mdias com o intuito de rodarem a partir
delas, sem a necessidade de serem instaladas no HD. As distribuies Live ficaram
famosas pois tm a inteno de fornecer um sistema GNU/Linux totalmente funcional, de forma fcil e sem colocar em risco o sistema operacional original da mquina.
O fator que favoreceu essa abordagem que, em uma distribuio Live praticamente todos os componentes j vm configurados, funcionando e com interfaces
agradveis aos usurios finais. Exemplos desse tipo de distribuio so o Knoppix,
"Ubuntu"entre outras.
Para entender um pouco mais sobre distribuies, necessrio lembrar de mais duas
caractersticas:
Distribuies From Scratch - So desenvolvidas do zero, ou seja, utilizam um
kernel Linux, alguns programas GNU e a grande maioria das suas particularidades desenvolvida especificamente para ela. Exemplos: Debian, RedHat, Gentoo,
Slackware
Distribuies Provenientes (Baseadas) - Aproveitam ferramentas e bases j desenvolvidas por outras distribuies. Distribuies baseadas usam distribuies "From
Scratch"para alcanar seus objetivos mais rpido, dando maior ateno ao propsito
da distribuio. Exemplos: Ubuntu, DreamLinux, Kubuntu, Slax e Linux Mint.

Linux Essentials

Pgina 7

Captulo 3
Linux Inside: Instalao do Sistema
Operacional
3.1 Contextualizao do Cenrio
A Empresa Dexter Courier possui 3 Servidores com solues proprietrias e 1 Servidor com soluo de Software Livre, sendo este a intranet da empresa. Voc como
sendo funcionrio novo na empresa, para se adequar a utilizao do software livre
ir fazer a instalao de uma mquina com GNU/Linux.
Ser feita a instalao da distribuio Debian e CentOS, sendo que as duas ficaro
na mesma mquina com dualboot, para que voc possa se adequar a instalao das
duas distribuies. Esta estao de trabalho ser utilizada por voc durante todo o
curso.

3.2 Instalao do GNU/Linux


Iremos realizar a instalao do Debian e CentOS. Acompanhe com o seu Instrutor
passo a passo da instalao dessas duas distribuies.

Captulo 4
Primeiros Passos

4.1 Contextualizao do Cenrio

Aps realizada a instalao do seu Desktop Linux, fundamental que voc conhea
o funcionamento bsico de um Sistema Operacional Linux.

Nessa etapa do Curso voc aprender os primeiros passos para se trabalhar com
Linux.

4.2 Introduo Terica

A figura abaixo procura demonstrar como o Sistema Operacional GNU/Linux se organiza em layers - camadas:

11

4.2 Introduo Terica

4Linux www.4linux.com.br

importante entender cada uma dessas camadas para compreender o conjunto que
chamamos de Sistema Operacional.
Vamos descrever cada uma delas:
Hardware - Dispositivos que esto disponveis para o uso do sistema, tais como
cd-rom, placa de rede, controladora SCSI entre outros;
Kernel - O ncleo do sistema operacional, essa layer quem faz todas as interaes com o hardware da mquina, interpretando requisies feitas pelas camadas
acima desta;
Sistema Operacional - Essa layer tem como funo auxiliar e abrigar todos os
aplicativos das camadas superiores. Segundo Linus Torvalds essa layer no deve
ser notada pelo usurio final;
ttyN - Terminais Virtuais onde so executados os comandos e definidas as configuraes. As ttys interpretam os comandos dados por um humano e convertem os
mesmos para uma linguagem que a mquina entenda;
DM - A layer de Display Manager responsvel por gerenciar os logins - validao de usurios - na interface grfica e escolher o tipo de ambiente grfico que
deve ser executado;

Pgina 12

Linux Essentials

4Linux www.4linux.com.br

4.2 Introduo Terica

Desktop Environment - Mais conhecido como Ambiente de Trabalho, responsvel por abrigar todos os programas que necessitam de um ambiente grfico para
funcionar.

4.2.1 Terminal Virtual

O GNU/Linux faz uso de sua caracterstica multi-usurio, ou seja, suporta vrios


usurios conectados ao mesmo tempo, usando os terminais virtuais.
Um terminal virtual uma segunda seo de trabalho completamente independente
de outras e que pode ser acessado no computador local ou remotamente, utilizando
os programas telnet, rsh, rlogin, rdesktop, vnc, ssh, etc. Nos dias de hoje, o
acesso remoto muito importante. A qualquer distncia que se esteja do cliente,
possvel atend-lo.
No GNU/Linux possvel, em modo texto, acessar outros terminais virtuais, segurando a tecla ALT e pressionando uma das teclas de F1 at F6. Cada tecla tem
funo correspondente a um nmero de terminal do 1 ao 6. Esse o comportamento padro e, pode ser mudado. (o stimo, por default, usado pelo ambiente
grfico - Xorg)
O GNU/Linux possui mais de 63 terminais virtuais, mas deles, apenas 6 esto disponveis, inicialmente por motivos de economia de memria RAM. Se voc estiver
usando o modo grfico, deve segurar Ctrl + Alt enquanto pressiona uma tecla de
atalho de F1 a F6.
Um exemplo prtico: se voc estiver utilizando o sistema no terminal 1, pressione
Ctrl + Alt + F2, e veja na primeira linha, nome e verso do sistema operacional,
nome da mquina e o terminal no qual voc est. Voc pode utilizar quantos terminais quiser, do F1 ao F6 (inclusive utilizando o X) e pode ficar saltando de terminal
para terminal.

Linux Essentials

Pgina 13

4.2 Introduo Terica

4Linux www.4linux.com.br

4.2.2 Logon

Logon a entrada do usurio, seja root ou comum, onde deve ser digitado seu
nome de usurio e logo depois sua senha. Caso voc digite algo de forma errada,
ir aparecer uma mensagem de erro e voc no ser logado autenticado - no
sistema.

importante perceber que quando se digita a senha, no aparece nenhum


retorno, como os famosos asteriscos. O objetivo evitar que um observador mais
curioso seja capaz de contar quantos caracteres sua senha possui.

4.2.3 Shell

No Mundo GNU/Linux, utilizamos o Shell, que funciona como interpretador de comandos. Ele a interface entre o usurio e o kernel do sistema e por meio dele,
podemos digitar os comandos. O Shell padro do GNU/Linux o Bash. Entretanto
existem tambm outras interfaces, como, por exemplo, csh, tcsh, ksh e zsh.
O kernel a parte mais prxima do hardware do computador. o ncleo do Sistema
Operacional. Se seu GNU/Linux estiver com problemas, no chute seu computador,
a culpa no dele.
O local onde o comando ser digitado marcado por um trao piscante na tela, chamado de cursor. Tanto em Shell texto como em Shell grfico necessrio o uso
do cursor para saber onde devemos iniciar a digitao de textos e nos orientarmos
quanto posio na tela.
Popularmente conhecido como linha de comando, o Shell interpreta a ao do
usurio atravs das instrues digitadas. Estas instrues podero ser executadas
por dois nveis de usurios, com permisses diferentes. So eles:

Pgina 14

Linux Essentials

4Linux www.4linux.com.br

4.3 Laboratrio

Super usurio: Popularmente conhecido como root. No se engane, root no


de raiz, da lngua inglesa. O usurio root o administrador do sistema, e seu
diretrio (pasta) padro o /root, diferentemente dos demais usurios que ficam
dentro do /home. No prximo captulo falaremos mais sobre a instrutura de diretrios do GNU/LINUX. o Shell de uma usurio root diferencia do Shell de um
usurio comun, pois antes do cursor ele identificado com # (jogo-da-velha).
Usurio comum: qualquer usurio do sistema que no seja root e no tenha
poderes administrativos no sistema. Como j havamos dito anteriormente, o diretrio padro para os usurios o /home. Antes do cursor, o Shell de um usurio
comum identificado com $ (cifro).
Existem muitas funcionalidades no Shell, uma delas retornar comandos que j
foram digitados anteriormente. Para fazer isso s pressionar as teclas seta para
cima e seta para baixo para ter acesso ao histrico de comandos. Inclusive o nome
do programa responsvel por manter essa lista history.
Outra funcionalidade muito utilizada, serve para rolar a nossa tela de modo que possamos ir para cima ou para baixo, parecido com o scroll Para rolarmos a tela para
cima, segura-se a tecla Shift e pressionamos o Page Up. Para rolarmos a tela
para baixo, segura-se a tecla Shift e pressionamos o Page Down. Isto til para
ver textos que rolaram rapidamente para cima e saram do nosso campo de viso.

4.3 Laboratrio
A execuo de comandos com poderes administrativos, exige que o nvel do usurio
comum seja alterado. Uma das formas de fazer isso utilizando o comando su Super User. Veja sua descrio abaixo:

su - Para usar o comando su necessrio ter o password do administrador. Uma vez que o nvel tenha sido mudado ser possvel executar qualquer
comado com poderes de root.

Linux Essentials

Pgina 15

4.3 Laboratrio

4Linux www.4linux.com.br

Aps se logar com usurio aluno, utilize o comando su:

$ su

Ser pedido a senha do usurio root. Aps efetuar a autenticao do usurio, o


prompt mudar de $ para # avisando que voc est logado como administrador
do sistema.
Existem dois comandos, whoami e who am i que lhe permite saber quem voc
em determinado momento. A sequncia de comandos abaixo esclarece o uso e
finalidade destes dois comandos claramente:

# whoami

# who am i

O comando whoami indica quem voc no momento root. Se voc utilizou o comando su para tornar-se outro usurio o comando who am i informa quem voc
realmente aluno, pois foi com ele que voc se logou na mquina antes de trocar
de usurio.
Ele tambm pode ser utilizado para trocar de usurio, ele no pedir a senha se voc
for usurio root:

# su - aluno

Com a opo - alm de trocar de usurio, tambm carregar as variveis locais do


usurio:

$ su -

Pgina 16

Linux Essentials

4Linux www.4linux.com.br

4.3 Laboratrio

4.3.1 Configuraes de Teclado no Console


Durante uma instalao do Linux muito comum errar na configurao do teclado.
Para evitar transtornos na utilizao do sistema sempre certifique-se que seu teclado
est corretamente configurado logo aps a instalao.

4.3.2 Alterando o Layout do teclado:

Altere o layout de teclado padro do sistema para ficar permanente:

# dpkg - reconfigure keyboard - configuration

E em seguida reinicie o servio:

# / etc / init . d / keyboard - setup restart

possvel utilizar o comando loadkeys para alterar o layout de teclado durante a


sesso mas, essa alterao ser temporria. Para trocar definitivamente o padro
de layout do teclado da mquina, altere o arquivo em /etc/sysconfig/keyboard.
1) Altere o layout de teclado para utilizar o padro brasileiro:

Linux Essentials

Pgina 17

4.3 Laboratrio

4Linux www.4linux.com.br

# loadkeys -d br - abnt2

2) Restaure o layout de teclado para o padro americano:

# loadkeys -d us - acentos

Alterando o layout permanentemente:

# system - config - keyboard

Veja que ele altera o arquivo que armazena as configuraes do teclado:

# cat / etc / sysconfig / keyboard

KEYTABLE = " us - acentos "

MODEL =" pc105 "

Pgina 18

Linux Essentials

4Linux www.4linux.com.br

LAYOUT =" us "

KEYBOARDTYPE = " pc "

VARIANT =" intl "

OPTIONS =" qwerty "

4.3 Laboratrio

4.3.3 Configuraes do mouse no Console

Para se utilizar o mouse em modo texto, basta instalar o software gpm.

# apt - get install gpm

# yum install gpm

Linux Essentials

Pgina 19

4.3 Laboratrio

4Linux www.4linux.com.br

4.3.4 Histrico de comandos


Comando history

O terminal do GNU/Linux permite que voc guarde 500 comandos por padro no
Debian e 1000 comandos no CentOS.

# history

Para limpar o cache de histrico de comandos execute:

# history -c

Comando fc

FC significa Find Command ou Fix Command pois ele executa as duas tarefas, encontrar e corrigir comandos. Para listar os comandos j digitados, guardados
no history, digite:

# fc -l

Por padro mostra os ltimos 16 comandos. Para visualizar uma lista de comandos
do 2 ao 6 faa:

# fc -l 2 6

Para visualizar os ltimos 20 comandos:

Pgina 20

Linux Essentials

4Linux www.4linux.com.br

4.3 Laboratrio

# fc -l -20

Para visualizar todos os comandos desde o ltimo comeando com h:

# fc -l h

4.3.5 Logout

Logout a sada do sistema. Ela feita por um dos comandos abaixo:

$ logout

$ exit

$ <CTRL >+ D

Ou quando o sistema reiniciado ou desligado.

4.3.6 Desligando o Computador

Para desligar o computador, pode-se utilizar um dos comandos abaixo, sempre que
se esteja com o nvel de usurio root:

# shutdown -h now

# halt

# poweroff

Linux Essentials

Pgina 21

4.3 Laboratrio

4Linux www.4linux.com.br

A palavra halt vem do comando em assembly chamado HTL, que quer dizer
parada de processamento. Assim, o GNU/Linux finalizar os programas e gravar os dados remanescentes na memria no disco rgido. Os comandos halt e
poweroff disparam uma srie de procedimentos, como encerramento de servios
e desligamento de sistemas de arquivos, que so executados antes da mquina ser
desligada.
O comando shutdown tem a seguinte sintaxe:

# shutdown <a o > < tempo > [ mensagem ]

Onde:
ao - o que voc quer fazer, cujas opes so:

h -> para desligar


r -> para reiniciar.

tempo - tempo em minutos que voc deseja para comear a executar a ao.
mensagem - Mensagem que voc quer disparar para todos os terminais logados
com o objetivo de avisar aos usurios que o sistema ser desligado ou reiniciado.
Exemplos
Desligar agora:

# shutdown -h now

Ou

Pgina 22

Linux Essentials

4Linux www.4linux.com.br

4.3 Laboratrio

# shutdown -h 0

Desligar daqui 12 minutos notificando os demais usurios logagos com uma mensagem:

# shutdown -h 12

esta minha mensagem de aviso

Para cancelar o shutdown:

# shutdown -c

4.3.7 Reiniciando o Computador


Reiniciar quer dizer Iniciar novamente o sistema. No recomendvel desligar e
ligar constantemente o Computador pelo boto ON/OFF ou RESET. Por isso,
existem recursos para reiniciar o sistema sem desligar o computador. No GNU/Linux
voc pode usar o comando reboot, shutdown -r now ou pressionar simultaneamente as teclas Ctrl + Alt + Del para reiniciar o sistema de forma segura.

Utilize comandos e no o boto liga/desliga. Prefira um dos mtodos de reinicializao explicados acima e use o boto reset somente em ltimo caso.

Exemplos
Reiniciar agora:

Linux Essentials

Pgina 23

4.3 Laboratrio

4Linux www.4linux.com.br

# shutdown -r now

Ou

# shutdown -r 0

Reiniciar daqui a 5 minutos com mensagem:

# shutdown -r 5

esta minha mensagem de aviso

4.3.8 Sobrevivendo no Modo Texto


Vamos aprender agora alguns comandos essenciais para a nossa movimentao
dentro do sistema.
O comando pwd exibe o diretrio corrente. Ele muito til quando estamos navegando pelo sistema e no lembramos qual o diretrio atual.

# pwd

O comando ls utilizado para listar o contedo dos diretrios. Se no for especificado nenhum diretrio, ele ir mostrar o contedo daquele onde estamos no
momento.
Listar o contedo do diretrio atual:

# ls

Pgina 24

Linux Essentials

4Linux www.4linux.com.br

4.3 Laboratrio

O comando cd utilizado para mudar o diretrio atual de onde o usurio est.


Exemplos
Ir para o diretrio home do usurio logado:

# cd

# cd ~

Ir para o incio da rvore de diretrios, ou seja, o diretrio /:

# cd /

Ir para um diretrio especfico:

# cd / etc

Sobe um nvel na rvore de diretrios:

# cd ..

Retorna ao diretrio anterior:

# cd -

Entra em um diretrio especfico:

# cd / usr / share / doc

Linux Essentials

Pgina 25

4.3 Laboratrio

4Linux www.4linux.com.br

Sobe 2 nveis da rvore de diretrios:

# cd ../../

Ateno! Note a diferena entre caminhos absolutos e relativos:


Absolutos: /etc/ppp; /usr/share/doc; /lib/modules
Relativos: etc/ppp; ../doc; ../../usr;

Diretrio . e ..

Fique esperto para conhecer as diferenas entre o . e o .. e o que eles representam para o sistema. Os comandos de movimentao muitas vezes so grandes
alvos nas provas, uma boa interpretao desses comandos pode ser necessria,
pois voc pode precisar deles para resolver uma questo maior.

Atalhos do bash

A seguir, vamos testar algumas funcionalidades da linha de comando. No


necessrio se preocupar em decor-los, com o passar do tempo, pegamos um pouco
mais de prtica:
Pressione a tecla Back Space para apagar um caractere esquerda do cursor;
Pressione a tecla Delete para apagar o caractere direita do cursor;

Pgina 26

Linux Essentials

4Linux www.4linux.com.br

4.3 Laboratrio

Pressione a tecla Home para ir ao comeo da linha de comando;


Pressione a tecla End para ir ao final da linha de comando;
Pressione as teclas Ctrl + A para mover o cursor para o incio da linha de
comandos;
Pressione as teclas Ctrl + E para mover o cursor para o fim da linha de
comandos;
Pressione as teclas Ctrl + U para apagar o que estiver esquerda do cursor.
O contedo apagado copiado e pode ser colado com Ctrl + y;
Pressione as teclas Ctrl + K para apagar o que estiver direita do cursor. O
contedo apagado copiado e pode ser colado com Ctrl + y;
Pressione as teclas Ctrl + l para limpar a tela e manter a linha de comando
na primeira linha. Mas se voc der um Shift + Page Up voc ainda consegue
enxergar o contedo. O Ctrl + l um atalho para o comando clear;
Pressione as teclas Ctrl + c para abrir uma nova linha de comando, na posio atual do cursor;
Pressione as teclas Ctrl + d para sair do Shell. Este equivalente ao
comando exit;
Pressione as teclas Ctrl + r para procurar x letra relacionada ao ltimo
comando digitado que tinha x letra como contedo do comando.
Executar o ltimo comando pressione: !!
Executar um comando especfico do histrico de comandos: !<numero>, ou
seja, !12

Linux Essentials

Pgina 27

4.4 Desafio

4Linux www.4linux.com.br

4.4 Desafio
Execute o script1.sh do Desafio 1
1- Configure o teclado que est desconfigurado e deixe permanente para que no
prximo reboot continue funcionando.
2 Foi agendado o desligamento da mquina para daqui a 10 minutos, cancele o
shutdown.

Pgina 28

Linux Essentials

Captulo 5
Obtendo ajuda
5.1 Contextualizao do Cenrio
O Sistema Operacional Linux e os Softwares Livres possuem uma qualidade de documentao indiscutvel. So poucos os administradores de Sistema que usufluem
dessa documentao.
Para avanar no curso e conseguir mais independncia no Sistema importante
aprender como obter informaes dentro do prprio Linux.

5.2 Introduo Terica


O Sistema Operacional GNU/Linux possui uma vasta biblioteca de documentao.
Antes de recorrermos ajuda de outras pessoas, devemos lembrar que podemos
ter a respostas que precisamos no prprio sistema, bem a nossa frente, ao teclar de
um simples comando. Essa documentao em grande parte dos casos de extrema
qualidade.
O GNU/Linux cresceu porque a comunidade contribui para o sistema e sua docu-

29

5.2 Introduo Terica

4Linux www.4linux.com.br

mentao. Essa comunidade no tem medo ou receio de compartilhar informaes


e disponibiliza o que foi desenvolvido no prprio sistema. muito importante reforar
que no Software Livre, as pessoas nunca ocultam seu know-how, ou seja, voc
pode perguntar a vontade, desde que saiba o que e onde perguntar.
A documentao do GNU/Linux pode ser vista tambm como fonte de conhecimento,
onde pode-se aprender muito sobre cada um dos servios e comandos disponveis.
Essa ajuda provida por meio dos manuais, as famosas Man Pages.

Toda essa documentao que possumos no sistema GNU/Linux est disponvel no site: http://www.tldp.org (The Linux Documentation Project), o site oficial de
documentaes sobre GNU/Linux.
Um diferencial deste site ter a documentao em vrios idiomas e formatos: pdf,
html, txt e outros.

A seguir, vamos comear a nos familiarizar com a documentao existente e as formas nas quais ela apresentada.

5.2.1 Formas de Documentao


Existem diversas formas de se documentar um projeto, dentre elas temos os Howtos, os manuais e as documentaes.

How-tos

Os How-tos so documentos que focam uma necessidade especfica, como montar


um firewall, instalar uma webcam, configurar placas de som, configurar um servi-

Pgina 30

Linux Essentials

4Linux www.4linux.com.br

5.2 Introduo Terica

dor web e muitos outros. Normalmente esses documentos so instalados junto com
suas respectivas aplicaes ou podem ter um pacote especfico para a documentao daquela aplicao. Os how-tos tambm so conhecidos como cook-books
- livro de receitas.
O diretrio de How-tos do GNU/Linux o /usr/share/doc. Se desejamos saber
como configurar um firewall, podemos consultar os arquivos do diretrio:

# cd / usr / share / doc / iptables /

Na Internet existem diversos sites de how-tos para GNU/Linux. Dentre eles o mais
conhecido no Brasil o Viva o Linux, conhecido tambm como VOL:

http://www.vivaolinux.com.br

Muitas vezes o uso de how-tos ou cook-books, no agrega um bom conhecimento, pois trata-se somente de uma lista de afazeres para chegar a um objetivo.
Quando o software atualizado, todo aquele conhecimento fica dependente de um
novo how-to.

Manuais

Diferente dos How-tos os manuais no vo te mostrar um passo a passo ou mesmo


te dar uma lista de afazeres. O principal objetivo do manual te mostrar como as
funcionalidades daquele software podem ser usadas. Com o manual o aprendizado
para a utilizao da ferramenta facilitado, j que o mesmo possui alguns exemplos
de usabilidade. Esses manuais podem ser encontrados atravs do comando man,
o qual veremos ainda nesse captulo, um pouco mais adiante.

Linux Essentials

Pgina 31

5.3 Laboratrio

4Linux www.4linux.com.br

Documentao

A palavra documentao muito intensa. Quando falamos em documentar uma


ferramenta, estamos na realidade abrangendo uma srie de outros itens importantes,
dentre eles os How-tos e os manuais. Com a documentao de um projeto
possvel entender absolutamente tudo sobre o mesmo, ou seja, essa documentao
deve mostrar todas as partes relacionadas ao projeto.
Podemos, por exemplo, citar a documentao de um projeto de rede, onde deve
constar no s documentos como how-tos e manuais, mas sim todas as especificaes dos componentes, bem como cabos, switchs e routers dentre outros
detalhes muito importantes.
Como esse tipo de documentao muito especfica, devemos consultar o site de
cada projeto individualmente.

5.3 Laboratrio
Existem diversos comandos de ajuda no GNU/Linux, vamos abordar cada um deles
logo abaixo:

5.3.1 Comando help


O comando help prov ajuda para comandos internos do interpretador de comandos, ou seja, o comando help fornece ajuda rpida. Ele muito til para saber quais
opes podem ser usadas com os comandos internos do interpretador de comandos
(shell).
Para visualizar uma ajuda rpida para todos os comandos internos do sistema, podemos fazer da seguinte forma:

Pgina 32

Linux Essentials

4Linux www.4linux.com.br

5.3 Laboratrio

# help

Caso desejemos visualizar a ajuda rpida para somente um comando interno, usamos esta outra sintaxe:

# help [ comando ]

O comando help somente mostra a ajuda para comandos internos.

# help type

O comando type mostra se cada nome de comando um comando do UNIX, um


comando interno, um alias, uma palavra-chave do shell ou uma funo de shell definida.
Verifique o tipo do comando help que conheceremos a seguir:

# help help

Para comandos externos, o help aparece como parmetro. Por exemplo:

# [ comando ] -- help

Desse modo, caso desejemos visualizar uma ajuda rpida sobre um comando externo, devemos fazer da seguinte forma:

Linux Essentials

Pgina 33

5.3 Laboratrio

4Linux www.4linux.com.br

# ls -- help

O parmetro help pode ser utilizado em qualquer comando para ter uma consulta
rpida dos parmetros que ele pode nos oferecer. importante entender que help
na verdade um parmetro individual de cada comando, logo se um comando no
tiver esse parmetro existem outros meios para se obter ajuda.

No se esquea de estudar as diferenas entre comandos internos e externos.

5.3.2 Comando apropos


O comando apropos utilizado quando no se sabe qual documentao acessar
para um determinado assunto, mostrando as man pages que contm a palavrachave que foi especificada.
A sintaxe utilizada para usar o apropos a seguinte:

# apropos [ palavra - chave ]

Imagine que voc precise editar um arquivo, mas no sabe qual editor utilizar. Execute o apropos para procurar algum comando ou manual de um comando para edio:

# apropos editor

Uma forma equivalente ao apropos usar o comando man juntamente com a


opo -k:

Pgina 34

Linux Essentials

4Linux www.4linux.com.br

5.3 Laboratrio

# man -k editor

5.3.3 Comando whatis


O comando whatis tem basicamente a mesma funo do comando apropos,
porm as buscas do comando whatis so mais especficas. O apropos busca as
pginas de manuais e descries de maneira mais genrica. Se digitarmos a palavra
passwd ele nos trar tudo que tiver passwd, seja como nome ou parte do nome do
manual ou na descrio. J o whatis nos trar somente o manual com nome exato
da palavra pesquisada. A sintaxe utilizada no comando whatis a seguinte:

# whatis [ comando ]

Voc sabe que tem um programa chamado vim, mas no sabe o que ele faz?

# whatis vim

Uma forma equivalente ao whatis usar o comando man juntamente com a


opo -f:

# man -f vim

Para localizar as man pages, o comando apropos e whatis utilizam o mesmo


banco de dados construdo com o comando catman ou makewhatis (executado
pelo administrador do sistema, root). Para construir o banco de dados do comando
apropos e whatis devemos executar o comando abaixo:

Linux Essentials

Pgina 35

5.3 Laboratrio

4Linux www.4linux.com.br

# catman

# makewhatis -v

Os comandos apropos e whatis utilizam a mesma base de dados, importante perceber isso. catman (Debian) e makewhatis (CentOS)

5.3.4 Comando man


O comando man o responsvel por trazer os manuais mais completos sobre
determinado comando, arquivo de configurao, bibliotecas, entre outros nos quais
estamos trabalhando.
Os manuais do sistema so divididos nos seguintes nveis:
man 1 -> Programas executveis e comandos do Shell;
man 2 -> Chamadas de sistema (funes providas pelo Kernel);

Pgina 36

Linux Essentials

4Linux www.4linux.com.br

5.3 Laboratrio

man 3 -> Chamadas de bibliotecas (funes como bibliotecas do sistema);


man 4 -> Arquivos de dispositivo (Localizados normalmente no /dev);
man 5 -> Arquivos de configurao e convenes;
man 6 -> Jogos;
man 7 -> Variados (incluindo pacotes de macros e convenes);
man 8 -> Comandos de administrao do sistema (normalmente usado somente pelo root);
man 9 -> Rotinas de Kernel.

comum o exame cobrar mais dos nveis 1, 5 e 8 dos manuais! Ento lembrese de estudar binrios, arquivos de configurao e comandos administrativos.

Sintaxe do comando man:

# man [ comando ]

ou

# man [ se o ] [ comando ]

Essas informaes sobre as sees do comando man podem ser encontradas em seu prprio manual, digitando o comando man man.

Linux Essentials

Pgina 37

5.3 Laboratrio

4Linux www.4linux.com.br

Se for necessrio visualizar o manual do comando passwd, podemos fazer da seguinte forma:

# man passwd

Para sair do p gina de manual basta pressionar a tecla q

Para navegar pelo manual, o comando man abre um arquivo que est compactado na pasta /usr/share/man/man1 para o passwd. Outros nveis de manuais,
dependem do comando ou arquivo.
O passwd conhecido no sistema GNU/Linux como um comando que adiciona ou
modifica a senha do usurio e, tambm, como o arquivo de usurios do sistema
(/etc/passwd).
Veremos agora o manual do arquivo de usurios passwd:

# man 5 passwd

Podemos consultar quais manuais esto disponveis dentro do prprio diretrio do


man:

# ls / usr / share / man /

Dentro desse diretrio possvel ver todas as divises dos manuais: os nveis, os
idiomas e mais. Todos os nveis de manuais possuem sua determinada introduo
que pode ser vista com o comando:

# man <n vel > intro

Pgina 38

Linux Essentials

4Linux www.4linux.com.br

5.3 Laboratrio

Podemos ver os manuais em diversos idiomas diferentes, desde que o pacote para o
idioma escolhido esteja instalado. Se nosso sistema estiver instalado em portugus,
o comando man ir trazer todas os manuais disponveis em portugus.
J se nosso sistema estiver em ingls preciso usar o parmetro -L pt_BR, para
que possamos ver os manuais em nosso idioma:

# man -L pt_BR comando

importante nesse ponto ressaltar que a documentao em nosso idioma depende


de pessoas que ajudam a fazer a traduo para o portugus, se voc quiser ajudar,
acredite, voc ser muito bem vindo. Veja como ajudar com o comando:

# man 7 undocumented

Podemos ver que para visualizar o manual do arquivo de usurio passwd precisamos informar em qual nvel de manual ele se encontra, pois j existe um passwd
no nvel 1, que o comando, ento ele aparece primeiro quando digitamos man
passwd sem indicar o nvel. Esse manual do arquivo passwd est compactado na
pasta /usr/share/man/man5.

5.3.5 Comando info


As info pages so como as pginas de manuais, porm so utilizadas com navegao entre as pginas. Elas so acessadas pelo comando info. Este til
quando j sabemos o nome do comando e s queremos saber qual sua respectiva
funo.
A navegao nas info pages feita atravs de nomes marcados com um * (hipertextos) que, ao pressionarmos Enter, nos leva at a seo correspondente, e
Backspace volta pgina anterior. Algo parecido com a navegao na Internet.

Linux Essentials

Pgina 39

5.3 Laboratrio

4Linux www.4linux.com.br

Podemos tambm navegar pelas pginas com as teclas n (next/prximo); p


(previous/anterior); u (up/sobe um nvel). Para sair do comando info, basta
pressionar a tecla q.
Se for necessrio exibir a lista de todos os manuais de comandos/programas disponveis, execute o comando abaixo sem nenhum argumento. Assim:

# info

Para exibir as informaes somente de um determinado comando, usaremos a seguinte sintaxe:

# info [ comando ]

Visualizar informaes do comando vim:

# info vim

Alternativas para consulta


Para obter uma melhor visualizao, duas ferramentas de documentao foram desenvolvidas:
yelp -> Ferramenta grfica para visualizao de manuais de aplicativos grficos do
GNOME; (fornecido pelo pacote yelp)
xman -> Front-end para o comando man, que facilita a consulta das man pages;
(fornecido pelo pacote x11-apps)

Pgina 40

Linux Essentials

4Linux www.4linux.com.br

5.3 Laboratrio

5.3.6 Comando whereis


O comando whereis utilizado para mostrar a localizao do binrio do comando,
do arquivo de configurao (caso exista), e a localizao das pginas de manuais do
determinado comando ou arquivo.
Para visualizarmos a localizao destes dados para um determinado comando ou
arquivo, utilizamos a seguinte sintaxe:

# whereis < comando >

ou

# whereis < arquivo >

Mostrar a localizao do binrio do comando, do arquivo de configurao (caso


exista), e a localizao das pginas de manuais do comando vim:

# whereis vim

5.3.7 Comando which


O comando which bem semelhante ao comando whereis, entretanto este s
mostra a localizao do binrio do comando.
Para visualizar a localizao do binrio do comando, utilizamos a seguinte sintaxe:

# which < comando >

Linux Essentials

Pgina 41

5.4 Desafio

4Linux www.4linux.com.br

Localizao do binrio do comando vi:

# which vi

5.4 Desafio
1 - Descubra qual o comando que existe no sistema para envio e recebimento de
e-mail com cinco letras.
2 - Envie um e-mail para aula.4linux@gmail.com Caso tenha dificuldades, seu chefe
deixou um arquivo chamado dica.txt, procure-o e leia-o para mais informaes.

Pgina 42

Linux Essentials

Captulo 6
Aprendendo Comandos do
GNU/Linux

6.1 Contextualizao do Cenrio


Toda a administrao do Linux feita principalmente no modo texto devido a flexibilidade, rapidez e a possibilidade de fazer remotamente.
Para que voc possa administrar o Servidor Intranet da Dexter ser necessrio aprender os principais comandos do GNU/Linux.
Lembre-se: Na maioria das vezes, os problemas mais complexos so resolvidos
com os comandos mais simples.

6.2 Introduo terica


Comandos so instrues passadas ao computador para executar uma determinada
tarefa. No mundo *NIX (GNU/Linux,Unix), o conceito de comandos diferente do

43

6.3 Laboratrio

4Linux www.4linux.com.br

padro MS-DOS. Um comando qualquer arquivo executvel, que pode ser ou no


criado pelo usurio.
Uma das tantas vantagens do GNU/Linux a variedade de comandos que ele oferece, afinal, para quem conhece comandos, a administrao do sistema acaba se
tornando um processo mais rpido.
O Shell o responsvel pela interao entre o usurio e o sistema operacional,
interpretando os comandos.
no Shell que os comandos so executados.

6.3 Laboratrio
6.3.1 Comando ls
O comando ls possui muitos parmetros, veremos aqui as opes mais utilizadas. A
primeira delas o -l que lista os arquivos ou diretrios de uma forma bem detalhada
(quem criou, data de criao, tamanho, dono e grupo ao qual cada um pertence):

1
2

# ls -l /
drwxr -xr - x4 root root 1024 2007 -01 -15 23:17 boot

Veja que a sada desse comando bem detalhada. Falando sobre os campos, para
o primeiro caractere temos algumas opes:

d => indica que se trata de um diret rio

l => indica que se trata de um " link " ( como se fosse um atalho tamb m vamos falar sobre ele depois )

- => h fen , indica que se trata de um arquivo regular

Pgina 44

Linux Essentials

4Linux www.4linux.com.br

6.3 Laboratrio

c => indica que o arquivo um dispositivo de caractere ( sem buffer )

b => indica que o arquivo um dispositivo de bloco ( com buffer )

u => " sin nimo para o tipo c " indica que o arquivo um dispositivo
de caractere ( sem buffer )

s => indica que o arquivo um socket

p => indica que o arquivo um fifo , named pipe

FIFO - Sigla para First In, First Out, que em ingls significa primeiro a entrar, primeiro a sair. So amplamente utilizados para implementar filas de espera. Os elementos vo sendo colocados no final da fila e retirados por ordem de chegada. Pipes
(|) so um exemplo de implementao de FIFO.
Buffer - uma regio de memria temporria, usada para escrita e leitura de dados.
Normalmente, os buffers so utilizados quando existe uma diferena entre a taxa em
que os dados so recebidos e a taxa em que eles podem ser processados.
Socket - um meio de comunicao por software entre um computador e outro.
uma combinao de um endereo IP, um protocolo e um nmero de porta do protocolo.
O campo rwxr-xr-x lista as permisses, enquanto os campos root indicam quem
o usurio e grupo dono desse diretrio que, no nosso caso, o administrador do
sistema, o usurio root. O nmero antes do dono indica o nmero de hard links,
um assunto abordado apenas em cursos mais avanados.
O campo 1024 indica o tamanho do arquivo, e o campo 2007-01-15 23:17 informa
a data e hora em que o diretrio foi criado. Finalmente, no ltimo campo temos o
nome do arquivo ou diretrio listado, que, no nosso exemplo, o boot.
Com relao aos diretrios, importante ressaltar que o tamanho mostrado no
corresponde ao espao ocupado pelo diretrio e seus arquivos e subdiretrios. Esse
espao aquele ocupado pela entrada no sistema de arquivos que corresponde ao
diretrio.
A opo -a lista todos arquivos, inclusive os ocultos:

Linux Essentials

Pgina 45

6.3 Laboratrio

4Linux www.4linux.com.br

# ls -a / root

.. aptitude . bashrc . profile . rnd . ssh . vmware

.. . bash_history . kde . qt root_161206 . viminfo . Xauthority

Veja que, da sada do comando anterior, alguns arquivos so iniciados por . (ponto).
Esses arquivos so ocultos. No Linux, arquivos e diretrios ocultos so iniciados
por um . (ponto). Listar arquivos de forma recursiva, ou seja, listar tambm os
subdiretrios que esto dentro do diretrio /:

# ls -R /

Como listar os arquivos que terminam com a palavra .conf dentro do diretrio
/etc?

# ls / etc /*. conf

Como buscar no diretrio raiz / todos os diretrios que terminem com a letra n?

# ls -ld /* n

6.3.2 Comando touch


Para criar um arquivo, podemos simplesmente abrir um editor de texto e salv-lo.
Mas existem outras formas. Uma das formas mais simples usando o comando
touch:

# cd / srv

Pgina 46

Linux Essentials

4Linux www.4linux.com.br

# touch procedimentos . txt

# touch contas . pdf contas2 . pdf contas3 . pdf contas4 . pdf

6.3 Laboratrio

6.3.3 Curingas
O significado da palavra curinga no dicionrio o seguinte: carta de baralho, que
em certos jogos, muda de valor e colocao na sequncia. No sistema GNU/Linux
bem parecida a utilizao desse recurso. Os curingas so utilizados para especificar
um ou mais arquivos ou diretrios.
Eles podem substituir uma palavra completa ou somente uma letra, seja para listar,
copiar, apagar, etc. So usados cinco tipos de curingas no GNU/Linux:

* - Utilizado para um nome completo ou restante de um arquivo / diret


rio ;

? - Esse curinga pode substituir uma ou mais letras em determinada


posi o ;

! - exclui da opera o

[ padr o] - utilizado para refer ncia a uma faixa de caracteres de


um arquivo / diret rio .

[a -z ][0 -9] - Usado para trabalhar com caracteres de a at z seguidos


de um caractere de 0 at 9.

[a ,z ][1 ,0] - Usado para trabalhar com os caracteres a e z seguidos


de um caractere 1 ou 0 naquela posi o .

[a -z ,1 ,0] - Faz refer ncia do intervalo de caracteres de a at z ou


1 ou 0 naquela posi o .

[^ abc ] - Faz refer ncia a qualquer caracter exceto a , b e c .

{ padr o} - Expande e gera strings para pesquisa de padr es de um


arquivo / diret rio .

10

X{ab ,01} - Faz refer ncia a sequ ncia de caracteres Xab ou X01 .

11

X{a -e ,10} - Faz refer ncia a sequ ncia de caracteres Xa Xb Xc Xd Xe


X10

Linux Essentials

Pgina 47

6.3 Laboratrio

4Linux www.4linux.com.br

DICA: A barra invertida serve para escapar um caracter especial, ela conhecida tambm como backslash.

A diferena do mtodo de expanso dos demais, que a existncia do arquivo ou


diretrio opcional para resultado final. Isto til para a criao de diretrios.
Os 5 tipos de curingas mais utilizados ( *, ?, [ ], , ! ) podem ser usados juntos.
Vejamos alguns exemplos:
Vamos criar 5 arquivos no diretrio /srv utilizando o mtodo de expanso.

# cd / srv

# touch curriculo {1 ,2 ,3}. txt curriculo {4 ,5}. new

Podemos list-los assim:

1
2

# ls
curriculo1 . txt

curriculo2 . txt

curriculo3 . txt

curriculo4 . new

curriculo5 . new

Vamos listar todos os arquivos do diretrio /srv. Podemos usar o curinga * para
visualizar todos os arquivos do diretrio:

1
2

# ls *
curriculo1 . txt

curriculo2 . txt

curriculo3 . txt

curriculo4 . new

curriculo5 . new

Para listarmos todos os arquivos do diretrio /srv que tenham new no nome:

Pgina 48

Linux Essentials

4Linux www.4linux.com.br

# ls * new *

curriculo4 . new curriculo5 . new

6.3 Laboratrio

Listar todos os arquivos que comeam com qualquer nome e terminam com .txt:

1
2

# ls *. txt
curriculo1 . txt curriculo2 . txt curriculo3 . txt procedimentos . txt

Listar todos os arquivos que comeam com o nome curriculo, tenham qualquer
caractere no lugar do curinga, e terminem com .txt:

1
2

# ls curriculo ?. txt
curriculo1 . txt curriculo2 . txt curriculo3 . txt

Para listar todos os arquivos que comeam com o nome curriculo, tenham qualquer
caractere entre o nmero 1-3 no lugar da 4 letra e terminem com .txt. Neste
caso, se obtm uma filtragem mais exata, pois o curinga especifica qualquer caractere naquela posio e [ ] especifica um intervalo de nmeros ou letras que ser
usado:

1
2

# ls curriculo [1 -3]. txt


curriculo1 . txt curriculo2 . txt curriculo3 . txt

Para listar todos .txt exceto o curriculo2.txt:

# ls curriculo [!2]. txt

curriculo1 . txt curriculo3 . txt

Linux Essentials

Pgina 49

6.3 Laboratrio

4Linux www.4linux.com.br

Para listar os arquivos curriculo4.new e curriculo5.new podemos usar os seguintes


mtodos:

# ls *. new

# ls * new *

# ls curriculo ?. new

# ls curriculo [4 ,5].*

# ls curriculo [4 ,5]. new

Existem muitas outras sintaxes possveis para obter o mesmo resultado. A mais indicada ser sempre aquela que atender necessidade com o menor esforo possvel.
A criatividade nesse momento conta muito. No exemplo anterior, a ltima forma resulta na busca mais especfica. O que pretendemos mostrar como visualizar mais
de um arquivo de uma s vez. O uso de curingas muito til e pode ser utilizado em
todas as aes do sistema operacional referentes aos arquivos e diretrios: copiar ,
apagar, mover e renomear.

6.3.4 Comando mkdir


O comando mkdir utilizado para criar um diretrio no sistema. Um diretrio
uma pasta onde voc guarda seus arquivos. Exemplo:
Criar o diretrio Suporte:

# cd / srv

# mkdir Suporte

Criar o diretrio Financeiro e o subdiretrio Contas a Pagar:

# mkdir -p Financeiro / Contas \ a \ Pagar

Pgina 50

Linux Essentials

4Linux www.4linux.com.br

6.3 Laboratrio

A opo -p permite a criao de diretrios de forma recursiva. Para que um subdiretrio exista, o seu diretrio diretamente superior tem que existir. Portanto a criao
de uma estrutura como Rh/Processos/Cvs exigiria a execuo de trs comandos
mkdir.
Algo como:

# mkdir Rh

# mkdir Rh / Processos

# mkdir Rh / Processos / Cv \ s

A opo -p permite que toda essa estrutura seja criada em uma nica linha. Assim:

# mkdir -p Rh / Processos / Cv \ s

6.3.5 Comando rm/rmdir


O comando rm utilizado para apagar arquivos, diretrios e subdiretrios estejam
eles vazios ou no.
Exemplos:
Remover os arquivos com extenso txt:

# cd / srv

# ls

# rm curriculo ?. txt

# ls

Linux Essentials

Pgina 51

6.3 Laboratrio

4Linux www.4linux.com.br

Remover o arquivo curriculo4.new pedindo confirmao:

1
2

# rm -i curriculo4 . new
rm : remover arquivo comum vazio curriculo4 . new ?

A opo -i fora a confirmao para remover o arquivo curriculo4.new.


Remover o diretrio Rh:

# rm -r Rh

A opo -r ou -R indica recursividade, ou seja, a remoo dever ser do diretrio


Rh e de todo o seu contedo.

Observao: Muita ateno ao usar o comando rm! Uma vez que os arquivos
e diretrios removidos no podem mais ser recuperados!

O comando rmdir utilizado para remover diretrios vazios.


Exemplos:
Remover o diretrio Suporte:

# rmdir Suporte

Pgina 52

Linux Essentials

4Linux www.4linux.com.br

6.3 Laboratrio

6.3.6 Comando cp
O comando cp serve para fazer cpias de arquivos e diretrios. Perceba que para
lidar com diretrios a opo -r ou -R tem que ser usada:

# cp arquivo - origem arquivo - destino

2
3

# cp arquivo - origem caminho / diret rio - destino /

4
5

# cp -R diret rio - origem nome - destino

6
7

# cp -R diret rio - origem caminho / diret rio - destino /

Uma opo do comando cp muito til em nosso dia-a-dia a opo -p, que faz
com que a cpia mantenha os meta-dados dos arquivos, ou seja, no modifica a
data e hora de criao, seus donos e nem suas permisses. Utilizar como root:

# su - aluno

$ touch teste

$ ls -l

$ exit

# cd / home / aluno

# cp -p teste teste2

# cp teste teste3

# ls -l teste2 teste3

6.3.7 Comando mv
O comando mv serve tanto para renomear um arquivo quanto para mov-lo:

Linux Essentials

Pgina 53

6.4 Desafio

4Linux www.4linux.com.br

# mv arquivo caminho / diret rio - destino /

# mv arquivo novo - nome

# mv diret rio novo - nome

# mv diret rio caminho / diret rio - destino /

A movimentao de um arquivo uma ao de cpia seguida de uma remoo.


Renomeando arquivo:

# mv teste teste4

Movendo arquivo:

# mv teste4 / tmp

Renomeando diretrio:

# cd / srv

# mv Financeiro financeiro

Movendo diretrio:

# mv financeiro / srv / Rh /

6.4 Desafio
Existe uma pasta /backup no servidor e os backups esto desorganizados, organizeos:

Pgina 54

Linux Essentials

4Linux www.4linux.com.br

6.4 Desafio

1- Criar a estrutura de diretrios a partir da raiz: /backup/

2 - Copiar os backups do diretrio /backup de acordo com a data utilizando os caracteres curingas e coloc-los em seus novos diretrios, organizados por perodos.

Linux Essentials

Pgina 55

Captulo 7
FHS, Hierarquia dos Diretrios

7.1 Contextualizao do Cenrio


Em todos os sistemas operacionais existe uma hierarquia de pastas e arquivos para
organizar toda arquitetura do mesmo. Com o GNU/Linux no diferente, todos os
arquivos e pastas existentes so baseados nas regras da FHS (Filesystem Hierarchy
Standard).
Nessa etapa do curso voc ir se familiarizar com a estrutura da pastas e armazenamentos de arquivos ao mesmo tempo que aprende novos comandos no Linux.

7.2 Introduo Terica


Quem j teve algum contato com o GNU/Linux, mesmo que superficial, deve ter
percebido a presena de vrios diretrios (pastas) no sistema. Entretanto, eles esto
organizados seguindo o padro POSIX, com o qual voc pode no estar muito
familiarizado. Neste captulo, vamos conhecer a organizao, e explorar a estrutura
de diretrios de um sistema GNU/Linux.

57

7.3 Laboratrio

4Linux www.4linux.com.br

Desde que o GNU/Linux foi criado, muito se tem feito para seguir um padro em
relao estrutura de diretrios. O primeiro esforo para padronizao de sistemas
de arquivos para o GNU/Linux foi o FSSTND - Filesystem Standard, lanado no
ano de 1994.
Cada diretrio do sistema tem seus respectivos arquivos que so armazenados conforme regras definidas pela FHS - Filesystem Hierarchy Standard ou Hierarquia Padro do Sistema de Arquivos, que define que tipo de arquivo deve ser
guardado em cada diretrio. Isso muito importante, pois o padro ajuda a manter
compatibilidade entre as distribuies existentes no mercado, permitindo que qualquer software escrito para o GNU/Linux seja executado em qualquer distribuio desenvolvida de acordo com os padres FHS.
Atualmente, o FHS est na sua verso 2.3, e mantido pelo Free Standard Group,
uma organizao sem fins lucrativos formada por grandes empresas como HP, IBM,
RedHat e Dell.

vital entender sobre a FHS para prova, atravs dela que ns devemos
fazer nossas atividades com o GNU/Linux em nosso dia-a-dia.

7.3 Laboratrio
7.3.1 Estrutura de Diretrios GNU/Linux
A estrutura de diretrios tambm conhecida como rvore de Diretrios porque
tem a forma de uma rvore. Mas, antes de estudarmos a estrutura de diretrios,
temos que entender o que so diretrios.
Um diretrio o local onde os arquivos so guardados no sistema. O objetivo
organizar os diferentes arquivos e programas. Pense nos diretrios como sendo as

Pgina 58

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

gavetas de um armrio. Cada gaveta guarda, normalmente, um tipo diferente de


roupa, enquanto cada diretrio guarda um certo tipo especfico de arquivo.
O arquivo pode ser um texto, uma imagem, planilha, etc. Os arquivos devem ser
identificados por nomes para que sejam localizados por quem deseja utiliz-los.
Um detalhe importante a ser observado que o GNU/Linux segue o padro POSIX que case sensitive, isto , ele diferencia letras maisculas e minsculas nos
arquivos e diretrios.
Sendo assim, um arquivo chamado Arquivo diferente de um outro chamado
ARQUIVO e diferente de um terceiro, chamado arquivo. Inteligente isso, no
?
A rvore de diretrios do GNU/Linux tem a seguinte estrutura:

Da estrutura mostrada acima, o FHS determina que um sistema GNU/Linux deve


conter obrigatoriamente 14 diretrios, especificados a seguir:

Diretrio /

# ls -- color /

A opo - -color do comando ls serve para deixar colorido a listagem:


azul -> diretrio

Linux Essentials

Pgina 59

7.3 Laboratrio

4Linux www.4linux.com.br

branco -> arquivo regular


verde -> arquivo executvel
azul claro -> link simblico
vermelho -> arquivo compactado
rosa -> imagem
Este o principal diretrio do GNU/Linux, e representado por uma / (barra).
no diretrio raiz que ficam todos os demais diretrios do sistema. Estes diretrios,
que vamos conhecer agora, so chamados de subdiretrios pois esto dentro do
diretrio /.

Diretrio /bin

# ls / bin

O diretrio /bin guarda os comandos essenciais para o funcionamento do sistema.


Esse um diretrio pblico, sendo assim, os comandos que esto nele podem ser
utilizados por qualquer usurio do sistema. Entre os comandos, esto:
/bin/ls;
/bin/cp;
/bin/mkdir;
/bin/cat;

Pgina 60

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Qualquer usurio pode executar estes comandos:

# / bin / ls / boot / grub

$ / bin / ls / boot / grub

Diretrio /boot

# ls / boot

No diretrio /boot esto os arquivos estticos necessrios inicializao do sistema, e o gerenciador de boot. O gerenciador de boot um programa que permite
escolher e carregar o sistema operacional que ser iniciado.

Diretrio /dev

# ls / dev

No diretrio /dev ficam todos os arquivos de dispositivos. O GNU/Linux faz a comunicao com os perifricos por meio de links especiais que ficam armazenados
nesse diretrio, facilitando assim o acesso aos mesmos.
Para verificar que seu mouse reconhecido como um arquivo, tente olhar o contedo
do arquivo /dev/input/mice:

# cat / dev / input / mice

Linux Essentials

Pgina 61

7.3 Laboratrio

4Linux www.4linux.com.br

Repare que os dados so binrios e no possvel ler o arquivo com o comando cat.
Caso seu terminal fique com caracteres estranhos utilize o comando reset para
resetar o shell:

# reset

Para visualizar o contedo do arquivo /dev/input/mice execute o comando od que


utilizado para visualizar o contedo de um arquivo nos formatos: hexadecimal, octal,
ASCII e nome dos caracteres. Este comando pode ser til para um programador que
deseja criar um programa conforme o movimento do mouse.

# od / dev / input / mice

Caso seu mouse no seja usb, execute o comando abaixo e mova o mouse para
observar sua sada:

# od / dev / psaux

Diretrio /etc

# ls / etc

No diretrio /etc esto os arquivos de configurao do sistema.


Nesse diretrio vamos encontrar vrios arquivos de configurao, tais como: scripts
de inicializao do sistema, tabela do sistema de arquivos, lisat de usurios cadastrados no sistemas, etc.

Pgina 62

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

O arquivo passwd est localizado no /etc/ e responsvel por armazenar a lista de


todos os usurios criados no Linux:

# cat / etc / passwd

Vamos pegar uma linha de exemplo:

aluno :x :1000:1000: aluno :/ home / aluno :/ bin / bash

Uma particularidade desse arquivo que ele armazena a informao de um usurio


em 7 campos, onde cada campo est separdo por : (dois pontos) conforme podemos
observar acima.
Veja um resumo dos campos que sero vistos com mais detalhes na Aula de Administrao de Usurio do Curso Linux System Administration:

O arquivo passwd tende a ser bem extenso dependendo da funcionalidade do servidor, ento uma formas de visualiz-lo com paginao usando os comandos more
ou less.
Vamos paginar o passwd:

Linux Essentials

Pgina 63

7.3 Laboratrio

4Linux www.4linux.com.br

# more / etc / passwd

O comando more assim como o cat serve para ver o contedo de um arquivo que ,
geralmente, texto. A diferena entre o more e o cat que o more faz uma pausa
a cada tela cheia exibindo uma mensagem - -More- - , dando uma oportunidade ao
usurio de paginao.
Aperte enter para ir para a prxima linha ou espao para ir para a prxima pgina
ou digite q para sair e voltar ao terminal.
Uma alternativa ao uso do comando more seria o o comando less, que implementa
as mesmas funcionalidades que more e mais algumas, como a possibilidade de rolar
a tela para cima e para o lado quando o texto ocupa mais de oitenta colunas. A
utilizao dos comandos less e more se faz de maneira semelhante.

# less / etc / passwd

Outros comandos interessantes que podem nos fornecer informaes especficas


de arquivos o head, tail e wc. Vamos usar o arquivo passwd para aprender a
funcionalidade desses 3 comandos:
O comando head mostra por padro as 10 primeiras linhas de um arquivo.

# head / etc / passwd

Voc tambm pode especificar a quantidade de linhas que deseja visualizar. Por
exemplo, me mostre a primeira linha do arquivo passwd:

# head -n1

root :x :0:0: root :/ root :/ bin / bash

Pgina 64

/ etc / passwd

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Veja que o usurio root foi o primeiro usurio a ser criado no sistema durante o
processo de instalao.
O comando tail mostra por padro as 10 ltimas linhas de um arquivo.

# tail / etc / passwd

Voc tambm pode especificar a quantidade de linhas que deseja visualizar. Por
exemplo, me mostre a ltima linha do arquivo passwd:

# tail -n1

/ etc / passwd

A sada do comando acima ir mostrar qual foi o ltimo usurio criado no sistema.
O comando wc uma espcie de contador. Por padro ele sempre ir mostrar a
quantidade de linhas, palavras e caracteres quando usado sem parmetros:

# wc / etc / passwd

36 59 1779 / etc / passwd

Mas podemos especificar o que necessitamos que ele conte com as opo abaixo:
-l - contar linhas
-w - contar palavras
-c - contar caracteres
Um exemplo interessante ainda usando o arquivo /etc/passwd saber quantos usurios existentes atualmente no sistema. Como falado anteriormente, cada linha do
arquivo passwd representar as informaes de um usurio, logo a quantidade de
linhas desse arquivo ir me indicar quantos usurios existem:

Linux Essentials

Pgina 65

7.3 Laboratrio

# wc -l

36 / etc / passwd

4Linux www.4linux.com.br

/ etc / passwd

Diretrio /lib

# ls / lib

No diretrio /lib esto as bibliotecas compartilhadas e mdulos do kernel. As bibliotecas so funes que podem ser utilizadas por vrios programas.
Cada kernel tm seus prprios mdulos, que ficam em: /lib/modules/<verso do kernel>/kernel Separados por tipos em subdiretrios.
Para saber sua verso do kernel execute:

# uname -r

Para visualizar os tipos de mdulos:

# ls / lib / modules / $ ( uname -r ) / kernel

Diretrio /media

# ls / media

Pgina 66

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Ponto de montagem para dispositivos removveis, tais como:


hd
cd
dvd
disquete
pendrive
cmera digital

Diretrio /mnt

# ls / mnt

Este diretrio utilizado para montagem temporria de sistemas de arquivos, tais


como compartilhamentos de arquivos entre Windows e GNU/Linux, GNU/Linux e
GNU/Linux, etc.

Diretrio /opt

# ls / opt

Normalmente, utilizado por programas proprietrios ou que no fazem parte oficialmente da distribuio.

Linux Essentials

Pgina 67

7.3 Laboratrio

4Linux www.4linux.com.br

Diretrio /sbin

# ls / sbin

O diretrio /sbin guarda os comandos utilizados para inicializar, reparar, restaurar


e/ou recuperar o sistema. Isso quer dizer que esse diretrio tambm contm comandos essenciais, mas os mesmos so utilizados apenas pelo usurio administrador
root. Entre os comandos esto:

halt
ifconfig
init
iptables

Os usurios comuns no podem executar comandos do /sbin que alterem o sistema,


apenas alguns para visualizao.
EX:
Visualizar IP configurado na placa eth0:

$ / sbin / ifconfig eth0

Alterar IP da placa de rede:

$ / sbin / ifconfig eth0 192.168.200.100

Pgina 68

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Obs.: necessrio passar o caminho completo do comando, pois o diretrio /sbin


no consta na lista de diretrios de comandos do usurio comum que definida na
varivel PATH, iremos estudar esta varivel durante o curso.

Diretrio /srv

# ls / srv

Diretrio para dados de servios fornecidos pelo sistema, cuja aplicao de alcance
geral, ou seja, os dados no so especficos de um usurio. Por exemplo:
/srv/www (servidor web)
/srv/ftp (servidor ftp)

Diretrio /tmp

# ls / tmp

Diretrio para armazenamento de arquivos temporrios. utilizado principalmente


para guardar pequenas informaes que precisam estar em algum lugar at que a
operao seja completada, como o caso de um download.
Enquanto no for concludo, o arquivo fica registrado em /tmp e, assim que
finalizado, encaminhado para o local correto.
No Debian os dados so perdidos a cada reboot, j no CentOS os dados so mantidos durante dez dias aps seu ltimo acesso.

Linux Essentials

Pgina 69

7.3 Laboratrio

4Linux www.4linux.com.br

Para alterar no Debian:

# vim / etc / default / rcS

TMPTIME =0

SULOGIN = no

DELAYLOGIN = no

UTC = yes

VERBOSE = no

FSCKFIX = no

Altere o valor da varivel TMPTIME para o nmero de dias que desejar manter os
dados aps o seu ltimo acesso.

Para alterar no CentOS:

# vim / etc / cron . daily / tmpwatch

flags =- umc

/ usr / sbin / tmpwatch $flags -x / tmp /. X11 - unix -x / tmp /. XIM - unix \

-x / tmp /. font - unix -x / tmp /. ICE - unix -x / tmp /. Test - unix \

-X / tmp / hsperfdata_ * 10 d / tmp

/ usr / sbin / tmpwatch $flags 30 d / var / tmp

for d in / var /{ cache / man , catman }/{ cat ? , X11R6 / cat ? , local / cat ?}; do
if [ -d $d ]; then

8
9

/ usr / sbin / tmpwatch $flags -f 30 d $d


fi

10
11

done

Altere de 10 dias, para o total de dias que quiser.

Pgina 70

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Diretrio /usr

# ls / usr

O diretrio /usr contm programas que no so essenciais ao sistema e que seguem o padro GNU/Linux, como, por exemplo, navegadores, gerenciadores de janelas, etc.

Fique atento as diferenas entre:


/bin - binrios essenciais ao sistema
/usr/bin - binrios no essenciais ao sistema
/usr/local/bin - scripts criados pelo usurio

Diretrio /var

# ls / var

O diretrio /var contm arquivos de dados variveis. Por padro, os programas


que geram arquivos de registro para consulta, mais conhecidos como logs, ficam
armazenados nesse diretrio. Alm dos logs, os arquivos que esto aguardando
em filas, tambm ficam localizados em /var/spool.
Os principais arquivos que se utilizam do diretrio /var so:
mensagens de e-mail

Linux Essentials

Pgina 71

7.3 Laboratrio

4Linux www.4linux.com.br

arquivos a serem impressos

# ls / var / spool

Arquivos de log

# ls / var / log

Diretrio /proc

# ls / proc

O /proc um diretrio virtual, mantido pelo kernel, onde encontramos a configurao atual do sistema, dados estatsticos, dispositivos j montados, interrupes,
endereos e estados das portas fsicas, dados sobre as redes, etc.
Utilize os paginadores more ou less para visualizar alguns arquivos:

# more / proc / interrupts

Neste arquivo esto as informaes das IRQs dos dispositivos.


Os endereos de IRQ so interrupes de hardware, canais que os dispositivos podem utilizar para chamar a ateno do processador.
Na maioria das situaes, o sistema operacional simplesmente chaveia entre os aplicativos ativos, permitindo que ele utilize o processador durante um determinado espao de tempo e passe a bola para o seguinte. Como o processador trabalha a uma

Pgina 72

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

frequncia de clock muito alta, o chaveamento feito de forma muito rpida, dando
a impresso de que todos realmente esto sendo executados ao mesmo tempo.
Ao ser avisado atravs de qualquer um destes canais de IRQ, o processador imediatamente pra qualquer coisa que esteja fazendo e d ateno ao dispositivo, voltando
ao trabalho logo depois. Cada endereo uma espcie de campainha, que pode ser
tocada a qualquer momento. Se no fossem pelos endereos de IRQ, o processador
no seria capaz de ler as teclas digitadas no teclado, nem os clicks do mouse, a sua
conexo pararia toda vez que abrisse qualquer programa e assim por diante.

# less / proc / dma

o arquivo que contm a lista do registro ISA direto dos canais em uso da acesso a
memria (DMA).
Os canais de DMA so utilizados apenas por dispositivos de legado (placas ISA, portas paralelas e drives de disquete) para transferir dados diretamente para a memria
RAM, reduzindo desta forma a utilizao do processador.

# more / proc / ioports

Neste arquivo encontramos informaes sobre os endereos das portas I/O (Input/Output).
Diferentemente dos endereos de IRQ, os endereos de I/O no so interrupes,
mas sim endereos utilizados para a comunicao entre os dispositivos. Cada dispositivo precisa de um endereo prprio mas, ao contrrio dos endereos de IRQ, existe
uma abundncia de endereos de I/O disponveis, de forma que eles raramente so
um problema.

Diretrio /sys

Linux Essentials

Pgina 73

7.3 Laboratrio

4Linux www.4linux.com.br

# ls / sys

Pode-se dizer que esse diretrio um primo do diretrio /proc. Dentro do diretrio
/sys podemos encontrar o quase o mesmo contedo do /proc, mas de uma forma
bem mais organizada para ns administradores.
Esse diretrio est presente desde a verso 2.6 do kernel, ele agrupa informaes
sobre os dispositivos instalados, incluindo o tipo, fabricante, capacidade, endereos
usados e assim por diante. Estas informaes so geradas automaticamente pelo
kernel e permitem que os servios responsveis pela deteco de hardware faam
seu trabalho, configurando impressoras e criando cones no desktop para acesso ao
pendrive, por exemplo.

Diretrios /home e /root

# ls / home

/ root

Os diretrios /root e /home podem estar disponveis no sistema, mas no precisam obrigatoriamente possuir este nome. Por exemplo, o diretrio /home poderia
se chamar /casa, que no causaria nenhum impacto na estrutura do sistema.
O /home contm os diretrios pessoais dos usurios cadastrados no sistema.
O /root o diretrio pessoal do super usurio root.
O root o administrador do sistema, e pode alterar as configuraes do sistema,
configurar interfaces de rede, manipular usurios e grupos, alterar a prioridade dos
processos, entre outras. Dica: Utilize uma conta de usurio normal em vez da conta
root para operar seu sistema.

Pgina 74

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Uma razo para evitar usar privilgios root regularmente, a facilidade de


se cometer danos irreparveis; alm do que, voc pode ser enganado e rodar um
programa Cavalo de Tria (programa que obtm poderes do super usurio) comprometendo a segurana do seu sistema sem que voc saiba.

7.3.2 Comandos de Localizao


Comando Find

O comando find procura por arquivos/diretrios no disco. Ele pode procurar arquivos pela sua data de modificao, tamanho, etc. O find, ao contrrio de outros
programas, usa opes longas por meio de um -.
Sintaxe do comando find:

find [diretrio] [opes/expresso]

-name [expresso] :
Procura pela [expresso] definida nos nomes de arquivos e diretrios processados.

# find / etc - name *. conf

-maxdepth [num] :
Limita a recursividade de busca na rvore de diretrios. Por exemplo, limitando a 1,

Linux Essentials

Pgina 75

7.3 Laboratrio

4Linux www.4linux.com.br

a busca ser feita apenas no diretrio especificado e no ir incluir nenhum subdiretrio.

# find / etc - maxdepth 1 - name *. conf

-amin [num] :
Procura por arquivos que foram acessados [num] minutos atrs. Caso seja antecedido por -, procura por arquivos que foram acessados entre [num] minutos atrs e
o momento atual.

# find ~ - amin -5

-atime [num] :
Procura por arquivos que foram acessados [num] dias atrs. Caso seja antecedido
por -, procura por arquivos que foram acessados entre [num] dias atrs e a data
atual.

# find ~ - atime -10

-uid [num] :
Procura por arquivos que pertenam ao usurio com o uid 1000 [num].

# find / - uid 1000

-user [nome] :

Pgina 76

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Procura por arquivos que pertenam ao usurio aluno [nome].

# find / - user aluno

-perm [modo] :

Procura por arquivos que possuem os modos de permisso [modo]. Os [modo] de


permisso podem ser numrico (octal) ou literal.

# find / - perm 644

-size [num] :

Procura por arquivos que tenham o tamanho [num]. O tamanho especificado em bytes. Voc pode usar os sufixos k, M ou G para representar o tamanho em Quilobytes,
Megabytes ou Gigabytes, respectivamente. O valor de [num] Pode ser antecedido de
+ ou - para especificar um arquivo maior ou menor que [num].

# find / - size +1 M

-type [tipo] :
Procura por arquivos do [tipo] especificado. Os seguintes tipos so aceitos:
b - bloco; c - caractere; d - diretrio; p - pipe; f - arquivo regular; l - link simblico; s
- socket.

# find / dev - type b

Linux Essentials

Pgina 77

7.3 Laboratrio

4Linux www.4linux.com.br

Outros exemplos:
Procura no diretrio raiz e nos subdiretrios um arquivo/diretrio chamado grep
ignorando caso sensitivo:

# find / - iname GREP

-iname - ignora case sensitive;


Procura no diretrio raiz e nos subdiretrios at o 2 nvel, um arquivo/diretrio chamado grep:

# find / - maxdepth 2 - name grep

Procura no diretrio atual e nos subdiretrios um arquivo com tamanho maior que
1000 kbytes (1Mbyte).:

# find . - size +1000 k

Procura no diretrio raiz e nos subdiretrios um arquivo que foi modificado h 10


minutos atrs ou menos:

# find / - mmin -10

Procura diretrios a partir do diretrio /etc e tambm executa um comando no resultado da busca com a opo exec, no exemplo o comando ls -ld:

# find / etc - type d

Pgina 78

- exec ls - ld {} \;

Linux Essentials

4Linux www.4linux.com.br

7.3 Laboratrio

Comando Xargs
Outra forma de procurar por arquivos e/ou diretrios e executar um comando atravs do comando xargs que obtm como a entrada a sada ok do comando antes do
pipe e envia como stdin do prximo comando, no caso o ls -ld:

# find / etc - type d

| xargs ls - ld

Vamos agora listar diretrios utilizando o xargs:

# ls / | xargs - n1

# ls / | xargs - n2

# ls / | xargs - n3

Outros testes com o xargs:

# ls / > teste_xargs . txt

# cat teste_xargs . txt

# cat teste_xargs . txt | xargs -n 2

# xargs -n 3 < teste_xargs . txt

Voc percebeu que no primeiro comando ele listou o diretrio, jogando na tela um
nome de cada vez. O segundo comando far o mesmo s que com dois nomes na
mesma linha, e o terceiro com 3 nomes.
Tempo de execuo de um programa: time
O comando time permite medir o tempo de execuo de um programa. Sua sintaxe
: time [programa].
Exemplo:

Linux Essentials

Pgina 79

7.3 Laboratrio

4Linux www.4linux.com.br

# time find / - name *. conf

Comando Locate

O comando locate um comando rpido de busca de arquivos, porm no usa


busca recursiva na sua rvore de diretrios. Ele utiliza uma base de dados que
criada pelo comando updatedb, para que a busca seja mais rpida. Por padro, a
atualizao da base de dados agendado no cron do sistema para ser executada
diariamente.
Para utiliz-lo, primeiro necessrio criar a sua base de dados usando a seguinte
sintaxe:

# updatedb

Quando esse comando executado pela primeira vez costuma demorar um pouco.
Isso deve-se a primeira varredura do disco para a criao da primeira base de dados.
Para o comando locate, usamos a seguinte sintaxe:

# locate howto

A sada do comando ser algo parecido com:

/ usr / share / doc / python2 .4 - xml / howto . cls

/ usr / share / doc / python2 .4 - xml / xml - howto . tex . gz

/ usr / share / doc / python2 .4 - xml / xml - howto . txt . gz / usr / share / vim / vim64 /
doc / howto . txt

Pgina 80

Linux Essentials

4Linux www.4linux.com.br

7.4 Desafio

7.4 Desafio
1 - Localizar diretrio httpd que est localizado dentro do diretrio que contm os
arquivos de configuraes do sistema, criar o diretrio /backup/confs e copi-lo para
l.

Linux Essentials

Pgina 81

Captulo 8
Editores de texto
8.1 Contextualizao do Cenrio
Num sistema baseado Alguns arquivos de configurao do sistema precisa ser alterado, para isto ser necessrio aprender a utilizar os editores de texto.

8.2 Introduo terica


A grande maioria das configuraes em sistemas GNU/Linux so feitas editando
diretamente arquivos de configurao em modo texto. Para facilitar essa tarefa,
preciso conhecer alguns editores de texto, dentre eles: vi, vim, nano, pico,
mcedit, ed, e emacs dentre outros:

vi - Sem dvida nenhuma o editor mais famoso de todos os tempos, presente


em quase todas as distribuies;

vim - Uma verso melhorada do vi, Vim significa VImproved e traz diversas
facilidades sem perder os conceitos originais do vi;

83

8.3 Editores de texto

4Linux www.4linux.com.br

nano - Editor padro de muitas distribuies como Debian , CentOS esse editor
diferente do vim e muito fcil de ser usado;
pico - Muito parecido com o nano, este est presente nas distribuies Slackware
e Gentoo;
mcedit - Editor muito fcil e completo. Seu grande diferencial a possibilidade
da utilizao do mouse, mesmo no ambiente textual;
ed - O editor de textos mais simples no mundo Unix, o ed um editor de linha
para terminais aonde no possvel abrir uma janela de edio;
emacs - Poderoso editor de "tudo", o emacs tambm muito conhecido no
mundo GNU/LINUX por fazer muitas coisas diferenciadas de um editor de texto;
Neste captulo vamos abordar apenas a utilizao dos editores nano e vim. Isso
porque eles so os mais usados.

8.3 Editores de texto


8.3.1 Nano
O nano o editor padro de textos do Debian e Red Hat, e distribuies baseadas
neles. Esse editor muito fcil de ser usado, e sua interface muito intuitiva e
agradvel. Para abrirmos o editor devemos chamar o seguinte comando:

# nano [ arquivo ]

Pgina 84

Linux Essentials

4Linux www.4linux.com.br

8.3 Editores de texto

Ao ser chamado, este editor ir apresentar um tela em branco com um rodap semelhante a esse:
Vamos analisar essas funes:

igual a "Ctrl + G"e assim por diante


Lembrando que "G"

Get Help - Apresenta uma tela de ajuda para os mais diversos comandos e
G
uma breve explicao sobre o editor;
X Exit - Sai do editor, lembrando que se o arquivo no estiver salvo, essa opo
ir te pedir para salv-lo;

WriteOut - Salva ou sobrescreve um arquivo;


J Justify - Justifica o arquivo inteiro;
Read File - Importa um arquivo;
R
Where Is - Procura por uma ocorrncia dentro do arquivo;
W
Y Prev Page - Move o cursor para pagina anterior;
V Next Page - Move o cursor para prxima pagina;
Cut Text - Corta a linha em que o cursor est posicionado;
K
UnCut Text - Cola a linha recortada na posio atual do cursor
Cur Pos - Mostra informaes sobre a posio do cursor;
C

Linux Essentials

Pgina 85

8.3 Editores de texto

4Linux www.4linux.com.br

T To Spell - Ativa a correo ortogrfica. necessrio ter o comando spell


instalado para que isso funcione;

Como podemos ver, usar o editor de textos nano, no uma das tarefas mais
difceis no GNU/Linux. Vamos conhecer, agora, o editor Vim.

Para definirmos qual ser o editor padro no Debian podemos usar o aplicativo
update-alternatives.

# update - alternatives -- config editor

8.3.2 Vim

O Vi o editor bsico do GNU/Linux, e est disponvel em grande parte das distribuies do GNU/Linux, mesmo naquelas que vm em apenas um disquete. Hoje em
dia, as distribuies usam uma verso mais completa e com mais recursos do que o
Vi que o Vim = VI iMproved. Abaixo podemos ver uma tela do editor de textos
vim:

Ao invocar o vim, este entra direto para o modo visualizao. Para modificar o
arquivo, usam-se os modos de insero, deleo e de substituio. Para voltar ao
modo de visualizao, sempre se usa a tecla ESC.

Pgina 86

Linux Essentials

4Linux www.4linux.com.br

8.4 Laboratrio

A grande maioria dos servios em Unix so configurados atravs de arquivos de


configurao, o vim no seria diferente. Seu arquivo de configurao fica localizado
em /etc/vim/vimrc. Para configurar o seu editor de textos, basta descomentar as
funcionalidades desejadas, e copiar o arquivo para o seu home como .vimrc.

$ cp / etc / vim / vimrc ~/. vimrc

8.4 Laboratrio

# vim texto

# Para inserir digite : i

i => Entra no modo de inser o antes do cursor

4
5

# Para sair do modo de inser o digite : ESC

6
7

# Para inserir uma linha abaixo do cursor digite : o

Linux Essentials

Pgina 87

8.4 Laboratrio

4Linux www.4linux.com.br

o => Insere uma linha abaixo do cursor e entra no modo de inser o

9
10

# Para sair do modo de inser o digite : ESC

11
12

# Para inserir uma linha acima do cursor digite :

13

O => Insere uma linha acima do cursor e entra no modo de inser o

14
15

# Para sair do modo de inser o digite : ESC

16
17

# Para desfazer a ltima altera o digite :

18
19

# Para refazer digite :

CTRL + R

20
21

# Para numerar as linhas digite :

: set number

22
23

# Para copiar a segunda linha digite :

:2 y

24
25

# Para colar na linha abaixo do cursor digite :

26
27

# Para ir para a primeira linha digite : gg

28
29

# Para colar na linha acima do cursor , "3 vezes " digite : 3 P

30
31

# Para salvar as altera es digite : : w

32
33

# Para sair do arquivo sem salvar digite : : q

ou

Para for ar a sa

da sem salvar : : q !

# vim texto

# Para ir para a ltima linha digite : G

3
4

# Para deletar " recortar " a linha atual digite : dd

5
6

# Para salvar e sair do arquivo :

Pgina 88

ou

Para for ar :

x!

Linux Essentials

4Linux www.4linux.com.br

8.4 Laboratrio

# vim texto

# Delete as 5 primeiras linhas digitando :


cursor na primeira linha digite :

5 dd

:1 ,5 d
ou

ou

Com o

d5d

3
4

# Para sair sem salvar digite :

q!

# vim texto

# buscar palavra " inser " dentro do arquivo abaixo do cursor , digite :
/ inser

# Para ir para a pr xima ocorr ncia digite :

# Para ir para a ocorr ncia anterior digite :

# Buscar palavra " inser " dentro do arquivo acima do cursor , digite :
? inser

# Para grifar todos os resultados da busca , digite : : set hlsearch

8.4.1 Funcionalidades do vim


Comandos bsicos de insero de texto:
i - Insere texto antes do cursor;
a - Insere texto depois do cursor;
r - Substitui texto no incio da linha onde se encontra o cursor;
A - Insere texto no final da linha onde se encontra o cursor;
o - Adiciona linha abaixo da linha atual;
O - Adiciona linha acima da linha atual;

Linux Essentials

Pgina 89

8.4 Laboratrio

4Linux www.4linux.com.br

Ctrl + h - Apaga o ltimo caractere.


Comandos bsicos de movimentao:
Ctrl+f - Move o cursor para a prxima tela;
Ctrl+b - Move o cursor para a tela anterior;
H - Move o cursor para a primeira linha da tela;
M - Move o cursor para o meio da tela;
L - Move o cursor para a ltima linha da tela;
h - Move o cursor um caractere esquerda;
j - Move o cursor para a prxima linha;
k - Move o cursor para linha anterior;
l - Move o cursor um caractere direita;
w - Move o cursor para o incio da prxima palavra;
W - Move o cursor para o incio da prxima palavra, separadas por espao;
b - Move o cursor para o incio da palavra anterior;
B - Move o cursor para o incio da palavra anterior, separadas por espao;
0(zero) - Move o cursor para o incio da linha atual;
- Move o cursor para o primeiro caractere no branco da linha atual;
$ - Move o cursor para o final da linha atual;

Pgina 90

Linux Essentials

4Linux www.4linux.com.br

8.4 Laboratrio

nG - Move o cursor para a linha n;


:n - Move o cursor para a linha n;
gg - Move o cursor para a primeira linha do arquivo;
G - Move o cursor para a ltima linha do arquivo.
Comandos bsicos para localizar texto:
/palavra - Busca pela palavra ou caractere em todo o texto;
?palavra - Move o cursor para a ocorrncia anterior da palavra;
n - Repete o ltimo comando / ou ?;
N - Repete o ltimo comando / ou ?, na direo reversa;
Ctrl+g - Mostra o nome do arquivo, o nmero da linha atual e o total de linhas.
Comandos bsicos para alterao de texto:
x - Deleta o caractere que est sob o cursor;
dw - Deleta a palavra, da posio atual do cursor at o final;
dd - Deleta a linha atual, e copia o contedo para rea de transferncia;
D - Deleta a linha a partir da posio atual do cursor at o final;
:A,Bd - Deleta da linha A at a linha B, copia para rea de transferncia;
rx - Substitui o caractere sob o cursor pelo especificado em x;
u - Desfaz a ltima modificao ;

Linux Essentials

Pgina 91

8.4 Laboratrio

4Linux www.4linux.com.br

U - Desfaz todas as modificaes feitas na linha atual;


J - Une a linha corrente a prxima;
yy - Copia 1 linha para a rea de transferncia;
yNy - Copia N linhas para a rea de transferncia;
p - Cola o contedo da rea de transferncia;
Np - Cola N vezes o contedo da rea de transferncia;
cc - Apaga o contedo da linha, e copia para rea de transferncia;
cNc - Apaga o contedo de N linhas, e copia para rea de transferncia;
:%s/string1/string2/g - Substitui "string1"por "string2".
Comandos para salvar o texto:
:wq ou :x - Salva o arquivo e sai do editor;
:w nome_do_arquivo - Salva o arquivo corrente com o nome especificado;
:w! nome_do_arquivo - O mesmo que :w, mas forando sobrescrita;
:q - Sai do editor;
:q! - Sai do editor sem salvar as alteraes realizadas.

Resumo de " vi " para a LPI :

2
3

: set ic = > ignora case sensitive

: set number = > numera as linhas

: syntax on = > colore o texto

Pgina 92

Linux Essentials

4Linux www.4linux.com.br

: set hlsearch = > grifa o texto

:w => Salva o arquivo que est sendo editado no momento .

:q => Sai .

: wq => Salva e sai .

10

:x => Salva e sai .

11

ZZ => Salva e sai .

12

:w! => Salva for ado .

13

:q! => Sai for ado .

14

: wq ! => Salva e sai for ado .

8.5 Desafio

8.4.2 Deixando o vim com sua cara:


No Debian o arquivo /etc/vim/vimrc e no CentOS /etc/vimrc. Adicione ao final
do arquivo as opes para deixar o texto com a as linhas numeradas, texto colorido
e grifar as buscas encontradas:

# vim / etc / vim / vimrc

set number

syntax on

set hlsearch

8.5 Desafio
1- Habilite permantemente a numerao das linhas no servidor CentOS.
2-Pratique o vim: Acesse o ip da mquina Dexter pelo navegador da mquina Debian.
Cadastre-se como cliente e edite o arquivo na mquina Dexter: /var/www/dexter/clientes.php Copie da linhas 41 at a linha 47 e cole na linha 48, cadastre seu nome e
um telefone fictcio, recarregue o site da aula.

Linux Essentials

Pgina 93

Captulo 9
Administrao da Shell

9.1 Introduo terica

O principal meio de interao do usurio com um sistema GNU/Linux o terminal de


comandos, tambm conhecida como shell. Neste captulo iremos aprender como
personaliz-la e sua utilizao bsica.

9.1.1 O que uma shell?

A shell uma camada de acesso ao sistema bsico, o sistema operacional do


computador, que pode ser acessada tanto pelo modo grfico, quanto em modo texto.
A shell pode ser personalizada para atender as necessidade do usurio. Podese definir um idioma padro, personalizar e automatizar processos. Nos tpicos a
seguir, veremos como fazer essa personalizao.

A figura abaixo ilustra como podemos posicionar a shell dentro do sistema.

95

9.2 Laboratrio

4Linux www.4linux.com.br

9.1.2 Variveis em Shell

As variveis da shell tm o mesmo objetivo das variveis que conhecemos na rea


da computao, ou seja, so reas de memria que podem conter dados que sero
utilizados por diversos programas. Quando estamos falando de variveis em shell
no precisamos nos preocupar em declar-las nem mesmo definir o seu tipo. Em
shell, uma varivel definida simplesmente atribuindo-se um valor a ela. Vejamos
um exemplo: Se definirmos que ANSWER=42, estaremos armazenando o valor
42 em um determinado endereo de memria que podemos acessar utilizando o
nome que atribumos a ele, ou seja, ANSWER.

9.2 Laboratrio

# ANSWER =42

Esse tipo de varivel que acabamos de definir conhecida como escalar e pode
receber valores numricos ou caracteres.

Pgina 96

Linux Essentials

4Linux www.4linux.com.br

9.2 Laboratrio

Para acessarmos o endereo de memria atribudo varivel ANSWER, em shell,


devemos utilizar o operador $ (cifro) antes do nome da varivel, ou seja, se desejarmos mostrar na tela o valor da varivel ANSWER devemos imprimir o contedo
armazenado no endereo de memria $ANSWER:

# echo $ANSWER

O comando echo usado para imprimir algo na tela ou direcionar para um arquivo.
Isso bastante til para automao. Na linha de comando o echo til para inspecionar variveis de ambiente, que so parmetros guardados em memria e que
definem o ambiente em uso.
Para imprimir algo na tela:

# echo algo

Vamos definir a varivel comando com o valor igual a ls:

# comando = ls

Para verificarmos o valor da varivel podemos digitar:

# echo $comando

Ou

# echo " $comando "

Para escrevermos na tela: $comando, digite:

Linux Essentials

Pgina 97

9.2 Laboratrio

4Linux www.4linux.com.br

# echo $comando

Para executarmos o valor da varivel comando, digite:

# echo $comando

Ou

# echo $( $comando )

9.2.1 Variveis Locais e de Ambiente (globais)


Quando falamos em variveis em shell temos que ter em mente a diviso entre variveis locais e de ambiente (ou globais). A diferena entre elas que uma varivel
local tem visibilidade restrita, apenas ao escopo ao qual ela foi definida, e uma varivel de ambiente tem visibilidade no s no escopo em que foi definida mas tambm
em ambientes derivados.
A nica diferena tcnica entre variveis locais e de ambiente a forma de sua
definio. Para definir uma varivel local, basta atribuir um valor a um nome de
varivel. Para definir uma varivel de ambiente o procedimento adiciona o comando
exportantes da definio. Abaixo mostramos exemplos de definio de varivel
local e de ambiente:

# LOCAL =" sem export na frente "

# export GLOBAL =" com export na frente "

Pgina 98

Linux Essentials

4Linux www.4linux.com.br

9.2 Laboratrio

Uma vez definidas as variveis, podemos visualiz-las utilizando os comandos set


e env ou printenv para variveis locais e de ambiente, respectivamente. Com
isso, se tivssemos definido as variveis LOCAL e GLOBAL e executssemos
o comando set, veramos as definies de ambas. Mas, se executssemos o
comando env, veramos apenas a definio da varivel GLOBAL.
Visualizando:

# magica =" abracadabra "

# echo $magica

# set

# clear

# env

Abra um terminal filho :

# bash

No h nada na vari vel , pois ela n o foi exportada :

# echo $magica

10

# exit

Exporte a varivel:

# export magica

# set

# clear

# env

Abra um terminal filho:

# bash

Agora existe um valor para a varivel:

Linux Essentials

Pgina 99

9.2 Laboratrio

4Linux www.4linux.com.br

# echo $magica

Para desabilitar utilize o comando: unset que apaga a varivel:

# unset magica

# echo $magica

Para ficar permanente para todos e funcionar em qualquer terminal deve-se colocar
em um dos arquivos:

/ etc / profile

/ etc / environment

Para ficar permanente para o usurio e funcionar em qualquer terminal deve-se colocar em um dos arquivos:

~/. bashrc

~/. bash_profile

~/. bash_login

~/. profile

Variveis de ambiente (as globais) so muito s pois definem o comportamento da


shell e de muitos outros programas. Por exemplo, a forma com que o prompt
apresentado ao usurio definido pela varivel global PS1.

# echo $PS1

# PS1 =" C :\ > "

Pgina 100

Linux Essentials

4Linux www.4linux.com.br

9.2 Laboratrio

Algumas variveis importantes: EDITOR -> define o editor que abrir um programa
que chama o editor padro. No debian, conseguimos fazer a alterao do editor atravs do comando update-alternatives config editor, que veremos ainda no curso.

# echo $EDITOR

# export EDITOR = nano

# vipw

# export EDITOR = vim

# vipw

TMOUT -> tempo em segundos de inatividade para deslogar automaticamente:

# TMOUT =30

HOME -> home do usurio atual:

# echo $HOME

HISTSIZE -> tamanho do histrico de comandos:

# echo $HISTSIZE

# history

PATH -> define quais diretrios pesquisar e a ordem na qual eles so pesquisados
para encontrar um determinado comando:

# su - aluno

$ echo $PATH

Linux Essentials

Pgina 101

9.2 Laboratrio

4Linux www.4linux.com.br

Vamos tentar executar um comando de rede:

$ ifconfig

No conseguimos, isto ocorre ou porque no temos permisso para execut-lo, ou


porque o caminho do comando no est na varivel PATH do usurio. Para saber
qual o caminho do binrio ifconfig, digite:

$ whereis ifconfig

No utilizamos o which que traz apenas o caminho do binrio do comando porque ele
no iria encontrar o comando ifconfig em nosso PATH j o whereis traz da localizao
original. Repare que o comando ifconfig tem o seu binrio localizado em /sbin/ifconfig
que no est no nosso PATH, quer dizer, no estava porque agora vamos adicionlo:

# PATH =" $PATH :/ sbin "

Vamos tentar executar o comando agora:

$ ifconfig

Isso no significa que voc tem a permisso de root para executar os comandos de
root. Tente derrubar sua placa de rede:

$ ifconfig eth0 down

Pgina 102

Linux Essentials

4Linux www.4linux.com.br

9.2 Laboratrio

Saber o contedo de algumas variveis muito importante: HISTSIZE HOME


PS1 PATH EDITOR

9.2.2 Alias
Um recurso do shell que facilita muito a vida do usurio a definio de aliases.
Imagine que um usurio gosta de utilizar o comando ls sempre com os parmetros
- -color -h -l. O que seria dele se toda vez que fosse execut-lo tivesse que escrever
o comando com todos os parmetros?! Para resolver esse tipo de situao, basta
criar um alias para o comando ls que defina que cada vez que o usurio digitar um
simples ls ele ser sucedido pelas opes definidas, e o que ser executado ser
o comando ls - -color -h -l. Para criarmos esse alias, basta usarmos o comando
abaixo:

# alias ls = ls -- color -h -l

Dessa forma fica fcil criar seu prprio comando. Por exemplo, um que limpe a tela:

# alias c = clear

Tanto os aliases quanto as definies de variveis podem ser efetuadas em linha


de comando ou, para maior comodidade, utilizando arquivos apropriados para isso.
Limpe a tela:

# c

Para visualizar todos os alias, digite:

Linux Essentials

Pgina 103

9.2 Laboratrio

4Linux www.4linux.com.br

# alias

Para desabilitar um alias, digite:

# unalias c

Tente limpar a tela novamente:

# c

9.2.3 Arquivos de Login


Quando uma bash executada como uma shell de login interativo ela l e executa o arquivo /etc/profile, se ele existir. Esse arquivo deve conter as configuraes gerais que se aplicam a todos os usurios do sistema. Aps ler o /etc/profile,
ela ir procurar por um dos arquivos:

~/. bash_profile

~/. bash_login

~/. profile

Esses arquivos esto na home do usurio, executando o primeiro que estiver disponvel e tiver permisso de leitura. Alm desses, executa tambm o arquivo /.bashrc.
Perceba que esses so arquivos ocultos, pois esto precedidos por um (.)
Quando a bash estiver sendo terminada (usurio fazendo logout), o arquivo /.bash_logout
ser lido e executado, caso ele exista. Atravs deste arquivo, podemos automatizar
procedimentos como por exemplo limpar a tela ao se deslogar do sistema.

Pgina 104

Linux Essentials

4Linux www.4linux.com.br

9.2 Laboratrio

Quando uma bash chamada mas no uma shell de login, o arquivo chamado
ser apenas o /.bashrc.
Sendo assim, para criar aliases ou definir variveis ou funes que sejam comuns
a todos os usurios, devemos inclu-las no arquivo /etc/profile. Caso o usurio no
queira utilizar o padro do sistema, alter-lo ou adicionar configuraes pessoais,
ele deve utilizar os arquivos /.bash_profile, /.bash_login, /.profile ou /.bashrc
para isso.
Para colocar alias ou variveis permanentes para seu usurio:

# vim ~/. bashrc

export TMOUT =300

alias ls = ls -- color

9.2.4 Arquivos /etc/issue e /etc/motd


Os arquivos /etc/issue e /etc/motd so usados para mostrar mensagens para
os usurios e no interferem na parte operacional do sistema. A diferena entre
os arquivos /etc/issue e /etc/motd, que o primeiro exibe uma mensagem para
o usurio antes que o mesmo faa login no sistema, enquanto o segundo exibe
uma mensagem aps o usurio se logar no sistema. H ainda o arquivo /etc/issue.net, que contm a mensagem exibida em logins remotos.
Veja um exemplo de /etc/motd do Debian:

# cat / etc / motd

2
3

Linux aula 2.6.32 -5 -486 # 1 Wed May 9 22:23:40 UTC 2011 i686

4
5

The programs included with the Debian GNU / Linux system are free
software ;

Linux Essentials

Pgina 105

9.2 Laboratrio

4Linux www.4linux.com.br

the exact distribution terms for each program are described in the

individual files in / usr / share / doc /*/ copyright .

8
9
10

Debian GNU / Linux comes with ABSOLUTELY NO WARRANTY , to the extent


permitted by applicable law .

Veja um exemplo de /etc/issue no Debian:

1
2

# cat / etc / issue


Debian GNU / Linux 6.0 \ n \ l

Os caracteres "(n)"e "(l)"no arquivo "/etc/issue"representam respectivamente o nome


do servidor e do terminal em que o usurio est logado.

9.2.5 Tipos de shell


Para saber quais shells so vlidos para login, basta visualizar o contedo do arquivo /etc/shells. A maioria das distribuies GNU/Linux traz a bash como
shell padro. Esta uma evoluo do Bourne Shell - /bin/sh, que tem bem
poucos recursos.
Para sabermos a shell atual basta olhar a varivel SHELL:

echo $SHELL

Para alterar o shell atual, utilizamos o comando chsh. Exemplo:

# chsh -s $ ( which rbash ) aluno

Pgina 106

Linux Essentials

4Linux www.4linux.com.br

9.3 Desafio

A opo $(which rbash) substituda pelo resultado do comando which rbash. Se


logue como aluno e tente trocar de diretrio.

# su - aluno

Volte ao SHELL bash:

$ chsh -s which bash

A opo which bash substituda pelo seu resultado /bin/bash. No prximo login
o aluno estar no shell bash novamente.

9.3 Desafio
Existem alguns comandos para gerar letras grandes ou desenhos, exemplo: banner,
figlet.
1- Altere os arquivos /etc/motd, /etc/issue, /etc/issue.net do servidor. Utilize o comando banner para gerar um aviso, copie sua sada para o arquivo /etc/issue. ex de
uso:

# banner Dexter Courier

2- Altere a varivel TMOUT, que est com um tempo muito baixo, coloque um valor
razovel ex: 3, 5, 10 minutos de inatividade.
3- Verifique a shell do usurio root, altere para a shell bash.

Linux Essentials

Pgina 107

Captulo 10
Comandos avanados
10.1 Introduo terica
No mundo GNU/Linux, a maioria das operaes so realizadas por meio de comandos escritos. Em geral, eles permitem um maior controle e flexibilidade de operaes,
alm de poderem ser includos em scripts. Neste captulo iremos aprender alguns
comandos avanados.

10.2 Laboratrio
10.2.1 Trabalhando com entrada e sada de dados
No linux, voc pode ler dados de um arquivo ou terminal ou escrever dados para
um arquivo ou terminal. O linux tem trs tipos de fluxo de dados: entrada(INPUT),
sada(OUTPUT) e a ltima para imprimir diagnsticos ou mensagens de erro.
Por padro, a entrada de dados e comandos no Shell feita pelo teclado, a sada
destes retornada na tela. Eventuais erros so exibidos na tela tambm. Porm

109

10.2 Laboratrio

4Linux www.4linux.com.br

voc pode alterar a sada padro que a tela e envi-la para um arquivo ou outra
localizao.
Os termos geralmente usados so: 0 - Entrada de dados, representada por stdin
(Standard Input); 1 - Sada de dados, representada por stdout (Standard Output);
2 - Sada de erros, representada por stderr (Standard Error);

10.2.2 Alterando os redirecionamentos

Formas de redirecionar o fluxo de dados:


> (maior): Direciona a sada do comando para um arquivo, substituindo o seu contedo, caso o arquivo j exista;
(maior-maior): Direciona a sada do comando para um arquivo, adicionando o texto
ao final do arquivo, caso ele j exista;
< (menor): Passa o contedo do arquivo como argumento para o comando;
2> (dois-maior): Direciona as sadas de erro geradas pelo programa para um arquivo,
substituindo seu contedo, caso o arquivo j exista;
2 (dois-maior-maior): Direciona as sadas de erro geradas pelo programa para um
arquivo, adicionando o texto ao final do arquivo, caso ele j exista;
2>&1 (dois-maior-e-um): Direciona as sadas de erro para a sada do comando, no
caso para STDOUT;
&> (e-maior): Direciona todas as sadas (normal e de erro) para um arquivo, substituindo seu contedo, caso ele j exista; & (e-maior-maior): Direciona todas as
sadas (normal e de erro) para um arquivo, adicionando o texto ao final do arquivo,
caso ele j exista;

Pgina 110

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

| (barra vertical ou pipe): Utiliza a sada do primeiro comando como argumento do


segundo comando; tee: mostra sada na tela e redireciona para um arquivo ou outra
localizao ao mesmo tempo;
: marca o fim de um bloco.

10.2.3 O direcionador >


O direcionador > direciona a sada padro de um comando para um arquivo. Caso o
arquivo exista, o seu contedo substitudo.
Vejamos, ento, uma sada do comando ls:

# ls /

boot

lost + found
lib

tmp

bin

mnt

media
dev

repo
opt

lib64

proc

srv
root
selinux

var
sys

cdrom
home

etc

sbin

usr

Para gravar essa lista em um arquivo chamado raiz, utilizamos o direcionador, da


seguinte forma:

# ls / > raiz

No aparece nada na tela porque o comando foi executado sem erros e sua sada
redirecionada para o arquivo raiz, confira:

# cat raiz

O contedo do arquivo raiz o mesmo da sada do comando ls. Cuidado ao utilizar


o direcionador para o mesmo arquivo, pois os dados sero perdidos, exemplo:

Linux Essentials

Pgina 111

10.2 Laboratrio

4Linux www.4linux.com.br

Quero enviar a sada do arquivo raiz para raiz:


1 - Primeiro visualize o arquivo para ver que h dados no arquivo raiz:

# cat raiz

2 - envie a sada do cat para o arquivo raiz:

# cat raiz > raiz

Ao realizar o comando acima, a primeira interpretao do bash executar o comando: > raiz, ou seja, se no existe o arquivo, ele ser criado, e se j existe
sobrescrito. No caso ele sobrescreve o arquivo raiz, deixando-o em branco, e quando
o comando cat raiz executado, no h sada, pois o arquivo est zerado, no redirecionando nada.
Para evitar este problema execute o comando:

# set -o noclobber

aps o comando faca o exemplo:

cat / etc / fstab > hoje

cat hoje > hoje

Verifique que o arquivo nao foi sobrescrito.


e para voltar:

Pgina 112

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

# set +o noclobber

10.2.4 O direcionador

O direcionador direciona a sada padro de um comando para um arquivo. Caso o


arquivo exista, a sada adicionada ao final do arquivo.

# ls / >> hoje

Verifique que a sada do comando ls foi adicionada ao final do arquivo hoje.

10.2.5 O direcionador <

O direcionador < utilizado para passar um stdin para um comando, ele geralmente
utilizado para passar o contedo de arquivos como parmetros de comandos.
Alguns comandos precisam que seja passado o stdin para eles serem executados,
vamos ver o exemplo do comando tr, que traduz ou deleta caracteres:
Para converter letras minsculas por maisculas faa:

# tr "a -z " "A - Z " / etc / passwd

Verifique que sem o redirecionador < o comando no executado com sucesso,


agora faa corretamente:

Linux Essentials

Pgina 113

10.2 Laboratrio

4Linux www.4linux.com.br

# tr "a -z " "A - Z " < / etc / passwd

Voc tambm pode utilizar o comando tr para deletar caracteres, vamos deletar as
vogais do arquivo:

# tr -d aeiou < / etc / passwd

Para que as mudanas sejam efetuadas de fato necessrio encaminhar a sada


para outro arquivo.

10.2.6 O direcionador 2>


Quando utilizamos o direcionador > ele no redireciona as sada de erro, apenas a
sada sem erros, caso o arquivo no exista ser criado e caso j exista ser sobrescrito. Por exemplo, vamos usar o comando ls usando como parmetro um diretrio
que no existe e redirecionar sua sada para um novo arquivo:

# ls nao_existe > ls_naoexiste

2
3

ls : imposs vel acessar nao_existe : Arquivo ou diret rio n o


encontrado

Verifique que mesmo no redirecionando a sada com erro o arquivo ls_naoexiste


criado:

# cat ls_naoexiste

Para gravar as mensagens de erro, devemos utilizar o direcionador 2>:

Pgina 114

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

# ls nao_existe 2 > ls_naoexiste . err

Agora sim, nenhuma mensagem de erro foi exibida na tela, porque ela foi enviada
para o arquivo ls_naoexiste.err, vamos verificar o contedo dele:

# cat ls_naoexiste . err

ls : imposs vel acessar nao_existe : Arquivo ou diret rio n o


encontrado

10.2.7 O direcionador 2
Quando utilizamos o direcionador 2 ele redireciona apenas as mensagens de erro,
caso o arquivo no exista ser criado e caso j exista ser adicionada a sada ao
final do arquivo.

# cat ls_naoexiste . err

Agora vamos redirecionar outra sada de erro para este arquivo:

# cat / nada 2 > > ls_naoexiste . err

Verifique que a sada de erro foi adicionada ao arquivo ls_naoexiste.err:

# cat

ls_naoexiste . err

ls : imposs vel acessar nao_existe : Arquivo ou diret rio n o


encontrado

cat : / nada : Arquivo ou diret rio n o encontrado

Linux Essentials

Pgina 115

10.2 Laboratrio

4Linux www.4linux.com.br

10.2.8 O direcionador 2>&1


Podemos usar os direcionadores > e 2> em conjunto, para gerar um arquivo com a
sada padro e outro com a sada de erros, dessa forma:

# cat / etc /*

A sada mostra tanto o contedo dos arquivos quanto os erros por tentar ler
um diretrio com o comando cat.
Vamos enviar a sada deste comando para arquivos diferentes:

# cat / etc /* > msg_correto 2 > msg_errado

Visualize o contedo dos arquivos msg_correto e msg_errado:

# cat msg_correto

# cat msg_errado

Mas, e se for necessrio gravar todas as mensagens em um arquivo apenas?


Podemos redirecionar o stderr para o stdout:

# cat / etc /* > msg_total 2 >&1

Aqui redirecionamos o stdout para o arquivo msg_total e redirecionamos o stderr


para stdout, ou seja, tambm para o arquivo msg_total.
Visualize seu contedo:

Pgina 116

Linux Essentials

4Linux www.4linux.com.br

# cat

10.2 Laboratrio

msg_total

10.2.9 O direcionador &>


Podemos usar os direcionadores > e 2> em conjunto, para gerar um arquivo com a
sada padro e outro com a sada de erros, dessa forma:

# cat / etc /*

A sada mostra tanto o contedo dos arquivos quanto os erros por tentar ler
um diretrio com o comando cat.
Vamos enviar a sada deste comando para arquivos diferentes:

# cat / etc /* > msg_ok 2 > msg_error

Visualize o contedo dos arquivos msg_ok e msg_error:

# cat msg_ok

# cat msg_error

Mas, e se for necessrio gravar todas as mensagens em um arquivo apenas? Para


isso existe o direcionador &>, que direciona tanto as mensagens padro quanto as
mensagens de erro para um nico arquivo, caso o arquivo no exista ser criado e
caso j exista ser sobrescrito.
Repetindo o teste anterior:

Linux Essentials

Pgina 117

10.2 Laboratrio

4Linux www.4linux.com.br

# cat / etc /* & > ls_out

No aparece nenhuma mensagem no terminal, pois tanto as mensagens ok quanto


as mensagens com erro foram redirecionadas para o arquivo ls_out, visualize seu
contedo:

# cat ls_out

10.2.10 O direcionador &


Assim como o redirecionador &> ele redireciona tanto a sada de stdout quanto a
sada de stderr para um nico arquivo, a diferena que, caso o arquivo no exista
ele ser criado e caso j exista ser adicionado a sada com comando ao final do
arquivo. Visualize o arquivo ls_out:

# cat ls_out

Agora redirecione a sada stdout e stderr para ele com & :

# cat / etc /* & > > ls_out

No aparece nenhuma mensagem no terminal, pois tanto as mensagens ok quanto


as mensagens com erro foram redirecionadas para o arquivo ls_out, visualize seu
contedo:

# cat ls_out

Pgina 118

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

Observe que a sada foi adicionada ao final do arquivo.

10.2.11 O direcionador |
Conhecido como pipe, ele envia o stdout de um comando para o stdin do prximo
comando para dar continuidade ao processamento, os dados enviados sero processados pelo prximo comando trazendo assim um resultado esperado.
Vamos usar novamente o comando tr para exemplificar, mas desta vez utilizando o
pipe:
Primeiro visualize o contedo do arquivo /etc/passwd:

# cat / etc / passwd

A sada foi o stdout do comando. Vamos agora redirecionar este stdout para o comando tr:

# cat / etc / passwd | tr "a - z " "A - Z "

10.2.12 O direcionador tee


Quando usado junto com o pipe |, o tee permite que a sada padro do comando
seja exibida na tela e enviada para um arquivo ao mesmo tempo. Veja a sada de um
comando e envie-a para um arquivo qualquer, caso o arquivo no exista, ser criado
e caso j exista ser sobrescrito, caso queira adicionar um arquivo j existente use
tee -a :

Linux Essentials

Pgina 119

10.2 Laboratrio

4Linux www.4linux.com.br

# cat / etc / fstab | tee arquivo . tee

A sada aparece na tela e tambm foi direcionada para o arquivo arquivo.tee, visualizeo:

# cat arquivo . tee

10.2.13 O direcionador
Temos ainda o direcionador , utilizado para marcar o fim de exibio de um bloco.
Um dos usos mais freqentes desse direcionador em conjunto com o comando
cat.
Voc pode editar um novo arquivo com o comando cat ou at mesmo adicionar contedo nele, veja:

# cat << EOF > arquivo_novo

Onde: EOF - indica que a edio do arquivo terminar quando em uma linha contiver apenas a sequncia EOF.
> arquivo_novo - direciona o que for digitado no arquivo para arquivo_novo. Ex:

# cat << EOF > arquivo_novo

2
3

Este

meu arquivo !

EOF

Pgina 120

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

Visualize o arquivo gerado:

# cat arquivo_novo

10.2.14 dd
O comando dd dos sistemas baseados em Linux e Unix, um programa para copiar
e converter arquivos de um local para outro, servindo at para clonar dispositivos ou
reas de discos fixos ou removveis como CD(s), DVD(s), disquetes, HD(s), dispositivos USB entre outros.
Sintaxe:

# dd if =< origem > of = < destino >

Criando um arquivo de 1MB:

# dd if =/ dev / zero of = teste . txt bs =1024 count =1000

Onde:
If - Input File = arquivo de origem
of - Output File = arquivo de destino
bs - Block Size = tamanho do bloco
count - nmero de blocos

Linux Essentials

Pgina 121

10.2 Laboratrio

4Linux www.4linux.com.br

Em sistemas operacionais do tipo Unix, /dev/zero um arquivo especial que fornece


quantos caracteres nulos (o NULL da tabela ASCII, 0x00; e no o caractere "dgito
zero", "0", 0x30) forem lidos dele. O fluxo de caracteres nulos gerado por este dispositivo pode, por exemplo, ser utilizado para sobreescrever informaes ou para gerar
um arquivo limpo de certo tamanho.

10.2.15 Contagem: wc
Grande parte dos arquivos de configurao e de dados usa uma linha por registro. A
contagem destas linhas pode nos fornecer informaes muito interessantes.
Por exemplo, a sada abaixo:

# wc / etc / passwd

Indica que o arquivo contm X linhas, Y blocos (palavras) e Z caracteres. Caso seja
necessrio apenas o nmero de linhas, o comando wc pode ser usado com o
parmetro -l, como abaixo:

# wc -l / etc / passwd

Apenas contar o nmero de blocos (palavras):

# wc -w / etc / passwd

Apenas contar o nmero de caracteres:

# wc -c / etc / passwd

Pgina 122

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

10.2.16 split
O comando split usado para dividir determinado arquivo em pedaos menores,
muito til quando se tem um arquivo maior do que um espao de armazenamento
como por exemplo um cd, voc pode dividir o arquivo para que ele caiba em dois ou
mais cds, por exemplo.
Vamos dividir o arquivo gerado pelo dd em partes de 300Kb:

# split -b 300 KB teste . txt

O tamanho pode ter os sufixos:


b 512, KB 1000, K 1024, MB 1000*1000, M 1024*1024
GB 1000*1000*1000, G 1024*1024*1024
Verifique que foram gerados vrios arquivos com o prefixo x, veja tambm o tamanho deles:

# ls -lh xx *

Podemos dividir o arquivo por nmero de linhas e mudar seu prefixo tambm:

# split -l 10 / etc / passwd pref

Verifique que foram gerados vrios arquivos com o prefixo pref, veja tambm o
nmero de linhas de cada um:

# wc -l pref *

Linux Essentials

Pgina 123

10.2 Laboratrio

4Linux www.4linux.com.br

Para recuperar o arquivo, concatene todos os pedaos na ordem correta:

# cat

prefaa prefab prefac prefad > passwd . backup

Visualize o arquivo:

# cat passwd . backup

10.2.17 Determinando o tipo de arquivo: file


Extenses de arquivos tm apenas a funo de nos auxiliar a nomear os arquivos,
a identific-los e organiz-los facilmente. No a extenso que determina o tipo
do arquivo, mas sim o seu contedo. Por exemplo, se renomearmos um arquivo de
imagem chamado 4Linux.jpg para 4Linux.html, ele continuar sendo um arquivo de
imagem JPEG.
O comando file determina o tipo do arquivo analisando o seu contedo. O exemplo
abaixo mostra o uso deste comando:

# file /

# file / bin / cat

# file / dev / sda1

# file / etc / passwd

# file / usr / sbin / adduser

10.2.18 who
Determina quais usurios esto logados.

Pgina 124

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

Verifique os usurios que esto logados no sistema:

# who

fabiano

tty7

2011 -08 -11 23:01 (:0)

fabiano

pts /0

2011 -08 -12 21:32 (:0.0)

Onde:
fabiano - usurio logado tty7 - terminal em que o usurio est logado 2011-08-11
23:01 - hora e data de login (:0) - Display

10.2.19 w
Mostra tempo que o sistema est ligado, mdia de carga do sistema, usurios logados.

# w

21:43:12 up 22:42 ,

USER

TTY

FROM

fabiano

tty7

:0

Thu23

22:41 m

:0.0

21:32

0.00 s

2 users ,

load average : 0 ,55 , 0 ,45 , 0 ,37


LOGIN@

IDLE

JCPU

PCPU WHAT

6:27

0.53 s

0.22 s

0.02 s w

gnome - session
5

fabiano

pts /0

10.2.20 ln
O comando ln permite criar links. Existem dois tipos de links suportados pelo Linux,
os hard links e os links simblicos. Os links simblicos tm uma funo parecida
com os atalhos do Windows: eles apontam para um arquivo, mas se o arquivo
movido para outro diretrio, o link fica quebrado. Os hard links por sua vez so

Linux Essentials

Pgina 125

10.2 Laboratrio

4Linux www.4linux.com.br

semelhantes aos atalhos do OS/2 da IBM, eles so mais intimamente ligados ao


arquivo e so alterados junto com ele. Se o arquivo muda de lugar, o link automaticamente atualizado. Isto possvel porque nos sistemas de arquivos usados pelo
Linux cada arquivo possui um cdigo de identificao (chamado de inode), que nunca
muda. O sistema sabe que o arquivo renomeado o mesmo do atalho simplesmente
procurando-o pelo inode ao invs do nome.

10.2.21 Inodes

Cada diretrio e arquivo do Linux identificado para o kernel como um nmero de n


i (inode). Um inode , na realidade, uma estrutura de dados que possui informaes
sobre um determinado arquivo ou diretrio como, por exemplo, dono, grupo, tipo e
permisso de acesso.
O inode exclusivo somente para o dispositivo (partio) dentro do qual ele est
contido. Portanto, para identificar unicamente um arquivo, o kernel deve ter o nmero
de dispositivo e o inode do arquivo.
Um arquivo possui um nico inode, no importa por quantos nomes este arquivo
identificado no sistema. Logo, o conjunto de inodes que indica o nmero de
arquivos/diretrios que o sistema possui.

10.2.22 stat

Para saber o nmero do inode de um arquivo digite:

# ls -i < arquivo >

Ou utilize o comando stat:

Pgina 126

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

# stat < arquivo >

Vamos ver o nmero do inode do arquivo /etc/passwd:

# stat / etc / passwd

File : / etc / passwd

Size : 3020

Access : (0644/ - rw -r - -r - -)

Access : 2011 -08 -13 23:20:01.046079196 -0300

Modify : 2011 -08 -13 23:20:00.236496119 -0300

Change : 2011 -08 -13 23:20:00.325887191 -0300

Blocks : 8

Device : 801 h /2049 d

IO Block : 4096

Inode : 4995196

arquivo comum

Links : 1

Uid : (0/ root )

Gid : (0/ root )

Onde:

linha 1 - nome do arquivo.

linha 2 - tamanho, tipo do arquivo.

linha 3 - localizao no dispositivo, nmero do inode.

linha 4 - permisses, dono, grupo.

linha 5 - ltima vez que o arquivo foi acessado, visualizado.

linha 6 - ltima vez que foi modificado o arquivo.

linha 7 - ltima vez que foi alterada a permisso do arquivo.

Linux Essentials

Pgina 127

10.2 Laboratrio

4Linux www.4linux.com.br

10.2.23 Link simblico


possvel criar links simblicos de arquivos e/ou diretrios mesmo que estejam em
parties diferentes, j que o nmero de inodes do arquivo original e do link simblico
so diferentes, mas se o arquivo original for apagado o link quebrado, tornandose intil. Tambm no possvel determinar a permisso olhando o link simblico,
somente olhando o original.
Vamos criar um arquivo para testarmos:

# vim arquivo

Este arquivo para teste !

Agora vamos olhar o nmero do inode do arquivo com o comando ls:

# ls -i arquivo

11927685 arquivo

Onde:
-i - mostra nmero de inode do arquivo/diretrio
Criando o link simblico:

# ln -s < arquivo_original > < link_simbolico >

Vamos criar o link do arquivo: arquivo para o arquivo: arq.simbolico.

# ln -s arquivo arq . simbolico

Pgina 128

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

Visualize os nmeros de inodes e a permisso:

# ls -1 il arq *

11927715 lrwxrwxrwx 1 root root 7 2011 -08 -11 18:04 arq . simb lico ->
arquivo

11927685 -rw -r - -r - - 1 root root 0 2011 -08 -11 17:52 arquivo

Onde:
-1 - mostra um arquivo por linha -i - mostra nmero do inode do arquivo/diretrio -l modo estendido
Verifique que no possvel determinar qual a permisso olhando o arq.simblico.
Crie um diretrio:

# mkdir diretorio

Agora vamos olhar o nmero do inode do diretrio com o comando ls:

# ls -di diretorio

11935762 diretorio

Onde:
-d - mostra informaes do diretrio -i - mostra nmero de inode do arquivo/diretrio
Criando o link simblico:

# ln -s < diretorio_original > < diretorio_simbolico >

Linux Essentials

Pgina 129

10.2 Laboratrio

4Linux www.4linux.com.br

Vamos criar o link do arquivo: diretrio para o diretrio: dir.simblico.

# ln -s diretorio dir . simb lico

Visualize os nmeros de inodes:

# ls

-1 dil dir *

11935762 drwxr - xr - x 2 root root 4096 2011 -08 -11 18:12 diret rio

11927717 lrwxrwxrwx 1 root root

10 2011 -08 -11 18:14 dir . simb lico

-> diret rio /

Onde:
-1 - mostra um arquivo/diretorio por linha -d - mostra informaes do diretorio -i mostra nmero do inode do arquivo/diretrio -l - modo estendido

10.2.24 Hard links

No possvel criar Hark links de arquivos e/ou diretrios que estejam em parties
diferentes, pois o range de numeros de inodes mudam de uma partio para outra,
ou seja, os Hark links no tero o mesmo nmero de inode, e tambm no possvel
criar Hard links de diretrios da mesma partio.
Criando o Hard link:

# ln

< arquivo_original > < Hard_link >

Vamos criar o link do arquivo: arquivo para o arquivo: arq.hard.

Pgina 130

Linux Essentials

4Linux www.4linux.com.br

# ln

10.2 Laboratrio

arquivo arq . hard

Visualize os nmeros de inodes:

# ls -1 -i arq *

Onde:
-1 - mostra um arquivo por linha -i - mostra nmero do inode do arquivo/diretrio

10.2.25 nl

O comando cat permite numerar as linhas atravs da opo -n:

# cat -n / etc / fstab

Existe um outro comando que tambm visualiza arquivo e numera as linhas, este
Comando o nl:

# nl / etc / passwd

# grep sys / etc / passwd | nl

# ls -l / etc | nl

# ls -l / etc | tail | nl

Linux Essentials

Pgina 131

10.2 Laboratrio

4Linux www.4linux.com.br

10.2.26 Classificao: sort

Para diversas aes como eliminao de itens repetidos e rpida visualizao de


nomes interessante que possamos classificar um arquivo texto ou a sada de um
comando. Na linha de comando, os arquivos textos podem ser classificados usando
o comando sort.
Vamos criar um arquivo de exemplo:

# vim bagun a

Gabriela

Barbara

Bruno

Victor

Alexandre

Bruno

Alfredo

Bruno

A sada do comando abaixo no segue a ordem alfabtica:

# cat bagun a

Podemos mostrar a sada classificada em ordem alfabtica, assim:

# sort bagun a

O comando sort pode ser modificado usando os parmetros:


-f - no considera se as letras esto em caixa alta ou baixa;

Pgina 132

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

-n - classificao numrica;

-r - classifica na ordem invertida.

Para saber mais parmetros:

# man sort

10.2.27 Eliminando linhas repetidas: uniq

Remove linhas desnecessrias ou duplicadas, ou seja, ele faz uma espcie de listagem de cada linha nica do arquivo; Somente remove se as linhas repetidas estiverem na sequncia, ou seja, uma aps a outra, ento sempre utilize o comando sort
antes para ordenar as linhas.

Eliminando as linhas repetidas:

# sort bagun a | uniq

Para mostrar apenas as linhas que se repetem:

# sort bagun a | uniq -d

Linux Essentials

Pgina 133

10.2 Laboratrio

4Linux www.4linux.com.br

10.2.28 Filtragem : grep e egrep e fgrep

10.2.29 grep
Uma necessidade constante dos administradores encontrar informaes dentro dos
arquivos. Para ilustrar, podemos localizar a palavra root no arquivo /etc/passwd:

1
2

# grep root / etc / passwd


root :x :0:0: root :/ root :/ bin / bash

Outra situao possvel procurar pelas entradas que no possuem a palavra procurada. Para isso, usamos o parmetro -v (inVerter), que inverte a filtragem do
comando grep:

# grep -v bash / etc / passwd

daemon :x :1:1: daemon :/ usr / sbin :/ bin / sh

bin :x :2:2: bin :/ bin :/ bin / sh

sys :x :3:3: sys :/ dev :/ bin / sh

sync :x :4:65534: sync :/ bin :/ bin / sync

-v - Inverte a busca, encontra apenas as linhas onde o padro no existir.


Traz como resultado todas as linhas do arquivo /etc/passwd, exceto as linhas que
continham a palavra bash.
Para buscar a palavra Debian no arquivo /etc/passwd utilize a opo -i para ignorar maisculas e minsculas:

# grep -in debian / etc / passwd

60: Debian - exim : x :123:132::/ var / spool / exim4 :/ bin / false

Pgina 134

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

-i - Ignora diferena entre maisculas e minsculas; -n - Mostra o nmero de cada


linha encontrada;
Caso queira ver alm da linha que casar com a busca as duas prximas linhas e uma
linha anterior, digite:

# grep -i debian / etc / passwd -A 2 -B 1

-A [n] - After = Mostra n linhas depois; -B [n] - Before = Mostra n linhas antes;
O grep pode ser combinado com a sada de outros comandos com o uso do |
(pipe).
A seguir, o grep aplicado para filtrar quem est logado no primeiro terminal
(tty1):

# who | grep tty1

root

tty1

2011 -08 -14 22:40

10.2.30 egrep
Para uma busca mais avanada utilize o egrep. Por exemplo quero buscar por uma
linha que contenha a palavra root ou aluno:

# egrep " root | aluno " / etc / passwd

Procurar por linhas que contenham a palavra Debian ou debian:

# egrep [ dD ] ebian / etc / passwd

Linux Essentials

Pgina 135

10.2 Laboratrio

4Linux www.4linux.com.br

Procurar por linhas que comeam com a letra b:

# egrep ^ b / etc / passwd

Procurar por linhas que terminam com a palavra false:

# egrep false$ / etc / passwd

10.2.31 fgrep
Ao utilizar o fgrep toda operao de expresso regular ser ignorada, tornando o
processo de localizao muito mais rpido. Visualize o contedo do arquivo /etc/shadow:

# cat / etc / shadow

Agora visualize apenas as linhas que contenham o caracter $:

# fgrep $ / etc / shadow

10.2.32 sed
O comando sed utilizado para procurar e substituir padres em texto, mostrando o
resultado em stdout.
No sed, a expresso fica circunscrita entre barras(/). Por exemplo: Deletar as linhas
comentadas do arquivo /etc/fstab:

Pgina 136

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

# sed -e /^#/ d / etc / fstab

-e - Executa a expresso e comando a seguir. - incio de linha # - string de busca


A letra d ao lado da expresso regular um comando sed, que indica a excluso de
linhas contendo o respectivo padro.
Para substituir uma string, utilize a opo -s: Substitua todos os caracteres "#"por
"@"em /etc/fstab:

# sed -e s /#/ @ / / etc / fstab

Substitua agora os caracteres / por @ :

# sed -e s /\// @ / / etc / fstab

Observe que voc tem que escapar o caracter /, pois este o separador dos campos.
Ou mais fcil, utilize outro separador de campos:

# sed -e s |/| @ | / etc / fstab

Observe ainda que em nenhum dos casos foi efetuada a troca de todas as instncias
da linha, somente a primeira que foi encontrada em cada linha, para que se possa
resolver este problema utilize a opo g de global:

# sed -e s |/| @ |g / etc / fstab

Linux Essentials

Pgina 137

10.2 Laboratrio

4Linux www.4linux.com.br

Para efetuar a troca em uma linha especfica, aponte o nmero da linha, por exemplo
fazer a troca dos caracteres / por @ na primeira linha:

# sed -e 1s |/| @ |g / etc / fstab

10.2.33 Filtrar colunas: cut e awk


O comando cut pode ser muito til para conseguir listagens a partir de arquivos
com separadores de colunas definidos.
Por exemplo, para conseguir o nome de todos os usurios da mquina, ou seja, a
primeira coluna do arquivo /etc/passwd e tambm seu uid , cujo delimitador de
colunas o sinal :, podemos usar o comando:

# cut -f1 ,3 -d : -- output - delimiter =" " / etc / passwd

> / root / uid

Onde:
-f - coluna 1,3 - coluna 1 e 3 -d - delimitador --output-delimiter- - delimitador da
sada do comando

O comando awk um primo do cut, mas possui mais recursos e opes,


por ser uma linguagem de programao. H situaes nas quais o cut no conseguir resolver o problema, para elas use awk.

Para o mesmo exemplo acima, agora utilizando o awk:

# awk -F: { print $1 ," " , $4 } / etc / passwd > / root / gid

Pgina 138

Linux Essentials

4Linux www.4linux.com.br

10.2 Laboratrio

Onde:
-F - delimitador
print - imprime o valor da coluna especificada:
$1 - coluna1
$4 - coluna4
- delimitador da sada do comando
O awk suporta mais opes que o cut, por exemplo executar novamente a busca
anterior, mas desta vez trazer apenas os usurios que tenham uid inferior a 5:

# awk

-F :

( $3 <= 5)

{ print

$1 , $3 }

/ etc / passwd

Onde ($3 <= 5) equivale a:


$3 - coluna3 <= - menor ou igual == - igual >= - maior ou igual 5 - valor de comparao

10.2.34 Juntando dois arquivos em um: join e paste

10.2.35 join
Vizualize os arquivos /root/uid e /root/gid:

# cat / root / uid

Linux Essentials

Pgina 139

10.3 Desafio

4Linux www.4linux.com.br

# cat / root / gid

O comando join (unir), concatena registros de dois arquivos de texto baseado em


ndices comuns entre os registros.
No caso dos arquivos vistos o ndice em comum so os nomes dos usurios, vamos
usar o join para unir os dois arquivos:

# join / root / uid / root / gid

10.2.36 paste
O comando paste, junta os arquivos na sada padro. Diferente do join, ele joga
os dois arquivos lado-a-lado.:

# paste / root / uid / root / gid

Ainda com o paste podemos, usar o parmetro -d, de delimitador:

# paste - d@ / root / uid / root / gid

10.3 Desafio
Seu chefe precisa de sua ajuda novamente:

Pgina 140

Linux Essentials

4Linux www.4linux.com.br

10.3 Desafio

1- Ele precisa do nome de todos os usurios comuns do servidor


2- Ele precisa salvar um arquivo de nome documentao de 1GB e s tem dois cds
de 700MB para armazenamento, ajude-o.

Linux Essentials

Pgina 141

Captulo 11
Introduo a Redes
11.1 Contextualizao do Cenrio
O funcionamento da rea de TI de uma empresa est totalmente associado a possibilidade dos computadores se comunicarem em Rede. Nessa aula, voc ir aprender
conceitos e prticas para criar uma rede baseado no Sistema Linux.
Iremos configurar a rede em ambas as distribuies, para que ao iniciar a mquina a
mesma possa acessar a internet e se comunicar com as demais mquinas da rede
interna.

11.2 Introduo terica


Neste captulo, iremos aprender alguns conceitos de redes que so muito importantes no nosso dia a dia em TI. Elementos como o endereo IP da mquina e a
mscara de rede, so de fundamental importncia quando lidamos com configurao de rede. To importante quanto os itens acima, saber como funciona uma
rede, aprendendo a configurar seu gateway e definir seu DNS, alm de descobrir
tcnicas que facilitam as configuraes diria de rede nos nossos sistemas UNIX.

143

11.2 Introduo terica

4Linux www.4linux.com.br

Os protocolos TCP/IP antigamente eram usados como um padro militar para troca
de informaes. Atualmente esses protocolos so o padro mundial para comunicao de redes de computadores. Inclusive da Internet.
O protocolo TCP - Transmission Control Protocol, orientado a conexes, transporta informaes por meio de handshake. Caso algum erro acontea durante a
comunicao ele, automaticamente, reenvia a informao. Esse protocolo garante o
envio das mensagens. Podemos citar alguns servios de rede que utilizam o protocolo TCP: SMTP, FTP e Telnet. J o protocolo IP - Internet Protocol descrito
pela RFC 791, responsvel por estabelecer o esquema de endereamento e pela
definio de datagramas.

Apesar da nova verso da LPI ter diminudo os tpicos sobre TCP/IP, ele
ainda est presente na prova, e por isso dar ateno ao modelo OSI, uma boa
idia. O modelo OSI ser estudado com detalhes no treinamento 451.

Acompanhe um pouco mais desse assunto no treinamento 451 da Formao


4Linux. O treinamento 452, mostra a configurao dos principais servios.

11.2.1 Entendendo o IP
O endereamento IP, como dever ser chamado, composto por 4 octetos e uma
mscara, que determina quantos endereos so destinados a host e quantos endereos so destinados a rede.
O GNU/Linux no diferente de outros sistemas operacionais. Para termos acesso
a Internet ou a comunicao em rede tambm precisamos ter nosso nmero IP. O
nmero IP est presente em todas as mquinas, mesmo nas que no tem conexo
com a Internet.

Pgina 144

Linux Essentials

4Linux www.4linux.com.br

11.2 Introduo terica

Isso possvel porque em todo GNU/Linux h uma interface lgica, chamada loopback (lo) cujo endereo IP 127.0.0.1 e que sempre deve estar devidamente
configurada.

Voc pode estar se perguntando:


Mas por que raios eu poderia querer um servio em uma mquina que no fala com
o mundo externo?".

A resposta simples: As aplicaes da sua mquina utilizam este IP 127.0.0.1 para


comunicao com outras aplicaes internas. Alm disso, voc pode desenvolver
suas pginas e sistemas Web e test-las localmente. Ou mesmo testar a implantao
de um servidor de DNS ou um proxy, antes mesmo de coloc-lo em produo e
evitar que seus usurios reclamem de algo que no funcionou direito. Em resumo,
voc pode fazer qualquer coisa que voc queira e no necessariamente precisa ter
contato com o mundo exterior.
Com essa interface configurada, todo o tipo de servio pode ser ativado na mquina,
desde um simples servidor de ssh at um servidor de DNS, passando por um servidor de pginas Web, afim de realizar testes antes de coloc-los em produo.
A Internet totalmente endereada por nmeros IPs, e no depende, isso mesmo,
no depende em momento nenhum de um servidor de DNS para funcionar. O servio de DNS apenas facilita o nosso acesso a Internet, permitindo que a navegao
seja feita atravs de nomes e no de nmeros. Isso significa que para entenderemos
como a Internet funciona, precisamos entender como funcionam os nmeros que ela
utiliza os nmeros IP.
Para configurarmos um nmero IP em nosso computador, precisamos tambm, configurar uma Mscara para esse nmero IP. A mscara de rede, tambm conhecida
como netmask, um nmero constitudo por 32 bits, que utilizado para separar
redes, determinando quem host, quem rede e quem broadcast.

Linux Essentials

Pgina 145

11.2 Introduo terica

4Linux www.4linux.com.br

Host - Um endereo disponibilizado para computadores poderem acessar a


rede;
Network - Normalmente o primeiro endereo da rede;
BroadCast - Normalmente o ltimo endereo da rede, utilizado para que uma
mquina possa falar com todas as outras.

11.2.2 Entendendo o gateway da rede

O gateway da rede um host que conhece outros hosts que por sua vez
conhece outros, e assim por diante. Complicado?

O principal papel do gateway levar os pacotes TCP/IP para outras redes que os
hosts que os originaram, no conhecem. dessa forma que os pacotes saem de
uma rede privada para um rede Wan. Para que os pacotes possam transitar pela
Internet ou mesmo s por uma rede fechada necessrio um gateway. Mesmo
em uma rede local, o gateway a prpria mquina, pois todos os hosts esto
normalmente com a mesma configurao de IP, ou seja, mesma mscara, mesma
classe de IP, etc.

11.2.3 O servidor DNS


Nesse ponto muito importante frisar que o servidor de DNS no faz parte da
configurao essencial de rede, pois para estarmos na Internet, basta termos um
gateway, que a conhea, devidamente configurado. Lembre-se: a Internet feita
de nmeros.
Usurio - Suporte?

Pgina 146

Linux Essentials

4Linux www.4linux.com.br

11.2 Introduo terica

Suporte - Sim, em que posso ajudar?

Usurio - A Internet est fora do ar ... (O cara no consegue acessar o host


orkut.com)

Para resolver esse probleminha basta digitar o comando:

ping 8.8.8.8

Se a resposta for positiva, voc no tem um problema de link, cheque seu DNS.

Suporte - Sr. Usurio, percebi que voc est acessando um site proibido pela
empresa, h algo errado?

Usurio - Eu?? .. No, no, tudo bem, a Internet j est normalizada.

11.2.4 Arp e RARP

Vamos nos aprofundar um pouco mais nas teorias de redes e vamos verificar os
protocolos ARP e RARP. O protocolo ARP utilizado para converter os endereos de rede (IPs), para os endereos fsicos das interfaces - MAC. Um exemplo
clssico de usabilidade identificar placas com o mesmo MAC Address na rede.
Podemos conhecer todas as mquinas da rede e depois utilizar o comando arp
para descobrir quais endereos IP tem o mesmo MAC Address. J o Rarp faz
exatamente o oposto, transforma endereos fsicos em endereos de rede.

Linux Essentials

Pgina 147

11.3 Laboratrio

4Linux www.4linux.com.br

11.3 Laboratrio
11.3.1 Configurando a Rede
A configurao de rede em um sistema GNU/Linux muito importante pois esses
sistemas so, intrinsecamente, sistemas de rede. Ou seja, mesmo que no haja
nenhum tipo de interface de rede, moldem ou qualquer outro dispositivo de conexo,
ainda assim uma mquina GNU/Linux ser um sistema de rede.
A configurao da rede baseia-se em trs etapas:
Configurao do nmero IP e sua mscara de rede;
Configurao do Gateway;
Configurao dos servidores DNS.

11.3.2 Configurando IP e Mscara


Alm da interface lo loopback, podemos configurar outras interfaces, basta que
elas estejam presentes fisicamente e sejam suportadas pelo kernel. Na maior parte
dos casos, a interface mais comum acaba sendo a interface eth0 de ethernet nmero 0, por ser a primeira. Para configurar e depois visualizar essas configuraes
em nossas interfaces de redes, utilizamos o comando ifconfig.

# ifconfig

Com esse comando possvel descobrir todas as interfaces presentes no sistema,


mas para ter certeza que nenhuma interface est inativa adicionamos o parmetro
-a.

Pgina 148

Linux Essentials

4Linux www.4linux.com.br

11.3 Laboratrio

# ifconfig -a

Para atribuir um endereo IP para uma placa de rede utilizamos esta sintaxe:

# ifconfig < interface > <IP >

Exemplo:

# ifconfig eth0 172.16.0.100

Com esse comando estamos atribuindo o endereo IP 172.16.0.100 para a interface


eth0.
Visualize o endereo da interface e sua mscara:

# ifconfig eth0

O comando ifconfig calcula automaticamente a mscara, mas se voc precisar configurar uma mscara diferenciada, voc deve usar o parmetro netmask, assim:

# ifconfig eth0 172.16.0.100 netmask 255.255.0.0

Visualize o endereo da interface:

# ifconfig eth0

Linux Essentials

Pgina 149

11.3 Laboratrio

4Linux www.4linux.com.br

Caso voc queira participar de uma outra rede, utilizando uma nica placa de rede,
crie uma interface virtual:

# ifconfig eth0 :0 10.0.0.1

Onde: :0 o nome da placa de rede virtual, poderia ser tambm :local, :net, ou
qualquer nome. Visualize a configurao da placa:

# ifconfig eth0 :0

11.3.3 Configurando o gateway


Para que nossos pacotes saibam para onde ir eles precisam conhecer o IP do gateway da rede. O papel do gateway da rede simples: ele funciona como uma
sada para todos os pacotes daquela rede, para outras redes.
Para configurar o gateway da nossa rede utilizamos o comando route com os
seguinte parmetros:

# route add default gw IP

Adicionando uma rota padro:

# route add default gw 172.16.0.1

Com esse comando possvel configurar a rota padro de sada da nossa rede. Para
listar todas as rotas traadas, podemos utilizar o comando abaixo:

Pgina 150

Linux Essentials

4Linux www.4linux.com.br

11.3 Laboratrio

# route -n

A opo -n serve para o comando no tentar resolver os nomes, trazendo apenas os


IPs.

Com ele podemos descobrir se as rotas necessrias para que nossa rede funcione
esto corretas.

Se desejarmos remover a rota padro, devemos utilizar o comando:

# route del default

Esse comando se encarregar de remover a rota padro para a sada da rede, mas
lembre-se que essa rota obrigatria no processo de configurao de rede. Tente
pingar o gateway:

# ping 172.16.0.1

OK, configurao est correta. Agora tente pingar um site:

# ping

www .4 linux . com . br

No foi possvel, porque? Para poder pingarmos um domnio necessrio configurarmos o DNS responsvel pela resoluo de nomes.

Linux Essentials

Pgina 151

11.3 Laboratrio

4Linux www.4linux.com.br

11.3.4 Configurao dos DNS Servers


Para no ter que memorizar todos os endereos IP que precisamos acessar, foi criado um servio de rede chamado DNS. Este faz a traduo de nomes para endereos IP e vice-versa. Este servio de rede ser melhor detalhado no curso 452 da
Formao 4Linux. Para configurar os servidores de DNS na mquina local, precisamos editar o arquivo de configuraes de DNS, chamado resolv.conf localizado
em /etc.

# vim / etc / resolv . conf

Para que a resoluo de nomes funcione o contedo do arquivo /etc/resolv.conf


deve ser parecido com este: nameserver 8.8.8.8
Com essa sintaxe acabamos de configurar um servidor de DNS, no caso o DNS do
Google.
Tente pingar um site agora:

# ping www .4 linux . com . br

Traceroute uma ferramenta que permite descobrir o caminho feito pelos pacotes
desde a sua origem at o seu destino.

# traceroute www .4 linux . com . br

O comando traceroute pode ajudar os administradores a descobrir em que


ponto da rede podemos ter um possvel problema.

Pgina 152

Linux Essentials

4Linux www.4linux.com.br

11.3 Laboratrio

11.3.5 Configurao esttica de rede

Tudo que vimos at agora, so configuraes que podem ser atribudas atravs de
linha de comando (configuraes dinmicas). Porm nosso host deve estar devidamente configurado para que, por exemplo, aps um boot, a mquina mantenha as
configuraes certas.
Para que isso acontea temos que configurar o arquivo /etc/network/interfaces no
Debian, assim:

# vim / etc / network / interfaces

2
3

auto lo

iface lo inet loopback

5
6

auto eth0

iface eth0 inet static

address 192.168.0.100

netmask 255.255.255.0

10

broadcast 192.168.0.255

11

network 192.168.0.0

12

gateway 192.168.0.1

Reinicie o servio:

# invoke - rc . d networking stop

# invoke - rc . d networking start

No CentOS:

Linux Essentials

Pgina 153

11.3 Laboratrio

4Linux www.4linux.com.br

Os arquivos de configurao das interfaces de rede no CentOS esto localizados em /etc/sysconfig/network-scripts/ifcfg-device. Onde device o nome da placa
de rede.

Vamos configurar a rede do servidor CentOS para que as mquinas possam se comunicar:

# vim / etc / sysconfig / network - scripts / ifcfg - eth0

2
3

DEVICE = eth0

BOOTPROTO = static

ONBOOT = yes

IPADDR =192.168.0.1

NETMASK =255.255.255.0

BROADCAST =192.168.0.255

NETWORK =192.168.0.0

Reinicie o servio:

# service network restart

Para ativar ou desabilitar uma placa de rede podemos usar a sintaxe, tanto no Debian
quanto no CentOS:

# ifconfig eth0 up

# ifconfig eth0 down

Pgina 154

Linux Essentials

4Linux www.4linux.com.br

11.3 Laboratrio

Uma boa alternativa para habilitar e desabilitar as placas de redes, seriam


os comando ifup e ifdown. Para que estes comandos funcionem as respectivas
placas de redes devem estar habilitadas no arquivo de configurao de rede. Debian:
/etc/network/interfaces CentOS: /etc/sysconfig/network-scripts/ifcfg-eth0 (o nome da
placa poder variar)

Exemplo:

# ifup eth0

# ifdown eth0

11.3.6 Configurando hosts e hostname DEBIAN


Podemos tambm configurar alguns atalhos para alguns endereos de rede. Esses
atalhos so configurados dentro do arquivo /etc/hosts.
A sintaxe dele :

IP

FQDN

HOSTNAME

ALIAS

* IP - endereo IP ex: 192.168.0.100 * FQDN - Full Qualified Domain Name = nome


da mquina + domnio ex: aula.teste.com.br * Hostname - nome da mquina ex: aula
* Alias - apelido (este opcional) ex: micro100, micro100.teste.com.br
Exemplo :
192.168.0.100 aula.teste.com.br aula

Linux Essentials

Pgina 155

11.3 Laboratrio

4Linux www.4linux.com.br

Isso facilita nosso trabalho, uma vez que todos esto devidamente configurados, no
precisamos mais decorar nmeros IP.
O comando hostname altera dinamicamente o nome da mquina e deve ser utilizado da seguinte maneira:

hostname aula

Deslogue e logue para alterar o prompt. Para testar a resoluo de nomes pelo
arquivo hosts:

# hostname -i

A sada dever ser igual ao seu ip: 192.168.0.100

# hostname -f

A sada dever ser igual ao seu FQDN: aula.teste.com.br

# hostname -d

A sada dever ser igual ao seu domnio: teste.com.br

# hostname -v

A sada dever ser igual ao seu hostname: aula


Para alterar o hostname de maneira esttica, devemos editar o arquivo /etc/hostname:

Pgina 156

Linux Essentials

4Linux www.4linux.com.br

# vim / etc / hostname

aula

11.3 Laboratrio

O comando hostname com sua opo -f (FQDN) mostra qual o


Full Qualified Domain Name da nossa mquina, sempre que formos configurar
qualquer servio externo em nossa mquina, o FQDN ser a chave.

<host-

name>.<domainname>

11.3.7 Configurando hosts e hostname CentOS:


Podemos tambm configurar atalhos para endereos de rede no CentOS, usamos a
mesma sintaxe que o Debian:

IP

FQDN

HOSTNAME

ALIAS

Acrescente uma linha para o hosts:

# vim / etc / hosts

192.168.0.1 aula . dexter . com . br aula dexter . com . br

Para alterar o nome da maquina no CentOS, altere a linha HOSTNAME do arquivo


"/etc/sysconfig/network", como no exemplo abaixo:

# vim / etc / sysconfig / network

HOSTNAME = aula

Linux Essentials

Pgina 157

11.4 Desafio

4Linux www.4linux.com.br

Teste na mquina Debian:


Pingue o servidor CentOS:

# ping 192.168.0.1

Agora que j estamos com a rede configurada vamos tentar acessar a Internet.
Pingue o dns do google:

# ping 8.8.8.8

Agora pingue um site a sua escolha:

# ping www .4 linux . com . br

11.4 Desafio
1 - Criar interface virtual eth0:0 no servidor e no cliente, colocar automtico no boot,
fazer o ping entre os ips da nova placa.
Servidor: 10.0.0.1
Cliente: 10.0.0.100

Pgina 158

Linux Essentials

Captulo 12
Servidor SSH
12.1 Contextualizao do Cenrio
Realizar a Administrao de Servidores Remotamente uma das principais qualidades em sistemas Unix/Linux devido a flexibilidade e rapidez que a mesma pode
proporcionar.
Nessa aula, aprenderemos o Servidor SSH (Secure Shell) que nos possibilita acessar mquinas remotas com segurana para realizar tarefas administrativas em sistemas linux.

12.2 Introduo Terica


12.2.1 SSH
Secure Shell ou SSH o conjunto de padres e o protocolo associado que permite estabelecer um canal seguro entre dois computadores. Ele utiliza o sistema de
chave criptogrfica pblica para autenticar um computador remoto, podendo utilizar

159

12.2 Introduo Terica

4Linux www.4linux.com.br

esse sistema de chaves, tambm para autenticar usurios. A idia do SSH prover
confidencialidade e integridade dos dados trocados entre dois computadores usando
criptografia e mensagens de autenticao codificadas (MACs).
Esse protocolo tipicamente utilizado para conectar-se mquinas remotas e executar comandos, entretanto, h inmeras outras funcionalidades como realizar tunelamentos, redirecionamento de portas, conexes X11 (interface grfica) alm de
transferncia de arquivos.
Em geral, o SSH utiliza a porta 22/tcp e a alternativa segura ao TELNET e FTP
uma vez que eles no utilizam criptografia.

12.2.2 Chaves de Criptografia Assimtricas

Criar um par de chaves assimtricas tem basicamente duas funes:

Aumentar o nvel de segurana - definindo uma frase senha;

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

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


seqncias de caracteres aleatrios (pseudo) e que s tm funcionalidade se os dois
trabalharem em conjunto. Ou seja, quando criamos um par de chaves ser criada
uma chave pblica e uma chave privada. A chave privada sua e absolutamente
ningum deve ter acesso a ela; a sua chave pblica voc coloca no servidor remoto.
Quando voc tentar estabelecer uma conexo ela s ser possvel se a chave privada
se encaixar na chave pblica. Com esse sistema, existe apenas uma nica chave
privada que se encaixa em uma nica chave pblica.
Como s h um par que se completa, apenas quem possuir a chave privada poder
estabelecer uma conexo utilizando a respectiva chave pblica. Uma ilustrao do
par de chaves assimtricas pode ser vista na figura: Quando criamos um par de cha-

Pgina 160

Linux Essentials

4Linux www.4linux.com.br

12.3 Laboratrio

ves assimtricas devemos tomar o cuidado com a chave privada para que ningum
tenha acesso a ela.

12.3 Laboratrio
12.3.1 Acesso SSH
1) Acessando uma mquina remota:
O SSH possui diversas formas de utilizao; a mais bsica de todas serve para
estabelecer uma simples shell remota:

# ssh nome_usuario_remoto@ip_servidor

Ou com a opo -l de login:

# ssh -l nome_usuario_remoto ip_servidor

Outra opo se logar no servidor remoto com o mesmo nome de usurio que voc
est logado, desde que este mesmo usurio exista remotamente:

# ssh ip_servidor

Acessar o servidor por ssh:

# ssh aluno@192 .168.0.1

Linux Essentials

Pgina 161

12.3 Laboratrio

4Linux www.4linux.com.br

Ou:

# ssh -l aluno 192.168.0.1

Desconecte e conecte-se novamente sem colocar o nome do usurio:

# ssh 192.168.0.1

Determine qual a porta utilizada pelo SSH:

# nmap localhost

A porta padro do ssh a porta 22.


2) Execute um comando na mquina remota:

# ssh

aluno@192 .168.0.1

ls -l / etc / yum / yum . repos . d

12.3.2 Copiando Arquivos Remotos

12.3.3 Cpia maq_LOCAL para maq_REMOTA


Para copiar arquivo:

# scp arquivo usuario@ip_de_destino :/ destino

Pgina 162

Linux Essentials

4Linux www.4linux.com.br

12.3 Laboratrio

Para copiar diretrio:

# scp -r diret rio usuario@ip_de_destino :/ destino

Copiando arquivo:

# scp / home / aluno / arquivo aluno@192 .168.0.1:/ home / aluno

Copiando diretrio:

# scp -r / home / aluno / diretorio aluno@192 .168.0.1:/ home / aluno

12.3.4 Cpia maq_REMOTA para maq_LOCAL


Para copiar arquivo:

# scp

usuario@ip_de_origem ( remoto ) :/ arquivo / destino

Para copiar diretrio:

# scp -r usuario@ip_de_origem ( remoto ) :/ diret rio / destino

Copiando arquivo:

# scp aluno@192 .168.0.1:/ home / aluno / arquivo / tmp

Linux Essentials

Pgina 163

12.3 Laboratrio

4Linux www.4linux.com.br

Visualize o arquivo copiado:

# ls / tmp

Copiando diretrio:

# scp -r aluno@192 .168.0.1:/ home / aluno / diretorio / tmp

Visualize o diretrio copiado:

# ls / tmp

12.3.5 SSH com Chaves Assimtricas


Quando criarmos o par de chaves assimtricas, ser criado um diretrio /.ssh na
home do usurio.
Em nossa mquina local, sem ser via ssh, vamos criar o par de chaves:
Digite uma senha na passphrase, no exemplo colocamos 123456.

# ssh - keygen -t rsa

Generating public / private rsa key pair .

Enter file in which to save the key (/ root /. ssh / id_rsa ) :

Enter passphrase ( empty for no passphrase ) : 123456

Enter same passphrase again : 123456

Your identification has been saved in / root /. ssh / id_rsa .

Your public key has been saved in / root /. ssh / id_rsa . pub .

The key fingerprint is :

Pgina 164

Linux Essentials

4Linux www.4linux.com.br

12.3 Laboratrio

c6 :51:3 e :75:0 e :10: b7 :98:5 d :6 d :81:5 f :8 a :8 f :38:2 a root@aula #

10

The key s randomart image is :

11

+ - -[ RSA 2048] - - - -+

12

13

. . o

14

. . . o

15

| . .

16

|. +

o S

17

| *

18

|. ooo

19

| .o+o

20

21

+ - - - - - - - - - - - - - - - - -+

... Eo +

.=+

. o . |
|

Obs.: A passphrase pode ser desde uma senha "normal", com 6 ou 12 caracteres, at uma frase complexa, sem limite de tamanho; o importante que no seja
algo fcil de adivinhar. Caso a passphrase no seja definida o acesso remoto ser
sem senha.

A partir da, ao invs de pedir sua senha, o servidor envia um "desafio"encriptado


usando a chave pblica. Para respond-lo, o cliente SSH na sua mquina precisa
usar a chave privada, que por sua vez precisa ser destravada usando a passphrase.
Mesmo que algum consiga roubar sua chave privada, no conseguir conectar sem
saber a passphrase e vice-versa.
O comando gerar os arquivos ".ssh/id_rsa"e ".ssh/id_rsa.pub"dentro do seu diretrio home, que so, respectivamente, sua chave privada e sua chave pblica. O
".ssh/id_rsa" um arquivo secreto, que deve usar obrigatoriamente o modo de acesso
"600", para evitar que outros usurios da mquina possam l-lo. Muitos servidores
recusam a conexo caso os arquivos estejam com as permisses abertas.
1) Verifique que as chaves foram criadas:

Linux Essentials

Pgina 165

12.3 Laboratrio

# ls / root /. ssh

id_rsa

id_rsa . pub

4Linux www.4linux.com.br

known_hosts

Depois de gerar seu par de chaves, falta o comando final, que instala a chave pblica
no servidor, permitindo que ela seja usada para autenticao:

# ssh - copy - id -i ~/. ssh / id_rsa . pub usuario@ip_do_servidor

Copiando a chave:

# ssh - copy - id -i ~/. ssh / id_rsa . pub root@192 .168.0.1

Em resumo, o que o ssh-copy-id faz nada mais do que copiar o contedo do arquivo ".ssh/id_rsa.pub", dentro do seu diretrio home, para o arquivo ".ssh/authorized_keys"dentro do diretrio home do servidor remoto, uma operao que tambm
pode ser realizada manualmente em caso de problemas.
Tente acessar o servidor:

# ssh root@192 .168.0.1

2
3

Enter passphrase for key / root /. ssh / id_rsa : 123456

Last login : Tue Jun 14 08:54:15 2011 from 192.168.0.100

12.3.6 Acesso por SSH sem senha com ssh-agent


O comando ssh-agent usado para salvar as passphrases na memria, sem com
isso abrir mo da segurana. Ele funciona como uma espcie de "cache", onde voc

Pgina 166

Linux Essentials

4Linux www.4linux.com.br

12.3 Laboratrio

digita a passphrase apenas uma vez e ela fica gravada na memria at que a sesso
seja encerrada. A segurana no prejudicada, pois a passphrase no salva em
lugar algum, fica apenas armazenada (de forma encriptada) em uma rea protegida
de memria, acessvel apenas ao ssh-agent. Ao desligar o micro, tudo perdido.

# ssh - agent

SSH_AUTH_SOCK =/ tmp / ssh - dSVLR17117 / agent .17117; export SSH_AUTH_SOCK ;

SSH_AGENT_PID =17118; export SSH_AGENT_PID ;

echo Agent pid 17118;

Execute os comandos que exportam as variveis criadas pelo comando ssh-agent:

# SSH_AUTH_SOCK =/ tmp / ssh - dSVLR17117 / agent .17117; export


SSH_AUTH_SOCK ;

# SSH_AGENT_PID =17118; export SSH_AGENT_PID ;

Adicione a chave:

# ssh - add

Enter passphrase for / root /. ssh / id_rsa : 123456

Identity added : / root /. ssh / id_rsa (/ root /. ssh / id_rsa )

Tente acessar o servidor sem colocar a passphrase:

# ssh root@192 .168.0.1

Linux Essentials

Pgina 167

12.3 Laboratrio

4Linux www.4linux.com.br

12.3.7 Configurando o servidor SSH (CentOS):


H diversos parmetros de configurao que podem ser alterados de forma a ajustar
seus parmetros de funcionamento.
Vamos entender alguns desses parmetros editando o arquivo de configurao do
servidor de SSH. Edite o arquivo /etc/ssh/sshd_config:
Alguns parmetros:
Keyword Description Default AllowGroups Habilita acesso apenas para grupos especificados * AllowUsers Habilita acesso apenas para usurios especificados * DenyGroups Nega acesso apenas para grupos especificados none DenyUsers Nega acesso
apenas para usurios especificados none
Port - porta de acesso ao ssh
PermitRootLogin - habilita/nega acesso do usurio root por ssh
X11Forwading - habilita/nega acesso ao X
Banner /etc/issue.net - habilita banner do issue.net
LoginGraceTime - tempo para se logar no servidor
Alterando o arquivo:

# vim / etc / ssh / sshd_config

# $OpenBSD : sshd_config , v 1.73 2005/12/06 22:38:28 reyk Exp $

3
4

# This is the sshd server system - wide configuration file .

# sshd_config (5) for more information .

See

6
7

# This sshd was compiled with PATH =/ usr / local / bin :/ bin :/ usr / bin

Pgina 168

Linux Essentials

4Linux www.4linux.com.br

12.3 Laboratrio

8
9

# The strategy used for options in the default sshd_config shipped


with

10

# OpenSSH is to specify options with their default value where

11

# possible , but leave them commented .

12

# default value .

Uncommented options change a

13
14

AllowUsers suporte

15

Port 2222

16

# Protocol 2 ,1

17

Protocol 2

18

# AddressFamily any

19

# ListenAddress 0.0.0.0

20

# ListenAddress ::

21
22

# HostKey for protocol version 1

23

# HostKey / etc / ssh / ssh_host_key

24

# HostKeys for protocol version 2

25

# HostKey / etc / ssh / ssh_host_rsa_key

26

# HostKey / etc / ssh / ssh_host_dsa_key

27

# Lifetime and size of ephemeral version 1 server key #


KeyRegenerationInterval 1 h

28

# ServerKeyBits 768

29

# Logging

30

# obsoletes QuietMode and FascistLogging

31

# SyslogFacility AUTH

32

SyslogFacility AUTHPRIV

33

# LogLevel INFO

34

# Authentication :

35

LoginGraceTime 15

36

PermitRootLogin no

37

# StrictModes yes

38

# MaxAuthTries 6

39
40

# RSAAuthentication yes

41

# PubkeyAuthentication yes

42

# AuthorizedKeysFile . ssh / authorized_keys

Linux Essentials

Pgina 169

12.3 Laboratrio

4Linux www.4linux.com.br

43
44

# For this to work you will also need host keys in / etc / ssh /
ssh_known_hosts

45

# RhostsRSAAuthentication no

46

# similar for protocol version 2

47

# HostbasedAuthentication no

48

# Change to yes if you don t trust ~/. ssh / known_hosts for

49

# RhostsRSAAuthentication and HostbasedAuthentication

50

# IgnoreUserKnownHosts no

51

# Don t read the user s ~/. rhosts and ~/. shosts files

52

# IgnoreRhosts yes

53
54

# To disable tunneled clear text passwords , change to no here !

55

# PasswordAuthentication yes

56

# PermitEmptyPasswords no

57

PasswordAuthentication yes

58

# Change to no to disable s / key passwords #


ChallengeResponseAuthentication yes

59

ChallengeResponseAuthentication no

60

# Kerberos options

61

# KerberosAuthentication no

62

# KerberosOrLocalPasswd yes

63

# KerberosTicketCleanup yes

64

# KerberosGetAFSToken no

65

# GSSAPI options

66

# GSSAPIAuthentication no

67

GSSAPIAuthentication yes

68

# GSSAPICleanupCredentials yes

69

GSSAPICleanupCredentials yes

70

# Set this to yes to enable PAM authentication , account processing


,

71

# and session processing . If this is enabled , PAM authentication


will

72

# be allowed through the ChallengeResponseAuthentication mechanism .

73

# Depending on your PAM configuration , this may bypass the setting


of

74

# PasswordAuthentication , PermitEmptyPasswords , and

Pgina 170

Linux Essentials

4Linux www.4linux.com.br

75

12.3 Laboratrio

# " PermitRootLogin without - password ". If you just want the PAM
account and

76

# session checks to run without PAM authentication , then enable this


but set

77

# ChallengeResponseAuthentication = no

78

# UsePAM no

79

UsePAM yes

80
81

# Accept locale - related environment variables

82

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY


LC_MESSAGES

83

AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT

84

AcceptEnv LC_IDENTIFICATION LC_ALL

85

# AllowTcpForwarding yes

86

# GatewayPorts no

87

# X11Forwarding no

88

X11Forwarding yes

89

# X11DisplayOffset 10

90

# X11UseLocalhost yes

91

# PrintMotd yes

92

# PrintLastLog yes

93

# TCPKeepAlive yes

94

# UseLogin no

95

# UsePrivilegeSeparation yes

96

# PermitUserEnvironment no

97

# Compression delayed

98

# ClientAliveInterval 0

99

# ClientAliveCountMax 3

100

# ShowPatchLevel no

101

# UseDNS yes

102

# PidFile / var / run / sshd . pid

103

# MaxStartups 10

104

# PermitTunnel no

105

# ChrootDirectory none

106
107

# no default banner path


Banner / etc / issue . net

108

Linux Essentials

Pgina 171

12.3 Laboratrio

4Linux www.4linux.com.br

109

# override default of no subsystems

110

Subsystem sftp

/ usr / libexec / openssh / sftp - server

Reinicie o servio:

# service sshd restart

Agora para fazer o acesso da mquina remota ao servidor:

# ssh -p 2222 suporte@192 .168.0.1

Onde: -p identifica a porta


Como usurio suporte, determine qual a porta utilizada pelo SSH:

$ nmap -sV localhost

Agora ele no consegue identificar a porta do ssh, pois voc alterou a porta padro,
mas ainda existem parmetros do nmap que conseguem identificar:

$ nmap -p 0 -65535 - sV localhost

A opo -p serve para passar um range de portas ou uma porta especfica a ser
escaneada.
Ele ainda no identificou qual o servio est sendo executado na porta, ento coloque a opo -sV para escanear a verso do programa:

# nmap -sV -p 0 -65535 localhost

Pgina 172

Linux Essentials

4Linux www.4linux.com.br

12.3 Laboratrio

-s - escaneia -V - banner(mostra programa e verso)

12.3.8 Cpia remota com porta diferente:

# scp -P 2222 arquivo suporte@192 .168.0.1:

-P - porta
Ao no se definir um destino aps os dois pontos : o arquivo ou diretrio ser
copiado para o diretrio home do usurio remoto.

12.3.9 Tunelamento SSH

Uma forma simples de encriptografar protocolos que em condies normais no suportam encriptao usar o SSH para criar tneis seguros, ligando uma das portas
da sua mquina porta do servidor onde o servio em questo est ativo.
Por exemplo, se algum se encontra dentro de uma instituio cuja conexo Internet protegida por um firewall que bloqueia determinadas portas de conexo, no
ser possvel, por exemplo, acessar e-mails via POP3, o qual utiliza a porta 110, nem
envi-los via SMTP, pela porta 25.
As duas portas essenciais so a 80, para HTTP e a 443, para HTTPS, as quais
garantem uma navegao em pginas da Web sem restries.
No h necessidade do administrador da rede deixar vrias portas abertas, uma vez
que conexes indesejadas e que comprometam a segurana da instituio possam
ser estabelecidas atravs das mesmas.

Linux Essentials

Pgina 173

12.3 Laboratrio

4Linux www.4linux.com.br

Contudo, isso compromete a dinamicidade de aplicaes na Internet. Um funcionrio


ou aluno que queira acessar painis de controle de sites, arquivos via FTP ou amigos
via Instant Messengers, por exemplo, no ter a capacidade de faz-lo, uma vez que
as respectivas portas para seus funcionamentos esto bloqueadas.
Para quebrar essa imposio rgida, porm necessria, o SSH oferece o recurso do
Tnel.
Acesse em seu navegador o ip do servidor:
http://192.168.0.1
Voc ver o site da dexter.com.br.
Por ssh vamos criar um tnel com esse servidor e mapear a porta 80 para a porta
12345 na nossa mquina local:

# ssh - Lporta_local : servidor_remoto : porta_remota usu


rio@servidor_remoto

Lembre-se que estamos utilizando uma porta diferente da padro, e que o nico
usurio que pode se conectar o aluno:

# ssh -p 2222 - L12345 :192.168.0.1:80 aluno@IP_DO_SERVIDOR_DEXTER

Acesse o site no navegador localmente: http://localhost:12345


Para desconectar, deslogue do servidor.
Outras opes:
-f - O parmetro -f"dentro do comando faz com que ele seja executado em background, liberando o terminal depois que a conexo estabelecida.

Pgina 174

Linux Essentials

4Linux www.4linux.com.br

12.4 Desafio

-N - O parmetro -N"faz com que o SSH apenas crie o redirecionamento da porta,


sem abrir um terminal do servidor remoto.

12.3.10 Mensagem em broadcast: wall


O comando wall envia uma mensagem a todos os usurios logados no sistema.
Este comando faz a leitura de um arquivo ou entrada padro e escreve o resultado
em todos os terminais onde existem usurios conectados. Somente o usurio root
pode utilizar este comando.
No confundam o comando wall com o antigo netsend da Microsoft. A mensagem broadcast enviada pelo wall, para todos os terminais conectados naquele
determinado servidor, enquanto o netsend faz broadcast para todos os endereos
ativos na rede.
Enviando sua mensagem:

# wall

minha mensagem

< ctrl +d >< enter >

12.4 Desafio
1- Acesse o servidor por ssh
2- Acesse o diretrio onde ficam as imagens do site da aula: /var/www/intranet/menu
3- Renomeie o arquivo home.png para home.original.png

Linux Essentials

Pgina 175

12.4 Desafio

4Linux www.4linux.com.br

4- copie uma imagem do cliente para o servidor e substitua a imagem do home: arquivo a ser copiado: /usr/share/images/desktop-base/gnome-foot.png salve o arquivo
com o nome de home.png
5- Acesse o site e verifique se o cone para ir para o home mudou.

Pgina 176

Linux Essentials

Captulo 13
TCP Wrappers
13.1 Introduo Terica
Os TCP Wrappers so usados para aplicar regras de acesso a diversos servios em
seu servidor, podendo permitir ou negar conexes a eles. Eles so controlados por
dois arquivos: /etc/hosts.allow - configurao de acessos permitidos para determinados IPs e /etc/hosts.deny - configurao de acessos negados para determinados
IPs. TCP - Sigla para "Transmission Control Protocol".

13.1.1 Entendendo o TCP Wrappers


Existem dezenas de possibilidades de configurao para o tcp_wrappers e voc pode
estud-las em extenso atravs das pginas de manual hosts_access e hosts_options.
Portanto, sero ilustrados apenas alguns casos interessantes do uso desta ferramenta.
As regras de controle de acesso, existentes nestes dois arquivos, tm o seguinte
formato:

177

13.1 Introduo Terica

4Linux www.4linux.com.br

lista_de_daemons : lista_de_clientes [: comando ]

lista_de_daemons: Lista de um ou mais nomes de daemons (como especificados


no /etc/inetd.conf), ou curingas.
lista_de_clientes: Lista de um ou mais endereos ou nomes de mquinas, padres
ou curingas utilizados para especificar quais clientes podem e quais no podem acessar o servio.
comando (opcional): possvel executar um comando sempre que uma regra casa
com um padro e utilizada.
Veja exemplos a seguir:
Como citado anteriormente, curingas podem ser utilizados tanto na lista de daemons
quanto na lista de clientes. Entre os existentes, pode-se destacar os seguintes:
ALL - Significa todos os servios ou todos os clientes, dependendo apenas do campo
em que se encontra.
LOCAL - Este curinga casa com qualquer nome de mquina que no contenha um
caractere ponto ., isto , uma mquina local.
PARANOID - Casa com qualquer nome de mquina que no case com seu endereo.
Isto geralmente ocorre quando algum servidor DNS est mal configurado ou quando
alguma mquina est tentando se passar por outra.
Na lista de clientes podem ser utilizados nomes ou endereos de mquinas, ou ento
padres que especificam um conjunto de mquinas. Se a cadeia de caracteres que
identifica um cliente inicia com um ponto ., um nome de mquina ir casar com
este padro sempre que o final desse nome casar com o padro especificado. Por
exemplo, se fosse utilizada a cadeia de caracteres .minhaorganizao, o nome de
mquina server.minhaorganizao casaria com o padro.

Pgina 178

Linux Essentials

4Linux www.4linux.com.br

13.2 Laboratrio

Similarmente, se a cadeia de caracteres termina com um ponto ., um endereo de


mquina ir casar com o padro quando seus campos numricos iniciais casarem
com a cadeia de caracteres especificada. Para exemplificar, se fosse utilizada a
cadeia de caracteres 192.168.220., todas as mquinas que tenham um endereo IP
que inicie com estes 3 conjuntos de nmeros iro casar com o padro (192.168.220.0
ao 192.168.220.255).
Alm destes mtodos, possvel identificar um cliente atravs do IP/mscara de
rede. Voc pode especificar, por exemplo, 192.168.220.0/255.255.255.128, e qualquer mquina com endereo IP entre 192.168.220.0 e 192.168.220.127 casaria com
o padro.

13.1.2 Suporte a TCP/Wrappers


Para saber se um servio tem suporte a TCP/Wrappers verifique suas bibliotecas:

# which sshd

# ldd / usr / sbin / sshd

A existncia da libwrap confirma o suporte a TCP/Wrappers:

libwrap . so .0 = > / lib / libwrap . so .0 (0 xb7ef7000 )

13.2 Laboratrio
Bloqueie todos os acessos ao seu servidor por ssh:

Linux Essentials

Pgina 179

13.2 Laboratrio

# vim / etc / hosts . deny

sshd : ALL

4Linux www.4linux.com.br

Tente acessar seu servidor CentOS por ssh a partir da mquina Debian:

# ssh -p 2222 192.168.0.1

No possvel devido a regra do TCP/Wrappers. Libere o acesso ssh ao seu servidor


CentOS apenas para seu cliente Debian:

# vim / etc / hosts . allow

sshd : 192.168.0.100

Acesse seu servidor CentOS por ssh a partir da mquina Debian:

# ssh -p 2222 192.168.0.1

Pgina 180

Linux Essentials

Captulo 14
Instalao de Programas com DPKG
e RPM
14.1 Introduo terica
14.1.1 Pacotes Debian - DPKG
O DPKG um programa que a base do Sistema de Gerenciamento de Pacotes para
distribuies GNU/Linux baseadas em Debian. Criado por Ian Jackson em 1993,
o DPKG usado para instalar, remover e fornecer informaes sobre os pacotes
.deb.
O DPKG uma ferramenta em linguagem de baixo nvel. Front ends de alto nvel
so exigidos para buscar pacotes em lugares remotos ou ajudar no solucionamento
de conflitos nas dependncias dos pacotes. Para esta finalidade, o Debian fornece o
aptitude e o apt-get.
Estrutura de um repositrio Debian:

pool

181

14.1 Introduo terica

\_ stable

\_ main

4
5

\_ a
\_ alien
\ _ alien - < versao >. deb

6
7

\_ a2ps

\_ ...

4Linux www.4linux.com.br

\_ b

10

\_ ...

11

\_ z

12

\_ liba

13

\_ libb

14

\_ ...

15

\_ libz

16

\_ testing

17

\_ unstable

18

\_ contrib

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

14.1.2 Pacotes RPM

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


sistemas GNU/Linux baseados em RedHat. Ele instala, atualiza, desinstala e verifica
softwares. Originalmente desenvolvido pela RedHat Linux, agora usado por muitas
distribuies como Novell - Suse que possui sua prpria verso de RPM.

Pgina 182

Linux Essentials

4Linux www.4linux.com.br

14.2 Laboratrio

14.1.3 Base de dados RPM

Atrs 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 lista todos os arquivos que so criados ou modificados
quando um usurio instala um programa e facilita a remoo destes mesmos arquivos. Se o banco de dados fica corrompido (o que acontece facilmente se o cliente
de RPM fechado subitamente), as ligaes duplas garantem que eles possam ser
reconstrudos sem nenhum problema. Em computadores com o sistema operacional
RedHat instalado, este banco da dados encontra-se em /var/lib/rpm.
Uma vantagem que o RPM possui sobre DPKG que possui algumas ferramentas de
verificao criptogrfica com o GPG e o md5, alm de verificao de integridade dos
arquivos j instalados. Existe uma documentao que pode ser usada para qualquer
distro baseada em RPM que pode ser encontrada em: http://www.rpm.org/RPM-HOWTO/.

14.2 Laboratrio
14.2.1 DPKG

DPKG

# dpkg -- help

Acesse o site a seguir e faa o download do flash player:


http://packages.debian.org/squeeze/flashplugin-nonfree

Linux Essentials

Pgina 183

14.2 Laboratrio

4Linux www.4linux.com.br

Veja as informaes do pacote do flash:

# dpkg -I flashplugin - nonfree_2 .8.2 _i386 . deb

Verifique se ele est instalado no sistema:

# dpkg -l < programa >

Ou:

# dpkg -l | grep < programa >

No caso:

# dpkg -l | grep flashplayer

Verifique quais programas esto instalados no sistema:

# dpkg -l | less

Para determinar qual pacote foi o responsvel por instalar um binrio no sistema,
digite:

# dpkg -S $ ( which < caminho_completo_para_o_bin rio >)

EX: Qual o pacote responsvel por instalar o comando ping?

Pgina 184

Linux Essentials

4Linux www.4linux.com.br

14.2 Laboratrio

# dpkg -S $ ( which ping )

Verifique o status de um pacote instalado:

# dpkg -s coreutils

Instale o programa flashplayer.

# dpkg -i flashplugin - nonfree_2 .8.2 _i386 . deb

Verifique que o flashplayer foi instalado:

# dpkg -l flashplugin - nonfree_2 .8.2 _i386 . deb

Determine onde esto instalados todos os arquivos do aplicativo flashplayer:

# dpkg -L flashplugin - nonfree | less

Determine onde sero instalados todos os arquivos do programa flashplayer:

# dpkg -c

flashplugin - nonfree_2 .8.2 _i386 . deb | less

Remova o programa flashplayer:

# dpkg -r

flashplugin - nonfree

Linux Essentials

Pgina 185

14.2 Laboratrio

4Linux www.4linux.com.br

Verifique que foi removido:

# dpkg -l

flashplugin - nonfree

Verifique se seus respectivos arquivos tambm foram removidos:

# updatedb ; locate flashplugin

Apague seus arquivos de configurao:

# dpkg -P

flashplugin - nonfree

Alguns pacotes tm problemas de dependncias e no so instalados, at que suas


dependncias sejam satisfeitas, para isso utilize o apt-get ou aptitude com a opo -f
para resolver. Por exemplo, vamos tentar instalar o google-chrome, faa o download
do pacote.deb:

# dpkg -i google - chrome - stable_current_i386 . deb

O aplicativo no pode ser instalado porque existem pr-requisitos para sua instalao, para resolver estas dependncias automaticamente, digite:

# aptitude -f

install

Ou:

# apt - get -f

Pgina 186

install

Linux Essentials

4Linux www.4linux.com.br

14.2 Laboratrio

14.2.2 Convertendo extenses de arquivos


Instalar o nosso conversor de pacotes:

# aptitude install alien

Veja se o pacote est instalado:

# dpkg -l alien

Iniciando nossos testes, precisamos de um arquivo.deb:

# cd / var / cache / apt / archives

# ls -lh

# aptitude clean

Faa o download dos pacotes necessrios, para os testes:

# aptitude -d install sl

ccze ; ls - lh

# cp sl -< versao >. deb / opt

# cp ccze - < versao >. deb / opt

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

# cd / opt ; ls - lh

Convertendo para pacote .RPM:

Linux Essentials

Pgina 187

14.2 Laboratrio

# alien -r sl - < versao >. deb

# alien -r ccze - < versao >. deb

4Linux www.4linux.com.br

Convertendo para pacote .TGZ:

# alien -t sl - < versao >. deb

# alien -t ccze - < versao >. deb

Veja todos os arquivos criados:

# file sl *

# file ccze *

Vamos agora copiar o arquivo .rpm para a mquina Dexter para poder instalar o
pacote.

# scp -P 2222 ccze *. rpm aluno@IP_SERVIDOR_DEXTER :/ opt

14.2.3 Gerenciando Pacotes em Formato RPM

Red Hat: Em sistemas baseados em RedHat utilizamos o gerenciador de pacotes RPM.

Na mquina Dexter, verifique o que ser instalado com o pacote ccze:

Pgina 188

Linux Essentials

4Linux www.4linux.com.br

# cd / opt

# rpm -qp ccze - - < versao >. rpm

14.2 Laboratrio

Veja as informaes do pacote, no instalado:

# rpm - qpi ccze - - < versao >. rpm

Verifique quais arquivos sero instalados com o pacote:

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

# rpm -ih -- test -- percent ccze - - < versao >. rpm

As opes -h e percent servem para mostrar uma barra de progressos e a porcentagem de concluso.
Instale o programa:

# rpm -ih -- percent ccze - - < versao >. rpm

Verifique os arquivos instalados:

# rpm -qa ccze

Verifique quais arquivos foram instalados atravs do pacote:

# rpm -ql ccze

Linux Essentials

Pgina 189

14.2 Laboratrio

4Linux www.4linux.com.br

Verifique o que ser efetuado ao removermos o pacote ccze:

# rpm -e -- test ccze

Agora remova o ccze:

# rpm -e ccze

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


utilize o parmetro nodeps.

Veja que o pacote ccze, foi removido:

# rpm -qa

# rpm -q ccze

Para realizar uma atualizao de verso de algum programa podemos utilizar o comando:

# rpm -Uh pacote - < versao >;. rpm

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

Uma funcionalidade muito boa do RPM a capacidade de realizar verificaes de


integridade dos pacotes instalados. Dessa forma, periodicamente voc pode verificar

Pgina 190

Linux Essentials

4Linux www.4linux.com.br

14.2 Laboratrio

se ocorreu alguma alterao no seu sistema sem voc saber ou se sua mquina foi
invadida, pode-se tentar identificar o que foi mexido nela.
Verifique a integridade de todos os pacotes instalados no sistema:

# rpm -Va

Vamos instalar o ccze novamente:

# rpm -ih -- percent ccze - - < versao >. rpm

Troque a permisso do binrio ccze e verifique:

# chmod 777 / usr / bin / ccze

Execute o comando:

tail -f / var / log / syslog | ccze

Verifique que os logs esto saindo coloridos, o comando ccze serve para verificar
logs desta maneira.

Dica LPI: O comando tail mostra por padro as ltimas 10 linhas de um arquivo,
e em conjunto com a opo -f verifica em tempo real.

Verifique novamente a integridade de todos os pacotes instalados no sistema:

Linux Essentials

Pgina 191

14.2 Laboratrio

4Linux www.4linux.com.br

# rpm -Va

Algumas siglas da checagem:


S file Size differs M Mode differs (includes permissions and file type) 5 MD5 sum
differs D Device major/minor number mismatch L readLink(2) path mismatch U User
ownership differs G Group ownership differs T mTime differs P caPabilities differ

Pgina 192

Linux Essentials

Captulo 15
Instalando, removendo e atualizando
programas
15.1 Introduo terica
15.1.1 O que um pacote?

Os diversos programas para GNU/Linux so distribudos em forma de pacotes especficos para cada distribuio. Neste captulo aprenderemos um pouco sobre esses
pacotes e como instal-los e remov-los do sistema.
Pacotes so conjuntos de binrios pr-compilados, bibliotecas, arquivos de controle e
arquivos de configurao, que so instalados facilmente no sistema operacional. Eles
podem, eventualmente, conter sistemas de listagem/checagem de dependncias e
scripts para configuraes ps instalao.

Os pacotes nos sistemas baseados em Debian tm uma extenso caracterstica: .deb.

193

15.1 Introduo terica

4Linux www.4linux.com.br

J nas distribuies baseadas em RedHat, temos pacotes com a extenso


caracterstica: .rpm.

15.1.2 Mas o que um gerenciador de pacotes?

Um gerenciador de pacotes um sistema para a instalao, atualizao e remoo


de programas em uma distribuio GNU/Linux. Parece muito simples falar em instalao de pacotes, mas temos que lembrar que o gerenciador de pacotes quem faz
toda a parte suja para ns.

Um pacote nem sempre depende apenas dele mesmo, ou seja, quando instalamos
um programa, ele pode depender de bibliotecas de udio, vdeo, imagens, funes e
vrios outros programas que precisam estar instalados antes do pacote. esse elo
entre programas que chamamos de dependncias.

O trabalho feito pelo gerenciador de pacotes interpretar a necessidade de cada um


dos pacotes, para que eles possam ser instalados e/ou removidos. Para os sistemas
baseados em Debian, a ferramenta a ser utilizada o aptitude ou apt-get.

J para sistemas baseados em RedHat temos uma ferramenta anloga chamada


yum.

Pgina 194

Linux Essentials

4Linux www.4linux.com.br

15.2 Laboratrio

15.2 Laboratrio
15.2.1 Gerenciando pacotes no Debian:
Para gerenciarmos os pacotes no Debian, primeiramente devemos selecionar os repositrios para isso editaremos o arquivo /etc/apt/sources.list.
O arquivo /etc/apt/sources.list contm os locais onde o APT encontrar os pacotes, a verso da distribuio que ser verificada (stable, testing, unstable) e a seo
que ser copiada (main, non-free, contrib, non-US). Essas definies so usadas em
um GNU/Linux Debian.
Segue um exemplo de arquivo de configurao:

# vim / etc / apt / sources . list

# mirros de seguran a

deb http :// security . debian . org / squeeze / updates main contrib

deb - src http :// security . debian . org / squeeze / updates main contrib

# mirros oficiais

deb ftp :// ftp . br . debian . org / debian / squeeze main contrib non - free

deb http :// linorg . usp . br / debian / squeeze main contrib non - free

# mirror multimidia

deb http :// debian - multimedia . org / squeeze main

15.2.2 Instalao, Remoo e Atualizao


Aps fazer as configuraes da lista de repositrios ser necessrio fazer a atualizao da lista:

# aptitude update

Linux Essentials

Pgina 195

15.2 Laboratrio

4Linux www.4linux.com.br

ou

# apt - get update

Os comandos acima sincronizam a lista de pacotes disponveis para instalao nos


servidores remotos, com uma lista local. A lista local visa acelerar as consultas e
pesquisas. Caso ocorra um erro de GPG, basta instalar o pacote debian-keyring.

# aptitude install debian - keyring

ou

# apt - get install debian - keyring

Atualize novamente o repositrio:

# aptitude update

ou

# apt - get update

Vamos primeiramente utilizar a ferramenta aptitude em seu modo visual, e logo aps
em seu modo texto, para instalar, remover e procurar pacotes.

# aptitude

Pgina 196

Linux Essentials

4Linux www.4linux.com.br

15.2 Laboratrio

Para procurarmos por um pacote que desejamos instalar, podemos fazer uma busca
pelo comando abaixo:

# aptitude search < argumento >

ou

# apt - cache search < argumento >

A diferena entre aptitude e apt-cache que o aptitude ir trazer os resultados que


contenham o argumento passado na busca no nome do programa, enquanto que o
apt-cache trar como resultado tanto comandos, quanto resumo do comando que
contenham o argumento passado na busca.

Para buscar uma lista completa de pacotes disponveis para Debian acesse:
http://packages.debian.org

Vamos buscar por gerenciadores de janela, mas no sabemos quais existem, ento
prefira utilizar o apt-cache e faa a busca sempre em ingls:

# apt - cache search " display manager "

Se fizer a busca com o aptitude, talvez voc no encontre o pacote que procura.

# aptitude search " display manager "

J no caso de saber o nome do programa que voc busca, voc pode utilizar diretamente o aptitude, por exemplo o programa ORCA para deficientes visuais:

Linux Essentials

Pgina 197

15.2 Laboratrio

4Linux www.4linux.com.br

# aptitude search orca

O apt-cache traz mais opes, pois busca no nome do programa e no resumo do que
faz o mesmo.

# apt - cache search orca

Agora falando de dependncias de pacotes, importante entender que os pacotes


no so apenas binrios mgicos, que depois de um comando de instalao esto
prontinhos para funcionar.
A instalao de um pacote depende de vrios pr-requisitos que o prprio pacote
capaz de resolver e/ou indicar ao sistema como resolver. Por exemplo, queremos instalar o pacote kdm, um gerenciador de displays. Aps comunicarmos que
queremos instalar esse pacote, o nosso gerenciador de pacotes verificar suas dependncias, recomendaes, conflitos e/ou apenas sugestes de tarefas, que devem
ser satisfeitas.
A visualizao de todas essas informaes pode ser feita executando o comando:

# aptitude show < pacote >

ou

# apt - cache show < pacote >

Vamos conhecer um pouco mais sobre o KDM e sobre o ORCA:

# aptitude show kdm

Pgina 198

Linux Essentials

4Linux www.4linux.com.br

15.2 Laboratrio

# apt - cache show orca

Para a instalao de pacotes deve-se usar o comando aptitude ou apt-get com a


instruo install e, em seguida, fornecer o nome do pacote desejado. Por exemplo,
para instalar os programas kdm, xdm, samba, digitamos:

# apt - get install samba

ou

# aptitude install samba

As dependncias so pacotes que esto diretamente ligados ao pacote que ir ser


instalado, ou seja, so pr-requisitos essenciais. Se um pacote depende de outro,
ambos devem ser instalados pois o programa em questo s ir funcionar se todas
suas dependncias estiverem supridas.
As recomendaes so pacotes que no so essenciais, porm adicionam/retiram
alguma funo que o programa poderia ter. Por exemplo, quando instalamos o pacote
mozilla-browser recomendado tambm a instalao do pacote mozilla-psm, que
d suporte s paginas seguras, mas este ltimo no obrigatrio e, portanto, se no
for instalado no ser um impedimento na instalao do mozilla-browser.
As sugestes so pacotes relacionados com o complemento de funcionalidade. A
instalao desse pacote pode fornecer alguns complementos em relao ao pacote
que est sendo instalado.
Os conflitos so pacotes que no podem ser instalados simultaneamente no sistema.

Linux Essentials

Pgina 199

15.2 Laboratrio

4Linux www.4linux.com.br

Para remover um pacote instalado deve-se usar o comando aptitude ou apt-get


com a instruo remove e, em seguida, fornecer o nome do pacote. Por exemplo,
para remover o programa samba, digitamos:

# aptitude remove samba

ou

# apt - get remove samba

Repare que aps a remoo, os arquivos de configurao do samba, ainda continuam existindo no sistema:

# ls / etc / samba

Instale novamente o samba:

# apt - get install samba

ou

# aptitude install samba

Agora iremos remover o samba e suas dependncias, assim como seus arquivos de
configurao:

# aptitude purge samba

Pgina 200

Linux Essentials

4Linux www.4linux.com.br

15.2 Laboratrio

Ou:

# apt - get autoremove -- purge samba

15.2.3 Removendo pacotes que no sero mais usados


Quando voc instala um pacote o apt busca das fontes listadas em "/etc/apt/sources.list" os arquivos necessrios e os guarda em um repositrio local "/var/cache/apt/archives/", e ento faz a instalao Em algum tempo o repositrio local
pode crescer e ocupar muito espao em disco. Felizmente o apt fornece uma tima
ferramenta para lidar com seu repositrio local,o mtodos "clean"do apt-get. O "aptget clean" remove tudo exceto os arquivos de lock dos diretrios "/var/cache/apt/archives/" e "/var/cache/apt/archives/partial/". Assim, se voc precisar reinstalar um
pacote o apt ir busc-lo novamente.

# apt - get clean

15.2.4 Atualizar pacotes instalados:


Para atualizar os pacotes j instalados, para a ltima verso que est no repositrio:

# aptitude upgrade

ou

# apt - get upgrade

Linux Essentials

Pgina 201

15.2 Laboratrio

4Linux www.4linux.com.br

15.2.5 Atualizao da distro

O sistema pode ser atualizado de tempos em tempos ou por questes de segurana.


Para instalar todas as atualizaes disponveis, usa-se o aptitude com a instruo
safe-upgrade. Dependendo da velocidade de conexo, este processo pode levar
bastante tempo.

# aptitude safe - upgrade

15.2.6 Gerenciamento de pacotes em distros baseadas em rpm.

Nas distros baseadas em RedHat, o gerenciamento de pacotes feito pelo


programa rpm. A RedHat e Fedora disponibilizam tambm a ferramenta yum, similar em funcionalidade ao aptitude. J o SUSE apresenta a ferramenta zypper,
muito embora nesta distro recomenda-se a utilizao da ferramenta Yast para gerenciamento de pacotes e configurao do sistema. Quando falamos de Mandriva a
ferramenta da vez o urpmi.

O yum (Yellow dog Update, Modified) o gerenciador de pacotes usado por padro
no CentOS, no Fedora e no Red Hat Enterprise. O yum foi originalmente desenvolvido pela equipe do Yellow Dog (uma distribuio baseada no Red Hat, destinada a
computadores com chip PowerPC) e foi sistematicamente aperfeioado pela equipe
da Red Hat, at finalmente assumir o posto atual.
O yum trabalha de forma bem similar ao apt-get e aptitude, baixando os pacotes
a partir dos repositrios especificados nos arquivos de configurao, junto com as
dependncias necessrias. Assim como o apt-get e aptitude, ele capaz de solucionar conflitos automaticamente e pode ser tambm usado para atualizar o sistema.

Pgina 202

Linux Essentials

4Linux www.4linux.com.br

15.2 Laboratrio

Essencialmente, o yum e o apt-get/aptitude solucionaram o antigo problema das dependncias (um pacote precisa de outro, que por sua vez precisa de um terceiro) que
atormentava os usurios de distribuies mais antigas.
Diferente do gerenciador de pacotes do Debian que toda vez que modifica a lista de
repositrio necessrio fazer a atualizao da lista, o yum faz a atualizao automaticamente cada vez que uma instalao solicitada, checando os repositrios,
baixando os headers do pacotes e calculando as dependncias antes de confirmar a
instalao.
Os repositrios ficam em: /etc/yum.repos.d, vamos adicionar o repositrio do dag:

# vim / etc / yum . repos . d / dag . repo

[ dag ]

name = Dag RPM Repository for Red Hat Enterprise Linux

baseurl = http :// apt . sw . be / redhat / el$releasever / en / $basearch / dag

gpgcheck =1

gpgkey = http :// dag . wieers . com / rpm / packages / RPM - GPG - KEY . dag . txt

enabled =1

Procurando um programa:

# yum search < pacote >

Para buscar pelo software samba, digite:

# yum list samba

ou

# yum search samba

Linux Essentials

Pgina 203

15.2 Laboratrio

4Linux www.4linux.com.br

A diferena entre as opes list e search que a primeira opo list ir trazer
os resultados que contenham o argumento passado na busca no nome do programa,
enquanto que a opo search trar como resultado tanto comandos, quanto resumo
do comando que contenham o argumento passado na busca.
Obtendo informaes do pacote:
Usando o yum para mostrar informaes de pacotes:

# yum info < pacote >

Para obter informaes sobre o pacote do samba:

# yum info samba

15.2.7 Instalando pacotes:

Para instalar um pacote diretamente do repositrio:

# yum install < pacote >

Para instalar o samba:

# yum install samba

Pgina 204

Linux Essentials

4Linux www.4linux.com.br

15.2 Laboratrio

15.2.8 Removendo pacotes:

Para remover um pacote do sistema:

# yum remove < pacote >

ou:

# yum erase < pacote >

Remova o samba:

# yum remove samba

ou

# yum erase samba

Verifique que o diretrio do samba, continua existindo no sistema:

# ls / etc / samba

O yum no tem uma opo purge como o apt-get e o aptitude, para remover as
dependncias e arquivos de configurao do pacote, tendo que serem removidos
posteriormente.

Linux Essentials

Pgina 205

15.2 Laboratrio

4Linux www.4linux.com.br

15.2.9 Atualizando pacotes


Para atualizar os pacotes instalados, digite:

# yum update

Pgina 206

Linux Essentials

Captulo 16
Compilando Programas
16.1 Introduo Terica
Um dos pontos centrais do mundo GNU/Linux est baseado nas quatro liberdades
bsicas propostas pela FSF - Free Software Foundation, sendo elas:
1 liberdade de rodar o programa para qualquer propsito;
2 liberdade de acesso ao cdigo fonte, estudar como ele funciona e adapt-lo
s suas necessidades;
3 liberdade de redistribuir cpias do software;
4 liberdade de melhorar o programa e distribuir essas melhorias em benefcio
da comunidade.
Para que essas quatro liberdades bsicas sejam alcanadas necessrio que tenhamos acesso ao cdigo fonte dos programas.
Tirando a parte ideolgica, h diversas situaes que exigem que recompilemos um
determinado software a partir do cdigo fonte, sendo algumas delas, quando ne-

207

16.2 Laboratrio

4Linux www.4linux.com.br

cessitamos alter-lo para que ele satisfaa alguma necessidade pessoal, corrigir um
erro ou melhorar a segurana, o software no est disponvel na forma de pacote ou
simplesmente o pacote no vem compilado com alguma funcionalidade que desejamos.

16.2 Laboratrio
16.2.1 Configure
Em geral, sempre que pegamos o cdigo fonte de um programa ele vir com um
aplicativo chamado configure que ir executar uma verificao em seu sistema a fim
de verificar se ele dispe de todos os componentes bsicos para uma compilao
bem sucedida.
Alm disso, quando consultamos o help do configure ele ir nos mostrar todas as
funcionalidades que podemos compilar com o programa e todas as funcionalidades
que podemos retirar do mesmo para que ele se encaixe em nossas necessidades.
Alm da escolha das funcionalidades, ele nos permite informar a localizao de certos componentes que por ventura no encontre.
Uma vez que o processo de configure for encerrado com sucesso, ele ira gerar um
arquivo chamado Makefile, contm instrues de compilao e instalao entre outras.

16.2.2 Makefile
A Makefile em geral criada utilizando a ferramenta configure e o objetivo desta
automatizar os processos de compilao, verificao e instalao dos softwares.
A Makefile estruturada em sees; cada uma delas realiza alguma tarefa espec-

Pgina 208

Linux Essentials

4Linux www.4linux.com.br

16.2 Laboratrio

fica. Em geral essas Makefiles vm com pelo menos trs sees padro: default,
install e clean. Algumas podem vir com test ou check ou alguma outra que o desenvolvedor ache relevante. Por isso devemos sempre ler a documentao do programa.
A forma de utilizao da Makefile , simplesmente, utilizar o comando make com o
nome de alguma das sees. Se nenhuma for especificada, ele ir executar a seo
default.
Instalao:
Para que possamos instalar um software a partir de seu cdigo fonte, o primeiro
passo que temos que seguir : fazer o download dele. Em geral fazemos isso acessando a pgina do desenvolvedor do programa. Neste captulo vamos realizar a compilao do software chamado nmap, que pode ser encontrado em http://www.insecure.org.
O procedimento de compilao de um programa parte do princpio que, atravs do
cdigo fonte do programa, qualquer um possa ter acesso ao cdigo e gerar o binrio
final a partir dele. O procedimento de compilao sempre bem parecido para todas
as aplicaes, porm, sempre que for compilar algum programa, devemos consultar o arquivo INSTALL ou o README que est sempre presente junto com o cdigo
fonte.
Vamos instalar os pacotes necessrios:

# aptitude install make gcc g ++ bzip2 gzip unzip

Descomprima e desempacote o cdigo fonte do nmap no diretrio apropriado


entre nele:

# wget http :// nmap . org / dist / nmap -5.51. tar . bz2

# tar xvjf nmap -5.51. tar . bz2 -C / usr / local

# cd / usr / local / nmap - versao

Linux Essentials

Pgina 209

16.2 Laboratrio

4Linux www.4linux.com.br

Qual o primeiro passo para compilar um programa?? Ler os arquivos README e INSTALL:

# vim README

# vim INSTALL

Dica LPI:Todos esses mtodos chegam ao mesmo resultado. Certfique-se de


que voc entende que o tar capaz de arquivar direto para arquivos e que se pode
fazer uma verso comprimida de um arquivo tar como gzip. Para a prova voc deve
dominar o TAR e o GZIP, que estudamos no 450, e utilizaremos aqui.

Obs.: Nem sempre ambos os arquivos estaro presentes, mas certamente um deles
sempre estar.
Agora que sabemos o que fazer, vamos executar. Para determinar quais so
os parmetros que podemos passar ao configure:

# ./ configure -- help

Como no estamos interessados na interface grfica do nmap, podemos informar ao configure que no queremos que o nmap a utilize:

# ./ configure -- without - zenmap

Dica LPI: muito comum, quando compilamos um programa a partir de seu cdigo fonte, que alguns de seus requisitos no estejam presentes, ocasionando assim
um erro durante a execuo do configure. Quando isso ocorrer, deve-se identificar o

Pgina 210

Linux Essentials

4Linux www.4linux.com.br

16.2 Laboratrio

componente que est faltando, instal-lo e executar novamente o configure at que


ele termine com sucesso. Fique atento esse processo.

Quando o configure for executado com sucesso, podemos passar compilao, mas antes vamos conhecer o arquivo Makefile criado pelo configure:

# vim Makefile

Agora sim vamos compilar o programa:

# make

Se no der nenhum erro de compilao, podemos prosseguir com a instalao:

# make install

Se tudo ocorreu bem, j possvel utilizar o novo aplicativo:

# nmap 192.168.200.254

Aps compilarmos o programa, podemos remover os arquivos binrios e de


objetos que foram criados durante a compilao:

# make clean

Para desinstalar:

Linux Essentials

Pgina 211

16.3 Desafio

4Linux www.4linux.com.br

# make uninstall

16.3 Desafio
1 - Executar script.
2 - Faa o download do pacote iptraf no servidor:

# wget ftp :// iptraf . seul . org / pub / iptraf / iptraf -3.0.0. bin . i386 . tar . gz

3 - Descompacte-o:

# tar zxvf iptraf -3.0.0. bin . i386 . tar . gz

4 - Acesse seu diretrio e descubra como instal-lo:

# cd iptraf -3.0.0. bin . i386

Pgina 212

Linux Essentials

Captulo 17
Bibliotecas

17.1 Introduo Terica


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

17.1.1 Tipos fundamentais de programas executveis

Em sistemas Linux existem dois tipos fundamentais de programas executveis. O


primeiro chamado de esttico. Esse tipo de programa contm todas as funes que
ele precisa para ser executado, em outras palavras, completo. Devido a isso, os
executveis estticos no dependem de nenhuma biblioteca externa para funcionar.
O segundo tipo o executvel dinmico. Mas como descobrir se um executvel

213

17.2 Laboratrio

4Linux www.4linux.com.br

dinmico ou esttico? Para isso, podemos usar o comando ldd, que produz uma lista
de dependncias.

17.2 Laboratrio
Identificando as bibliotecas compartilhadas:

# ldd < caminho_do_execut vel >

Obs: Deve ser colocado o caminho completo do executvel, no somente o nome do


comando.
Para facilitar em vez de digitar o caminho completo:

# ldd $( which ls )

Exemplo de executvel esttico:

# aptitude install module - assistant

# ldd / usr / bin / module - assistant

not a dynamic executable

Exemplo de executvel compartilhado:

# ldd / bin / ln

linux - gate . so .1 = > (0 xffffe000 )

libc . so .6 = > / lib / tls / libc . so .6 (0 xb7ded000 )

/ lib /ld - linux . so .2 (0 xb7f29000 )

Pgina 214

Linux Essentials

4Linux www.4linux.com.br

17.2 Laboratrio

Verificando tamanhos:

# du -h / usr / bin / module - assistant / bin / ln

64 K / usr / bin / module - assistant

40 K / bin / ln

Note que um executvel esttico bem maior que o executvel dinmico, isso ocorre
pois o esttico j contm o que precisa dentro do prprio executvel. Obviamente,
bibliotecas compartilhadas tendem a gerar executveis menores, eles tambm usam
menos memria, ou seja, menos espao em disco usado.

17.2.1 Modo Esttico e Compartilhado


O modo esttico ligeiramente mais rpido, pois no precisa buscar bibliotecas em
diretrios, mas consome mais espao (dado que cada programa teria uma cpia da
biblioteca dentro de si).
O modo compartilhado ligeiramente mais lento, pois precisa sempre abrir o arquivo
da biblioteca, mas ocupa menos espao (dado que s se tem uma cpia da biblioteca) e facilita, centralizando a manuteno (se voc precisar mudar a verso de uma
biblioteca, no tem de recompilar o programa, basta trocar o arquivo da biblioteca).
O padro usar bibliotecas compartilhadas, e geralmente a deciso mais sbia, mas precisa que todas as bibliotecas necessrias estejam presentes no sistema
para executar.
No Linux, bibliotecas estticas tm nomes como libname.a, enquanto bibliotecas
compartilhadas so chamadas libname.so.x.y.z onde x.y.z alguma forma de nmero de verso.
A ltima fase do desenvolvimento de um software a biblioteca, ou seja, reunir
todas as partes fundamentais para haver execuo. Existem tarefas que a maioria
dos softwares iram querer realizar como abrir arquivos, por exemplo, e esse tipo

Linux Essentials

Pgina 215

17.2 Laboratrio

4Linux www.4linux.com.br

de tarefa realizada atravs de bibliotecas. No Linux, as bibliotecas podem ser


encontradas em /lib e /usr/lib/ ou em outros diretrios.

Um exemplo real a linguagem C, que rica em poder de expresso, mas relativamente pobre em funcionalidades. Para construir aplicaes que fazem uso de
funcionalidades especficas, como interfaces grficas, comunicao via rede, frmulas matemticas complexas, etc, devem ser usadas bibliotecas.

As bibliotecas mais comuns, utilizadas por todas as aplicaes e utilitrios do sistema, so:

libc: na verdade um grande "pacote"de bibliotecas que prov funcionalidades bsicas de entrada/sada, de acesso a servios do sistema, rede, etc.

ld-linux: prov as funes necessrias para a carga de bibliotecas dinmicas, durante a inicializao do programa.

Por default, essas duas bibliotecas so automaticamente includas e ligadas em


todos os programas. Ao usar uma biblioteca esttica, o linker encontra as partes
que os mdulos do programa precisam, e as cpia fisicamente no arquivo de sada
executvel que ele gera.

Para bibliotecas compartilhadas, no em vez disso, ele deixa uma nota na sada
dizendo quando este programa for executado, ele ter que carregar primeiro esta
biblioteca. Diversos programas, para no terem sempre que reinventar a roda,
usam bibliotecas, como a libc, por exemplo.

Apesar de parecer um termo complicado, trabalhar com bibliotecas compartilhadas


muito simples. Para isso necessrio saber em quais diretrios elas costumam estar,
quais bibliotecas determinado binrio utiliza e saber adicionar novas bibliotecas no
sistema.

Pgina 216

Linux Essentials

4Linux www.4linux.com.br

17.2 Laboratrio

17.2.2 Listando Bibliotecas disponveis


Para listar todas as bibliotecas disponveis e a localizao de cada uma, utilize o
comando:

# ldconfig -p

Esse comando mostrar uma lista gigante das bibliotecas.

17.2.3 Localizao das bibliotecas?


Por padro, os programas instalados j adicionam as bibliotecas em seus devidos
diretrios, que geralmente so: /lib, /usr/lib.
A ordem de buscas por bibliotecas no sistema :
- O valor da varivel: LD_LIBRARY_PATH
- Os diretrios especificados em /etc/ld.so.conf
- Os diretrios padro do sistema para bibliotecas: /lib e /usr/lib

17.2.4 Adicionando novas bibliotecas ao sistema


Caso voc tenha desenvolvido ou baixado alguma biblioteca nova e criou um diretrio
especfico para guard-las, adicione o caminho completo do diretrio em que essa
biblioteca se encontra no arquivo /etc/ld.so.conf e digite o comando ldconfig (sem
parmetros). Isso ir gerar o arquivo /etc/ld.so.cache, que contm informaes sobre
as bibliotecas compartilhadas disponveis no sistema que ld.so ou ld-linux.so iro
procurar.

Linux Essentials

Pgina 217

17.2 Laboratrio

4Linux www.4linux.com.br

Aps a operao, confira o resultado com o comando ldconfig -p e veja se sua


nova biblioteca consta na lista.
Outra opo adicionar o caminho completo na varivel de ambiente LD_LIBRARY_PATH,
que instrui o carregador dinmico para checar um certo diretrio:

# export LD_LIBRARY_PATH =/ caminho / para / bibliotecas1 :/ caminho / para /


bibliotecas2

EX: Vamos criar um diretrio para nossas bibliotecas e copiar uma biblioteca que o
comando ping utiliza para l, como este novo diretrio no consta na lista de diretrios de bibliotecas, o comando no pode ser executado com sucesso, at que se
adicione este novo diretrio de bibliotecas:
Criando o diretrio novo para guardar bibliotecas:

# mkdir / bibliotecas

Testando o comando ls:

# ls / etc

Listando as bibliotecas utilizadas pelo comando ls:

# ldd / bin / ls

linux - gate . so .1 = >

libselinux . so .1 = > / lib / libselinux . so .1 (0 xb77e1000 )

librt . so .1 = > / lib / i686 / cmov / librt . so .1 (0 xb77d8000 )

libacl . so .1 = > / lib / libacl . so .1 (0 xb77d0000 )

libc . so .6 = > / lib / i686 / cmov / libc . so .6 (0 xb768a000 )

libdl . so .2 = > / lib / i686 / cmov / libdl . so .2 (0 xb7686000 )

Pgina 218

(0 xb7816000 )

Linux Essentials

4Linux www.4linux.com.br

17.2 Laboratrio

/ lib /ld - linux . so .2 (0 xb7817000 )

libpthread . so .0 = > / lib / i686 / cmov / libpthread . so .0 (0 xb766d000 )

10

libattr . so .1 = > / lib / libattr . so .1 (0 xb7668000 )

Uma das bibliotecas compartilhadas utilizada pelo comando ls a /lib/librt.so.1,


repare que ele apenas um link para a biblioteca original:

# ls -l ls -l / lib / librt . so .1

lrwxrwxrwx 1 root root 15 Set 16 17:14 / lib / librt . so .1 -> librt


-2.11.2. so

Mova esta biblioteca para /bibliotecas

# mv

/ lib / librt . so .1

/ bibliotecas

Tente fazer o ls novamente:

ls / etc

ping: error while loading shared libraries: librt.so.1 cannot open shared object file: No
such file or directory
No foi possvel executar o comando ls, pois a biblioteca compartilhada no pde ser
carregada por estar em um diretrio que no referenciado em /etc/ld.so.cache para
os linkadores carregarem-na.
Vamos checar as bibliotecas que faltam:

# ldd / bin / ls

Linux Essentials

Pgina 219

17.2 Laboratrio

4Linux www.4linux.com.br

Voc j imaginou ficar sem a librt.so.1? Sem essa lib, muitos recursos de movimentao pelo terminal no iram responder.
Nesses casos em que as bibliotecas esto em um diretrio diferente necessrio
dizer ao sistema para buscar bibliotecas l:
Adicione o caminho completo ao arquivo /etc/ld.so.conf ou crie um arquivo em /etc/ld.so.conf.d
com a extenso .conf:

# vim / etc / ld . so . conf . d / bibliotecas . conf

2
3

/ bibliotecas

Atualize a lista de diretrios de bibliotecas com o comando:

# ldconfig

Verifique se seu diretrio foi adicionado a lista:

# ldconfig -p | grep bibliotecas

Tente executar o ls:

# ls / etc

Agora foi possvel, porque a biblioteca pde ser encontrada, verifique:

# ldd / bin / ls

Pgina 220

Linux Essentials

4Linux www.4linux.com.br

17.3 Desafio

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


ldconfig

17.3 Desafio
1- O servidor Web parou de funcionar devido a uma biblioteca que no foi carregada,
descubra onde esta biblioteca est.
2- Adicione o diretrio onde est a biblioteca lista de bibliotecas do sistema.
3- Reinicie o servidor Web: /etc/init.d/httpd restart

Linux Essentials

Pgina 221

Captulo 18
Manipulando Hardware e Dispositivos
18.1 Introduo terica
O ncleo do sistema operacional GNU/Linux, o kernel, se comunica com os dispositivos de uma maneira muito interessante: praticamente todos os dispositivos em
GNU/Linux so representados por um arquivo correspondente dentro do sistema de
arquivos. Exceo a esta regra so as placas de rede.
O local onde so armazenadas estas representaes o diretrio /dev. Uma listagem deste diretrio mostrar uma srie de arquivos, todos eles representando uma
parte do seu computador. A interao com estes arquivos, pelo sistema operacional
GNU/Linux, feito atravs de pedidos e respostas que so enviados e recebido por
esses arquivos especiais.

18.1.1 Explorando o /dev


Uma diferena marcante entre sistemas MS-Windows e Unix-like a forma de lidar
com parties e dispositivos, como unidade de disquete e CD-ROM. Em sistemas
MS-Windows, desde uma partio no disco rgido a um pen drive, o acesso efetuado utilizando a idia de "unidades"ou drives, como o drive C: ou A: ou at mesmo

223

18.1 Introduo terica

4Linux www.4linux.com.br

uma unidade de rede. Esse tipo de conceito faz com que o usurio final no precise
saber o que est por trs do funcionamento desses equipamentos, simplificando sua
utilizao ao preo da perda do conhecimento.
Em sistemas como GNU/Linux existe o conceito de dispositivos; praticamente tudo
na mquina tratado como sendo um dispositivo e pode ser acessado pelo seu
respectivo arquivo localizado no diretrio /dev. Uma exceo a isso a interface
de rede que tratada diretamente no nvel do kernel, no existindo um dispositivo
(no /dev) associado a ela.
O diretrio /dev consiste de um filesystem (sistema de arquivos) especial e pode
ser de dois tipos: devfs ou udev. O primeiro mais antigo, tendo sido substitudo pelo segundo a partir do kernel 2.6.12. Uma das diferenas entre os dois
que no devfs os arquivos de dispositivos so criados uma nica vez, dessa forma,
o diretrio /dev contm os dispositivos para todos os hardwares suportados pelo
Linux, no importando se eles existem de fato na mquina ou no. Com o udev os
dispositivos so criados de acordo com a disponibilidade no sistema. Dessa forma,
o diretrio contm apenas os arquivos de dispositivo para o hardware presentes na
mquina.

O UDEV no "super popula o diretrio /dev do nosso sistema, alm de nos


proporcionar um mtodo de configurao disponvel em /etc/udev/.

Explorando o diretrio /dev voc ir se deparar com alguns arquivos especiais,


conhecidos como arquivos de dispositivos. Os tipos existentes so:
bloco - utilizados para transferncia de dados para hardware de armazenamento
de dados, como discos rgidos;
caracter - conhecido tambm como "unbuffered" utilizado para comunicao com
hardware como mice e terminais;
fifo - conhecido tambm como named pipe um dispositivo utilizado para realizar

Pgina 224

Linux Essentials

4Linux www.4linux.com.br

18.1 Introduo terica

a comunicao entre dois processos independentes;


socket - um dispositivo do tipo socket utilizado para criar um ponto de comunicao.
/dev/fdX Aqui o dispositivo equivalente ao drive de disquete, onde o x corresponde
a qual driver. Caso voc tenha apenas um drive, esse drive vai ser o /dev/fd0. Se
tiver 2 drives, o primeiro ser /dev/fd0 e o segundo /dev/fd1, e por a vai.
/dev/ttyX Quando voc se loga no seu Linux, voc acaba de se logar nesse terminal.
Ou seja, um terminal serve para voc se logar e usar uma shell (interpretador de
comandos). O /dev/ttyX corresponde a cada terminal, onde X vai ser substitudo pelo
nmero do terminal (so 63 ao todo). Voc tambm pode se deparar com /dev/ttypX.
Neste caso para terminais acessados por telnet/ssh.
/dev/ttySX Portas seriais! Na verso 2.2.x do kernel, estas portas seriais correspondem ao modem, ao mouse, e outras coisas ligadas nas COMs. Veja a tabela:

Agora se voc usa um kernel velho de verso anterior a 2.2.x, ao invs de ser
/dev/ttySX, vai ser /dev/cuaX. Ou seja, voc ter os equivalentes como /dev/cua0,
/dev/cua1, /dev/cua2 e /dev/cua3. E estes dispositivos /dev/cuaX so usados para
determinar os modems.
/dev/lpX Corresponde a porta da impressora ou porta de um servio paralelo. X o
nmero correspondente a porta... 0 = LPT1 por exemplo.

Linux Essentials

Pgina 225

18.1 Introduo terica

4Linux www.4linux.com.br

/dev/plipX Esse dispositivo corresponde a uma conexo de cabo paralelo. O X ser


o nmero correspondente a porta, como no exemplo anterior.
/dev/console Este um dispositivo especial, simbolizando os consoles (terminais
no-grficos).
/dev/null Este um dispositivo nulo, ou seja, tudo que voc mandar ou se referir a
ele ser descartado.
Seguindo essa classificao, os dois tipos mais comuns de serem manipulados so
os de bloco e de caracter; como exemplos deles temos os devices referentes a
dispositivos IDE conectados mquina (/dev/hda1, por exemplo) e o dispositivo
de acesso ao mouse (/dev/psaux, por exemplo).
Outros dispositivos de bloco importantes so os SCSI utilizados no apenas por discos SCSI mas tambm por dispositivos USB e SATA, uma vez que so acessados utilizando essa emulao. O nome destes dispositivos do tipo /dev/sd[letra][nmero]
e seguem a mesma lgica dos dispositivos IDE. Dessa forma, se houver um HD
SATA conectado mquina e mais nenhum outro dispositivo que utilize emulao
SCSI, sua localizao ser o device /dev/sda.
Os nomes dos dispositivos e a maneira como so representados na hierarquia do
diretrio /dev podem ser bastante confusos primeira vista. Com um pouco de
prtica, a nomenclatura usada far sentido.
Um mouse USB representado pelo arquivo /dev/input/mice, que pode ser traduzido como: dispositivo (DEV) de entrada (INPUT) do tipo apontador (MICE
outro termo para rato, em ingls). Um mouse PS/2 segue uma nomenclatura um
pouco mais complicada e representada pelo arquivo /dev/psaux, que pode ser
interpretado como dispositivo auxiliar na porta PS.
Para alguns dispositivos como o mouse, podemos realmente ver a interao com o
arquivo que representa o dispositivo. No exemplo abaixo, usamos o comando cat
para mostrar o contedo do arquivo de dispositivo de mouse (mexa o mouse depois
de pressionar ENTER, aps os comandos abaixo):

Pgina 226

Linux Essentials

4Linux www.4linux.com.br

18.1 Introduo terica

Para mouse USB:

# cat / dev / input / mice

Para mouse PS/2:

# cat / dev / psaux

As sadas, ilegveis para humanos, representam os dados que o sistema operacional


GNU/Linux usa para avaliar a movimentao, posicionamento e o apertar de botes
do mouse.

Linux Essentials

Pgina 227

18.1 Introduo terica

4Linux www.4linux.com.br

18.1.2 Dispositivos de armazenamento

Outro exemplo importante so os dispositivos de armazenamento principais do seu


computador: os discos rgidos. Existem trs tecnologias principais de discos rgidos:
IDE, SATA e SCSI.
Outro exemplo importante so os dispositivos de armazenamento principais do seu
computador: os discos rgidos. Existem trs tecnologias principais de discos rgidos:
IDE, SATA e SCSI.
Os discos IDE ainda so maioria no mercado, mas a tecnologia vem dando lugar ao
padro SATA. Tanto o padro IDE como o SATA so considerados econmicos

Pgina 228

Linux Essentials

4Linux www.4linux.com.br

18.1 Introduo terica

e mais voltados para computadores pessoais ou estaes de trabalho.


Os discos do padro SCSI usam uma tecnologia de acesso mais sofisticada, so
geralmente mais velozes que similares IDE e SATA, alm de mais robustos. So
usados principalmente em servidores e mquinas de alto desempenho.
Os dispositivos IDE so representados na hierarquia do diretrio /dev com um
padro que comea com hd. O disco rgido conectado como mestre na controladora
principal ser designado por hda. J o escravo, nesta mesma controladora, ser
representado por hdb. Analogamente, temos hdc e hdd, respectivamente para
os discos mestre e escravo conectados na controladora secundria.
Por outro lado, o padro dos dispositivos SATA e SCSI comeam por sd. Assim
sendo, temos sda para o primeiro dispositivo SATA ou SCSI, sdb para o segundo, e assim por diante. Uma controladora SCSI de 8 bits pode comportar at 7
dispositivos, alm da prpria controladora. Para as de 16 bits, o nmero mximo de
dispositivos 15.
Podemos verificar o contedo de um disco usando novamente o comando cat. Para
inspecionar o contedo do primeiro disco rgido sata de um computador, podemos
usar o comando abaixo:

# cat / dev / sda

A sada gerada no parece ter nenhum sentido. Os dados mostrados so aqueles


dados gravados no seu disco. Contudo, esto em uma forma que compreensvel
apenas pelo sistema operacional.
Uma partio uma diviso lgica do seu disco rgido, criada por questes de organizao, convenincia, flexibilidade ou segurana. Nos sistemas baseados em representao por letras, um disco rgido sata pode ser dividido, particionado de forma
a ser visto no GNU/Linux em /dev/sda1 e /dev/sda2.
Ou seja, a primeira partio do disco sda representada por /dev/sda1 e a se-

Linux Essentials

Pgina 229

18.1 Introduo terica

4Linux www.4linux.com.br

gunda representada por /dev/sda2. Qualquer partio adicional seguir o mesmo


padro.

18.1.3 O que uma partio?


Uma partio um espao do disco que se destina a receber um sistema de arquivos
ou, em um caso particular que veremos adiante, outras parties.

Tipos de parties

Existem trs tipos possveis de parties: primria, estendida e lgica.


Parties primrias
Este tipo de partio contm um sistema de arquivos. Em um disco deve haver no
mnimo uma e no mximo quatro parties primrias. Se existirem quatro parties
primrias, nenhuma outra partio poder existir neste disco. As parties primrias
so nomeadas da seguinte forma, caso o disco seja SATA:
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4
Partio estendida
Isso mesmo, no singular. S pode haver uma partio estendida em cada disco.
Uma partio estendida um tipo especial de partio primria que no pode conter

Pgina 230

Linux Essentials

4Linux www.4linux.com.br

18.1 Introduo terica

um sistema de arquivos. Ao invs disso, ela contm parties lgicas. Se existir uma
partio estendida, ela toma o lugar de uma das parties primrias, podendo haver
apenas trs.
Se houver, por exemplo, trs parties no disco, sendo duas primrias e uma estendida, o esquema de nomes ficar assim:
/dev/sda1 (Primria)
/dev/sda2 (Primria)
/dev/sda4 (Estendida)
Parties lgicas
Tambm chamadas de unidades lgicas, as parties lgicas residem dentro da partio estendida. As parties lgicas so numeradas a partir de 5. Em um disco
contendo duas parties primrias, a partio estendida e 3 parties lgicas, o esquema seria o seguinte:
/dev/sda1 (Primria)
/dev/sda2 (Primria)
/dev/sda4 (Estendida)
/dev/sda5 (Lgica)
/dev/sda6 (Lgica)
/dev/sda7 (Lgica)
Note que, neste caso, no h uma partio nomeada como /dev/sda4, pois os numeros de 1 a 4 so reservados para parties primrias e para a partio estendida.

Linux Essentials

Pgina 231

18.1 Introduo terica

4Linux www.4linux.com.br

Assim, para inspecionar o contedo da primeira partio, pode-se usar o comando


abaixo:

# cat / dev / sda1

Para interromper a sada do comando, que pode ser bastante demorada, pressione
a combinao de teclas Ctrl + c (mantenha a tecla Ctrl pressionada e pressione a
letra c). Caso a tela do seu console continue a mostrar caracteres estranhos, digite
reset.
O ltimo comando mostra uma sada que seres humanos no conseguem entender.

Pgina 232

Linux Essentials

4Linux www.4linux.com.br

18.1 Introduo terica

Elas representam a maneira como os dados foram armazenados em /dev/hda1.


Para que o sistema operacional GNU/Linux apresente estes dados de uma forma
mais legvel, necessrio solicitar ao sistema um processo de traduo. Este processo chamado de montagem de dispositivos.

Ento para que a partio /dev/sda1 seja usada, necessrio montar esta partio
em algum local e acess-lo. Este local, que um diretrio no sistema de arquivos,
chamado de ponto de montagem. Podemos montar um dispositivo de armazenamento em qualquer diretrio do sistema de arquivos, contudo, existem algumas
convenes:

Dispositivos removveis devem ser montados em /media (em outras pocas em /mnt).

Exemplos:

Um cdrom convencional, representado por /dev/cdrom , /dev/hdc, /dev/sr0


deve ser montado em /media/cdrom;

Um leitor de disquetes, representado por /dev/fd0, deve ser montado em


/media/floppy;

A grande maioria dos dispositivos de bloco USB, so reconhecidos como


SCSI, e podem ser localizados em /dev/sda;

Um Hd Sata tambm pode ser encontrado em /dev/sda, isso pode variar,


dependendo da porta SATA utilizada.

No caso dos discos rgidos, uma partio montada diretamente na raiz do sistema
de arquivos ou em um diretrio diretamente abaixo da raiz.

Linux Essentials

Pgina 233

18.2 Laboratrio

4Linux www.4linux.com.br

18.2 Laboratrio
18.2.1 Criando Parties no HD
Agora que j sabemos como montar um dispositivo precisamos saber como criar
uma partio manualmente. Para isso, h duas ferramentas importantes, que fazem
a mesma coisa, disponveis em sistemas GNU/Linux, so elas: fdisk e cfdisk.

Conhecer esses particionadores muito importante, anote mais um: gparted.

Adicione um novo dispositivo de armazenamento na sua mquina virtual.


Desligue a mquina, v em configuraes - armazenamento - controladora SATA adicionar disco, crie um disco de 8GB, salve e inicie a mquina.

18.2.2 Particionamento com FDISK


O particionador fdisk o mais completo dos particionadores apesar de sua interface
pouco amigvel.
Sintaxe:

# fdisk [ dispositivo ]

Utilizando:

Pgina 234

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

# fdisk / dev / sdb

Fazendo a chamada a esse programa podemos ver a seguinte tela inicial:

The number of cylinders for this disk is set to 14593.

There is nothing wrong with that , but this is larger than 1024 ,

and could in certain setups cause problems with :

1) software that runs at boot time ( e . g . , old versions of LILO )

2) booting and partitioning software from other OSs

Command ( m for help ) :

Pressionando a tecla m para obtermos um help, veremos a seguinte sada:

Command ( m for help ) : m

Command action

a toggle a bootable flag

b edit bsd disklabel

c toggle the dos compatibility flag

d delete a partition

l list known partition types

m print this menu

n add a new partition

10

o reate a new empty DOS partition table

11

p print the partition table

12

q quit without saving changes

13

s create a new empty Sun disklabel

14

t change a partition s system id

15

u change display / entry units

16

v verify the partition table

17

w write table to disk and exit

Para criarmos uma nova partio devemos, antes, ver se temos espao disponvel
para isso, ou seja, precisamos imprimir a tabela de parties utilizando a letra p.

Linux Essentials

Pgina 235

18.2 Laboratrio

4Linux www.4linux.com.br

Se houver espao disponvel para a criao de uma nova partio basta pressionar
a letra n e informar o tipo da partio (primria ou estendida) e seu tamanho. 1
crie uma partio:

Comando ( m para ajuda ) : n

Comando - a o

l gica (5 ou superior )

parti o prim ria (1 -4)

2 Escolha o tipo de partio:

3 inico da partio:

Primeiro cilindro (1 -1044 , padr o 1044) : 1

Usando valor padr o 1

4 final da partio: Last cilindro, +cilindros or +sizeK,M,G (1-1044, padro 1044):


+1G

18.2.3 Particionamento com CFDISK


A ferramenta cfdisk no to completa quanto o comando fdisk, mas um pouco
mais amigvel, ou como se diz em ingls: "user friendly". Para acess-la basta
executar o comando:

# cfdisk / dev / sdb

Pgina 236

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

Uma vez executado esse comando, a tela do cfdisk se abrir como mostrado na
figura:

A utilizao do cfdisk bastante intuitiva, utilizando as setas para cima e para baixo
voc navega pela listagem das parties e, utilizando as setas para a esquerda e
direita, voc navega pelo menu na parte inferior da tela.

Para criar uma nova partio basta selecionar na listagem de parties a linha que
contm espao livre e entrar na opo New no menu inferior. Se ainda for possvel
criar parties primrias surgir a pergunta pelo tipo da partio, caso contrrio,
surgir a pergunta para especificar quanto espao deve ser destinado para essa
partio.

Crie duas parties primria de 1G cada.

Aps realizar todas as alteraes, escolha, no menu inferior, a opo Write para
salv-las. Uma pergunta pedindo que voc confirme as alteraes ir aparecer. Sua
resposta deve ser sim ou no com todas as trs letras! Afinal, voc o root e
sabe o que est fazendo.

Linux Essentials

Pgina 237

18.2 Laboratrio

4Linux www.4linux.com.br

Criadas as parties precisamos aplicar um filesystem (sistema de arquivos)


para que ela seja usvel pelo sistema operacional.

Aps salvar, visualize o contedo do arquivo /proc/partitions:

# cat / proc / partitions

Observe que a partio criada ainda no aparece, isto porque a tabela de particionamento do seu hd no foi relida, para no ter que reiniciar, instale o programa
parted:

# apt - get install parted

Agora execute o partprobe, programa que far a releitura do seu HD:

# partprobe

Verifique se sua partio foi reconhecida:

# cat / proc / partitions

18.2.4 Aplicando um Filesystem


Para que possamos gravar informaes de forma estruturada na partio que acabamos de criar precisamos aplicar um filesystem a ela.

Pgina 238

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

Aplicar um filesystem, no format-la!

Formatar o processo de preparar a mdia magntica, como discos rgidos e disquetes, para receber informao. Esse tipo de preparo de baixo nvel e consiste em
desenhar as trilhas e setores na mdia em questo. Aplicar o filesystem significa
criar uma estrutura lgica acima dessas trilhas e setores que permita organizar seus
arquivos em uma estrutura de diretrios e subdiretrios. Apesar das diferenas tcnicas, os dois processos assemelham-se por apagar todo o contedo da partio.
Portanto cuidado!
Para saber os FileSystem suportados pelo seu kernel:

# cat / proc / filesystems

Vamos conhecer alguns tipos de FileSystem:


ext2 - Um dos primeiros FileSystem do linux;
ext3 - Evoluo do ext2, mas com a tcnica de Journal;
ext4 - Evoluo do ext3, mais desempenho.
reiserfs - timo sistema de arquivos para arquivos menores que 4Gb;
reiser4 - Evoluo reiserfs, mais desempenho.
xfs - Usado geralmente em banco de dados, tem suas vantagens com objetos muito
grandes.
iso9660 - O sistema de arquivos padro do CD-ROM.

Linux Essentials

Pgina 239

18.2 Laboratrio

4Linux www.4linux.com.br

msdos - Sistema de arquivos DOS.


umsdos - Sistema de arquivos para suportar arquivos DOS e Linux coexistentes.
vfat - Sistema de arquivos Windows (permite definio de nomes de arquivos com
at 32 caracteres).
nfs - Sistema de arquivos remoto NFS.
proc - Sistema de arquivos Linux Process Information.
jfs (Journaling File System) : criado pela IBM para uso em servidores corporativos,
teve seu cdigo liberado.
xfs : desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o cdigo fonte.
swap - Em alguns lugares ele mencionado como um Sistema de Arquivos, mas
SWAP um espao reservado para troca de dados com a memria RAM.

18.2.5 O que JOURNALING?


Um sistema de arquivos com journaling d permisso ao Sistema Operacional de
manter um log (journal), de todas as mudanas no sistema de arquivos antes de
escrever os dados no disco. Normalmente este log um log circular alocado em
uma rea especial do sistema de arquivos.
Este tipo de sistema de arquivos tem a oferecer uma melhor probabilidade de no
sofrer corrupo de dados no caso de o sistema travar ou faltar energia, e uma
recuperao mais rpida, pois no necessita verificar todo o disco, somente aqueles
que pertenciam a um log que no fora fechado devidamente.
Exemplos de sistemas de arquivos que suportam journaling: Ext3, Ext4, JFS, JFFS,

Pgina 240

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

JFFS2, LogFS, NTFS, Reiser4, ReiserFS e XFS.

18.2.6 Aplicando um FileSystem


Para criarmos um FileSystem em uma partio, devemos escolher o seu tipo e
utilizar o comando mkfs com a seguinte sintaxe:

mkfs -t tipo_do_FS < dispositivo >

Leitura sugerida: man mkfs

O FileSystem escolhido para ser utilizado no device deve ser suportado pelo kernel. Para consultar quais FileSystem so suportados pelo kernel em uso, basta
consultar o arquivo /proc/filesystems. Caso o FileSystem desejado no esteja na
lista, pode-se buscar por ele nos repositrios do GNU/Linux para instal-lo e ativ-lo
como mdulo do Kernel (item que estudaremos mais tarde no Treinamento 451).

Preste sempre ateno em qual partio ir aplicar o filesystem, pois seus


seus dados sero perdidos!

Dessa forma, podemos exemplificar a criao de um filesystem em um dispositivo


utilizando o seguinte comando:

# mkfs -t ext2 / dev / sdb1

Linux Essentials

Pgina 241

18.2 Laboratrio

4Linux www.4linux.com.br

18.2.7 Espao em Disco: df


O tamanho de cada partio definido no momento de sua criao. Mas parece bastante bvio que depois de algum tempo ser necessrio determinar quanto espao foi
consumido pelos arquivos e diretrios e quanto espao livre existe. O comando que
mostra o espao total e o espao utilizado de todas as parties montadas chama-se
df. Uma de suas caractersticas que o clculo dos espaos sempre uma aproximao para a unidade de medida mais prxima, mais legvel para o ser humano.

# df -h < arquivo / diret rio / parti o >

Mostra em kilobytes e megabytes:

# df -k < arquivo , diret rio ou parti o >

# df -m < arquivo , diret rio ou parti o >

18.2.8 Definindo tamanho dos objetos: du


No incomum precisar determinar o tamanho de um arquivo, de uma partio inteira ou de um diretrio com todo o seu contedo. O comando ls -alh capaz de
informar o tamanho de arquivos, mas no de parties inteiras ou de um diretrio
com todo o seu contedo.
O comando que faz esse trabalho o du. Veja a seguir alguns exemplos de seu
uso.

# du -h < arquivo , diret rio ou parti o >

Aproxima para a unidade de medida mais prxima, mais legvel para o ser humano.

Pgina 242

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

Mostra em bytes:

# du -b < arquivo , diret rio ou parti o >

Mostra em kilobytes:

# du -k < arquivo , diret rio ou parti o >

Mostra em megabytes:

# du -m < arquivo , diret rio ou parti o >

Mostra a quantidade de links que arquivo/diretrio/partio tem:

$ du -l < arquivo , diret rio ou parti o >

Modo resumido, ou seja, no mostra subdiretrios:

# du -s < arquivo , diret rio ou parti o >

18.2.9 Devices, UUID e Labels


Quando usamos dispositivos seguindo padres como /dev/hda3 ou /dev/sda5, estamos especificando um dispositivo que pode vir a receber outro nome. Portanto
se houver alguma modificao no disco, o sistema no mais encontrar a partio
especificada pois seu nome foi modificado. Uma alternativa inteligente para evitar

Linux Essentials

Pgina 243

18.2 Laboratrio

4Linux www.4linux.com.br

esse tipo de problema utilizar o mtodo UUID - Universally Unique Identifier ou o


mtodo de Labels.
Para descobrirmos o UUID de nossa partio podemos utilizar dois aplicativos:
vol_id ou blkid

# vol_id -u / dev / sda1

f541a97e - ef19 -4 e47 - b305 - b535a75c932a

A opo -u do comando vol_id, nos imprime a UUID referente a uma determinada


partio.
J o comando blkid lista todos os dados relevantes sobre as parties do seu
disco:

# blkid

/ dev / sda1 : UUID = " f541a97e - ef19 -4 e47 - b305 - b535a75c932a " TYPE = " ext3 "
LABEL = " MAIN "

/ dev / sda3 : UUID = " 7 C444A56444A12F6 " TYPE = " ntfs " LABEL = " WIN "

/ dev / sda5 : TYPE = " swap "

/ dev / sda6 : UUID = " 69 ff8ed5 - c09b -49 b6 - b21d -328 e90243efa " TYPE = " ext3 "
LABEL = " HOME "

/ dev / sda7 : UUID = " 2 c070d34 -5 c6e -4504 -8 d4b -9 a8fa910548d " TYPE = " ext3 "
LABEL = " STORAGE "

/ dev / sda8 : UUID = " 489 B -5 A22 " TYPE = " vfat " LABEL = " CENTER "

H tambm um outro mtodo de se descobrir essas informaes. Veja o comando


abaixo:

# ls -l / dev / disk / by - uuid /

2
3

lrwxrwxrwx 1 root root 10 2009 -03 -06 10:41 2 c070d34 -5 c6e -4504 -8 d4b -9
a8fa910548d -> ../../ sda7

Pgina 244

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

lrwxrwxrwx 1 root root 10 2009 -03 -06 10:41 489 B -5 A22 -> ../../ sda8

lrwxrwxrwx 1 root root 10 2009 -03 -06 10:41 69 ff8ed5 - c09b -49 b6 - b21d
-328 e90243efa -> ../../ sda6

lrwxrwxrwx 1 root root 10 2009 -03 -06 10:41 7 C444A56444A12F6 ->


../../ sda3

lrwxrwxrwx 1 root root 10 2009 -03 -06 10:41 f541a97e - ef19 -4 e47 - b305 b535a75c932a -> ../../ sda1

Mas a resposta gerada no est to amigvel quando as dos outros comandos.


Outra forma de visualizar o UUID e tambm o LABEL o tune2fs para parties com
arquivios de sistema ext:

# tune2fs -l / dev / sda1

tune2fs 1.41.11 (14 - Mar -2010)

# aqui mostrado o nome do label :

Filesystem volume name :

< none >

Last mounted on :

# aqui mostra o UUID da parti o

Filesystem UUID :

7 c56c1d8 -7 e8c -4 b20 -8 a46 - a0332355faff

Filesystem magic number :

0 xEF53

Filesystem revision # :

1 ( dynamic )

Filesystem features :

has_journal ext_attr resize_inode

10

dir_index filetype needs_recovery extent flex_bg sparse_super


large_file huge_file uninit_bg dir_nlink extra_isize
11

Filesystem flags :

signed_directory_hash

12

Default mount options :

( none )

13

Filesystem state :

clean

14

Errors behavior :

Continue

15

Filesystem OS type :

Linux

16

Inode count :

18997248

17

Block count :

75981568

18

Reserved block count :

3799078

19

Free blocks :

20316303

20

Free inodes :

18593199

21

First block :

Linux Essentials

Pgina 245

18.2 Laboratrio

4Linux www.4linux.com.br

22

Block size :

4096

23

Fragment size :

4096

24

Reserved GDT blocks :

1005

25

Blocks per group :

32768

26

Fragments per group :

32768

27

Inodes per group :

8192

28

Inode blocks per group :

512

29

Flex block group size :

16

30

Filesystem created :

Sun Mar 27 12:24:11 2011

31

Last mount time :

Thu Jun 30 21:11:07 2011

32

Last write time :

Sat Jun 18 18:34:53 2011

33

# total de montagem da parti o :

34

Mount count :

35

# limite m ximo de montagens antes de checar o arquivo de sistema :

36

Maximum mount count :

37

# data da ltima checagem :

38

Last checked :

39

# intervalo m ximo para checagens :

40

Check interval :

15552000 (6 months )

41

Next check after :

Thu Dec 15 19:34:53 2011

42

Lifetime writes :

468 GB

43

Reserved blocks uid :

0 ( user root )

44

Reserved blocks gid :

0 ( group root )

45

First inode :

11

46

Inode size :

47

Required extra isize :

28

48

Desired extra isize :

28

49

Journal inode :

50

First orphan inode :

262883

51

Default directory hash :

half_md4

52

Directory Hash Seed :

192 bfa52 - e10f -4 ef3 - ac2f - a1acbd575b5c

53

Journal backup :

inode blocks

Pgina 246

29
36
Sat Jun 18 18:34:53 2011

256

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

18.2.10 Rotulando uma partio:


Para colocar uma LABEL em uma partio ext3:

# tune2fs -L nome / dev / sda1

Cheque a alterao:

# tune2fs -l / dev / sda1

Parties REISERFS:

# reiserfstune -l label dispositivo

Parties EXT2/EXT3/EXT4:

# e2label dispositivo label

Parties ext4 no CentOS:

# e4label dispositivo label

Parties NTFS:

# ntfslabel dispositivo label

Parties Fat16/Fat32:

Linux Essentials

Pgina 247

18.2 Laboratrio

4Linux www.4linux.com.br

# mlabel -i dispositivo :: label

Parties JFS:

# jfs_tune -L label dispositivo

Parties XFS:

# xfs_admin -L label dispositivo

Parties SWAP:

# mkswap -L label dispositivo

18.2.11 Usando os dispositivos de armazenamento


Para termos acesso a um arquivo armazenado em mdia removvel, necessrio
conectar a mdia removvel ao seu leitor correspondente e montar o dispositivo adequado.
O comando usado para montar dispositivos mount. Sem o uso de nenhum parmetro, ele mostra os dispositivos de armazenamento que esto montados em seu
computador junto com a configurao usada para mont-los.

# mount

Pgina 248

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

Para montar um dispositivo de armazenamento em seu ponto de montagem, o comando mount pode ser usado da seguinte forma:

# mount -t < tipo > -o < op es > < dispositivo > < ponto - de - montagem >

Para visualizar as opes de montagem:

# man mount

Para que seja possvel acessar o contedo de algum dispositivo precisamos de quatro itens bsicos:
Saber o nome do dispositivo que ser acessado;
Saber o filesystem que ele est utilizando;
Ter um ponto de montagem;
Ter permisso de montagem.
determine o filesystem:
Uma vez determinado o nome do dispositivo, podemos executar o comando blkid
com o nome do dispositivo, e determinar qual filesystem ele est utilizando.

# blkid / dev / sdb1

Caso no obtenha resposta porque a partio no tem um arquivo de sistema. determine o ponto de montagem:

Linux Essentials

Pgina 249

18.2 Laboratrio

4Linux www.4linux.com.br

Se no existir um ponto de montagem, basta criar um diretrio vazio no local apropriado, em geral no /media ou /mnt e executar o comando para mont-lo.
Vamos criar uma imagem ISO para simular um arquivo de cdrom:

# apt - get install genisoimage

genisoimage o programa que cria as imagens em diversos protocolos;


-R o protocolo para o tipo de extenso Rock Ridge, comumente usado no
Linux;
-J o protocolo Joliet comumente usado no Windows;
-o indica o nome do arquivo de sada;
-l permite mais de 31 caracteres para o nome do arquivo, pode ser que o MSDOS no consiga enxergar estes caracteres, j que ele trabalha com um protocolo 8.3;
-V especifica uma identificao para o CD (LABEL);
-v modo verbose;
-pad este parmetro necessrio em muitos OSs, inclusive no Linux, ele
acionado para evitar erros de entrada e sada;
Vamos criar um arquivo ISO, ou seja, o tipo de arquivo para CD-ROM. Para isso
utilizaremos o arquivo dd pra gerar um arquivo e genisoimage para aplicar o sistema
de arquivo ISO9660:

# dd if =/ dev / zero of =/ arquivo bs =1024 count =10000

Pgina 250

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

if = input file - origem


of=output file - destino
bs= block size - tamanho do bloco
count= count - contagem de blocos
Aplicando o sistema de arquivo ISO9660:

# genisoimage -o / arquivo . iso / arquivo

Montando a partio:

# mount -o loop -t iso9660 / arquivo / media / cdrom

A opo -o loop utilizada quando se quer montar um arquivo ISO que est localizado no HD.
Para desmontar um dispositivo, o comando usado umount. Neste caso possvel
usar como parmetro o ponto de montagem ou o prprio dispositivo.
Visualizando que est montado:

# mount

OU visualizando o arquivo /etc/mtab que lista os sistemas de arquivos montados


atualmente no sistema. Sua funo idntica ao /proc/mounts:

# cat / etc / mtab

Linux Essentials

Pgina 251

18.2 Laboratrio

4Linux www.4linux.com.br

Cada linha representa um sistema de arquivo correntemente montado e contm os


seguintes campos (da esquerda para a direita):
A especificao do dispositivo
O ponto de montagem
O tipo de sistema de arquivo
Se o sistema de arquivo est montado como somente-leitura (ro, read-only) ou leitura
e gravao (rw, read-write), junto s outras opes do ponto de montagem
Dois campos no-usados contendo zeros
OU visualizando o arquivo /proc/mounts para podermos ver o status de todos os
sistemas de arquivo montados:

# cat / proc / mounts

OU por ltimo o comando df visto anteriormente:

# df

Desmontando:
Como usurio aluno abra outro terminale acesse o diretrio /media/cdrom:

$ cd / media / cdrom

Agora tente desmontar como root:

Pgina 252

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

# umount / media / cdrom

ou de forma equivalente:

# umount / arquivo . iso

Verifique que no foi possvel, isto porque existe algum acessando o diretrio, para
descobrir quais os processos que esto utilizando o /media/cdrom faa:

# fuser < arquivo / diret tio >

-i : pede confirmao antes de matar um processo (usado junto com a opo -k).
-k : mata os processos que esto acessando o arquivo/diretrio especificado.
-u : identifica o usurio de cada processo.
Ou seja:

# fuser -u / media / cdrom

/ media / cdrom 1350 e ( aluno )

A letra que aparece logo aps o PID representa o tipo de acesso, onde podemos ter,
por exemplo:
c : diretrio atual (a partir do qual o processo foi inicializado).
e : arquivo sendo executado pelo processo.
r : diretrio raiz do sistema (ponto de inicializao do processo).

Linux Essentials

Pgina 253

18.2 Laboratrio

4Linux www.4linux.com.br

Verifique que o usurio aluno est acessando o diretrio e por isso no possvel
desmontar o volume, aps descobrir, mate o processo:

# fuser -k / media / cdrom

Agora tente desmontar o volume:

# umount / media / cdrom

18.2.12 Migrando de Filesystem ext sem perder dados:


Criar um ponto de montagem:

# mkdir / teste

Montar o dispositivo criado anteriormente:

# mount -t ext2 / dev / sdb1 / teste

Copiar dados para a partio:

# cp -r / etc /* / teste

Desmontar a partio:

# umount / teste

Pgina 254

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

Vamos agora converter para ext3, sem perder os dados:

# tune2fs -j / dev / sdb1

Montando a partio:

mount / dev / sdb1 / teste

Visualize o tipo de filesystem com o comando mount:

# mount

Visualizar um arquivo para ver que no corrompeu:

# cat / teste / fstab

Desmontar dispositivo:

# umount / teste

Vamos agora converter de ext3 para ext4, sem perder os dados:


Debian:

tune2fs -O extents , uninit_bg , dir_index / dev / sdb1

Checar arquivo do sistema:

Linux Essentials

Pgina 255

18.2 Laboratrio

4Linux www.4linux.com.br

e2fsck -pf / dev / sdb1

CentOS:

tune4fs -O extents , uninit_bg , dir_index / dev / sdb1

Checar arquivo do sistema:

e4fsck -pf / dev / sdb1

Monte o sistema de arquivo:

# mount / dev / sdb1 / teste

Verifique o tipo de sistema de arquivos:

# mount

Verifique se a partio foi montada:

# mount

# df -h

# cat / etc / mtab

# cat / proc / mounts

Visualizar um arquivo para ver que no corrompeu:

Pgina 256

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

# cat / teste / fstab

Desmontar dispositivo:

# umount / teste

Filesystems podem ser grandes aliados na prova, principalmente no tpico migrao


de filesystems. Lembre-se da migrao mais comum de filesystems: de ext2 para
ext3

18.2.13 SWAP
Este tipo de partio utilizado para fornecer suporte a memria virtual ao GNU/Linux em adio a memria RAM instalada no sistema. Este tipo de partio identificado pelo tipo 82 nos programas de particionamento de disco para Linux. Somente
os dados na memria RAM so processados pelo processador, por ser mais rpida.
Desta maneira quando voc estiver executando um programa e a memria RAM
comear a encher, o GNU/Linux mover automaticamente os dados que no esto
sendo utilizados para a partio Swap e libera a memria RAM para continuar carregando os dados necessrios pelo programa. Quando os dados movidos para a
partio Swap so solicitados, o GNU/Linux move os dados da partio Swap para
a Memria. Por este motivo a partio Swap tambm chamada de rea de Troca
ou memria virtual. A velocidade em que os dados so movimentados da memria
RAM para a partio muito alta.
Vamos aproveitar a partio criada anteriormente e vamos aplicar o Swap ela:

Linux Essentials

Pgina 257

18.2 Laboratrio

4Linux www.4linux.com.br

# mkswap / dev / sdb2

Ative essa nova partio de swap:

# swapon / dev / sdb2

Para visualizar as parties swaps ativas:

# cat / proc / swaps

ou

# swapon -s

O comando swap tem a opo -p que habilita a prioridade: -p, priority <n>
Quanto maior o nmero maior a prioridade que pode variar entre 0 e 32767.
Para desabilitar a partio swap:

# swapoff / dev / sdb2

Para visualizar as parties swaps ativas:

# cat / proc / swaps

Ou:

Pgina 258

Linux Essentials

4Linux www.4linux.com.br

18.2 Laboratrio

# swapon -s

D um nome para a partio:

# mkswap -L SWAP / dev / sdb2

18.2.14 Montagem automtica de Filesystem no boot


Na seo mount voc aprendeu a montar um dispositivo de forma completa e manual, entretanto, h um arquivo que facilita a nossa vida: /etc/fstab. Nele devem
estar as informaes a respeito da montagem de todos os filesystems do sistema,
veja um exemplo a seguir:

< file system > < mount point > < type > < options > < dump > < pass >

proc

/ dev / sda1

/ boot

/ dev / sda2

/ dev / sda5

/ dev / sda6

/ dev / sda7 / tmp

ext3

defaults

/ dev / sda8 / home ext3

defaults

# exemplo UUID :

/ proc

proc defaults 0
ext3

ext3
/ usr
/ var

defaults

defaults , errors = remount - ro 0 2


ext3 defaults

ext3

defaults

10

UUID = be35a709 - c787 -4198 - a903 - d5fdc80ab2f8 / teste defaults 0 2

11

# exemplo LABEL :

12

LABEL = SWAP

none

swap sw

As informaes que devem estar nesse arquivo, de acordo com o nmero da coluna,
so:
Localizao do filesystem, em geral o device ou endereo de rede;

Linux Essentials

Pgina 259

18.2 Laboratrio

4Linux www.4linux.com.br

Ponto de montagem;
Tipo do filesystem: ext3, reiserfs, xfs, etc;
Opes de montagem: defaults = rw, suid, dev, exec, auto, nouser e async. Ver
man mount;
Aceita os valores 0 ou 1 e informa que, havendo um sistema de backup (dump)
configurado, dever ser feito o seu backup;
Aceita os valores de 0 a 2 e informa que dever ser realizada a checagem
(pass) de integridade do sistema de arquivos. O valor zero desativa a funcionalidade, o valor 1 deve ser especificado apenas para o / e o valor 2 deve ser
especificado para quaisquer outros sistemas de arquivos.
Sendo assim, o fstab armazena as informaes dos dispositivos comumente acessados, como as parties do sistema, discos removveis e alguns dispositivos USB.
Entretanto no mostra informao alguma a respeito de quais dispositivos esto
montados neste exato momento.

Essa informao pode ser obtida no arquivo /etc/mtab ou no /proc/mounts.


Ambos os arquivos so uma tabela atualizada em tempo real e que mostra quais
dispositivos esto montados e com quais parmetros.

18.2.15 Mostrar o uso de memria RAM: free


O comando free mostra o consumo de memria RAM e os detalhes sobre uso de
memria virtual (SWAP):

# free

Pgina 260

Linux Essentials

4Linux www.4linux.com.br

18.3 Desafio

Mais detalhes:

# free -m

A sada do comando ser alguma coisa parecida com:

total used free shared buffers cached

Mem : 2066856 950944 1115912 038920 342612

-/+ buffers / cache : 569412 1497444

Swap : 570268 0 570268

Voc pode olhar os arquivos do /proc tambm: Informaes de memria:

# less / proc / meminfo

Informaes de swap:

# less / proc / swap

18.3 Desafio
1- A partio swap no est sendo montada automaticamente na inicializao, crie
um LABEL para ela.
2- Coloque-a para ser montada toda vez que mquina for inicializada.
3- Monte a partio swap agora.

Linux Essentials

Pgina 261

Captulo 19
Gerenciamento de Processos
19.1 Introduo Terica
Quando executamos algum comando, script ou iniciamos algum programa, o kernel
atribui a ele um nmero de processo (PID) e passa a gerenciar a quantidade de recursos que ele ir disponibilizar para essa atividade. Como haver sempre diversos
processos rodando simultaneamente na mquina o kernel tem uma lista de processos que necessitam de recursos. Como no existe atualmente um sistema realmente
multitarefa, capaz de realizar diversas atividades realmente ao mesmo tempo, o kernel cria uma fila de processos e a percorre disponibilizando recursos de mquina
para cada um deles por um determinado perodo de tempo. Quanto melhor essa distribuio for efetuada melhor ser o desempenho do sistema como um todo e mais
prximo de um sistema multitarefas o sistema se parecer.
A forma como o kernel gerncia os processos bastante inteligente e podemos
sempre visualizar o status do processo num determinado instante, para determinar
se ele est sendo executado neste mesmo instante ou se ele est aguardando tempo
de mquina para que seja executado.
Podemos visualizar todos os processos que esto rodando em nosso sistema com o
programa que tira uma foto dessa estrutura, conhecido como snaPShot vulgo ps:

263

19.1 Introduo Terica

4Linux www.4linux.com.br

# ps

Um simples ps no nos traz muita informao, ele possui dezenas de parmetros,


ento aqui esto os mais importantes: Para podermos ver com mais detalhes os
processos temos a combinao dos seguintes parametros

# ps aux

Onde os parmetros so:


a - mostra todos os processos existentes no associados com um terminal; u - exibe
o nome do usurio que iniciou determinado processo e a hora em que isso ocorreu;
x - exibe os processos que no esto associados a terminais;
Onde os campos so:

USER

- nome do usu rio dono do processo ;

UID

- n mero de identifica o do usu rio dono do processo ;

PID

- n mero de identifica o do processo ;

PPID

- n mero de identifica o do processo pai ;

\% CPU

- porcentagem do processamento usado ;

\% MEM

- porcentagem da mem ria usada ;

VSZ

- indica o tamanho virtual do processo ;

RSS

- Resident Set Size , indica a quantidade de mem ria

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

usada ( em KB ) ;

Pgina 264

Linux Essentials

4Linux www.4linux.com.br

19.1 Introduo Terica

16
17

TTY

- indica o identificador do terminal do processo ;

START

- hora em que o processo foi iniciado ;

COMMAND

- nome do comando que executa aquele processo ;

PRI

- valor da prioridade do processo ;

NI

- valor preciso da prioridade ( geralmente igual aos

18
19
20
21
22
23
24
25

valores de PRI ) ;
26
27

WCHAN

- mostra a fun o do kernel onde o processo se encontra

em modo suspenso ;
28
29

STAT

- indica o estado atual do processo , sendo representado

por uma letra :

D Processo morto (usually IO);


R Running (na fila de processos);
S Dormindo Interruptamente (aguardando um evento terminar);
T Parado, por um sinal de controle;
Z Zombie, terminado mas removido por seu processo pai.
Essas letras podem ser combinadas e ainda acrescidas de:
> o processo est rodando com prioridade maior que a padro, tendo sido
definida pelo kernel;
< o processo est rodando com prioridade menor que a padro, tendo sido
definida pelo kernel;

Linux Essentials

Pgina 265

19.1 Introduo Terica

4Linux www.4linux.com.br

+ o processo um processo pai, ou seja, possui processos filhos;

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


dele;

l o processo possui mltiplas threads;

L o processo possui pginas travadas na memria;

N o processo foi definido com uma prioridade diferente da padro, tendo sido
definida pelo usurio.

Tambm temos alguns programas que nos mostram os processos em execuo:

# top

Com o top podemos ver o horrio atual, quanto tempo a mquina est ligada, quantos
usurios esto logados, quantos processos esto em aberto, rodando, em espera e
zumbi:

Top - 10:19:09 up 1:11 , 2 users , load average : 0.02 , 0.07 , 0.06

Tasks : 204 total ,

Cpu (s): 7.1% us , 0.9% sy , 0.2% ni , 91.7% id , 0.0% wa , 0.0% hi , 0.0% si ,

2 running , 202 sleeping ,

0 stopped ,

0 zombie

0.0% st
4

Mem :

3530556 k total , 1972072 k used , 1558484 k free ,

Swap : 1081340 k total ,

0 k used , 1081340 k free ,

232288 k buffers

990248 k cache

Onde os campos em CPU(s) so:


us = tempo de processamento, executado pelo usurio sy = tempo de processamento, executado pelo sistema ni = tempo de processamento, prioridade alterada

Pgina 266

Linux Essentials

4Linux www.4linux.com.br

19.1 Introduo Terica

pelo usurio id = ociosidade wa = wait - espera de I/O hi = interrupes de harware


si = mapeamento das interrupes pelo Kernel st = steal time
A primeira linha do comando top tambm pode ser observada com o comando uptime:

# uptime

16:23:00 up

2:14 ,

3 users ,

load average : 0.45 , 0.69 , 0.74

Onde apresentado: 16:23:00 - hora atual up 2:14 - tempo que o sistema est ligado
3 users - nmero de usurios logados
load average: 0.45, 0.69, 0.74 - mdia de carga de processamento 1min atrs, 5
min atrs e 15min atrs.
Outro programa que nos ajuda a visualizar os processos o htop muito mais amigvel:

# aptitude install htop

# htop

Observe que com o htop voc pode navegar na lista de processos.


No sistema de processos temos um tipo de processo que se chama threads esses
processos so partes de um outro processo. Podemos ver esse cenrio em forma
de rvore com o comando:

# pstree

Um modo fcil de achar o PID de um processo :

Linux Essentials

Pgina 267

19.2 Laboratrio

4Linux www.4linux.com.br

# pgrep cron

ou

# pidof cron

19.2 Laboratrio
19.2.1 E como fazemos para gerenciar os processos?
Apesar do kernel gerenciar os processos, ns podemos enviar sinais a esses processos requisitando que eles alterem seu comportamento. Para isso utilizamos o alguns
comandos para enviar um sinal de controle a um determinado processo.

Dica LPI: Uma listagem completa dos sinais possveis pode ser vista na seo
STANDARD SIGNALS do man 7 signal. Alguns dos sinais mais utilizados podem ser
vistos a seguir:

SIGHUP (1) Term Hangup detected on controlling terminal or death of controlling


process;
SIGKILL (9) Term Kill signal;
SIGTERM (15) Term Termination signal;
SIGCONT (18) Continue if stopped;

Pgina 268

Linux Essentials

4Linux www.4linux.com.br

19.2 Laboratrio

SIGSTOP (19) Stop process.


Para ver mais opes:

# man signal

Passando esses sinais aos processos podemos realizar tarefas desde, reiniciar o
processo at encerr-lo de forma forada. Para gerenciarmos processos temos alguns comandos: pkill:

# pkill -< signal > < programa >

Caso no seja passado nenhum sinal usado o sinal 15 como padro:

# pkill cron

killall:

# killall -s < signal > < programa >

Caso no seja passado nenhum sinal usado o sinal 15 como padro:

# killall cron

Os programas pkill e killall gerenciam os processos pelo nome do programa, mas


tambm podemos gerenciar os processos pelo seu PID.

# kill -< signal > <pid >

Linux Essentials

Pgina 269

19.2 Laboratrio

4Linux www.4linux.com.br

Vamos matar um processo e seus processos filho: Acesse a parte grfica e abra
o aplicativo Ekiga: Aplicativos - Internet - Ekiga Verifique qual o pid do ekiga:

# pgrep ekiga

1267

Agora mate o processo:

# kill -9 1267

Veja que a janela do aplicativo, fechada aps a execuo do kill.


Ainda na parte grfica, abra dois terminais e digite em um deles:

# ekiga

Verifique que o comando fica no prompt do terminal, impossibilitando de utiliz-lo,


at que eu cancele com um ctrl+c ou feche a janela do aplicativo. Vamos pausar a
aplicao com o sinal de stop:

# kill -19 $ ( pgrep ekiga )

Tente avanar na configurao do aplicativo Ekiga, tente fechar a janela no x, repare


que no possvel isto porque o processo est pausado. Para continuar o processo
envie o sinal de continue:

# kill -18 $ ( pgrep ekiga )

Pgina 270

Linux Essentials

4Linux www.4linux.com.br

19.2 Laboratrio

Tente mexer na aplicao sem fech-la, agora voc consegue, mas repare que o
terminal onde estava rodando ficou livre e o processo continua em execuo, mas
onde foi parar este processo?
Quando enviamos o sinal pro processo continuar, ele continuou, mas em background
no terminal de onde foi executado, para visualizar este processo em background
utilizamos o comando jobs.
Execute o comando no terminal que voc executou o ekiga pela primeira vez:

# jobs

[1]+

Executando

ekiga &

Onde: [1]+ - o nmero do job Executando - o statusXECUTANDO ekiga - o


nome do programa & - significa que o processo est em background.
Para enviar um sinal para um processo em background utilize o kill:

# kill -< signal > % < njob >

Vamos terminar o processo:

# kill %1

Verifique que o processo foi terminado, lembrando que quando no passamos o sinal
utilizado o sinal 15 como padro:

# jobs

Linux Essentials

Pgina 271

19.2 Laboratrio

4Linux www.4linux.com.br

Lembra que quando executamos o comando ekiga o terminal ficou inutilizvel, pois
se cancela-se o aplicativo fecharia? Ns podemos executar um comando para ser
executado em background, liberando-se assim o terminal para uso:
Em vez de digitar ekiga e prender o terminal, execute-o em background:

# ekiga &

Agora voc j sabe para poder executar qualquer programa em backgroung, coloque
o caracter & no final do comando.
Verifique que o processo est em background:

# jobs

[1]+

Executando

ekiga &

Agora pause o processo:

# kill -19 %1

Se quisermos rodar novamente o programa ekiga, mas em foreground ou seja primeiro plano, isso mesmo, aquele que trava o terminal para sua execuo, faa:

# fg <n job >

Ou seja:

# fg 1

Pgina 272

Linux Essentials

4Linux www.4linux.com.br

19.2 Laboratrio

Verifique que o terminal ficou travado para a execuo do ekiga, se voc cancelar
o processo, o ekiga ser fechado. Quando estamos executando um programa no
terminal, ns podemos paus-lo sem utilizar o kill, mas como isso? Simples basta
digitar no terminal: ctrl+z.

crtl +z

Verifique que o processo foi pausado:

# jobs

[1]+

Parado

ekiga

Se voc quiser continuar executando-o s que em background, utilize o comando


bg:

# bg <n job >

Ou seja:

# bg 1

Verifique que o ekiga est rodando em background:

# jobs

[1]+

Executando

ekiga &

Imagine agora que voc vai rodar um comando que ir demorar muito tempo e voc
no quer deixar o terminal logado para evitar que algum acesse o sistema, se voc

Linux Essentials

Pgina 273

19.2 Laboratrio

4Linux www.4linux.com.br

se deslogar o comando ir parar e no ir terminar, para resolver isso existe o comando nohup:
NOHUP
O nohup ignora os sinais de interrupo de conexo durante a execuo do comando
especificado. Assim, possvel o comando continuar a executar mesmo depois que
o usurio se desconectar do sistema.
Se a sada padro uma tty, esta sada e o erro padro so redirecionados para o
arquivo nohup.out (primeira opo) ou para o arquivo $HOME/nohup.out (segunda
opo). Caso nenhum destes dois arquivos possam ser criados (ou alterados se j
existem), o comando no executado.
O nohup no coloca o comando que ele executa em background. Isto deve ser feito
explicitamente pelo usurio.
Vamos executar um ping com o nohup e ver que ele continua sua execuo mesmo
aps fecharmos o terminal:

# nohup ping -c 1000 4 linux . com . br &

Enviamos 1000 pings ao site 4linux.com.br.


Feche o terminal e aps alguns (10)segundos abra novamente.
Verifique no home do usurio que voc executou o comando nohup se tem o arquivo:
nohup.out.

# cat nohup . out

Execute novamente e verifique que o ping continua, pois o comando ainda no terminou de ser executado (1000 pings ao site 4linux.com.br):

Pgina 274

Linux Essentials

4Linux www.4linux.com.br

19.2 Laboratrio

# cat nohup . out

lsof
O comando lsof um dos mais importantes comandos para quem administra sistemas Linux, principalmente na rea de segurana. Este comando lista todos os
arquivos abertos por todos os processos. Aqui, quando eu falo arquivo, no so
apenas arquivos comuns, mas sim recursos que funcionam como arquivos (podem
ser abertos, mapeados na memria, entre outros). Isso inclui bibliotecas, sockets,
arquivos comuns, diretrios e por a vai.
Em outras palavras, este comando nos fornece um mapeamento completo do que o
programa est usando no sistema. Lembre-se que usando apenas o comando lsof,
esta lista fica muito grande, pois mostra todos os arquivos de todos os processos.
Por exemplo:

# lsof -n

COMMAND

PID

OFF
3

init

init

init

7
8

DIR

8 ,1

root

rtd

DIR

8 ,1

root

txt

REG

8 ,1

REG

8 ,1

root

mem

root

mem

REG

8 ,1

11665529 / lib / libnss_nis -2.11.1. so


1

root

mem

REG

8 ,1

11665513 / lib / libnsl -2.11.1. so

init
35712

cwd

11665519 / lib / libnss_files -2.11.1. so

init
97256

init
43552

root

6946871 / sbin / init

init
51712

DEVICE SIZE /

2 /

129800
6

TYPE

2 /

4096
5

FD

NODE NAME

4096
4

USER

root

mem

REG

8 ,1

11665515 / lib / libnss_compat -2.11.1. so

Linux Essentials

Pgina 275

19.2 Laboratrio

10

init

1572232
11

4Linux www.4linux.com.br

init

mem

REG

8 ,1

11665453 / lib / libc -2.11.1. so


1

31744

root
root

mem

REG

8 ,1

11665567 / lib / librt -2.11.1. so

No exemplo acima, eu peguei apenas um fragmento do comando, indicando o que o


comando bash est fazendo. D pra ver que bibliotecas ele est usando, onde ele
est atuando, entre outros. O parmetro -n, que usei no exemplo acima, serve para
que se o comando retornar algum endereo de rede (IP, por exemplo), ele no tente
resolver com DNS, assim o retorno do comando fica mais rpido.
Alguns dos usos mais comuns incluem:
Ver se algum processo est escutando uma porta na rede suspeita, ou conectado em algum lugar suspeito. Por exemplo, vrios scripts de invaso ficam
escondidos no sistema (com nomes de outros processos), conectados a servidores de IRC desconhecidos. Com o lsof, d pra saber que estes comando
esto fazendo algo que no bem o que deveriam fazer ;) ;
Ver que processo est usando um certo arquivo (lsof );
Ver exatamente que tipos de conexo esto sendo feitas no sistema;
Medir as memrias utilizadas pelos processos.
Quando lsof chamado sem parmetros, ele vai mostrar todos os arquivos abertos
por todos os processos.

# lsof

Abra um arquivo com o comando vim, utilizando o usurio aluno:

Pgina 276

Linux Essentials

4Linux www.4linux.com.br

19.2 Laboratrio

$ vim arquivo

Agora abra outro terminal e descubra quem est utilizando o comando vim no sistema:

# lsof which vim

Para visualizar apenas o nmero do processo:

# lsof -t which vim

Nos mostrar quais os arquivos so abertos por processos cujos nomes comeam
pela letra "k"(klogd, kswapd . . . );

# lsof -c k

Nos mostrar quais arquivos so abertos por processos cujo nome comea com
bash:

# lsof -c bash

Nos mostrar quais os arquivos so abertos por processos cujos nomes comeam por
"bash", mas exclui aqueles cujo proprietrio o usurio "aluno":

# lsof -c bash -u ^ aluno

Nos mostrar os processos abertos pelo usurio aluno:

Linux Essentials

Pgina 277

19.2 Laboratrio

4Linux www.4linux.com.br

# lsof -u aluno

Nos mostrar quais arquivos esto usando o processo cujo PID 1:

# lsof +p 1

Busca por todas as instncias abertas do diretrio /tmp :

# lsof +D / tmp

Instale o ssh e conecte-se na mquina do amigo:

apt - get install ssh -y

# ssh 192.168.200. X

Onde X o ip do amigo. Agora verifique as conexes da porta 22, que a porta do


ssh:

# lsof -i

:22

19.2.2 Definido prioridades dos processos


Como ns j sabemos o linux faz uma lista de processos e executa um a um de
tempos em tempos, esta lista possui uma prioridade, o grau de importncia para
execuo do processo.

Pgina 278

Linux Essentials

4Linux www.4linux.com.br

19.2 Laboratrio

Ela definida conforme o programa, por exemplo um programa que depende de


I/O tem maior prioridade, quem faz esse clculo o prprio sistema, quanto menor a
prioridade de execuo, maior ser o uso de processamento com este processo para
execut-lo mais rpido. Ns tambm podemos interargir nesse nmero de prioridade
que de -20(o mais importante) at o +19 (o menos importante), por padro todos
os processos executados como root tem a prioridade 0, j os processos executados
como usurios comum tem a prioridade 10, o usurio root pode mudar entre -20 e
+19, enquanto que o usurio comum pode mudar esta prioridade entre 0 e +19.
Para definir uma outra prioridade a um processo na hora que este ir ser executado
devemos executar o comando nice, j se ele j estiver em execuo utilize o renice:
Primeiro vamos executar um comando e ver seu nvel de prioridade:

# ekiga

Para visualizar a prioridade do processo:

# ps -eo args , nice , pid | grep ekiga

ekiga

grep ekiga

0 12605
0 14116

-e - mostra todos os processos -o - mostra campos especficos: args - comando nice


- prioridade pid - identificao do processo
Para alterar a prioridade do processo em execuo, utilize o comando renice:

# renice < prioridade >

<PID >

Altere para -20 a prioridade do processo do ekiga:

Linux Essentials

Pgina 279

19.3 Desafio

4Linux www.4linux.com.br

# renice -20 12605

Para visualizar a mudana:

# ps -eo args , nice , pid | grep ekiga

ekiga

grep ekiga

-20 12605
0

14440

Termine o processo do ekiga:

# killall ekiga

Para executar um processo com a prioridade especfica diferente da padro utilize o


comando nice:

# nice -n < NICE > < comando >

Execute o ekiga com prioridade inicial de +19:

# nice -n 19 ekiga &

19.3 Desafio
1- O servidor Apache est iniciando muitos processos, mas seu acesso no passa de
50 usurios. Mate os processos em excesso, acerte o arquivo /etc/httpd/conf/httpd.conf
para: StartServers 100 ServerLimit 50 Reinicie o servio do apache.

Pgina 280

Linux Essentials

4Linux www.4linux.com.br

19.3 Desafio

2- Acessar por ssh 3 mquinas


3- Usar lsof para descobrir quem est acessando a mquina

Linux Essentials

Pgina 281

Captulo 20
Inicializao
20.1 Introduo Terica
Para que possamos entender a base de funcionamento do sistema de inicializao
padro System V, precisamos antes conhecer um tipo especial de arquivos: os links.
Um Link serve para termos o mesmo arquivo em diversos lugares, sem a necessidade de cpias. Isso faz com que voc tenha a maior quantidade de arquivos em
vrios lugares e ocupando menos bits de metadados ao sistema de arquivos. O diretrio /etc/init.d por exemplo, guarda os scripts para iniciar, e parar determinados
servios. E dentro do diretrio rcN.d (a letra N correspondente ao nvel de inicializao, veremos a seguir) que ficam os links dos scripts que esto dentro de /etc/init.d
para poder determinar qual script ser executado primeiro.
Os links nos permitem fazer modificaes nos arquivos originais, assim no precisamos alterar o arquivo original e sua cpia.

20.1.1 System V
O Padro System V define, entre outras coisas, como deve ser a inicializao dos
servios do sistema. Ele trabalha com nveis de inicializao, os chamados runle-

283

20.2 Laboratrio

4Linux www.4linux.com.br

vels, havendo oito deles que sero descritos posteriormente.


A inicializao do sistema se inicia com um boot loader no qual o usurio escolhe
qual sistema operacional ele ir iniciar na mquina. Uma vez escolhido, o boot loader
inicia o carregamento do kernel na memria RAM e passa o controle do sistema a
ele. Uma vez que o kernel j esteja controlando a mquina, iniciada a fase de
subir os servios necessrios para a utilizao do sistema. Este ltimo estgio que
trataremos aqui.

20.2 Laboratrio

20.2.1 Nveis de Execuo - System V

Em um sistema padro System V, existem oito nveis de inicializao, sendo eles:

Pgina 284

Linux Essentials

4Linux www.4linux.com.br

20.2 Laboratrio

Para saber o nvel em que se encontra:

# runlevel

N 2

Onde:
N - nvel anterior, quando N significa que no houve mudana de nvel desde a
inicializao.
2 - nvel atual.
Para trocar de nvel:

# init <n vel >

Ex: Para trocar para o nvel 3

# init 3

Verifique que o nvel de inicializao foi trocado:

# runlevel

2 3

Trocar para o modo mono-usurio:

# init 1

Linux Essentials

Pgina 285

20.2 Laboratrio

4Linux www.4linux.com.br

Verifique que ao trocar para o modo mono-usurio executado o nvel S, servios


essenciais:

# runlevel

1 S

A maioria das distribuies Linux utilizam o padro System V para gerenciamento


dos Daemons e servios que devem ou no ser carregados nos diferentes nveis de
execuo.
Para uma melhor compreenso, interessante que analisemos o arquivo /etc/inittab
para ver como esse gerenciamento funciona.

# vim / etc / inittab

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


por exemplo o hostname da mquina (servio essencial). Aps esse nvel ter sido
concludo passa-se para o nvel seguinte definido como padro do sistema no arquivo
/etc/inittab. Que no caso do Debian o nvel 2, e no CentOS o nvel 5. Neste
nvel so iniciados os outros servios no essenciais, como servidores de SSH, web,
etc.
O sistema System V consiste em agrupar todos os scripts de inicializao do sistema
em um nico diretrio /etc/init.d e criar links simblicos para esses scripts dentro dos
diretrios dos runlevels apropriados. Cada runlevel possui o seu diretrio, sendo eles
localizados no /etc sobre o nome rcN.d, no qual o caracter N representa o nmero
do runlevel.
Nesses diretrios haver links para os scripts de inicializao e/ou finalizao dos
servios e o nome desses links indicar se o servio deve ser iniciado ou finalizado
e qual ser a ordem que ser seguida para isso.
Por exemplo, se um servio comea por S18 como o caso do ssh cujo nome dentro

Pgina 286

Linux Essentials

4Linux www.4linux.com.br

20.2 Laboratrio

do rc2.d S18ssh; ele ser o servio a ser iniciado aps todos os servios com
nmero menor que o dele serem iniciados. Por exemplo, ele ser iniciado aps o
servio portmap cujo nome do link S14portmap, caso exista outro servio com o
mesmo nmero de inicializao do ssh, como o agendador de tarefas at cujo nome
do link S18atd, a ordem de inicializao se dar pela ordem alfabtica, ou seja o
S18atd ser executado antes de S18ssh.
No caso de um desses links ter seu nome iniciando pela letra K esse servio ser
finalizado quando o runlevel correspondente for iniciado. Dessa forma se existir um
link chamado K01atd no runlevel 0 (/etc/rc0.d), quando mudarmos para esse runlevel, se o atd estiver ativo ele ser o um dos primeiros a ser desativado.

20.2.2 O que faz um script de inicializao?


Um script de inicializao nada mais do que um script que realiza verificaes
essenciais ao funcionamento do servio em questo e uma estrutura do tipo case
que aceitar os argumentos start|stop|restart dentre outros. Sendo assim, para iniciar
um servio basta dar o comando:

# / etc / init . d / < nome_do_servi o > start

E para finalizar um servio basta executar com o parmetro stop:

# / etc / init . d / < nome_do_servi o > stop

EX: Parando o servio do ssh:

# / etc / init . d / ssh stop

Ex: Inicializando o servio do ssh:

Linux Essentials

Pgina 287

20.2 Laboratrio

4Linux www.4linux.com.br

# / etc / init . d / ssh start

No Debian 6.0 todos os scripts de inicializao "/etc/init.d/"foram convertidos para ordenar a sequncia de boot baseado em um padro especificado na Linux Standard
Base (LSB). Com a adeso deste padro agora existe um cabealho em todos os
scripts de inicializao onde so indicadas as dependncias que ele necessita para
poder ser executado, fazendo com que o script inicie s depois de tais dependncias.
Esta funcionalidade ativada pelo comando insserv que ordena os scripts init.d
baseando-se nas suas dependncias declaradas nos cabealhos. Ou seja, para
adicionar/remover servios da inicializao no Debian 6.0 no se usa mais o "updaterc.d"e sim o "insserv"!
Vamos usar o comando head que mostra por padro as 10 primeiras linhas e verificar
o cabealho de inicializao do ssh:

# head / etc / init . d / ssh

#! / bin / sh

3
4

# ## BEGIN INIT INFO

# Provides :

# Required - Start :

$remote_fs

$syslog

# Required - Stop :

$remote_fs

$syslog

# Default - Start :

2 3 4 5

# Default - Stop :

sshd

10

# Short - Description :

11

# ## END INIT INFO

OpenBSD Secure Shell server

O comando head, por padro, exibe as 10 primeiras linhas de um arquivo.


A opo mais usada :

Pgina 288

Linux Essentials

4Linux www.4linux.com.br

20.2 Laboratrio

- Provides: Nome do script


- Required-Start: Defini scripts que devem ser inicializados antes de carregar este
script.
- Required-Stop: Defini scripts que devem ser parados, antes de descarregar este
script.
- Should-Start: Define que ir rodar s depois que os servios declarados forem
inicializados.
- Should-Stop: Defini que ir parar s depois que os servios declarados forem parados.
- Default-Start: Nveis para carregar o servio
- Default-Stop: Nveis para descarregar o servio
- Short-Description: Descrio rpido do script
- Description: Descrio mais detalhada do script
Valores genricos:

1
2
3
4
5
6

$local_fs
Todos os arquivos locais de sistema s o montados ..
$network
Baixo n vel de rede . ( placa de rede ; PCMCIA )
$named
Daemons que podem fornecer resolu o de nomes , como por exemplo :
DNS , NIS , LDAP .

7
8
9
10

$portmap
Daemon que fornece mapeamento de portas .
$remote_fs
Todos arquivos de sistema est o montados .

Linux Essentials

Pgina 289

20.2 Laboratrio

11
12
13
14

4Linux www.4linux.com.br

$syslog
Logs do sistema operacional .
$time
Daemons utilizados para definir a hora do sistema , como ntpdate ,
ntp , rdate .

15

$all

Suportado pelo insserv para iniciar depois que todos os outros scripts forem carregados na sequncia de inicializao. Somente trabalha para inicializar, para descarregar no possvel, pois nenhum script depende de todos.

20.2.3 Removendo um script da inicializao:


Debian:
Removendo o ssh da inicializao do sistema:

# insserv - rv ssh

insserv : remove service / etc / init . d /../ rc2 . d / S18ssh

insserv : remove service / etc / init . d /../ rc3 . d / S18ssh

insserv : remove service / etc / init . d /../ rc4 . d / S18ssh

insserv : remove service / etc / init . d /../ rc5 . d / S18ssh

insserv : creating . depend . boot

insserv : creating . depend . start

insserv : creating . depend . stop

Adicionando o ssh na inicializao do sistema:

# insserv -v ssh

insserv : enable service ../ init . d / cron -> / etc / init . d /../ rc2 . d /
S18ssh

Pgina 290

Linux Essentials

4Linux www.4linux.com.br

20.2 Laboratrio

insserv : enable service ../ init . d / cron -> / etc / init . d /../ rc3 . d /
S18ssh

insserv : enable service ../ init . d / cron -> / etc / init . d /../ rc4 . d /
S18ssh

insserv : enable service ../ init . d / cron -> / etc / init . d /../ rc5 . d /
S18ssh

insserv : creating . depend . boot

insserv : creating . depend . start

insserv : creating . depend . stop

E de onde o insserv tira a prioridade de rodar os scripts? Exemplo do ssh ("/etc/init.d/../rc2.d/S18ssh") iniciando com prioridade 18? A que est a grande novidade,
voc no precisar mais editar essa prioridade na mo, o insserv vai calcular a prioridade de acordo com o tal cabealho verificando quais os scripts que sero iniciados
antes para que o script seja executado.
red hat

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

No Red Hat os servios ficam em /etc/rc.d/init.d, todos os arquivos aqui tm um


hard link para /etc/init.d. Ento tanto faz mudar em um como em outro, ambos sero
atualizados.
Vamos olhar o cabealho de inicializao do sshd do CentOS:

# head -n 15 / etc / rc . d / init . d / sshd

# !/ bin / bash

# Init file for OpenSSH server daemon

Linux Essentials

Pgina 291

20.2 Laboratrio

# chkconfig : 2345 55 25

# description : OpenSSH server daemon

# processname : sshd

10

# config : / etc / ssh / ssh_host_key

11

# config : / etc / ssh / ssh_host_key . pub

12

# config : / etc / ssh / ssh_random_seed

13

# config : / etc / ssh / sshd_config

14

# pidfile : / var / run / sshd . pid

4Linux www.4linux.com.br

Onde:

# chkconfig :

<Nveis de execuo para inicializao> 2345 <ordem iniciar S> S55 <ordem parar
K> K25
- description: Descrio
- config Arquivos de configurao.
- pidfile Localizao do PID do processo.

20.2.4 Gerenciando servios:


Para verificar os servios habilitados em cada runlevel digite:

# chkconfig -- list

Para servio especfico:

Pgina 292

Linux Essentials

4Linux www.4linux.com.br

20.2 Laboratrio

# chkconfig -- list httpd

Adicionar servio ssh na inicializao:

# chkconfig -- add sshd

Para desabilitar servio do ssh da inicializao:

# chkconfig -- del sshd

Ou:

# chkconfig sshd off

Nota: Estas linhas garantem que o servio do ssh esteja desabilitado no prximo
reboot. Para desligar o mesmo servio sem precisar reiniciar a mquina use o comando:

# / etc / init . d / sshd stop

Se no desligares o servio com chkconfig, ele ser reinicializado da prxima vez que
o computador for reiniciado, mesmo que o tenhas parado atravs do script apropriado
(notar que stop um argumento de entrada para o mesmo script). Por isso para
parar imediatamente e desativar permanentemente o servio deves usar:

# chkconfig -- del sshd

Linux Essentials

&& / etc / init . d / sshd stop

Pgina 293

20.2 Laboratrio

4Linux www.4linux.com.br

Ou:

# chkconfig sshd off && / etc / init . d / sshd stop

Para habilitar o servio ssh:

# chkconfig sshd on

Ou:

# chkconfig -- add sshd

Para habilitar o servio ssh em determinados nveis:

# chkconfig -- level 23 sshd on

Foi habilitado o ssh nos nveis 2 e 3, visualize:

# chkconfig -- list sshd

Para desabilitar o servio ssh em determinados nveis:

# chkconfig -- level 2 sshd off

Foi desabilitado o ssh no nvel 2 , visualize:

# chkconfig -- list sshd

Pgina 294

Linux Essentials

4Linux www.4linux.com.br

20.3 Desafio

20.3 Desafio
Rode o script e faa:
1- Coloque o servidor web para inicializar nos runlevels 3 e 5 e desligar nos runlevels:
0, 1 e 6.

Linux Essentials

Pgina 295