apostila administracaoredeslinux - gilberto

337
Administração de Redes Linux Índice Geral 1 Introdução ........................................................................................................................................................................ 20 2 Sistema Operacional ........................................................................................................................................................ 21 2.1 Unix ......................................................................................................................................................................... 22 2.1.1 Histórico do Unix ............................................................................................................................................. 22 2.2 Linux ........................................................................................................................................................................ 25 2.2.1 Distribuições Linux .......................................................................................................................................... 25 2.2.2 A distribuição DEBIAN .................................................................................................................................... 25 2.2.2.1 Organização do Projeto DEBIAN ........................................................................................................... 26 2.2.2.2 Versões do Debian ................................................................................................................................. 26 2.2.3 A distribuição Ubuntu ...................................................................................................................................... 27 2.2.3.1 Versões .................................................................................................................................................. 27 2.2.3.2 Pacotes .................................................................................................................................................. 29 2.3 Software Livre .......................................................................................................................................................... 30 2.4 Projeto GNU ............................................................................................................................................................ 31 3 Conceitos do Linux ........................................................................................................................................................... 32 3.1 Problemas de Hardware com Linux ........................................................................................................................ 33 3.2 Migração DOS/Windows para Linux ........................................................................................................................ 34 3.3 Gerenciador de Janelas .......................................................................................................................................... 35 3.4 Ambiente Gráfico ..................................................................................................................................................... 36 3.5 Gerenciadores de Boot ............................................................................................................................................ 37 3.6 Nomes de Dispositivos ............................................................................................................................................ 38 3.7 Sistema de Arquivos ................................................................................................................................................ 39 3.7.1 EXT2 ............................................................................................................................................................... 39 3.7.2 EXT3 ............................................................................................................................................................... 39 3.7.3 EXT4 ............................................................................................................................................................... 39 3.7.4 SWAP ............................................................................................................................................................. 41 3.7.5 Reiser .............................................................................................................................................................. 42 3.7.6 JFS .................................................................................................................................................................. 42 3.7.7 XFS ................................................................................................................................................................. 43 3.8 Nomes de Arquivos ................................................................................................................................................. 44 3.9 Estrutura de diretórios ............................................................................................................................................. 45 3.10 Iniciando a sessão de usuário ............................................................................................................................... 50 3.11 Encerrando a sessão de usuário ........................................................................................................................... 51 4 Virtualbox ......................................................................................................................................................................... 52 4.1.1 Virtualização ................................................................................................................................................... 52 4.1.2 Vantagens da Virtualização: ........................................................................................................................... 52 4.1.3 Inconvenientes da Virtualização: .................................................................................................................... 52 4.1.4 Virtualbox ........................................................................................................................................................ 52 4.1.5 Instalação do Virtualbox no Windows ............................................................................................................. 53 4.1.6 Instalação do Virtualbox no Linux ................................................................................................................... 53 V 0.12.0628-2118 Gilberto Martins – [email protected] 1

Upload: marcio-magalhaes

Post on 06-Aug-2015

352 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

Índice Geral

1 Introdução ........................................................................................................................................................................ 20

2 Sistema Operacional ........................................................................................................................................................ 21

2.1 Unix ......................................................................................................................................................................... 22

2.1.1 Histórico do Unix ............................................................................................................................................. 22

2.2 Linux ........................................................................................................................................................................ 25

2.2.1 Distribuições Linux .......................................................................................................................................... 25

2.2.2 A distribuição DEBIAN .................................................................................................................................... 25

2.2.2.1 Organização do Projeto DEBIAN ........................................................................................................... 26

2.2.2.2 Versões do Debian ................................................................................................................................. 26

2.2.3 A distribuição Ubuntu ...................................................................................................................................... 27

2.2.3.1 Versões .................................................................................................................................................. 27

2.2.3.2 Pacotes .................................................................................................................................................. 29

2.3 Software Livre .......................................................................................................................................................... 30

2.4 Projeto GNU ............................................................................................................................................................ 31

3 Conceitos do Linux ........................................................................................................................................................... 32

3.1 Problemas de Hardware com Linux ........................................................................................................................ 33

3.2 Migração DOS/Windows para Linux ........................................................................................................................ 34

3.3 Gerenciador de Janelas .......................................................................................................................................... 35

3.4 Ambiente Gráfico ..................................................................................................................................................... 36

3.5 Gerenciadores de Boot ............................................................................................................................................ 37

3.6 Nomes de Dispositivos ............................................................................................................................................ 38

3.7 Sistema de Arquivos ................................................................................................................................................ 39

3.7.1 EXT2 ............................................................................................................................................................... 39

3.7.2 EXT3 ............................................................................................................................................................... 39

3.7.3 EXT4 ............................................................................................................................................................... 39

3.7.4 SWAP ............................................................................................................................................................. 41

3.7.5 Reiser .............................................................................................................................................................. 42

3.7.6 JFS .................................................................................................................................................................. 42

3.7.7 XFS ................................................................................................................................................................. 43

3.8 Nomes de Arquivos ................................................................................................................................................. 44

3.9 Estrutura de diretórios ............................................................................................................................................. 45

3.10 Iniciando a sessão de usuário ............................................................................................................................... 50

3.11 Encerrando a sessão de usuário ........................................................................................................................... 51

4 Virtualbox ......................................................................................................................................................................... 52

4.1.1 Virtualização ................................................................................................................................................... 52

4.1.2 Vantagens da Virtualização: ........................................................................................................................... 52

4.1.3 Inconvenientes da Virtualização: .................................................................................................................... 52

4.1.4 Virtualbox ........................................................................................................................................................ 52

4.1.5 Instalação do Virtualbox no Windows ............................................................................................................. 53

4.1.6 Instalação do Virtualbox no Linux ................................................................................................................... 53

V 0.12.0628-2118 Gilberto Martins – [email protected] 1

Page 2: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

4.1.7 Criação de máquina virtual ............................................................................................................................. 53

4.1.8 Instalação do Linux ......................................................................................................................................... 66

5 Inicialização do Sistema ................................................................................................................................................... 88

5.1 Gerenciador de Inicialização ................................................................................................................................... 89

5.1.1 LILO ................................................................................................................................................................ 89

5.1.2 GRUB .............................................................................................................................................................. 89

5.2 Shell (CLI) ................................................................................................................................................................ 90

5.3 Exemplos de Shell ................................................................................................................................................... 91

5.4 Documentação ........................................................................................................................................................ 92

5.4.1 man ................................................................................................................................................................. 92

5.4.1.1 Estrutura da página man ........................................................................................................................ 92

5.4.2 help ................................................................................................................................................................. 93

5.4.3 Ajuda do comando .......................................................................................................................................... 94

5.4.4 Fontes externas de documentação ................................................................................................................. 95

5.4.4.1 Guia Foca ............................................................................................................................................... 95

5.4.4.2 Sistema rau-tu ........................................................................................................................................ 95

5.4.4.3 Consultas Linux no Google .................................................................................................................... 96

5.5 Noções básicas do Shell ......................................................................................................................................... 97

5.5.1 Prompt ............................................................................................................................................................ 97

5.5.2 Como executar comandos .............................................................................................................................. 97

5.5.3 Detalhes da linha de comando ....................................................................................................................... 97

5.5.4 Forma geral de mensagem de erro ................................................................................................................ 98

5.5.5 Variáveis ......................................................................................................................................................... 98

5.5.6 Algumas variáveis de ambiente ...................................................................................................................... 98

5.5.7 Atalhos de teclado .......................................................................................................................................... 99

6 Arquivos e diretórios ...................................................................................................................................................... 102

6.1 Diretórios ............................................................................................................................................................... 103

6.1.1 Criar diretórios .............................................................................................................................................. 103

6.1.2 Mudar de diretórios ....................................................................................................................................... 103

6.1.3 Remover diretórios ........................................................................................................................................ 104

6.1.4 Verificando o diretório atual .......................................................................................................................... 104

6.1.5 Consultando a estrutura de diretórios ........................................................................................................... 104

6.2 Ações comuns com arquivos ................................................................................................................................. 107

6.2.1 Copiar e mover arquivos ............................................................................................................................... 107

6.2.2 Renomear arquivos ...................................................................................................................................... 108

6.2.3 Criação de arquivos vazios ........................................................................................................................... 108

6.2.4 Apagar arquivos ............................................................................................................................................ 108

6.2.5 Listar arquivos em um diretório ..................................................................................................................... 109

6.3 Redirecionadores .................................................................................................................................................. 111

6.3.1 > (stdout) ....................................................................................................................................................... 111

6.3.2 >> (stdout) ..................................................................................................................................................... 111

6.3.3 < (stdin) ......................................................................................................................................................... 112

V 0.12.0628-2118 Gilberto Martins – [email protected] 2

Page 3: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

6.3.4 | (pipe) ........................................................................................................................................................... 112

6.3.5 2> (stderr) ..................................................................................................................................................... 112

6.3.6 |& (pipe no stderr) ......................................................................................................................................... 113

6.3.7 << (stdin) ....................................................................................................................................................... 113

6.4 Ações avançadas com arquivos texto ................................................................................................................... 115

6.4.1 Conhecer o tipo de um arquivo ..................................................................................................................... 115

6.4.2 Visualizar o conteúdo de um arquivo ............................................................................................................ 115

6.4.3 Visualizar arquivos extensos ........................................................................................................................ 116

6.4.4 Visualizar caracteres ocultos ........................................................................................................................ 117

6.4.5 Visualizar trechos de um arquivo .................................................................................................................. 117

6.4.5.1 Visualizando o início do arquivo ........................................................................................................... 117

6.4.5.2 Visualizando o final do arquivo ............................................................................................................ 118

6.4.5.3 Visualizando o meio do arquivo ........................................................................................................... 118

6.4.6 Ordenação de arquivos ................................................................................................................................. 118

6.4.6.1 Ordenação simples .............................................................................................................................. 118

6.4.6.2 Ordenação reversa .............................................................................................................................. 119

6.4.6.3 Ordenação numérica ............................................................................................................................ 119

6.4.6.4 Ordenação por campo de tamanho variável ........................................................................................ 119

6.4.6.5 Ordenação por campo de tamanho fixo ............................................................................................... 120

6.4.6.6 Numerar linhas de um arquivo texto .................................................................................................... 120

6.4.7 Extrair campos de um arquivo ...................................................................................................................... 121

6.4.7.1 Extraindo campos de tamanho fixo ...................................................................................................... 122

6.4.7.2 Extraindo até um determinado caracter ............................................................................................... 122

6.4.7.3 Extraindo a partir de um determinado caracter .................................................................................... 122

6.4.7.4 Extraindo uma seqüência de caracteres .............................................................................................. 122

6.4.8 Procurar texto em um arquivo ....................................................................................................................... 122

6.4.8.1 Busca simples ...................................................................................................................................... 123

6.4.8.2 Busca texto com espaços .................................................................................................................... 123

6.4.8.3 Busca texto com “ignore case” ............................................................................................................. 123

6.4.8.4 Exclusão de texto ................................................................................................................................. 123

6.4.8.5 Numerando o resultado ........................................................................................................................ 123

6.4.8.6 Mostrando linhas próximas .................................................................................................................. 124

6.4.9 Conferir integridade de arquivos ................................................................................................................... 124

6.5 Compactação de Arquivos .................................................................................................................................... 126

6.5.1 zip / unzip ...................................................................................................................................................... 126

6.5.1.1 Instalação ............................................................................................................................................. 126

6.5.1.2 Compactação ....................................................................................................................................... 126

6.5.1.3 Consulta de conteúdo .......................................................................................................................... 127

6.5.1.4 Extração ............................................................................................................................................... 127

6.5.2 gzip / gunzip .................................................................................................................................................. 127

6.5.2.1 Instalação ............................................................................................................................................. 127

6.5.2.2 Compactação ....................................................................................................................................... 128

V 0.12.0628-2118 Gilberto Martins – [email protected] 3

Page 4: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

6.5.2.3 Consulta de conteúdo .......................................................................................................................... 128

6.5.2.4 Extração ............................................................................................................................................... 128

6.5.3 bzip2 / bunzip2 .............................................................................................................................................. 128

6.5.3.1 Instalação ............................................................................................................................................. 128

6.5.3.2 Compactação ....................................................................................................................................... 128

6.5.3.3 Extração ............................................................................................................................................... 129

6.5.4 tar .................................................................................................................................................................. 129

6.5.4.1 Extensões ............................................................................................................................................ 129

6.5.4.2 Criação ................................................................................................................................................. 129

6.5.4.3 Consulta de Conteúdo ......................................................................................................................... 130

6.5.4.4 Extração ............................................................................................................................................... 130

6.5.5 Dividir um arquivo ......................................................................................................................................... 130

6.5.5.1 Divisão ................................................................................................................................................. 131

6.5.5.2 Recompor ............................................................................................................................................. 131

6.6 Permissões de arquivos ........................................................................................................................................ 132

6.6.1 Alterar o usuário proprietário ........................................................................................................................ 132

6.6.2 Alterar o grupo de usuários ........................................................................................................................... 133

6.6.3 Alterar as permissões ................................................................................................................................... 133

6.6.4 Permissões por usuário ................................................................................................................................ 134

6.7 Editores de arquivo ................................................................................................................................................ 135

6.7.1 nano .............................................................................................................................................................. 135

6.7.2 Editor vi / vim ................................................................................................................................................ 136

6.7.2.1 Instalação ............................................................................................................................................. 136

6.7.2.2 Editando um arquivo ............................................................................................................................ 136

6.7.2.3 Operações ............................................................................................................................................ 137

6.7.2.4 Arquivo de Configuração ...................................................................................................................... 138

6.8 Processos .............................................................................................................................................................. 141

6.8.1 Identificando processo pelo nome ................................................................................................................ 141

6.8.2 Parando processos ....................................................................................................................................... 141

6.8.3 Primeiro e segundo plano ............................................................................................................................. 141

6.8.4 Árvore de processos ..................................................................................................................................... 142

7 Administração de usuários ............................................................................................................................................. 144

7.1 Arquivos das contas de usuários ........................................................................................................................... 145

7.1.1 Lista das contas ............................................................................................................................................ 145

7.1.2 Lista dos grupos ............................................................................................................................................ 145

7.1.3 Lista de senhas ............................................................................................................................................. 146

7.2 Delegação de tarefas ............................................................................................................................................ 147

7.3 Contas de usuário em CLI ..................................................................................................................................... 148

7.3.1 Criação de contas ......................................................................................................................................... 148

7.3.2 Criando grupo vazio de usuários .................................................................................................................. 148

7.3.3 Criando conta usando um outro grupo principal .......................................................................................... 148

7.3.4 Confirmando dados de uma conta de usuário .............................................................................................. 149

V 0.12.0628-2118 Gilberto Martins – [email protected] 4

Page 5: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

7.3.5 Diretório padrão do usuário .......................................................................................................................... 149

7.3.6 Alterando o acesso aos diretórios dos usuários ........................................................................................... 149

7.3.7 O caracter especial “~” ................................................................................................................................. 150

7.3.7.1 Acessando o homedir de outro usuário ............................................................................................... 150

7.3.7.2 Acessando um diretório no homedir de outro usuário ......................................................................... 150

7.3.7.3 Acessando o homedir do próprio usuário ............................................................................................ 151

7.4 Alternando entre usuários ..................................................................................................................................... 152

7.5 Remover conta de usuário .................................................................................................................................... 154

7.6 Informações de contas .......................................................................................................................................... 156

7.7 Modificar dados da conta ...................................................................................................................................... 157

7.7.1 Mudar o grupo principal ................................................................................................................................ 157

7.7.2 Mudar o grupo suplementar .......................................................................................................................... 157

7.7.3 Adicionar grupo suplementar ........................................................................................................................ 157

7.7.4 Mudar o nome da conta ................................................................................................................................ 157

7.7.5 Mudança de senha ....................................................................................................................................... 158

7.7.6 Bloquear uma conta ...................................................................................................................................... 159

8 Administração do Sistema ............................................................................................................................................. 161

8.1 Mudança de data ................................................................................................................................................... 162

8.2 Espaço em disco ................................................................................................................................................... 164

8.3 Uso de memória .................................................................................................................................................... 165

8.4 Localizando arquivos ............................................................................................................................................. 166

8.4.1 Usando whereis ............................................................................................................................................ 166

8.4.2 Usando updatedb e locate ............................................................................................................................ 166

8.4.3 Localizar qualquer tipo de arquivo ................................................................................................................ 167

8.4.4 Busca por parte do nome do arquivo ............................................................................................................ 167

8.4.4.1 Diferenciando maiúsculas de minúsculas ............................................................................................ 167

8.4.4.2 Não diferenciando maiúsculas de minúsculas: .................................................................................... 167

8.4.5 Busca por permissões .................................................................................................................................. 167

8.4.6 Busca por datas ............................................................................................................................................ 168

8.4.7 Busca por tamanho ....................................................................................................................................... 168

8.4.8 Busca por usuário ......................................................................................................................................... 168

8.5 Agendamento de tarefas ....................................................................................................................................... 170

8.5.1 Ferramenta de agendamento ....................................................................................................................... 170

8.5.2 Configuração pelo root .................................................................................................................................. 170

8.5.3 Configuração por usuário comum ................................................................................................................. 170

8.5.4 Exemplos ...................................................................................................................................................... 171

8.5.5 Agendamentos periódicos ............................................................................................................................ 171

8.5.6 Listagem de tarefas ...................................................................................................................................... 171

8.5.7 Arquivo de log ............................................................................................................................................... 172

8.5.8 Problemas comuns ....................................................................................................................................... 172

8.6 Administração de pacotes ..................................................................................................................................... 173

8.6.1 Versões dos softwares .................................................................................................................................. 173

V 0.12.0628-2118 Gilberto Martins – [email protected] 5

Page 6: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

8.6.2 Repositórios .................................................................................................................................................. 174

8.6.3 Recriação do sources.list .............................................................................................................................. 174

8.6.3.1 No Debian ............................................................................................................................................ 174

8.6.3.2 No Ubuntu ............................................................................................................................................ 174

8.6.4 Dependências ............................................................................................................................................... 176

8.6.4.1 Dependência reversa ........................................................................................................................... 176

8.6.4.2 Dependência direta .............................................................................................................................. 177

8.6.4.3 Verificação via aptitude ........................................................................................................................ 177

8.6.5 Arquivo de configuração ............................................................................................................................... 179

9 Compilação do Kernel .................................................................................................................................................... 182

9.1 Obtenção do código fonte ..................................................................................................................................... 183

9.1.1 Método tradicional ......................................................................................................................................... 183

9.1.1.1 Descompactando o código fonte .......................................................................................................... 183

9.1.2 Obtendo o Kernel a partir de repositórios Canonical .................................................................................... 184

9.1.2.1 Descompactando o código fonte .......................................................................................................... 184

9.2 Instalando os pacotes adicionais ........................................................................................................................... 185

9.3 Configuração do kernel ......................................................................................................................................... 186

9.3.1 Arquivos de configuração ............................................................................................................................. 186

9.3.2 Utilitário de configuração .............................................................................................................................. 186

9.4 Compilação ............................................................................................................................................................ 192

9.4.1 Compilação pelo método antigo ................................................................................................................... 192

9.4.2 Instalação do kernel antigo ........................................................................................................................... 192

10 Servidores .................................................................................................................................................................... 193

10.1 Características comuns ....................................................................................................................................... 194

10.1.1 Hostname .................................................................................................................................................... 194

10.1.2 Default Gateway ......................................................................................................................................... 194

10.1.3 Script de inicialização ................................................................................................................................. 195

10.1.4 Criação de um script de configuração ........................................................................................................ 195

10.1.5 Arquivo de configuração ............................................................................................................................. 195

10.1.6 Daemon ...................................................................................................................................................... 196

10.1.7 Ferramentas ................................................................................................................................................ 196

10.1.8 Verificando serviços ativos ......................................................................................................................... 197

10.1.9 Ferramentas básicas de rede ..................................................................................................................... 199

10.1.9.1 iftop .................................................................................................................................................... 200

10.1.9.2 iptraf ................................................................................................................................................... 200

10.1.9.3 ipcalc .................................................................................................................................................. 200

10.1.9.4 traceroute ........................................................................................................................................... 200

10.1.9.5 mtr ...................................................................................................................................................... 200

10.1.9.6 tcpdump ............................................................................................................................................. 200

10.1.9.7 htop .................................................................................................................................................... 200

10.1.9.8 Aliases úteis ....................................................................................................................................... 200

10.1.10 Instalação de uma rede básica ................................................................................................................. 200

V 0.12.0628-2118 Gilberto Martins – [email protected] 6

Page 7: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

10.2 Interface de rede ................................................................................................................................................. 201

10.2.1 Arquivo de configuração ............................................................................................................................. 201

10.2.1.1 Realizando backup do arquivo de configuração ................................................................................ 201

10.2.2 Exemplo 1: Sistema com 2 interfaces ......................................................................................................... 202

10.2.3 Exemplo 2: Sistema com 3 interfaces ......................................................................................................... 202

10.2.4 Script do serviço de rede ............................................................................................................................ 202

10.2.5 Configuração manual das interfaces .......................................................................................................... 203

10.3 SSH – Conexão remota ....................................................................................................................................... 206

10.3.1 Instalação .................................................................................................................................................... 206

10.3.2 Arquivo de Configuração ............................................................................................................................ 206

10.3.2.1 Limpeza do arquivo de configuração ................................................................................................. 206

10.3.2.2 Criação do backup do arquivo de configuração ................................................................................. 207

10.3.2.3 Restauração do backup do arquivo de configuração ......................................................................... 207

10.3.2.4 Evitando conexões do root no SSH ................................................................................................... 207

10.3.2.5 Restringindo o IP usado pelo SSH ..................................................................................................... 207

10.3.3 Ativação ...................................................................................................................................................... 208

10.3.4 Verificacão .................................................................................................................................................. 208

10.3.5 Interrupção .................................................................................................................................................. 208

10.3.6 Teste do serviço .......................................................................................................................................... 208

10.3.7 Conexão em porta alternativa ..................................................................................................................... 209

10.3.8 Cópia de arquivos ....................................................................................................................................... 210

10.3.9 Arquivo de Log ............................................................................................................................................ 210

10.3.10 Erros comuns ............................................................................................................................................ 211

10.3.10.1 Mudança da identificação do host remoto ....................................................................................... 211

10.4 NTP ..................................................................................................................................................................... 213

10.4.1 Instalação .................................................................................................................................................... 213

10.4.2 Ativação ...................................................................................................................................................... 213

10.4.3 Interrupção .................................................................................................................................................. 213

10.4.4 Servidor de hora ......................................................................................................................................... 213

10.4.5 Configuração manual do Cliente ................................................................................................................. 213

10.5 DNS ..................................................................................................................................................................... 215

10.5.1 Instalação .................................................................................................................................................... 215

10.5.2 Arquivos de configuração do servidor ......................................................................................................... 215

10.5.2.1 Definir a interface usada pelo DNS .................................................................................................... 215

10.5.2.2 Encaminhando consultas ................................................................................................................... 216

10.5.3 Arquivos de configuração do cliente ........................................................................................................... 216

10.5.4 Arquivo de Log ............................................................................................................................................ 217

10.5.5 Ativação ...................................................................................................................................................... 218

10.5.5.1 Verificacão ......................................................................................................................................... 218

10.5.6 Interrupção .................................................................................................................................................. 219

10.5.7 Modelo para exemplo ................................................................................................................................. 219

10.5.8 Zona de domínio ......................................................................................................................................... 219

V 0.12.0628-2118 Gilberto Martins – [email protected] 7

Page 8: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

10.5.8.1 Declaração da Zona ........................................................................................................................... 220

10.5.8.2 Arquivo da zona de domínio ............................................................................................................... 220

10.5.9 Zona de domínio reverso ............................................................................................................................ 221

10.5.9.1 Declaração da zona reversa .............................................................................................................. 222

10.5.9.2 Arquivo da zona de domínio reverso .................................................................................................. 222

10.5.9.3 Zona reversa para Classe B ou C ...................................................................................................... 223

10.5.10 Testes do domínio .................................................................................................................................... 223

10.5.10.1 Consultar um host ............................................................................................................................ 224

10.5.10.2 Teste de DNS reverso ...................................................................................................................... 224

10.5.10.3 Erro: Consulta do nome de um host ou domínio inexistente ............................................................ 224

10.5.10.4 Erro: Consulta do IP de um host ou domínio inexistente ................................................................. 224

10.5.10.5 Erro: Servidor DNS não encontrado ................................................................................................ 225

10.6 DHCP – Administração de endereços IP ............................................................................................................ 226

10.6.1 Instalação .................................................................................................................................................... 226

10.6.2 Ativação ...................................................................................................................................................... 227

10.6.3 Verificacão .................................................................................................................................................. 227

10.6.4 Interrupção .................................................................................................................................................. 227

10.6.5 Arquivo de Configuração ............................................................................................................................ 227

10.6.5.1 “Limpeza” do arquivo de configuração ............................................................................................... 227

10.6.5.2 Criação do backup do arquivo de configuração ................................................................................. 228

10.6.5.3 Restauração do backup do arquivo de configuração ......................................................................... 228

10.6.6 Servidor DNS .............................................................................................................................................. 228

10.6.7 Duração do IP ............................................................................................................................................. 228

10.6.8 Rede disponibilizada ................................................................................................................................... 229

10.6.9 Reserva por MAC ....................................................................................................................................... 229

10.6.10 Arquivo de Log do DHCP Server .............................................................................................................. 230

10.6.11 Arquivo de leases ..................................................................................................................................... 230

10.6.12 Configuração do cliente ............................................................................................................................ 230

10.7 Proxy ................................................................................................................................................................... 231

10.7.1 Introdução ................................................................................................................................................... 231

10.7.2 Instalação .................................................................................................................................................... 231

10.7.3 Ativação ...................................................................................................................................................... 231

10.7.4 Verificacão .................................................................................................................................................. 231

10.7.5 Interrupção .................................................................................................................................................. 231

10.7.6 Recarregar arquivo de configuração ........................................................................................................... 232

10.7.7 Arquivo de log ............................................................................................................................................. 232

10.7.7.1 Arquivo cache.log ............................................................................................................................... 232

10.7.8 Arquivo de configuração ............................................................................................................................. 234

10.7.8.1 Limpeza do arquivo de configuração ................................................................................................. 234

10.7.8.2 Criação do backup do arquivo de configuração ................................................................................. 235

10.7.8.3 Restauração do backup do arquivo de configuração ......................................................................... 235

10.7.8.4 Mensagens de erro em português ..................................................................................................... 236

V 0.12.0628-2118 Gilberto Martins – [email protected] 8

Page 9: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

10.7.8.5 Declaração do hostname ................................................................................................................... 236

10.7.8.6 Controle de acesso ............................................................................................................................ 236

10.7.8.7 Criação das ACLs .............................................................................................................................. 236

10.7.8.8 Validação das ACLs ........................................................................................................................... 237

10.7.9 Proxy transparente ...................................................................................................................................... 237

10.7.10 Autenticação ............................................................................................................................................. 238

10.7.11 Dansguardian ............................................................................................................................................ 239

10.7.11.1 Instalação ......................................................................................................................................... 240

10.7.11.2 Ativação ........................................................................................................................................... 240

10.7.11.3 Interrupção ....................................................................................................................................... 241

10.7.11.4 Configuração .................................................................................................................................... 241

10.7.11.5 Atualização das Blacklists ................................................................................................................ 243

10.7.11.6 Proxy transparente com o DansGuardian ........................................................................................ 245

10.8 Servidor SMTP .................................................................................................................................................... 246

10.8.1 Introdução ................................................................................................................................................... 246

10.8.1.1 Protocolo SMTP ................................................................................................................................. 246

10.8.1.2 Protocolo POP ................................................................................................................................... 247

10.8.2 Instalação .................................................................................................................................................... 247

10.8.3 Ativação ...................................................................................................................................................... 249

10.8.4 Verificacão .................................................................................................................................................. 249

10.8.5 Interrupção .................................................................................................................................................. 249

10.8.6 Arquivo de Configuração SMTP ................................................................................................................. 249

10.8.6.1 Nome internet do servidor .................................................................................................................. 250

10.8.6.2 Domínio local ...................................................................................................................................... 250

10.8.6.3 Domínios do servidor ......................................................................................................................... 250

10.8.6.4 Redes ................................................................................................................................................. 251

10.8.7 Arquivo de Configuração do POP ............................................................................................................... 251

10.8.7.1 Ativação do inetd ................................................................................................................................ 251

10.8.7.2 Ativação do qpopper .......................................................................................................................... 251

10.8.7.3 Interrupção do qpopper ...................................................................................................................... 252

10.8.8 Servidor SMTP no DNS .............................................................................................................................. 252

10.8.8.1 Registro MX ....................................................................................................................................... 252

10.8.9 Contas de email .......................................................................................................................................... 252

10.8.10 Testando o funcionamento ....................................................................................................................... 252

10.8.11 Integração do servidor SMTP e Antivírus ................................................................................................. 254

10.8.11.1 Instalação do AMAVISD-NEW 2.6.2-2 ............................................................................................. 254

10.8.11.2 Configuração do AMAVISD-NEW 2.6.2-2 ........................................................................................ 254

10.8.11.3 Configuração do SMTP .................................................................................................................... 254

10.8.12 SPAMASSASSIN ...................................................................................................................................... 256

10.8.12.1 Instalação ......................................................................................................................................... 256

10.8.12.2 Configuração .................................................................................................................................... 257

10.8.13 CLAMAV ................................................................................................................................................... 257

V 0.12.0628-2118 Gilberto Martins – [email protected] 9

Page 10: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

10.8.13.1 Instalação ......................................................................................................................................... 257

10.8.13.2 Configuração .................................................................................................................................... 257

10.8.13.3 Teste do antivírus ............................................................................................................................. 261

10.8.14 Instalação do Spamassassin .................................................................................................................... 261

10.9 Servidor WEB ...................................................................................................................................................... 262

10.9.1 Instalação .................................................................................................................................................... 262

10.9.1.1 Verificacão ......................................................................................................................................... 262

10.9.2 Ativação ...................................................................................................................................................... 262

10.9.2.1 Verificacão ......................................................................................................................................... 262

10.9.3 Interrupção .................................................................................................................................................. 263

10.9.3.1 Verificação ......................................................................................................................................... 263

10.9.4 Página padrão do Apache .......................................................................................................................... 263

10.9.5 Arquivo de Log ............................................................................................................................................ 264

10.9.6 Arquivo de configuração ............................................................................................................................. 264

10.9.6.1 Limpeza do arquivo de configuração ................................................................................................. 265

10.9.7 Usuário do Apache ..................................................................................................................................... 266

10.9.8 Domínio Virtual ........................................................................................................................................... 267

10.9.8.1 HTMLs de exemplo ............................................................................................................................ 268

10.9.9 Suporte a PHP ............................................................................................................................................ 269

10.9.10 Documentação .......................................................................................................................................... 269

10.10 SAMBA .............................................................................................................................................................. 272

10.10.1 Introdução ................................................................................................................................................. 272

10.10.2 Instalação .................................................................................................................................................. 272

10.10.3 Arquivo de configuração ........................................................................................................................... 272

10.10.3.1 Limpeza do arquivo de configuração ............................................................................................... 273

10.10.3.2 Criação do backup do arquivo de configuração ............................................................................... 273

10.10.3.3 Restauração do backup do arquivo de configuração ....................................................................... 274

10.10.4 Ativação .................................................................................................................................................... 274

10.10.5 Verificacão ................................................................................................................................................ 274

10.10.6 Interrupção ................................................................................................................................................ 274

10.10.7 Swat .......................................................................................................................................................... 274

10.10.7.1 Home ................................................................................................................................................ 276

10.10.7.2 Globals ............................................................................................................................................. 276

10.10.7.3 Shares .............................................................................................................................................. 276

10.10.7.4 Printers ............................................................................................................................................. 277

10.10.7.5 Wizard .............................................................................................................................................. 277

10.10.7.6 Status ............................................................................................................................................... 278

10.10.7.7 View ................................................................................................................................................. 279

10.10.8 Tarefas ...................................................................................................................................................... 279

10.10.8.1 Identificação do Servidor .................................................................................................................. 279

10.10.8.2 Tipo de acesso ................................................................................................................................. 279

10.10.8.3 Compartilhamento de arquivos ........................................................................................................ 280

V 0.12.0628-2118 Gilberto Martins – [email protected] 10

Page 11: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

10.10.8.4 Inclusão de usuários ........................................................................................................................ 280

10.10.8.5 Remoção de usuários ...................................................................................................................... 280

10.10.8.6 Listar usuários .................................................................................................................................. 280

10.11 CUPS – Servidor de Impressão ........................................................................................................................ 282

10.11.1 Introdução ................................................................................................................................................. 282

10.11.2 Instalação .................................................................................................................................................. 282

10.11.3 Ativação .................................................................................................................................................... 282

10.11.4 Interrupção ................................................................................................................................................ 282

10.11.5 Arquivo de Configuração .......................................................................................................................... 282

10.11.6 Configuração do servidor: ......................................................................................................................... 284

10.11.6.1 Software de configuração ................................................................................................................ 285

10.11.6.2 Adicionar Impressora ....................................................................................................................... 285

10.12 OpenLDAP ........................................................................................................................................................ 291

10.12.1 Instalação .................................................................................................................................................. 291

10.12.2 Configuração ............................................................................................................................................. 291

10.12.3 Erro no GOsa 2.5.16 ................................................................................................................................. 296

10.12.4 Primeiro uso do Gosa ............................................................................................................................... 297

10.13 rsyslog – Servidor de Logs ................................................................................................................................ 299

10.13.1 Instalação .................................................................................................................................................. 299

10.13.2 Ativação .................................................................................................................................................... 299

10.13.3 Arquivo de configuração ........................................................................................................................... 299

10.13.3.1 facility ............................................................................................................................................... 300

10.13.3.2 severity ............................................................................................................................................. 300

10.13.3.3 Log simples ...................................................................................................................................... 301

10.13.3.4 Log composto ................................................................................................................................... 301

10.13.4 Servidor de Log - Traduzir ........................................................................................................................ 302

11 Firewall ......................................................................................................................................................................... 308

11.1.1 Fluxos possíveis dos pacotes no firewall .................................................................................................... 308

11.1.2 Detalhes das regras de firewall ................................................................................................................... 308

11.1.3 Opções do comando iptables ..................................................................................................................... 309

11.1.3.1 Ações do Firewall ............................................................................................................................... 310

11.1.4 Ativação ...................................................................................................................................................... 310

11.1.5 Script básico de firewall .............................................................................................................................. 311

11.1.6 Script mais complexo de firewall ................................................................................................................. 313

11.1.7 Interrupção .................................................................................................................................................. 316

11.1.8 Listagem das regras ................................................................................................................................... 316

12 Tópicos Avançados ...................................................................................................................................................... 318

12.1 Munin - Monitoramento ........................................................................................................................................ 319

12.1.1 Introdução ................................................................................................................................................... 319

12.1.2 Instalação do servidor ................................................................................................................................. 319

12.1.3 Instalação do nó .......................................................................................................................................... 319

12.1.4 Ativação ...................................................................................................................................................... 319

V 0.12.0628-2118 Gilberto Martins – [email protected] 11

Page 12: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

12.1.5 Interrupção .................................................................................................................................................. 319

12.1.6 Arquivo de Configuração ............................................................................................................................ 319

12.1.7 Configuração do Apache ............................................................................................................................ 319

12.1.8 Monitoramento de hosts ............................................................................................................................. 320

12.1.8.1 Arquivo de configuração do servidor .................................................................................................. 320

12.1.8.2 Arquivo de configuração do cliente .................................................................................................... 320

12.1.9 Monitoramento do host remoto ................................................................................................................... 322

13 Ferramentas Especiais ................................................................................................................................................ 323

13.1 NMAP .................................................................................................................................................................. 324

13.1.1 Introdução ................................................................................................................................................... 324

13.1.2 Instalação .................................................................................................................................................... 324

13.1.3 Versão ......................................................................................................................................................... 324

13.1.4 Uso simples ................................................................................................................................................ 324

13.1.5 Acelerando o NMAP ................................................................................................................................... 325

13.1.6 Especificando Hosts ................................................................................................................................... 325

13.1.7 Especificando portas ................................................................................................................................... 326

13.1.8 Identificar a versão do Sistema Operacional .............................................................................................. 327

13.1.9 Identificar a versão da aplicação ................................................................................................................ 327

13.2 Tcpdump .............................................................................................................................................................. 329

13.2.1 Instalação .................................................................................................................................................... 329

13.2.2 Verificação da Versão ................................................................................................................................. 329

13.2.3 Análise completa ......................................................................................................................................... 329

13.2.4 Análise por protocolo .................................................................................................................................. 330

13.2.5 Análise por host .......................................................................................................................................... 330

13.2.6 Análise por host de origem ......................................................................................................................... 331

13.2.7 Análise por host de destino ......................................................................................................................... 331

13.2.8 Análise por porta ......................................................................................................................................... 332

13.2.9 Análise por porta de origem ........................................................................................................................ 333

13.2.10 Análise por porta de destino ..................................................................................................................... 333

13.2.11 Observando o conteúdo dos pacotes ....................................................................................................... 334

13.2.12 Capturar pacotes para visualização com wireshark ................................................................................. 335

14 Histórico ....................................................................................................................................................................... 337

Índice alfabético

V 0.12.0628-2118 Gilberto Martins – [email protected] 12

Page 13: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

Índice de Tabelas

Versão do documento.........................................................................................................................................................20

As 4 liberdades do Software Livre......................................................................................................................................30

Nomes de Dispositivos........................................................................................................................................................38

Características de nomes de arquivo..................................................................................................................................44

Características de arquivos.................................................................................................................................................45

Diferentes Shells.................................................................................................................................................................91

Capítulos do man................................................................................................................................................................92

Estrutura da página man.....................................................................................................................................................93

Componentes do prompt.....................................................................................................................................................97

Comando ls.........................................................................................................................................................................97

Atalhos de Teclado no BASH............................................................................................................................................101

Comando cp......................................................................................................................................................................107

Comando mv.....................................................................................................................................................................108

Opções comuns do comando ls........................................................................................................................................109

Opções de Ordenação do comando ls..............................................................................................................................109

Detalhes da listagem de um arquivo.................................................................................................................................110

Opções do cat...................................................................................................................................................................116

Comandos do more...........................................................................................................................................................116

Comandos do less............................................................................................................................................................116

Opções do tar....................................................................................................................................................................129

Permissões de arquivo......................................................................................................................................................132

Opções do chgrp...............................................................................................................................................................133

Opções do chmod.............................................................................................................................................................134

Operações comuns no vi..................................................................................................................................................138

Dados do usuário Fulano em /etc/passwd........................................................................................................................145

Campos do /etc/group.......................................................................................................................................................145

Comando su......................................................................................................................................................................152

Opções do date.................................................................................................................................................................162

Formatação de data no date.............................................................................................................................................162

Componentes do comando find........................................................................................................................................167

Opções -size e -execdir do find.........................................................................................................................................168

Características de pacotes .deb........................................................................................................................................173

Opções do script de inicialização......................................................................................................................................195

Colunas do comando netstat............................................................................................................................................198

Detalhes do arquivo interfaces..........................................................................................................................................201

Opções do script do servidor............................................................................................................................................203

Parâmetros do scp............................................................................................................................................................210

Considerações sobre DNS................................................................................................................................................215

Arquivos de Configuração do DNS no Debian..................................................................................................................215

Considerações sobre o /etc/resolv.conf............................................................................................................................217

V 0.12.0628-2118 Gilberto Martins – [email protected] 13

Page 14: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

Configuração do domínio erlane.xyz.................................................................................................................................219

Componentes da zona de domínio...................................................................................................................................220

Componentes da zona de domínio reverso......................................................................................................................222

Detalhes da acl src............................................................................................................................................................236

Detalhes da acl url_regex.................................................................................................................................................237

Configurações necessárias para autenticação.................................................................................................................238

Termos relevantes ao SMTP............................................................................................................................................246

Etapas do SMTP...............................................................................................................................................................246

Etapas do POP.................................................................................................................................................................247

Itens de mydestination......................................................................................................................................................251

Facilities do Syslog...........................................................................................................................................................300

Níveis de severidade do Syslog........................................................................................................................................300

Exemplo do comando iptables..........................................................................................................................................309

Opções básicas do iptables..............................................................................................................................................309

Sub-opções do protocolo (-p)............................................................................................................................................309

Ações do iptables..............................................................................................................................................................310

V 0.12.0628-2118 Gilberto Martins – [email protected] 14

Page 15: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

Índice de ilustrações

Logotipo do Linux................................................................................................................................................................25

Logotipo Debian..................................................................................................................................................................25

Logotipo do Ubuntu.............................................................................................................................................................27

Versões do Ubuntu.............................................................................................................................................................28

Logotipo GNU.....................................................................................................................................................................31

Tela de abertura do processo de criação de VM................................................................................................................54

Definição do nome da VM e do Sistema Operacional........................................................................................................55

Configuração da capacidade RAM da VM..........................................................................................................................56

Escolha do disco virtual existente ou criação de um novo..................................................................................................57

Tipo do disco virtual............................................................................................................................................................58

Escolha de tamanho fixo ou dinâmico para o arquivo do disco virtual...............................................................................59

Definição do nome, local e capacidade do disco virtual.....................................................................................................60

Resumo de criação do disco virtual....................................................................................................................................61

Resumo de criação da máquina virtual completa...............................................................................................................62

VM Firewall criado...............................................................................................................................................................63

Seleção do ISO de instalação.............................................................................................................................................64

Iso de instalação do Ubuntu selecionado...........................................................................................................................65

Escolha da linguagem do instalador...................................................................................................................................66

Menu Inicial.........................................................................................................................................................................67

Seleção do modelo do teclado............................................................................................................................................68

Tela de detecção do teclado em uso..................................................................................................................................69

País de origem....................................................................................................................................................................70

Lay out do teclado...............................................................................................................................................................71

Hostname da máquina........................................................................................................................................................72

Definição do fuso horário....................................................................................................................................................73

Tipo de particionamento......................................................................................................................................................74

Escolha do disco a ser particionado...................................................................................................................................75

Confirmação do particionameto automático........................................................................................................................76

Shell e Kernel......................................................................................................................................................................90

Editor de Texto nano.........................................................................................................................................................135

Nano pedindo confirmação de gravação..........................................................................................................................135

Nano solicitando o nome e o diretório do arquivo a ser gravado......................................................................................136

Editor VI............................................................................................................................................................................137

VI em modo de inserção de texto.....................................................................................................................................137

VIM....................................................................................................................................................................................140

Opção "Canais de Software".............................................................................................................................................175

Canais de Software: Aba Programas do Ubuntu..............................................................................................................175

Canais de Software: Aba Atualizações.............................................................................................................................176

Canais de Software: Aba Estatísticas...............................................................................................................................176

aptitude mostrando as relações diretas de eog................................................................................................................178

V 0.12.0628-2118 Gilberto Martins – [email protected] 15

Page 16: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

aptitude mostrando os pacotes que dependem de eog....................................................................................................179

Site do www.kernel.org.....................................................................................................................................................183

Menu de configuração do kernel.......................................................................................................................................187

Menu de dispositivos (Device drivers)..............................................................................................................................188

Opções do suporte a porta paralela..................................................................................................................................189

Suporte a porta paralela desabilitada...............................................................................................................................189

Confirmação de encerramento da configuração...............................................................................................................190

Gravação da configuração do kernel................................................................................................................................190

Escolha do nome para gravação......................................................................................................................................191

Arquivo ~/.ssh/known_hosts.............................................................................................................................................212

nslookup do Windows.......................................................................................................................................................224

Acesso impedido pelo DansGuardian...............................................................................................................................240

Configuração do Browser para usar o Dansguardian.......................................................................................................243

Assuntos usados para bloqueios......................................................................................................................................244

Primeira tela de auto-configuração do Postfix..................................................................................................................247

Segunda tela de auto-configuração do Postfix.................................................................................................................248

Terceira tela de auto-configuração do Postfix...................................................................................................................248

Opções de Configuração do Clamav................................................................................................................................258

Escolha do modo de atualização do CLAMAV.................................................................................................................259

Escolha do site de atualização do CLAMAV.....................................................................................................................259

Proxy da rede para acesso pelo CLAMAV........................................................................................................................260

Quantidade de atualizações por dia..................................................................................................................................260

Notificação de atualização do CLAMAV...........................................................................................................................261

Página padrão do apache.................................................................................................................................................263

Página Padrão do Apache alterada..................................................................................................................................264

Documentação do Apache 2.............................................................................................................................................271

Autenticação do swat........................................................................................................................................................275

Tela de compartilhamentos do swat.................................................................................................................................277

Assistentes do Samba......................................................................................................................................................278

Tela de Status do swat......................................................................................................................................................279

Configuração do CUPS.....................................................................................................................................................285

Administração de Impressoras..........................................................................................................................................286

Descrevendo a impressora...............................................................................................................................................287

Endereçamento do servidor..............................................................................................................................................288

Escolha do Fabricante......................................................................................................................................................289

Seleção do Modelo da Impressora...................................................................................................................................290

Reconfiguração do OpenLDAP.........................................................................................................................................292

Configuração inicial do OpenLDAP...................................................................................................................................293

Abertura do GOsa.............................................................................................................................................................296

Erro na abertura do GOsa.................................................................................................................................................296

Linguagem a ser usada pelo GOsa..................................................................................................................................297

Checagem da Instalação do GOsa...................................................................................................................................298

V 0.12.0628-2118 Gilberto Martins – [email protected] 16

Page 17: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

Fluxo de pacotes no firewall Linux....................................................................................................................................308

Recursos disponíveis nos servidores configurados..........................................................................................................321

Gráficos do Munin mostrando o uso do disco...................................................................................................................322

Envio de Fingerprint do NMAP..........................................................................................................................................328

V 0.12.0628-2118 Gilberto Martins – [email protected] 17

Page 18: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

Este trabalho está licenciado sob uma Licença Creative Commons Atribuição 2.5 Brasil.Para ver uma cópia desta licença, visite

http://creativecommons.org/licenses/by/2.5/br/ ou envie uma carta para Creative Commons, 171

Second Street, Suite 300, San Francisco, California 94105, USA.

V 0.12.0628-2118 Gilberto Martins – [email protected] 18

Page 19: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux

V 0.12.0628-2118 Gilberto Martins – [email protected] 19

Page 20: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Introdução

1  IntroduçãoEste material está em constante atualização.

Este material está sendo disponibilizado livremente, para aprendizado ou como complemento profissional.

A versão do documento está no rodapé da página, no formato VP.AA.MMDD-hhmm, e deve ser compreendido do seguinte modo:Item SignificadoVP Identificador principal

AA Ano da última atualização

DD Dia da última atualização

MM Mês da última atualização

hh Hora da última atualização

mm Minuto da última atualização

Tabela 1: Versão do documento

Ao encontrar erros ou falhas, por favor envie os mesmos para [email protected]. Estas correções ajudarão mais pessoas que usam este documento.

Diversas dicas sobre desktop linux serão periodicamente disponibilizadas no blog http://livresocial.blogspot.com em português, ou em http://linuxdrops.blogspot.com em inglês.

Antecipadamente agradeço a todos pela colaboração.

Gilberto Martins

V 0.12.0628-2118 Gilberto Martins – [email protected] 20

Page 21: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

2  Sistema OperacionalSistema Operacional é o conjunto de ferramentas necessárias para que um computador possa ser utilizado de forma adequada.

Um SO, como também são conhecidos os Sistemas Operacionais, faz o papel de intermediário entre o aplicativo e a camada física do hardware. Esta é uma das formas de conceituar o termo sistema operacional, como um conjunto que permite a abstração do hardware. Este conjunto é constituído por um kernel, ou núcleo, e um conjunto de softwares básicos que executam operações simples.

Desta forma, se não houvessem sistemas desse tipo, todo software desenvolvido deveria saber se comunicar com os dispositivos de hardware do computador de que precisasse.

Quando temos um sistema operacional, é ele quem precisa saber lidar com os dispositivos, sabendo falar com a placa de som, com a internet, com os disquetes, etc. Assim, um software que seja feito para funcionar neste sistema não precisará de informações específicas do equipamento. Ao invés disso, ele faz solicitações ao kernel e o sistema operacional é que fará a comunicação, repassando os resultados.

Cada sistema operacional pode ter uma maneira própria e distinta de comunicar-se com o hardware, razão pela qual é comum que softwares feitos para um sistema operacional não funcionem em outro, principalmente no caso de linguagens compiladas.

Uma outra forma de conceituar sistema operacional é como um gerenciador de recursos. É função do SO identificar que dispositivos estão ociosos e ocupados, como dividir o tempo de uso da CPU entre os vários processos, alocar e gerenciar o uso de memória principal e secundária, etc...

V 0.12.0628-2118 Gilberto Martins – [email protected] 21

Page 22: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

2.1  UnixÉ um sistema operacional portável, multitarefa e multiusuário originalmente criado por um grupo de programadores da AT&T e dos Bell Labs, que incluem Ken Thompson, Dennis Ritchie e Douglas McIlroy.

Em 1969 Ken Thompson escreveu o primeiro sistema, Unics, totalmente em assembly e destinado a funcionar em máquinas PDP-7, com objetivo de criar um sistema operacional, de respostas rápidas, com os mesmos conceitos do OS Multics (que ele ajudou a desenvolver) mas que pudesse ser rodado em computadores de pequeno porte como o PDP-7. Mais tarde Ken Thompson e Dennis Ritchie reescreveram ainda em assembly o sistema, agora batizado de UNIX para as plataformas PDP-11 e PDP-20. Apenas no início da década de 1970 o UNIX passou a ser desenvolvido usando exclusivamente a nova linguagem C (criada também por Ritchie nessa época) e começou a tomar forma semelhante a que possui atualmente e a tornar-se portátil através de várias plataformas. Finalmente, ao longo dos anos 70 e 80 foram sendo desenvolvidas as primeiras distribuições de grande dimensão como os sistemas BSD (na Universidade de Berkeley na Califórnia) e os System III e System V (nos Bell Labs).

Atualmente, UNIX (ou *NIX) é o nome dado a uma grande família de Sistemas Operacionais que partilham muitos dos conceitos dos Sistemas UNIX originais, sendo todos eles desenvolvidos em torno de padrões como o POSIX (Portable Operating System Interface) e outros. Alguns dos Sistemas Operacionais UNIX atuais são: BSD (FreeBSD, OpenBSD e NetBSD), Solaris (anteriormente conhecido por SunOS), IRIX, AIX, HP-UX, Tru64, Linux (nas suas centenas de distribuições), e até o Mac OS X (baseado num kernel Mach BSD chamado Darwin). Existem mais de quarenta sistemas operacionais "padrão UNIX", rodando desde celulares a supercomputadores, de relógios de pulso a sistemas de grande porte.

Um sistema UNIX é totalmente orientado a arquivos, ou seja, tudo nele é arquivo. Seus comandos são na verdade arquivos executáveis, que são encontrados em lugares previsíveis em sua árvore de diretórios, e até mesmo a comunicação entre entidades e processos é feita por estruturas parecidas com arquivos. O acesso a arquivos é organizado através de propriedades e proteções. Toda a segurança do sistema depende, em grande parte, da combinação entre as propriedades e proteções setadas em seus arquivos e suas contas de usuários.

2.1.1  Histórico do Unix

O gráfico a seguir mostra a evolução do Unix ao longo do tempo. O arquivo original está em http://upload.wikimedia.org/wikipedia/commons/5/50/Unix_history-simple.png

V 0.12.0628-2118 Gilberto Martins – [email protected] 22

Page 23: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

V 0.12.0628-2118 Gilberto Martins – [email protected] 23

Page 24: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

V 0.12.0628-2118 Gilberto Martins – [email protected] 24

Page 25: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

2.2  LinuxTecnicamente falando, Linux é um núcleo (do inglês kernel) — o que propriamente se refere ao sistema de software que oferece uma camada de abstração entre equipamentos e procedimentos como discos, controle de sistema de arquivos, multi-tarefa, balanceamento de carga, rede e segurança. O núcleo, ou kernel, não é um sistema operacional completo em si.

Sistemas completos construídos em torno do kernel do Linux utilizam o sistema GNU que oferece um interpretador de comandos, utilitários, interfaces gráficas, bibliotecas, compiladores e ferramentas, bem como muitos outros programas como o editor de textos Emacs e etc. Por essa razão, Richard M. Stallman, criador e líder do projeto GNU, solicita aos utilizadores que se refiram ao Linux como o sistema completo GNU/Linux.

2.2.1  Distribuições Linux

Uma Distribuição Linux é uma versão de um SO baseado em UNIX que contém o kernel Linux, ferramentas GNU, um programa de instalação e outros programas.

Distribuições comerciais como Red Hat, Ubuntu, SUSE e Mandriva, e projetos como Debian e Gentoo, todos reúnem e testam os softwares antes de liberar suas distribuições. Existem diversos projetos de distribuições Linux em desenvolvimento ativo, revisando e melhorando suas respectivas distribuições. Muitas não duram por muito tempo, fazendo com que apenas as melhores sobrevivam.

2.2.2  A distribuição DEBIAN

Debian é simultaneamente o nome de uma distribuição não comercial livre (gratuita e de código fonte aberto) de GNU/Linux amplamente utilizada, e de um grupo de voluntários que o mantêm à volta do mundo. Uma vez que o Debian se baseia fortemente no projeto GNU, é usualmente chamado Debian GNU/Linux. O Debian é especialmente conhecido pelo seu sistema de gestão de pacotes, chamado APT, que permite: atualizações relativamente fáceis a partir de versões realmente antigas; instalações quase sem esforço de novos pacotes e remoções limpas dos pacotes antigos.

O projeto Debian é mantido por doações através da organização sem fins lucrativos (SPI - Software in the Public Interest). O nome Debian vem dos nomes dos seus fundadores, Ian Murdock e de sua mulher, Debra. A palavra "Debian" é pronunciada em Português como Débian.

Várias distribuições comerciais baseiam-se (ou basearam-se) no Debian, incluindo: Linspire, Xandros, Kurumin, Debian-BR-CDD, Ubuntu e Libranet.

O projeto Debian foi fundado em 1993 por Ian Murdock, na época estudante universitário, que escreveu o Manifesto Debian que apelava à criação de uma distribuição Linux a ser mantida de uma maneira aberta, segundo o espírito do Linux e do GNU.

O projeto Debian cresceu vagarosamente e lançou suas versões 0.9x em 1994 e 1995, quando o

V 0.12.0628-2118 Gilberto Martins – [email protected] 25

Imagem 2: Logotipo Debian

Imagem 1: Logotipo do Linux

Page 26: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

comando dpkg ganhou notoriedade. Os primeiros ports (reescritas) para outras arquiteturas iniciaram em 1995, e a primeira versão 1.x do Debian aconteceu em 1996.

Bruce Perens substituiu Ian Murdock como líder do projeto. Ele iniciou a criação de vários documentos importantes (o contrato social e o free software guidelines) e a legítima umbrella organization (SPI), bem como liderou o projeto através dos lançamentos das versões da ELF/libc5 (1.1, 1.2, 1.3).

Bruce Perens deixou o projeto em 1998 antes do lançamento da primeira versão Debian baseada em glibc, a 2.0. O Projeto continuou elegendo novos líderes e fazendo mais duas versões 2.x, cada qual incluindo mais ports e mais pacotes. APT foi lançada durante este tempo e o Debian GNU/Hurd também iniciou-se.

O ano de 1999 trouxe as primeiras distribuições Linux baseadas em Debian, Corel Linux e Stormix's Storm Linux, hoje descontinuadas mas que iniciaram o que é hoje uma notável tendência às distribuições baseadas em Debian.

Perto do ano 2000, o projeto se direcionou ao uso de repositórios de pacotes e à distribuição "testing", alcançando um marco maior no que se refere aos arquivos e o gerenciamento de lançamentos. Em 2001, os desenvolvedores iniciaram conferências anuais, Debconf, com conversas, workshops, e a recepção aos usuários técnicos. A versão 3.0 de 2002 incluiu mais do que o dobro do número de pacotes da versão anterior e estava disponível para cinco novas arquiteturas.

Debian celebrou o seu décimo aniversário em 16 de Agosto de 2003, com muitas festas de aniversário em todo o mundo.

2.2.2.1  Organização do Projeto DEBIAN

O projeto Debian é uma organização voluntária com três documentos de fundação:• O contrato social Debian que define um conjunto de princípios básicos, a partir dos quais os

membros devem basear as suas atuações; • As linhas mestras do software livre Debian, que clarificam o que se quer dizer com o termo

"free software", largamente referido no contrato social; • A constituição Debian, que descreve a estrutura organizacional para tomadas de decisão

formais dentro do projeto, e enumera os poderes e responsabilidades do Debian Project Leader, o Debian Project Secretary e os programadores Debian em geral.

Os programadores Debian elegem um líder para o projeto entre os seus rankings todos os anos. O líder do projeto Debian tem vários poderes especiais, mas o seu poder não é absoluto. Ele pode ser contactado e a sua decisão revertida, pelo voto dos programadores de acordo com o processo de General Resolution. Na prática, isto ocorre com alguma freqüência. (Normalmente apenas a eleição do líder do projeto Debian ocorre no âmbito do General Resolution, mas isto já ocorreu várias vezes.)

O líder do projeto Debian é empossado para delegar a sua autoridade, e a vários programadores são confiadas responsabilidades especiais delegadas pelo líder, como por exemplo a equipe Debian System Administration (que possui a password do root das máquinas do projeto), e o Release Manager, que decide os objetivos da release de distribuição, supervisiona o processo e toma a decisão final de quanto liberar uma release. Muitos dos delegados mantêm-se nas suas posições durante vários mandatos dos diferentes líderes; as posições mais importantes são mantidas por membros de grande confiança e há muito tempo ativos no projeto, e existem muito poucas mudanças mesmo quando muda o líder do projeto.

2.2.2.2  Versões do Debian

O ciclo de desenvolvimento das versões do Debian passa por três fases:• "Unstable" - instável • "Testing" - teste

V 0.12.0628-2118 Gilberto Martins – [email protected] 26

Page 27: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

• "Stable" - estável

Quando as versões estão na fase "testing" elas são identificadas por codinomes tirados dos personagens do filme Toy Story. Ao se tornarem "stable" as versões recebem um número de versão (ex: 3.1).

Versões, codinomes e datas em que se tornaram "stable":• 5.0 – Lenny, 5 de setembro de 2009• 4.0 -- Etch, 17 de Fevereiro de 2008• 3.1 -- Sarge, 6 de Junho de 2005 • 3.0 -- Woody, 19 de Julho de 2002 • 2.2 -- Potato, 15 de Agosto 2000 • 2.1 -- Slink, 9 de Março de 1999 • 2.0 -- Hamm, 24 de Julho 1998 • 1.3 -- Bo, 2 de Junho de 1997 • 1.2 -- Rex, 1996 • 1.1 -- Buzz, 1996

A versão "unstable" tem sempre o nome Sid (também um personagem do filme Toy Story).

As informações mais atualizadas estão em http://www.debian.org/releases/.

Na versão 5.0, as arquiteturas suportadas são:• Alpha• AMD64• ARM• EABI ARM• HP PA-RISC• Intel x86• Intel IA-64• MIPS (big endian)• MIPS (little endian)• PowerPC• IBM S/390• SPARC

2.2.3  A distribuição Ubuntu

Ubuntu é um sistema operacional livre, baseado no Debian. Seu nome é uma palavra que deriva de dialetos africanos, que pode ser traduzido como “humanidade para outros”, o que descreve bem a filosofia Ubuntu: "Eu sou quem sou por causa dos que me cercam”, ou seja, um aspecto positivo de comunidade. O objetivo do Ubuntu é providenciar um sistema operacional atualizado e estável para o usuário comum, com um foco muito forte em facilidade de uso e de instalação.

Ubuntu é patrocinado pela Canonical, que hoje se encontra baseada no Reino Unido. A canonical pertence ao empreendedor sulafricano Mark Shuttleworth. Ao invés de vender o Ubuntu, a Canonical obtém lucro com suporte técnico. Mantendo o Ubuntu livre e com seu código aberto, a Canonical pode contar com os talentos de diversos desenvolvedores como os dos projetos Debian, GNU, X.org, etc.

2.2.3.1  Versões

Canonical suporta 4 distribuições baseadas no Ubuntu: Kubuntu e

V 0.12.0628-2118 Gilberto Martins – [email protected] 27

Imagem 3: Logotipo do Ubuntu

Page 28: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

Xubuntu, que usam KDE e Xfce, respectivamente, como ambiente de desktop, substituindo o sistema GNOME; Edubuntu, um subprojeto do Ubuntu, desenvolvido para ambiente escolar e uso doméstico; JeOS (que se pronuncia "Juice"), uma versão reduzida do Ubuntu, elaborado para dispositivos virtuais.

A Canonical libera novas versões a cada 6 meses e dá suporte ao Ubuntu por 18 meses gerando correções de segurança, correções a falhas críticas e incluindo atualizações menores a programas LTS (Long Term Support).

Historicamente, existem as seguintes distribuições:

Imagem 4: Versões do Ubuntu

Do quadro acima, disponível na Wikipedia1, devemos observar o seguinte:

• Uma nova versão é lançada a cada 6 meses, uma em abril e outra em outubro. A versão atual é 10.10 (Outubro/2010), e a próxima será a 11.04 (Novembro/2011)

• Cada nova versão tem um nome e um número de versão. A versão atual se chama Maverick Meerkat, e a próxima será chamada Natty Narwhal. São estes um adjetivo seguido do nome de um animal africano. Exceto pelas 3 primeiras versões, as outras estão ordem alfabética

• As versões são lançadas aproximadamente 1 mês depois da nova versão do Gnome, e 2

1 http://pt.wikipedia.org/wiki/Ubuntu

V 0.12.0628-2118 Gilberto Martins – [email protected] 28

Page 29: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

meses depois da nova versão do X.org

• Além disso, existem ainda as versões LTS (Long Time Support), que ocorrem em prazos variados: A cada 5 anos é lançada uma LTS Server, e a cada 3 anos é lançada uma LTS Desktop. Estas versões LTS tem suporte garantido de atualizações. As versões que não são LTS são suportadas apenas por 6 meses.

Ubuntu tem buscado permanecer o mais próximo da filosofia Debian. Usa software livre na maioria das vezes, e algumas vezes drivers de hardware e codecs proprietários.

2.2.3.2  Pacotes

Os pacotes do Ubuntu são baseados no Debian Stable. Faz uso do formato de pacotes adotado pelo Debian, além de usar as ferramentas de gerenciamento do Debian também, como o apt-get e o aptitude para ambiente CLI, e o Synaptic para ambiente gráfico, ainda que os pacotes Debian e Ubuntu não são necessariamente compatíveis entre si, sendo algumas vezes necessário que sejam refeitos. Ubuntu coopera com Debian - frequentemente retornando alterações ao Debian.

Para afirmar o compromisso de liberdade do software livre, e negando as menções de desconforto causadas por um possível e repentino abandono dos desenvolvedores do Ubuntu, a Canonical tem a seguinte filosofia2:

1. Todo usuário de computador deve ter a liberdade de baixar, executar, copiar, distribuir, estudar, compartilhar, mudar e melhorar seu software para qualquer propósito, sem pagamento de licenças.

2. Todo usuário de computador deve poder usar seu software na linguagem de sua preferência.3. Todo usuário de computador deve ter todas as oportunidades de usar qualquer software,

mesmo trabalhando com alguma deficiência física.

Basicamente, o Ubuntu conta com duas versões: Ubuntu Desktop Edition e Ubuntu Server Edition. A primeira voltada para usuários finais, conta com interface gráfica e diversas ferramentas de uso comum. A segunda é destinada a servidores, sem interface gráfica, disponibilizando apenas CLI.

2 http://www.ubuntu.com/community/ubuntustory/philosophy

V 0.12.0628-2118 Gilberto Martins – [email protected] 29

Page 30: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

2.3  Software LivreSegundo a definição criada pela Free Software Foundation, Software Livre é qualquer programa de computador que pode ser usado, copiado, estudado, modificado e redistribuído com algumas restrições. A liberdade de tais restrições é central ao conceito, o qual se opõe ao conceito de software proprietário, mas não ao software que é vendido almejando lucro (software comercial). A maneira usual de distribuição de software livre é anexar a este uma licença de software livre, e tornar o código fonte do programa disponível.

Um software é considerado como livre quando atende aos quatro tipos de liberdade para os usuários do software definidas pela Free Software Foundation:# Descrição1 A liberdade de executar o programa, para qualquer propósito (liberdade nº 0);

2 A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade nº 1). Acesso ao código-fonte é um pré-requisito para esta liberdade.;

3 A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2);

4 A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade nº 3). Acesso ao código-fonte é um pré-requisito para esta liberdade.;

Tabela 2: As 4 liberdades do Software Livre

A liberdade de executar o programa significa a liberdade para qualquer tipo de pessoa física ou jurídica utilizar o software em qualquer tipo de sistema computacional, para qualquer tipo de trabalho ou atividade, sem que seja necessário atender a alguma restrição imposta pelo fornecedor.

A liberdade de redistribuir deve incluir a possibilidade de se repassar os códigos-fonte bem como, quando possível, os arquivos binários gerados da compilação desses códigos, seja em sua versão original ou modificada. Não é necessária a autorização do autor ou do distribuidor do software para que ele possa ser redistribuído, já que as licenças de software livre assim o permitem.

Para que seja possível estudar ou modificar o software (para uso particular ou para distribuir) é necessário ter acesso ao código-fonte. Por isso a disponibilidade desses arquivos é pré-requisito para a liberdade do software. Cada licença determina como será feito o fornecimento do fonte para distribuições típicas, como é o caso de distribuições em mídia portátil somente com os códigos binários já finalizados (sem o fonte). No caso da licença GPL, o fonte deve ser disponibilizado em local de onde possa ser acessado, ou deve ser entregue ao usuário, se solicitado, sem custos adicionais (exceto transporte e mídia).

Para que essas liberdades sejam reais, elas devem ser irrevogáveis. Caso o desenvolvedor do software tenha o poder de revogar a licença, o software não é livre.

Tais liberdades não fazem referência aos custos envolvidos. É possível que um software-livre não seja gratuito. Quando gratuito, empresas podem explorá-lo comercialmente através do serviço envolvido (principalmente suporte).

A maioria dos softwares livres são licenciadas através de uma licença de software livre, como a GNU GPL, a mais conhecida.

V 0.12.0628-2118 Gilberto Martins – [email protected] 30

Page 31: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Sistema Operacional

2.4  Projeto GNUIniciado por Richard Stallman em 1984, com o objetivo de criar um sistema operacional totalmente livre, que qualquer pessoa teria direito de usar e distribuir sem ter que pagar licenças de uso.

Este sistema operacional GNU deveria ser compatível com o sistema operacional UNIX, porém não deveria utilizar-se do código fonte do UNIX. Stallman escolheu o nome GNU porque este nome, além do significado original do mamífero Gnu, é um acrônimo recursivo de: GNU is Not Unix (em português: GNU não é Unix).

A partir de 1984 Stallman e vários programadores, que abraçaram a causa, vieram desenvolvendo as peças principais de um sistema operacional, como compilador de linguagem C, editores de texto, etc.

Em 1991 o sistema operacional já estava quase pronto, mas faltava o principal, que é o kernel do sistema operacional. O grupo liderado por Stallman estava desenvolvendo um kernel chamado Hurd. Porém, em 1991, aconteceu algo que mudou o rumo da História: um jovem finlandês chamado Linus Torvalds havia criado um kernel que poderia usar todas as peças do sistema operacional GNU. Este kernel ficou conhecido como Linux, contração de Linus e Unix.

Atualmente, o sistema operacional GNU com o kernel Linux é conhecido como GNU/Linux, que é como o projeto solicita aos utilizadores que se refiram ao sistema completo, embora a maioria das pessoas se referem ao sistema apenas como Linux por uma questão de comodidade.

V 0.12.0628-2118 Gilberto Martins – [email protected] 31

Imagem 5: Logotipo GNU

Page 32: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3  Conceitos do LinuxTodas as pessoas que começam a usar o Linux esperam que ele faça as mesmas coisas que outros SO (o que é verdade) da mesma forma (isto NÃO vai acontecer). Por isso, é preciso relacionar alguns itens importantes :

• Linux é um SO que tem características próprias, como todos os outros SOs• Não compare como você faz algo em outro SO com o modo como é feito aqui, pois muito

frequentemente as duas formas de proceder são diferentes, mas vão gerar os mesmos resultados.

• Esteja pronto para aprender a operar antes de comparar, seja positiva ou negativamente.• Não existem SOs melhores que outros: existem SOs que atendam melhor determinados casos.• Não existem SOs mais seguros que outros: existem Administradores capacitados e curiosos

que se denominam administradores.• Nenhum SO é perfeito: Linux também tem falhas e limitações.

V 0.12.0628-2118 Gilberto Martins – [email protected] 32

Page 33: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.1  Problemas de Hardware com LinuxEstamos habituados a comprar um computador com diversas características, peças de diversos fabricantes, tecnologias variadas. Instalamos o MS Windows e tudo funciona bem.

A partir de agora, é preciso destacar dois tópicos interessantes:• Nem tudo acontece assim . Existe uma lista de itens compatíveis com MS Windows (HCL –

Hardware Compatibility List) que relaciona os equipamentos que funcionam normalmente com os diversos SO da Microsoft. Os que estão fora desta lista podem não funcionar tão facilmente. Esta lista se encontra em http://www.microsoft.com/whdc/hcl/default.mspx. Como não há uma empresa coordenando o desenvolvimento do Linux, uma lista unificada não está disponível.

• A indústria de Hardware ainda não está voltada para Linux . Este é o motivo da HCL do MS Windows ser tão extensa: a indústria de hardware colabora intensamente com a MS, o que é previsível, visto que MS Windows é o sistema operacional doméstico mais popular.

Algumas empresas estão sendo pioneiras em desenvolvimento de software controlador de seus equipamentos para Linux, mas ainda são poucas. Entre elas, as mais famosas são a HP e a IBM. Muito destes softwares controladores de dispositivos são desenvolvidos por voluntários, que nem sempre contam com o apoio da indústria, ou sequer são remunerados por isso. Estes se valem de técnicas complexas, como a engenharia reversa ou análise de comunicação entre o computador e o dispositivo, quando possível. Por este motivo, por vezes o suporte a este ou aquele dispositivo demora a estar disponível.

Em http://www.activewin.com/winxp/winxphclx86.txt pode ser lido o seguinte:The Hardware Compatibility List (HCL) contains products that have passed testing with Windows XP.Not every computer and/or device has been tested in all possible configurations.Details regarding logo levels as they appear in this list can be found at http://www.microsoft.com/winlogo/.Please Note: The information contained in this document for each device is current as of the date first posted; however, since these products are subject to modification, revision or replacement by individual manufacturers at any time without notice, Microsoft cannot guarantee their continued compatibility with our operating systems.

Por este motivo, ao adquirir hardware, é importante saber se este é suportado ou não, e principalmente, junto à comunidade Linux, procurar os que usam este software.

V 0.12.0628-2118 Gilberto Martins – [email protected] 33

Page 34: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.2  Migração DOS/Windows para LinuxSegundo adaptação do Linux Client Migration Cookbook da IBM:

Linux desenvolveu-se em um SO desktop poderoso que pode ser executado em quase qualquer hardware. Em muitos casos, requer menos memória e poder de processamento para fornecer performance semelhante, no cliente. Devido ao seu desenho de base e natureza aberta, Linux pode ser facilmente customizado. Estando disponível pela GNU General Public License 2pode ser obtido gratuitamente. Entretanto, muitos obtêm uma distribuição Linux devido às vantagens agregadas e o suporte oferecido. A abertura e flexibilidade do Linux, e não o preço, está se tornando o principal motivo para diversas organizações migrarem para este sistema operacional. Sua funcionalidade, estabilidade, escalabilidade e suporte tem sido fatores principais que causaram a expansão do uso do Linux das áreas acadêmicas para o meio comercial.

Sempre tem sido apontada como única razão que justifique a migração para Linux, o fator custo de aquisição. Hoje, com a visão mais ampla fornecida pelos conceitos de TCO, por mais diversificados que sejam, tem sido observado que outros motivos justificam esta migração:

• Custo de aquisição de software• Custo de manutenção de sistemas• Custo de treinamento/atualização• Custo de pessoal técnico

Entre outros. Basta pensar, de forma bem simplificada, no valor hora envolvido em incidente com malwares a servidores de email, por exemplo.

Entretanto, é imprescindível citar que a solução OSFS (Open Source / Free Software), vai além da escolha de um sistema operacional, e deve considerar o fator humano, seja da equipe técnica seja dos usuários finais, pensando em capacidade de adaptação/aceitação. Um projeto destes pode trazer imenso prejuízo, se um sistema estiver em andamento. É possível reduzir seu uso da plataforma anterior para a nova ? A que ritmo ? Qual tempo disponível ? Como está preparado o pessoal disponível ?

Estes aspectos, e muitos outros (variando segundo o tamanho da operação de migração) devem ser muito bem dimensionados.

V 0.12.0628-2118 Gilberto Martins – [email protected] 34

Page 35: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.3  Gerenciador de JanelasTambém conhecida como GUI (Graphical User Interface), é um mecanismo de interação entre usuário e sistema de computador baseado em símbolos visuais, como ícones, menus e janelas. Através de um dispositivo de entrada (normalmente, um mouse ou teclado) o usuário é capaz de selecionar esses símbolos e manipulá-los de forma a obter algum resultado prático.

Cada GUI tem características próprias. Umas usam uma barra com ícones e menus, outras não permitem inclusão de ícones na área de trabalho, cada uma controla os botões do mouse de forma diferente, etc. Como em diversos sistemas operacionais, o usuário pode mudar sua interface gráfica livremente. Estas são algumas das mais populares interfaces gráficas para UNIX em geral:

• Enlightenment (http://www.enlightenment.org/) • BlackBox (http://blackboxwm.sourceforge.net/) • WindowMaker (http://www.windowmaker.info/)

A distribuição Ubuntu usa Gnome como GUI padrão, mas outras podem ser adicionadas e até ser tornadas padrão no desktop a qualquer momento, de acordo com a vontade do usuário.

V 0.12.0628-2118 Gilberto Martins – [email protected] 35

Page 36: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.4  Ambiente GráficoUm ambiente de desktop é um sistema que oferece soluções com interface gráfica com o usuário para operação do computador. O nome é derivado da metáfora de desktop, ou "tampo de mesa", hoje usado por essas interfaces. Um ambiente de desktop fornece ícones, pastas, barra de ferramentas, e um gerenciador de janelas. Dos mais famosos podemos destacar:

• Gnome (http://www.gnome.org/) • KDE(http://www.kde.org/) • XFCE (http://www.xfce.org/)

Em geral, um ambiente gráfico pode funcionar com o gerenciador de janelas da preferência do usuário. Assim, podemos ter GNOME com Enlightenment ou KDE com FluxBox. Para isto, é necessário conhecer o funcionamento de cada ambiente gráfico. Entretanto, recentemente, na instalação do Ubuntu, por exemplo, com as opções de “Desktop”, é oferecida a alternativa de combinar o Ambiente Gráfico com alguns gerenciadores de Janela.

V 0.12.0628-2118 Gilberto Martins – [email protected] 36

Page 37: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.5  Gerenciadores de BootSob determinadas circunstâncias, é necessário ter mais de um SO instalado no computador. Neste caso, é necessário que seja feito a escolha do SO a ser usado no princípio do processo de boot. Esta é a função dos gerenciadores de boot.

O gerenciador de boot é um pequeno programa, o qual não é um SO por si só, mas a interface necessária para seleção e escolha de um dos SOs instalados na máquina. NTLDR (windows), LILO e GRUB (Linux) são os mais famosos exemplos.

Em geral, o Gerenciador de Boot ocupa os 512 bytes do início do HD usado para inicialização do sistema. Na instalação do Linux, é dada a opção de instalar ou não o Gerenciador de Boot, além de ser possível escolher qual será usado (LILO ou GRUB).

V 0.12.0628-2118 Gilberto Martins – [email protected] 37

Page 38: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.6  Nomes de DispositivosNo Linux, existem diversos arquivos especiais no diredório /dev. Estes arquivos são chamados de arquivos de dispositivos. Cada um destes arquivos permite acesso que permite acesso a um hardware. O arquivo de dispositivo é uma interface para o componente do sistema. Abaixo estão listados alguns dos arquivos mais comuns. Item Descriçãofd0 Primeira Unidade de Disquetes

fd1 Segunda Unidade de Disquetes

hda Disco rígido IDE / CD-ROM na primeira porta IDE (Principal)

hdb Disco rígido IDE / CD-ROM na primeira porta IDE (Escravo)

hdc Disco rígido IDE / CD-ROM na segunda porta IDE (Principal)

hdd Disco rígido IDE / CD-ROM na segunda porta IDE (Escravo)

hda1 Primeira partição do primeiro disco rígido IDE

hdd15 Décima quinta partição do quarto disco rígido IDE

sda Disco rígido SCSI com o ID mais baixo (e.g. 0)

sdb Disco rígido SCSI com o próximo ID após o menor (e.g. 1)

sdc Disco rígido SCSI com o próximo ID (e.g. 2)

sda1 Primeira partição do primeiro disco rígido SCSI

sdd10 Décima partição do quarto disco rígido SCSI

sr0 Unidade de CD-ROM SCSI com o ID SCSI mais baixo

sr1 Unidade de CD-ROM SCSI com o ID SCSI maior que o anterior

ttyS0 Porta serial 0, COM1 no MS-DOS

ttyS1 Porta serial 1, COM2 no MS-DOS

psaux dispositivo de mouse PS/2

Tabela 3: Nomes de Dispositivos

V 0.12.0628-2118 Gilberto Martins – [email protected] 38

Page 39: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.7  Sistema de ArquivosLinux compreende diversos sistemas de arquivos, como FAT16, FAT32, NTFS, etc. Estes não podem ser usados no processo de boot. Para este propósito existem outros, como o EXT2, EXT3, ReiserFS, XFS, JFS, etc. Os mais freqüentemente utilizados hoje pelo Linux são o EXT3 e o ReiserFS.

É importante lembrar que cada sistema de arquivos tem seu próprio conjunto de ferramentas de manutenção. Escolher um sistema de arquivos ou outro implica em conhecer as suas ferramentas de manutenção.

Vamos citar características de alguns deles:

3.7.1  EXT2

O ext2 (second extended file system) é um sistema de arquivos de disco de alto desempenho utilizado pelo kernel do Linux. Ele foi desenhado por Rémy Card para substituir o ext (extended file system).

O ext2 oferece o melhor desempenho (em termos de velocidade e uso da CPU) entre todos os sistemas de arquivos suportados pelo Linux. Ele é um sistema de arquivos muito rápido pelo fato de não suportar journalling, sendo assim os dados são gravados diretamente. Quando ocorre alguma parada no sistema, o comando fsck é acionado para a verificação dos dados no disco, corrigindo eventuais perdas de informação. Entretanto, a inexistência de journaling faz com que a ação do comando fsck possa se tornar extremamente longa, se o disco for de alta capacidade de armazenamento.

3.7.2  EXT3

O ext3 (que significa "third extended file system") faz parte da nova geração de sistemas de gestão de arquivos do Linux. A sua maior vantagem é o suporte de journaling, que consiste em guardar informação sobre as transações de escrita, permitindo uma recuperação rápida e confiável em caso de interrupção súbita (por exemplo, por falta de eletricidade).

O uso deste sistema de arquivos melhora a recuperação do sistema de arquivos caso ocorra algum desligamento súbito do computador, através da gravação seqüencial dos dados na área de metadados e acesso mhash da sua árvore de diretórios.

A estrutura da partição ext3 é semelhante à da ext2, o que faz com que a migração de um formato para o outro seja simples. A adição do journaling é feita em um arquivo chamado .journal que fica oculto pelo código ext3 na partição (desta forma ele não poderá ser apagado, o que comprometeria o funcionamento do sistema). A estrutura idêntica da partição ext3 com a ext2 torna mais fácil a manutenção do sistema, já que todas as ferramentas para recuperação ext2 funcionarão sem problemas, sendo mesmo possível montar uma partição ext3 como se fosse ext2.

3.7.3  EXT4

O sistema de arquivos ext4 ou Forth Extended Filesystem é um sistema de arquivos com journaling desenvolvido como sucessor do ext3.

Ela nasceu como uma série de extensões compatíveis para remover limites de armazenamento de 64-bit e adicionar outras melhorias de desempenho para ext3. No entanto, os desenvolvedores do kernel Linux não aceitaram outras extensões para ext3 por motivos de estabilidade, e propuseram bifurcar o

V 0.12.0628-2118 Gilberto Martins – [email protected] 39

Page 40: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

código fonte do ext3, renomeá-lo como ext4, e nele fazer todo o desenvolvimento necessário, sem afetar a base atual de usuários ext3. Esta proposta foi aceita e, em 28 de junho de 2006, Theodore Ts'o, o mantenedor do ext3, anunciou o novo plano de desenvolvimento para o ext4.

Uma imagem preliminar do ext4 foi incluída na versão 2.6.19 do kernel do Linux. Em 11 de Outubro de 2008, os patches que marcaram o ext4 como código estável foram fundidas nos repositórios de código-fonte do kernel Linux 2.6.28, que indica o fim da fase de desenvolvimento e a recomendação da adoção do ext4. Kernel 2.6.28, contendo o sistema de arquivos ext4, foi finalmente lançado em 25 de dezembro de 2008.

Algumas características:

• Arquivos Grandes: O sistema de arquivos ext4 pode suportar volumes com tamanhos de até 1 Exbibyte e os arquivos com tamanhos de até 16 tebibytes.

• Extensões: As extensões são introduzidos para substituir o esquema de mapeamento físico de blocos tradicional utilizado pelo ext2 / ext3. Uma extensão é um conjunto de blocos físicos contíguos física, o que melhora o desempenho de arquivos grandes e reduz a fragmentação. Um ponto único no ext4 pode mapear até 128 MB de espaço contíguo com um tamanho de bloco de 4KB. Pode haver 4 extensões armazenados no inode. Quando há mais de 4 extensões em um arquivo, o resto das extensões são indexados em um Htree.

• Retrocompatibilidade: O sistema de arquivos ext4 é compatível com ext3 e ext2, tornando-se possível montar sistemas de arquivos ext2 e ext3 como ext4. Isso já vai melhorar um pouco o desempenho, porque alguns novos recursos do ext4 também pode ser usado com ext3 e ext2, como o novo algoritmo de alocação de bloco. O sistema de arquivos ext3 é parcialmente compatível com o ext4, isto é, um sistema de arquivos ext4 pode ser montado como uma partição ext3 (usando "ext3" como o tipo de sistema de arquivos durante a montagem). No entanto, se a partição do ext4 usa extensões (uma das principais novidades do ext4), então a capacidade de montar o sistema de arquivos como ext3 está perdido.

• Pré-alocação persistente: O sistema de arquivos ext4 permite a pré-alocação de espaço de disco para um arquivo. O método atual para este na maioria dos sistemas de arquivo é gravar um arquivo completo com zeros até reservar o espaço, assim que o arquivo é criado. Este método não seria mais necessário para o ext4, em vez disso, uma nova chamada de sistema fallocate () foi adicionada ao kernel do Linux para uso de sistemas de arquivos, incluindo XFS e ext4, que têm essa capacidade. O espaço alocado para arquivos como estes seriam garantidos e seriam provavelmente contíguas. Esta tem aplicações para streaming de mídia e bases de dados.

• Alocação atrasada: Ext4 utiliza uma técnica de ganho de desempenho do sistema de arquivos chamado allocate-on-flush, também conhecido como alocação de atraso. Ele consiste em retardar a alocação de blocos até que os dados sejam gravados no disco, ao contrário de alguns outros sistemas de arquivos, que podem alocar os blocos necessários antes de dar esse passo. Isso melhora o desempenho e reduz a fragmentação através da melhoria das decisões de alocação de bloco com base no tamanho do arquivo real.

• Mais de 32.000 subdiretórios: No ext3 o número de subdiretórios que um diretório pode conter é limitado a 32.000. Este limite foi aumentado para 64.000 em ext4.

• Checksum do Journal: Ext4 usa checksums no journal para melhorar a confiabilidade, já que o journalling é um dos processos mais utilizados do disco. Esta característica tem um outro benefício, que pode evitar com segurança uma espera de E/S, durante o processo diário, melhorando o desempenho ligeiramente.

• Verificação mais rápida do sistema de arquivos: Em ext4, grupos de blocos e seções da

V 0.12.0628-2118 Gilberto Martins – [email protected] 40

Page 41: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

tabela de inode não alocado são marcadas como tal. Por este motivo e2fsck pode ignora-los inteiramente em uma verificação, o que reduz o tempo que poderia levar para checar um sistema de arquivos tão grande quanto o ext4 foi desenvolvido para suportar. Esta funcionalidade está implementada na versão 2.6.24 do kernel do Linux.

• Alocador multibloco: Ext4 aloca vários blocos de um arquivo em uma única operação, o que reduz a fragmentação, tentando escolher blocos contíguos no disco. Isso permite que o arquivo tenha muitos blocos “sujos” submetidos a operações de escrita ao mesmo tempo, ao contrário do mecanismo existente do kernel de apresentação de cada bloco por vez para alocação.

• Melhoramento nas marcas de tempo (Timestamps): Como os computadores tornam-se mais rapidos em geral, e como o Linux se torna mais e mais utilizado para aplicações de missão crítica, a granularidade de segundos torna-se insuficiente. Para resolver isso, o ext4 fornece tempo medido em nanossegundos. Além disso, um aumento do campo de segundos do timestamp adia o problema do ano 20383 em mais 204 anos.

3.7.4  SWAP

A memória virtual é uma forma de permitir ao software utilizar mais memória que o computador possui fisicamente. Ela consiste de um conjunto de alterações no projeto do hardware combinadas a alterações no projeto do sistema operacional. Ela permite ao programa executar em um espaço de memória cujo tamanho não é necessariamente limitado ao tamanho da memória física do computador.

A Memória Virtual é como se fosse uma extensão da memória RAM. Se temos 256 MB de RAM instalados na forma de pentes de memória, e adicionarmos uma partição swap de 512 MB ao sistema, teremos, no total, 768 MB de memória.

Porém essa memória será chamada de memória virtual, pois apenas 256 MB existem fisicamente, o restante é recurso da memória virtual. Quanto menos memória RAM um computador tiver, maior será a necessidade da utilização da memória virtual.

O sistema Linux deixa os arquivos dos programas guardados na memória RAM, permitindo um rápido acesso aos mesmos.

Por padrão, o Linux mantém um "cache de disco". Esse cache é uma área reservada da memória RAM, usada para guardar arquivos recém abertos. Por exemplo: quando você abre um programa pela primeira vez, ele demora um certo tempo para carregar. Mas se você fechar e abrí-lo novamente, ele vai carregar rapidamente, pois agora parte dele já está carregada no cache de disco.

Mas, se você abrir muitos programas ao mesmo tempo, a memória RAM vai ficando com menos espaço livre. Então, o sistema começa a esvaziar o cache de disco, permitindo que os programas usem toda a memória RAM. Se a memória RAM mesmo assim começar a ficar lotada, o sistema começa então a usar a memória virtual para armazenar os arquivos.

No Linux, a memória virtual geralmente é uma partição separada do sistema, a swap. Essa partição é otimizada para realizar trocas de arquivos entre a memória RAM e o HD. Nesta partição deve existir um sistema de arquivos específico para isto, o swapfs.

O HD, porém, possui uma velocidade de acesso bem menor que a memória RAM. Mas, então, porque o sistema usa ele? Na verdade o sistema usa o HD somente em último caso, quando a memória já está no limite.

O Linux começa a transferir áreas de memória que estão sendo pouco utilizados para a memória swap, deixando memória RAM livre para os programas que estão sendo usados mais constantemente. E assim ele fica intercalando os blocos de informação de/para RAM/swap.

3 http://pt.wikipedia.org/wiki/Problema_do_ano_2038

V 0.12.0628-2118 Gilberto Martins – [email protected] 41

Page 42: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.7.5  Reiser

Criado por Hans Reiser e mantido pela empresa The Naming System Venture o ReiserFS é um dos sistemas de arquivos com suporte a “journaling” mais rápidos na atualidade. São seus patrocinadores as empresas SuSE e Linspire. Este é um sistema de arquivos alternativo ao ext2/3.

Entre suas principais características, estão que ele possui tamanho de blocos variáveis, suporte a arquivos maiores que 2 Gigabytes (esta é uma das limitações do EXT3) e o acesso mhash a árvore de diretórios é um pouco mais rápida que o ext3.

ReiserFS usa árvores balanceadas para tornar o processo de busca de arquivos, informações sobre segurança e outros metadados mais eficientes. Para arquivos muito pequenos, seus dados podem ser armazenados próximos aos metadados, então, ambos podem ser recuperados com um pequeno movimento do mecanismo da "cabeça" de leitura do disco. Essa propriedade vai contribuir para um melhor desempenho caso uma aplicação necessite abrir muitos arquivos pequenos rapidamente.

Outra grande vantagem do ReiserFS é a alocação dinâmica de inodes, já que esse sistema de arquivos não os aloca em espaços fixos ou blocos e sim, aloca o tamanho exato que o arquivo precisa. Em sistemas baseados em inodes fixos, como o ext3, o espaço no disco é alocado em blocos que variam de 512 a 4096 bytes ou até maior, caso o arquivo exceda um múltiplo exato do tamanho do bloco.

A leitura e escrita de arquivos grandes são limitadas pela velocidade do dispositivo de armazenamento e pelo canal de entrada e saída da controladora de discos. Já o acesso a arquivos pequenos, como scripts do Shell, é limitado pela eficiência do projeto do sistema de arquivos. A razão disso é que a abertura de um arquivo requer a leitura dos metadados sobre ele que estão armazenados no inode do diretório em uma área distinta dos dados. Após localizar a entrada referente ao arquivo no diretório é que o sistema realiza a leitura dos setores que contêm os dados.

Além disso, o sistema precisa examinar os metadados relativos à segurança para verificar se o usuário tem permissão de acesso ao arquivo, isso significa leituras adicionais. O sistema pode gastar mais tempo decidindo entre permitir o acesso e localizar as entradas de dados do que se as buscasse dentro do próprio arquivo.

No caso de um desligamento incorreto do sistema, o ReiserFS é capaz de recuperar a consistência do sistema de arquivos em pouco tempo e a possibilidade de perda de pastas ou partições é reduzida. Em compensação, os arquivos que eventualmente estiverem sendo gravados no exato momento em que acabou a energia ficarão com seus dados corrompidos, haverá acesso aos arquivos normalmente, mas o conteúdo estará truncado ou incompleto.

O futuro do ReiserFS é atualmente dado como incerto, em virtude da prisão em 10 de Outubro de 2006 de Hans Reiser, seu criador, e sua condenação em 28 de Abril de 2008 pelo assassinato de sua esposa no início de Setembro de 2006. Atualmente, devido à paralização das atividades da Namesys, o projeto ReiserFS está armazenado em kernel.org.

3.7.6  JFS

O JFS (Journaling FileSystem) é um sistema de arquivos desenvolvido pela IBM, disponível em licença open-source, com o intuito de rodar nos "UNIXes" que a IBM vendia. Além de possuir journal ele permite que as partições do sistema sejam redimensionadas sem que seja necessário desligar o computador. Extremamente rápido e permite trabalhar com uma quantia de dados muito superior aos demais sistemas de arquivos.

O sistema de arquivos JFS também usa a estrutura inode para armazenar a localização dos blocos de

V 0.12.0628-2118 Gilberto Martins – [email protected] 42

Page 43: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

cada arquivo nas estruturas físicas do disco, a versão JFS2 armazena esses inodes em uma árvore binária para acelerar o acesso a essas informações, esses blocos podem variar de 512 a 4096 bytes, a alocação dos inodes é feita conforme vai sendo necessário.

Entretanto, inicialmente o JFS sofreu uma perda de credibilidade devido a constantes instabilidades e bugs.

3.7.7  XFS

Sistema de arquivos muito rápido na gravação. Foi desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código fonte. Considerado um dos melhores sistemas de arquivos para banco de dados.

Possui journaling de metadados que vem com um robusto conjunto de funções e é otimizado para escalabilidade. Entretanto é recomendado usar este sistema de arquivos em sistemas rodando Linux com equipamento SCSI de ponta e/ou armazenamento em canais de fibra e fonte de energia sem interrupção.

Pelo fato de o XFS criar caches agressivamente de dados em uso na memória RAM, programas mal desenhados (que não tomam precauções na hora de escrever os arquivos em disco, e existem muitos deles) podem perder uma grande quantidade de dados se o sistema for desligado sem aviso.

V 0.12.0628-2118 Gilberto Martins – [email protected] 43

Page 44: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.8  Nomes de ArquivosTodo sistema operacional possui normas de nomenclatura para seu muitos arquivos. No Linux, estas são as normas de criação de nomes de arquivos:Item Significado1 Os arquivos podem ter até 255 caracteres no nome;

2 Caracteres maiúsculos e minúsculos fazem diferença no nome (case sensitive);

3 Todo caractere é aceito, exceto NUL e / (barra de diretórios), entretanto, alguns devem ser evitados ;

4 Podem ser usadas aspas para delimitar o nome do arquivo, sem que as mesmas façam parte do nome;

Tabela 4: Características de nomes de arquivo

Por exemplo:# ls relatorio de fechamento

No comando acima, o comando ls vai atuar sobre o arquivo relatorio, o arquivo de e o arquivo fechamento, o que obviamente não está correto. Por isso, devemos usar este comando da seguinte forma:

# ls “relatorio de fechamento”

ou mesmo da seguinte forma:# ls relatorio\ de\ fechamento

Veremos mais adiante que o caractere CONTRA BARRA (\) informa ao SO que o caractere que o segue faz parte do nome do arquivo. No exemplo acima, usamos esta notação para considerar os espaços como parte do nome de arquivo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 44

Page 45: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.9  Estrutura de diretóriosO primeiro choque para quem está vindo do Windows é a estrutura de diretórios do Linux, que não lembra em nada a estrutura do Windows. Basicamente, no Windows temos os arquivos do sistema concentrados nas pastas Windows, Documents and Settings e Arquivos de programas, e você pode criar e organizar suas pastas quase da forma que quiser.

Quanto a arquivos, no Linux podemos ressaltar algumas diferenças:Item Significado1 O diretório raiz contém todos os diretórios do sistema

2 Arquivos pessoais devem ser gravados apenas dentro da sua própria pasta no diretório /home.

3 Programas instalados vão ser gravados no diretório escolhido pelo autor do software, e normalmente é /usr/bin, /opt, /bin, /sbin

4 Arquivos de configuração usam o diretório /etc

5 Linux não possui algo semelhante ao registro do Windows

6 Discos e partições não são representados como unidades diferentes, como o C:, D:, E:. Tudo faz parte de um único diretório, chamado diretório raiz.

7 O caractere que separa os nomes de diretórios é o / e não o \

Tabela 5: Características de arquivos

Dentro deste diretório temos não apenas todas as partições de disco, mas também o CDROM, drive de disquete e outros dispositivos.

A seguir uma relação parcial dos diretórios básicos de uma instalação Windows XP.

V 0.12.0628-2118 Gilberto Martins – [email protected] 45

Page 46: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

+---Arquivos de programas+---Config.Msi+---Documents and Settings| +---Administrador| \---All Users\---WINDOWS +---addins +---AppPatch +---Config +---Connection Wizard +---Cursors +---Debug +---Downloaded Installations +---Driver Cache +---Drivers +---ehome +---Help +---ime +---java +---Media +---msagent +---msapps +---mui +---nview +---Offline Web Pages +---pchealth +---PeerNet +---Prefetch +---Provisioning +---pss +---Registration +---repair +---Resources +---security +---ShellNew +---SoftwareDistribution +---srchasst +---Sun +---system +---system32 +---Temp +---twain_32 +---Web \---WinSxS

A seguir uma relação dos diretórios encontrados em uma instalação típica do Ubuntu:

V 0.12.0628-2118 Gilberto Martins – [email protected] 46

Page 47: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

/|-- bin|-- boot|-- cdrom -> media/cdrom|-- dev| |-- bus| |-- disk| |-- fd -> /proc/self/fd| |-- input| |-- loop| |-- shm| `-- snd|-- etc| |-- X11| |-- alternatives| |-- apm| |-- apt| |-- vim| |-- wpa_supplicant| `-- xml|-- home| `-- gmartins|-- initrd|-- lib|-- media| `-- cdrom0|-- mnt|-- opt|-- root| `-- Desktop|-- sbin|-- selinux|-- srv|-- sys| |-- block| |-- bus| |-- module| `-- power|-- tmp|-- usr| |-- X11R6| |-- bin| |-- local| |-- sbin| |-- share| `-- src`-- var |-- cache |-- lib |-- local |-- log |-- mail |-- opt |-- spool

Este é um resumo dos principais diretórios de uma distribuição Linux. A maioria das distribuições apresentará os diretórios a seguir.

Diretório Descrição/ Root|---root O diretório principal do usuário root||---home Contém o diretório principal de todos os usuários| |----ftp Alguns serviços criam diretórios aqui| |----httpd| |----samba| |----user1 Diretório principal da conta user1| \----user2 Diretório principal da conta user1||---bin Comandos necessários durante o processo de boot que| podem ser usados por usuários comuns|

V 0.12.0628-2118 Gilberto Martins – [email protected] 47

Page 48: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

|---sbin Igual ao /bin mas contém comandos não destinados a| usuários comuns.||---proc Este sistema de arquivos é virtual e mantém| | informações sobre parâmetros do e configuração do| | sistema| || \----1 Este diretório contém informações sobre o processo| número 1. Cada processo tem um diretório| correspondente dentro de /proc.||---usr Contém todos os comandos, bibliotecas, páginas de| | manual, e arquivos necessários para operação normal| || |----bin Quase todos os comandos de usuário. Alguns outros| | comandos de usuários podem ser achados em /bin ou| | /usr/local/bin| || |----sbin Comandos de administração do sistema| || |----include Arquivos de cabeçalho para a linguagem de programação| | C. Deveria estar abaixo do diretório /usr/lib por| | consistência| || |----lib Arquivos de dados usados por muitos programas e| | subsistemas| || |----local diretório onde as aplicações locais deveriam ser| | instaladas, além de outros arquivos| || |----man Páginas do Manual| || |----info Documentos Info| || |----doc Documentação de vários pacotes| || |----tmp| \----X11R6 Arquivos do sistema X Windows.||---boot Arquivos usados pelo boot loader. Normalmente a| imagem do kernel é guardada aqui||---lib Bibliotecas compartilhadas usadas pelo sistema| \----modules Módulos carregáveis do Kernel, especialmente os| necessários após o boot||---dev Arquivos de dispositivos, como portas seriais, e| unidades de disco||---etc Arquivos de configuração específicos da máquina| || |----skel Quando o diretório principal de um usuário é criado,| | este recebe os arquivos que estão neste diretório| || \----sysconfig Arquivos que configuram o sistema Linux quanto à | rede, teclado, hora e outros||---var Contém arquivos que variam em tamanho e conteúdo,| | relacionados a correio eletrônico, sistema de news| | (notícias), impressão, arquivos de log, arquivos| | temporários, etc| || |----local Dados variáveis de programas instalados em /usr/local| || |----lock Arquivos de travamento. Indicam que um dispositivo| | está em uso ou uma aplicação está em execução| || |----log Arquivos de log de aplicações como o syslog, por| | exemplo| || |----run Arquivos que contém informações sobre o sistema,| | válidas até a próxima reinicialização.| || |----spool Diretórios usados pelos sistemas de email, filas de| | impressão, etc

V 0.12.0628-2118 Gilberto Martins – [email protected] 48

Page 49: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

| || \----tmp Grandes arquivos temporários ou arquivos temporários| que deveriam existir mais do que os que usam o| diretório /tmp||---mnt Ponto de montagem para montagens temporárias|\---tmp Arquivos temporários.

V 0.12.0628-2118 Gilberto Martins – [email protected] 49

Page 50: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.10  Iniciando a sessão de usuárioPara iniciar uma sessão de usuário, é preciso que o mesmo possua um login e senha. Normalmente, em modo texto, a senha digitada no login não gera nenhum caractere na tela, como ocorre em outros casos, onde um asterisco é mostrado a cada caractere.

Note que senha digitada errada, usuários bloqueados ou usuários não cadastrados receberão a mesma mensagem de erro, que normalmente é "login incorreto". As tentativas mal sucedidas serão gravadas no log de erros.

V 0.12.0628-2118 Gilberto Martins – [email protected] 50

Page 51: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Conceitos do Linux

3.11  Encerrando a sessão de usuárioPara encerrar a sessão de trabalho, basta digitar exit, logout ou pressionar ^D.

V 0.12.0628-2118 Gilberto Martins – [email protected] 51

Page 52: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

4  VirtualboxPara nossos exemplos, usaremos recursos de virtualização, oferecidos pelo Virtualbox, da Sun4.

4.1.1  Virtualização

Em computação, virtualização é uma forma de esconder as características físicas de uma plataforma computacional dos utilizadores, mostrando outro hardware virtual, emulando um ou mais ambientes isolados.

4.1.2  Vantagens da Virtualização:• Gerenciamento centralizado;• Instalações simplificadas;• Facilidade para a execução de backups;• Suporte e manutenção simplificados;• Acesso controlado a dados sensíveis e à propriedade intelectual mantendo-os seguros dentro do data center da empresa;• Independência de Hardware;• Disponibilização de novos desktops reduzida para alguns minutos;• Migração de desktops para novo hardware de forma transparente;• Maior disponibilidade e mais fácil recuperação de desktops;• Compatibilidade total com as aplicações.

4.1.3  Inconvenientes da Virtualização:• Grande consumo da capacidade em disco - é necessário espaço para que cada máquina virtual tenha o seu próprio sistema operacional e as aplicações instaladas.;• Dificuldade no acesso direto a hardware, como por exemplo placas gráficas ou dispositivos USB.• Grande consumo de memória RAM dado que cada máquina virtual vai ocupar uma área separada da mesma.

4.1.4  Virtualbox

Virtualbox é o software de virtualização da Sun, que apresenta um baixo consumo de memória, excelente performance e é multiplataforma, podendo ser executado em hosts Mac, Windows e Linux. Por estes e outros motivos, estaremos o utilizando como base para este material.

4 http:\\www.virtualbox.org

V 0.12.0628-2118 Gilberto Martins – [email protected] 52

Page 53: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

4.1.5  Instalação do Virtualbox no Windows

4.1.6  Instalação do Virtualbox no Linux

4.1.7  Criação de máquina virtual

Mostraremos aqui todos os passos necessários para a criação de uma máquina virtual, no VirtualBox. Nesta tela, podemos constatar a existência de uma máquina Virtual de Windows XP. Vamos criar uma máquina Linux Ubuntu, que funcionará como Firewall. Para começar o processo, clique em Novo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 53

Page 54: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Deste ponto em diante, serão solicitadas informações sobre o novo computador virtual. A próxima tela pede que seja informado o nome desta máquina virtual, e o sistema operacional que vai ser instalado nela.

Imagem 6: Tela de abertura do processo de criação de VM

V 0.12.0628-2118 Gilberto Martins – [email protected] 54

Page 55: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Imagem 7: Definição do nome da VM e do Sistema Operacional

V 0.12.0628-2118 Gilberto Martins – [email protected] 55

Page 56: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

A seguir, devemos informar quanta memória RAM esta máquina vai utilizar. Note que esta memória é a memória RAM do sistema hospedeiro, ou seja, do computador onde o VirtualBox está sendo executado. Isto merece atenção, pois a soma da memória usada por máquinas em funcionamento simultâneo deve ser menor que o total disponível no sistema hospedeiro.

Imagem 8: Configuração da capacidade RAM da VM

Lembrando que, semelhante a uma máquina real, esta memória pode ser aumentada ou reduzida posteriormente.

V 0.12.0628-2118 Gilberto Martins – [email protected] 56

Page 57: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

A seguir, será criado o HD que vai ser usado nesta máquina. Podemos informar que um disco já criado vai ser usado, ou poderemos criar um novo, que é o que será feito aqui.

Imagem 9: Escolha do disco virtual existente ou criação de um novo

V 0.12.0628-2118 Gilberto Martins – [email protected] 57

Page 58: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Neste momento, estaremos definindo o tipo do disco virtual a ser utilizado. Para o nosso exemplo, usaremos o formato padrão do VirtualBox, que é o VDI. Os outros dois formatos são usados por outros sistemas de virtualização. Escolher um dos outros dois recursos permite compatibilidade na troca de dispositivos entre os sistemas de virtualização disponíveis no mercado, como VMWare, por exemplo.

Imagem 10: Tipo do disco virtual

V 0.12.0628-2118 Gilberto Martins – [email protected] 58

Page 59: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Aqui vai ser informado como o disco deve ser criado. Um disco virtual é um arquivo, que passa a ser tratado como um HD. Se for definido que este HD tem 8G, este arquivo pode ser criado com todos os 8G de tamanho (Fixed Size), ou pode crescer na medida que o uso demandar (Dinamically Allocated).

Imagem 11: Escolha de tamanho fixo ou dinâmico para o arquivo do disco virtual

V 0.12.0628-2118 Gilberto Martins – [email protected] 59

Page 60: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Este disco virtual também precisa de um nome, e de um diretório para ser gravado. Atualmente, no Linux este diretório é o <User Home Dir>/VirtualBox Vms. Neste exemplo o disco virtual se chama Firewall e seu tamanho é de 8G.

Imagem 12: Definição do nome, local e capacidade do disco virtual

V 0.12.0628-2118 Gilberto Martins – [email protected] 60

Page 61: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Ao término desta etapa, um resumo da criação do disco virtual é mostrado, para checagem e confirmação.

Imagem 13: Resumo de criação do disco virtual

V 0.12.0628-2118 Gilberto Martins – [email protected] 61

Page 62: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Um outro resumo vai ser ainda mostrado, desta vez da máquina completa.

V 0.12.0628-2118 Gilberto Martins – [email protected] 62

Imagem 14: Resumo de criação da máquina virtual completa

Page 63: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Depois de criado, pode ser vista mais uma VM constando na lista das máquinas existentes.

Imagem 15: VM Firewall criado

Neste momento, temos o equivalente a um computador sem sistema operacional nenhum. A partir da tela seguinte começaremos a instalação do sistema operacional deste computador virtual, que para este nosso exemplo será um Ubuntu Server LTS.

V 0.12.0628-2118 Gilberto Martins – [email protected] 63

Page 64: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Para iniciarmos a instalação do novo SO, na tela anterior o item ARMAZENAMENTO deve ser clicado. Isso trará uma tela de configurações de diversos itens, entre eles o armazenamento.

Nesta tela, informaremos onde está a ISO de instalação. Ao lado esquerdo o CD vazio deve ser clicado, e em seguida, ao lado direito o botão com um ícone de CD deve ser clicado. Informaremos o deiretório onde se encontra o ISO de instalação.

Imagem 16: Seleção do ISO de instalação

V 0.12.0628-2118 Gilberto Martins – [email protected] 64

Page 65: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Imagem 17: Iso de instalação do Ubuntu selecionado

Basta clicar em OK para encerrar esta etapa.

V 0.12.0628-2118 Gilberto Martins – [email protected] 65

Page 66: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

4.1.8  Instalação do Linux

Após cumprir as etapas mencionadas acima, é preciso proceder com a instalação do sistema operacional. Neste exemplo, é o Ubuntu Server 10.04. Ao ser iniciada, a máquina virtual vai inicializar pelo CD virtual, que é o arquivo ISO. A primeira interação do usuário vai ser escolher a linguagem a ser usada na instalação.

V 0.12.0628-2118 Gilberto Martins – [email protected] 66

Imagem 18: Escolha da linguagem do instalador

Page 67: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Depois da escolha da linguagem, é mostrado o menu inicial do instalador. A opção escolhida aqui vai ser “Instalar o Ubuntu Server”.

Imagem 19: Menu Inicial

V 0.12.0628-2118 Gilberto Martins – [email protected] 67

Page 68: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

A seguir, é necessário informar qual o tipo de teclado está sendo usado. Os teclados modernos brasileiros funcionarão com a opção Generic 105-key (Intl) PC.

Imagem 20: Seleção do modelo do teclado

V 0.12.0628-2118 Gilberto Martins – [email protected] 68

Page 69: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

A tela a seguir se aplica a modelos desconhecidos de teclado. Normalmente não será necessária, ou seja, deve ser selecionada a opção NÃO.

Imagem 21: Tela de detecção do teclado em uso

V 0.12.0628-2118 Gilberto Martins – [email protected] 69

Page 70: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Na sequência, é preciso definir o país de origem deste teclado. No nosso caso, escolheremos a opção Brazil.

Imagem 22: País de origem

V 0.12.0628-2118 Gilberto Martins – [email protected] 70

Page 71: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Sabendo do país, a instalação relaciona os formatos possíveis de teclado. O nosso teclado ABNT2 estará disponível ao selecionar a opção Brazil.

Imagem 23: Lay out do teclado

V 0.12.0628-2118 Gilberto Martins – [email protected] 71

Page 72: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Nesta etapa é definido o nome da máquina (hostname).

Imagem 24: Hostname da máquina

V 0.12.0628-2118 Gilberto Martins – [email protected] 72

Page 73: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Esta é a tela de configuração do fuso horário. Normalmente, o sistema identifica corretamente o fuso horário. Caso não seja identificado corretamente, responder NÃO aqui vai possibilitar definir o fuso horário corretamente.

Imagem 25: Definição do fuso horário

V 0.12.0628-2118 Gilberto Martins – [email protected] 73

Page 74: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

No caso de máquina virtualizada, devemos usar o disco inteiro ao invés de o dividir em partições.

Imagem 26: Tipo de particionamento

V 0.12.0628-2118 Gilberto Martins – [email protected] 74

Page 75: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Esta tela relaciona os discos existentes no sistema. Como neste exemplo informamos a existência de um só disco, apenas este será relacionado.

Imagem 27: Escolha do disco a ser particionado

V 0.12.0628-2118 Gilberto Martins – [email protected] 75

Page 76: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

O particionamento automático vai criar partições na unidade selecionada. Aqui estas partições podem ser confirmadas. A instalação começa efetivamente neste ponto. Devemos escolher SIM nesta tela.

Imagem 28: Confirmação do particionameto automático

V 0.12.0628-2118 Gilberto Martins – [email protected] 76

Page 77: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Esta tela pede dados para criação da única conta de usuário do sistema. Aqui deve ser informado o nome da pessoa.

V 0.12.0628-2118 Gilberto Martins – [email protected] 77

Page 78: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Nesta tela deve ser informado o nome da conta deste usuário:

V 0.12.0628-2118 Gilberto Martins – [email protected] 78

Page 79: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Nesta tela deve ser informado uma senha para este novo usuário. Neste nosso exemplo a conta aluno vai ter a senha aluno.

V 0.12.0628-2118 Gilberto Martins – [email protected] 79

Page 80: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

A mesma senha deve ser digitada nesta tela, para comparação das senhas. Caso estas senhas não sejam iguais, a senha será solicitada mais uma vez.

V 0.12.0628-2118 Gilberto Martins – [email protected] 80

Page 81: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Como a senha digitada foi a mesma palavra usada para o nome da conta (aluno), o usuário é avisado nesta tela que esta é uma prática insegura de senhas. Neste nosso exemplo, devemos aceitar isso selecionando SIM.

V 0.12.0628-2118 Gilberto Martins – [email protected] 81

Page 82: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

O Linux permite que todo o diretório de um usuário seja encriptado, o que garante que ninguém acessará seus dados, mesmo que o HD seja removido e instalado em outro computador com Linux. Neste caso não se aplica, por isso escolheremos a resposta NÃO.

V 0.12.0628-2118 Gilberto Martins – [email protected] 82

Page 83: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Nesta fase da Instalação, não precisaremos informar os dados do proxy, pois não há este servidor. Basta teclar ENTER e prosseguir. Caso haja, basta passar os dados do proxy como está sendo solicitado na tela a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 83

Page 84: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Como este firewall vai ser todo configurado manualmente, escolheremos Sem atualizações automáticas.

V 0.12.0628-2118 Gilberto Martins – [email protected] 84

Page 85: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Como este firewall vai ser todo configurado manualmente, vamos teclar TAB para que o cursor alcance a opção Continuar:

V 0.12.0628-2118 Gilberto Martins – [email protected] 85

Page 86: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Finalmente, a última ação de instalação, que é instalar o GRUB no HD. Esta tela deve sempre ser aceita, selecionando SIM:

V 0.12.0628-2118 Gilberto Martins – [email protected] 86

Page 87: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Virtualbox

Esta é a tela que indica que a instalação foi encerrada. O sistema vai ser reinicializado quando a opção Continuar for acionada:

V 0.12.0628-2118 Gilberto Martins – [email protected] 87

Page 88: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

5  Inicialização do SistemaAo ligar a máquina, diversas verificações são feitas pela BIOS, principalmente uma verificação geral do hardware da máquina. BIOS é um software pré gravado em memória permanente (firmware) executado por um computador quando o mesmo é ligado. Este software é responsável pelo suporte básico de acesso ao hardware, bom como por iniciar a carga do sistema operacional.5

Após isto, é carregado um pequeno programa que está localizado no primeiro setor do HD chamado de Master Boot Record (Registro Mestre de Inicialização) ou MBR6 (O MBR é o primeiro setor do HD, e contém 512 bytes de informação da estrutura organizacional do disco). Ele pode ter uma destas duas funções:

• O MBR localiza a partição ativa e carrega o primeiro setor desta partição, que contém um pequeno programa com informações sobre o sistema operacional que está nesta partição. Ele simplesmente irá carregar os componentes básicos do sistema, ou irá carregar um gerenciador de inicialização que seja mais poderoso e poderá finalizar o trabalho.

• O MBR carrega informações diretamente de uma das partições e pode utilizá-las para carregar sistemas operacionais de qualquer partição.

A segunda opção é mais interessante e abrangente, e portanto a mais utilizada. Assim, a BIOS utiliza o MBR para carregar um gerenciador de inicialização, podendo inicializar o Linux ou outros sistemas operacionais de qualquer partição ou dispositivo7.

5 http://pt.wikipedia.org/wiki/Bios 6 http://pt.wikipedia.org/wiki/MBR , com modificações7 http://www.conectiva.com/doc/livros/online/9.0/entendendo/boot.html , com modificações

V 0.12.0628-2118 Gilberto Martins – [email protected] 88

Page 89: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

5.1  Gerenciador de InicializaçãoLogo após a primeira parte da inicialização, um gerenciador de inicialização é carregado. Sua principal função é dar ao usuário a possibilidade de escolher um dos sistemas operacionais que podem estar instalados no computador. Ou seja, o gerenciador de inicialização é geralmente utilizado quando existe mais de um sistema operacional na máquina.

Por exemplo, é possível ter Linux e MS Windows instalados na mesma máquina. Entretanto, apenas um deles poderá ser escolhido pelo usuário. Para que o mesmo tenha acesso ao outro Sistema Operacional, é preciso executar o Gerenciador de inicialização novamente, ou seja, é preciso reiniciar o computador.

No caso específico do Linux, temos 2 gerenciadores de inicialização: O GRUB e o LILO. Ambos executam a mesma função, por isto é interessante ter apenas um instalado no sistema.

5.1.1  LILO

5.1.2  GRUB

V 0.12.0628-2118 Gilberto Martins – [email protected] 89

Page 90: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

5.2  Shell (CLI)São programas de sistemas operacionais baseados em Unix que permitem a interação entre o usuário e o computador. Este é um software que recebe, interpreta e executa os comandos de usuário, aparecendo na tela como uma linha de comandos, representada por um prompt, que aguarda na tela os comandos do usuário. Também são conhecidos pela sigla CLI (command line interface).

Nos computadores com Linux destinado a usuários finais, esta é uma opção a ser pouco usada. Mas quando a instalação se destina a servidores, normalmente vai ser a interface mais utilizada.

V 0.12.0628-2118 Gilberto Martins – [email protected] 90

Imagem 29: Shell e Kernel

Page 91: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

5.3  Exemplos de ShellEstes são os shells mais comuns:Nome Nome Completo Dificuldadesh Bourne Shell Alta

csh C Shell Extremamente alta

tcsh TC Shell Tolerável

ksh Korn Shell Baixa

bash Bourne Again Shell Quase nenhuma

Tabela 6: Diferentes Shells

Um sistema Linux pode ter estes e mais outros instalados, mas cada usuário só poderá usar um por vez. Pode-se até mesmo definir que alguns usuários usarão um determinado shell quando se logarem na máquina enquanto os demais terão acesso a outros shells.

No nosso curso estaremos usando o shell bash, o qual tem se tornado um padrão entre as distribuições.

V 0.12.0628-2118 Gilberto Martins – [email protected] 91

Page 92: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

5.4  Documentação

5.4.1  man

Este é o principal recurso de documentação existente. É interessante que o comando less esteja instalado (mais informações em pacotes).

man é uma ferramenta de visualização das paginas de documentação do sistema. Estas páginas estão organizadas em capítulos, de acordo com a seguinte distribuição:Item Significado1 Programas executáveis ou comandos de shell

2 Chamadas do sistema (funções fornecidas pelo kernel)

3 Chamadas de biblioteca (funções dentro das bibliotecas de programas)

4 Arquivos especiais (normalmente encontrados em /dev)

5 Formatos de arquivos de configuração e convenções

6 Jogos

7 Diversos (incluindo macro-pacotes e convenções)

8 Comandos de administração do sistema (em geral, apenas para o root)

9 Rotinas do kernel (não padrão entre as distribuições)

Tabela 7: Capítulos do man

Esta divisão em capítulos é útil quando há ambigüidade, como é o caso do comando passwd e o arquivo de configuração /etc/passwd. Isto é resolvido da seguinte forma:

$ man -k passwd passwd (5) - arquivo de senhas chgpasswd (8) - update group passwords in batch mode chpasswd (8) - update passwords in batch mode gpasswd (1) - administer the /etc/group file lppasswd (1) - add, change, or delete digest passwords. mkpasswd (1) - Overfeatured front end to crypt(3) pam_localuser (8) - require users to be listed in /etc/passwd passwd (1) - change user password passwd (1ssl) - compute password hashes smbpasswd (5) - The Samba encrypted password file smbpasswd (8) - change a user's SMB password update-passwd (8) - safely update /etc/passwd, /etc/shadow and /etc/group

A opcao -k mostra páginas que contêm o texto digitado. Entre as páginas mostradas lemos as duas que nos interessam, sendo uma no capitulo 1 e outra no capitulo 5.

Se apenas digitarmos man passwd a página que vai ser mostrada e a que pertence ao capitulo 1, pois vai ser a primeira a ser localizada. A busca é feita em ordem crescente de capítulos.

Logo, se quisermos saber informações sobre o arquivo /etc/passwd devemos digitar man 5 passwd.

5.4.1.1  Estrutura da página man

Uma página man sempre é subdividida em seções. Em geral (mas nem sempre) a organização destas seções é:

V 0.12.0628-2118 Gilberto Martins – [email protected] 92

Page 93: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

Item DescriçãoNAME Nome do aplicativo

SYNOPSIS Uma ou mais sintaxes do aplicativo, ou seja como deve ser usado na linha de comando, se for o caso

DESCRIPTION Breve descrição da funcionalidade do aplicativo

OPTIONS Relação das opções disponíveis para o aplicativo

FILES Arquivos usados pelo aplicativo

SEE ALSO Sugestões de pesquisa para melhor compreensão/utilização do aplicativo

BUGS Relação de falhas conhecidas

AUTHOR Autores (e ocasionalmente colaboradores) do aplicativo

Tabela 8: Estrutura da página man

5.4.2  help

Mostra informações sobre comandos internos (built-in). Um resumo deste comando é o que segue:$ help help help: help [-s] [pattern ...] Display helpful information about builtin commands. If PATTERN is specified, gives detailed help on all commands matching PATTERN, otherwise a list of the builtins is printed. The -s option restricts the output for each builtin command matching PATTERN to a short usage synopsis.

Uma relação completa destes comandos é obtida digitando help apenas, como no exemplo a seguir:$ sudo help GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu) Esses comandos do shell são definidos internamente. Digite `help' para ver essa lista. Digite `help nome' para saber mais sobre a função `nome'. Use `info bash' para saber mais sobre shell em geral. Use `man -k' ou `info' para saber mais sobre comandos que não estão nessa lista.

Um asterisco (*) próximo ao nome significa que o comando está desabilitado.

JOB_SPEC [&] (( expression )) . filename [arguments] : [ arg... ] [[ expression ]] alias [-p] [name[=value] ... ] bg [job_spec ...] bind [-lpvsPVS] [-m keymap] [-f fi break [n] builtin [shell-builtin [arg ...]] caller [EXPR] case WORD in [PATTERN [| PATTERN]. cd [-L|-P] [dir] command [-pVv] command [arg ...] compgen [-abcdefgjksuv] [-o option complete [-abcdefgjksuv] [-pr] [-o continue [n] declare [-afFirtx] [-p] [name[=val dirs [-clpv] [+N] [-N] disown [-h] [-ar] [jobspec ...] echo [-neE] [arg ...] enable [-pnds] [-a] [-f filename] eval [arg ...] exec [-cl] [-a name] file [redirec exit [n] export [-nf] [name[=value] ...] or false

V 0.12.0628-2118 Gilberto Martins – [email protected] 93

Page 94: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

fc [-e ename] [-nlr] [first] [last fg [job_spec] for NAME [in WORDS ... ;] do COMMA for (( exp1; exp2; exp3 )); do COM function NAME { COMMANDS ; } or NA getopts optstring name [arg] hash [-lr] [-p pathname] [-dt] [na help [-s] [pattern ...] history [-c] [-d offset] [n] or hi if COMMANDS; then COMMANDS; [ elif jobs [-lnprs] [jobspec ...] or job kill [-s sigspec | -n signum | -si let arg [arg ...] local name[=value] ... logout popd [+N | -N] [-n] printf [-v var] format [arguments] pushd [dir | +N | -N] [-n] pwd [-LP] read [-ers] [-u fd] [-t timeout] [ readonly [-af] [name[=value] ...] return [n] select NAME [in WORDS ... ;] do CO set [--abefhkmnptuvxBCHP] [-o opti shift [n] shopt [-pqsu] [-o long-option] opt source filename [arguments] suspend [-f] test [expr] time [-p] PIPELINE times trap [-lp] [arg signal_spec ...] true type [-afptP] name [name ...] typeset [-afFirtx] [-p] name[=valu ulimit [-SHacdfilmnpqstuvx] [limit umask [-p] [-S] [mode] unalias [-a] name [name ...] unset [-f] [-v] [name ...] until COMMANDS; do COMMANDS; done variables - Some variable names an wait [n] while COMMANDS; do COMMANDS; done { COMMANDS ; }

Observe que o comando help sem opção ou argumentos relaciona resumidamente todos os comandos. Para mais detalhes de um destes comandos use o próprio help com o comando em questão. Vamos exemplificar com o comando umask:

$ help umask umask: umask [-p] [-S] [mode] The user file-creation mask is set to MODE. If MODE is omitted, or if `-S' is supplied, the current value of the mask is printed. The `-S' option makes the output symbolic; otherwise an octal number is output. If `-p' is supplied, and MODE is omitted, the output is in a form that may be used as input. If MODE begins with a digit, it is interpreted as an octal number, otherwise it is a symbolic mode string like that accepted by chmod(1).

5.4.3  Ajuda do comando

A maioria dos comandos tem um help interno, que pode ser acessado com a opção --help ou -h. Em alguns casos, apenas digitar o comando sem nenhum parâmetro mostra a ajuda interna deste comando. Veja o exemplo com o comando cd:

$ cd -h bash: cd: -h: invalid option cd: usage: cd [-L|-P] [dir]

$ cd --help bash: cd: --: invalid option cd: usage: cd [-L|-P] [dir]

O comando cd não usa nenhuma das duas opções, mas informa o seu auxílio a cada opção errada. Já os comandos scp e wc dão melhores informações:

V 0.12.0628-2118 Gilberto Martins – [email protected] 94

Page 95: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

$ scp --help usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2

$ wc -h wc: opção inválida -- h Tente `wc --help' para mais informação.

$ wc --help Uso: wc [OPÇÃO]... [ARQUIVO]... Print newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, or when FILE is -, read standard input. -c, --bytes print the byte counts -m, --chars print the character counts -l, --lines print the newline counts -L, --max-line-length print the length of the longest line -w, --words print the word counts --help display this help and exit --version output version information and exit

Comunicar `bugs' para <[email protected]>.

O comando wc não usa -h, ao invés, usa --help.$ ls -h arquivos.md5 Backup_etc.tar.gz GLAUBER_XAVIER.TXT TabNumeros Backup_etc.tar compactado.zip nomes.txt webmin-1.380.tar.gz Backup_etc.tar.bz2 Desktop TabelaAlunos xorg.conf.new

No caso acima, o comando ls (além de outros comandos) tem uma função para a opção -h que nada tem a ver com auxílio.

NOTANOTA IMPORTANTEIMPORTANTE

Como demonstrado acima, observe que cada comando possui seu próprio conjunto de opções. O caso do ls é claro, onde a

opção -h não fornece ajuda nenhuma.

5.4.4  Fontes externas de documentação

Uma das mais marcantes características da comunidade que apóia o Open Source e o Free Software é o compartilhamento de informações. Por isto, diversas pessoas criam páginas na Internet com conteúdo de apoio para novatos ou mesmo para usuários mais experientes. Citaremos aqui alguns bem conhecidos.

5.4.4.1  Guia Foca

De acordo com o autor:

“O Foca GNU/Linux é um guia que traz desde explicações básicas sobre computadores e o sistema GNU/Linux até a administração e segurança do sistema. Os assuntos do guia são explicados em linguagem clara e organizados de forma linear e didática, evitando termos técnicos nos níveis iniciais, até que o usuário se habitue com sua utilização de forma gradual. Isto faz o guia indispensável para o usuário GNU/Linux iniciante ou os mais curiosos. Todas as seções do guia Foca GNU/Linux tem exemplos para melhor compreensão do assunto explicado e links dinâmicos que te levam facilmente a assuntos relacionados (na versão HTML).”

O Guia Foca pode ser acessado em http://focalinux.cipsga.org.br

5.4.4.2  Sistema rautu

De acordo com o site:

V 0.12.0628-2118 Gilberto Martins – [email protected] 95

Page 96: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

“O Rau-Tu é um sistema que cobre diversas áreas de conhecimento, denominadas tópicos. Para formular perguntas, assim como acessar o repositório de perguntas e suas respectivas respostas, não é necessário se cadastrar. “

O sistema rau-tu pode ser acessado em http://www.rau-tu.unicamp.br/linux/

5.4.4.3  Consultas Linux no Google

Esta é uma área do google dedicada a informações sobre linux. Para a poder acessar, no seu browser digite http://www.google.com/linux.

Caracs_de_nomes_arquivos

V 0.12.0628-2118 Gilberto Martins – [email protected] 96

Page 97: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

5.5  Noções básicas do ShellVeremos aqui o mínimo necessário para compreensão correta do funcionamento do shell.

5.5.1  Prompt

É o texto explicativo que inicia qualquer linha de comando. Em geral, apresenta-se desta forma:aluno@maq13:~$

Este prompt é formado pelos seguintes componentes:Componente DescriçãoAluno Nome da conta do usuário logado

@ “em”

maq13: Nome da máquina que está sendo usada (hostname)

~ Diretório em que o usuário se encontra

$ Tipo de usuário ($ para usuários comuns, # para root)

Tabela 9: Componentes do prompt

Em resumo, o prompt diz quem está usando qual máquina e em qual diretório (onde). Este documento foi criado em diversas estações, com distribuições de Linux diferentes.

Por este motivo, neste material, frequentemente serão lidos prompts diferentes, ou apenas o indicador de uma linha executada pelo usuário comum ($) ou pelo usuário root (#).

5.5.2  Como executar comandos

No aviso de comando #(root) ou $(usuário), digite o nome do comando e OBRIGATORIAMENTE tecle Enter ou ^M. O programa/comando digtado será executado. Respeite a obrigatoriedade da existência de espaço entre os componentes de uma linha de comando.

5.5.3  Detalhes da linha de comando

Vamos tomar como exemplo um comando muito comum:$ ls -l /etc

Onde temos:Item Detalheparâmetros -l /etc

opção -l

argumentos /etc

Tabela 10: Comando ls

Comando é o 1º elemento de uma linha de comando, e determina o que vai ser feito. Parâmetros são dados passados ao comandos para serem processados. Podem ser:

• opções: modificam a forma de agir do comando.• argumentos: determinam o objeto da ação do comando.

As opções são identificadas por um hífen e uma letra ou por dois hífens e uma palavra. Como no

V 0.12.0628-2118 Gilberto Martins – [email protected] 97

Page 98: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

exemplo:$ ls -l /etc/ali* --inode309776 -rw-r--r-- 1 root root 201 2007-10-11 12:36 /etc/aliases310591 -rw-r--r-- 1 root root 12288 2007-10-17 19:16 /etc/aliases.db

Note a obrigatoriedade de uso do espaço entre os elementos que compõem uma linha.

5.5.4  Forma geral de mensagem de erro

Quando um comando é executado, caso tudo ocorra bem e nenhum erro aconteça, apenas o prompt é devolvido na linha seguinte, sem nenhuma mensagem. Neste caso, o procedimento ocorreu bem, como nos exemplos a seguir:

$ cat /etc/hostname maq13$

O Comando cat cumpriu sua tarefa, que neste caso é mostrada na linha seguinte, e logo após, o prompt torna a ser mostrado. Mas há casos em que erros acontecem. Vamos considerar a linha a seguir, que está incorreta:

$ ls-l /etcbash: ls-l: command not found

Neste caso a mensagem de erro tem 3 partes, separadas pelo sinal de dois pontos:1. quem gera a mensagem2. o que causou a mensagem3. a mensagem em si

Esta estrutura pode variar. Por vezes, pode-se ter o seguinte tipo de mensagem:$ sort -jsort: opção inválida – j

1. quem gera a mensagem2. a mensagem em si

Existem outras formas de apresentar as mensagens de erro, mas é imprescindível que estas sejam sempre consideradas e lidas. Muitos problemas são identificados pela simples leitura das mensagens de erro.

5.5.5  Variáveis

Uma variável é um objeto nomeado que contém informações usadas por um ou mais aplicativos. Podem ser criadas pelo usuário ou já definidas pelo sistema(Variáveis de Ambiente). Para que se possa usar o conteúdo de uma variável, é necessário que seja usado o caracter cifrão ($) antes do nome da variável. No exemplo a seguir, definimos o valor de uma variável, e logo após fazemos uso desta variável.

$ CURSO="Linux Basico"$ echo "Nome deste curso: " $CURSONome deste curso: Linux Basico

• Primeiro, foi definido um valor para a variável CURSO. Esta variável não existia, de forma que ela foi criada neste momento. Seu conteúdo passa a ser a string “Linux Basico”. Note que há diferença entre maiúsculas e minúsculas.

• Depois, o comando echo mostra a string “Nome deste curso: “ antes do conteúdo da variável CURSO. Repare também a presença do cifrão a antecedendo.

5.5.6  Algumas variáveis de ambiente• PATH - Esta variável contém uma lista de diretórios separados por dois-pontos nos quais o seu

sistema procurará arquivos executáveis. Se você entrar com o nome de um executável (como

V 0.12.0628-2118 Gilberto Martins – [email protected] 98

Page 99: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

por exemplo ls, cp ou mv), este será procurado em cada um dos diretórios existentes na variável PATH. Mas se esse executável não estiver localizado num diretório listado, o seu sistema não o executará (a menos que você entre o caminho completo no comando, como /bin/ls)

• HOME - Esta variável identifica o diretório no qual o usuário está.$ echo $HOME/home/aluno

• PS1 – Usada para construir o prompt de comando. Estes são alguns controles que podem ser usados nesta variável. Mais destes controles podem ser achados no man do bash, sob o título PROMPTING.

$ prompt_velho=$PS1$ PS1="Estacao: \h Hora: \A \n\W\$ "Estacao: maq13 Hora: 14:39 $ Estacao: maq13 Hora: 14:40 $ Estacao: maq13 Hora: 14:40 $ PS1=$prompt_velho$

• SHELL – Indica qual shell está sendo usado.$ echo $SHELL/bin/bash

Usando o comando env podemos visualizar variáveis de ambiente e seus valores atuais.$ envSSH_AGENT_PID=3040TERM=xtermSHELL=/bin/bashGTK_RC_FILES=/etc/gtk/gtkrc:/home/professor/.gtkrc-1.2-gnome2WINDOWID=56623186http_proxy=http://10.1.1.250:3128USER=professorGNOME_KEYRING_SOCKET=/tmp/keyring-Y0qnP4/socketftp_proxy=http://10.1.1.250:3128USERNAME=professorSESSION_MANAGER=local/cts3p-professor:/tmp/.ICE-unix/2997PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/gamesDESKTOP_SESSION=defaultGDM_XSERVER_LOCATION=localPWD=/home/professorLANG=pt_BR.UTF-8

5.5.7  Atalhos de teclado

A linha de comando do Linux tem recursos que facilitam sua operação, que são os chamados atalhos de teclado. A seguir alguns interessantes.

V 0.12.0628-2118 Gilberto Martins – [email protected] 99

Page 100: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

Atalho DescriçãoCTRL+PGUP /CTRL+PGDN

Permite visualizar resultados impressos em tela. Qualquer outra digitação mostra a linha atual de digitação

CTRL+A Desloca o cursor para o início da linha

CTRL+E Desloca o cursor para o final da linha

CTRL+P Linha anterior

CTRL+N Próxima linha

ALT+D Apaga a próxima palavra

ALT+B Desloca o cursor para a palavra anterior

ALT+F Desloca o cursor para a palavra seguinte

CTRL+R

Busca texto no histórico de comando.• A busca é feita começando no último comando do histórico de comandos para

o primeiro.• A medida que o texto que está sendo buscado é digitado, uma nova linha de

resultado é exibida.• Teclar CTRL+R de novo força a localização da próxima ocorrência da string

digitada, mas impede a continuação da digitação

CTRL+L Apaga a tela. Equivale ao comando clear

CTRL+ALT+Fn Sai do ambiente gráfico e abre um dos terminais virtuais. n é normalmente um número de 1 a 6.

ALT+Fn Muda de um terminal virtual em texto para outro. n é normalmente um número de 1 a 6. ALT+F7 normalmente ativa a interface gráfica.

TAB Recurso de autocompletar. Digite um comando ou nome de arquivo, pressione TAB e a linha de comando vai tentar completar este comando ou nome de arquivo.

CTRL+S Interrompe o envio de texto para o terminal. Nada do que é digitado é mostrado em tela, dando a impressão de que o sistema “travou”.

CTRL+QNormaliza o envio de texto para o terminal, suspendendo o efeito do CTRL+S. Tudo o deveria ter sido lançado no terminal desde o pressionamento do CTRL+S é mostrado ao se pressionar o CTRL+Q

CTRL+C Interrompe o processo em execução

CTRL+Z Passo o processo atual para background (segundo plano). Veja o item PROCESSOS.

!palavra Executa a última linha começando com palavra. Interessante teclar CTRL+ALT+E para visualizar a linha antes de a executar

!palavra:p Mostra a última linha começando com palavra

!nnn Executa o comando número nnn. Para saber o número dos comandos, execute o comando history

!nnn:p Mostra o comando número nnn. Para saber o número dos comandos, execute o comando history

!$

Recupera o último componente da linha executada anteriormente. Útil para ser usado como parâmetro de outro comando. Por exemplo:

$ ls -l /etc/X11/xorg.conf$ vim !$

Edita o arquivo /etc/X11/xorg.conf

!$:h Idem ao !$, mas recupera apenas o path do arquivo

!$:t Idem ao !$, mas recupera apenas o nome do arquivo

!$:r Idem ao !$, mas recupera apenas o nome do arquivo sem a extensão

!! Repete o último comando executado

!!:s/antigo/novo Repete o último comando executado, substituindo antigo por novo. Esta substituição acontece apenas na primeira ocorrência de antigo

V 0.12.0628-2118 Gilberto Martins – [email protected] 100

Page 101: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Inicialização do Sistema

Atalho Descrição

!!:gs/antigo/novo Repete o último comando executado, substituindo antigo por novo. Esta substituição acontece em todas as ocorrências de antigo

^antigo^novo Na linha executada anteriormente, substitui a palavra (ou palavras) antigo pela palavra novo. Note que os espaços têm que ser antecedidos por “\”

CTRL+ALT+H Apaga a palavra à esquerda do cursor

CTRL+ALT+BackSpace Quando a interface gráfica estiver em uso, força a sua reinicialização

CTRL+x + CTRL+E Abre a linha digitada no editor de texto padrão do sistema

ALT+Shift+< Início do history (CTRL+pgup)

ALT+Shift+> Final do history (CTRL+pgdn)

CTRL+L Apaga tela

ALT+F Palavra seguinte

ALT+B Palavra anterior

ALT+U Converte PALAVRA em maiúscula a partir do cursor

ALT+L Converte PALAVRA em minúscula a partir do cursor

ALT+C Captaliza a letra do cursor e vai ao final da palavra

ALT+T Troca a palavra sob o cursor com a palavra anterior

CTRL+T Troca o caracter sob o cursor com o caracter anterior

CTRL+D Deleta o caracter sob cursor

ALT+D Deleta a palavra que está sob cursor a partir da posição do cursor, guardando em "kill ring"

CTRL+y Recupera o último item no top de kill-ring

ALT+y Rotaciona os itens em kill-ring

CTRL+x( Começa a gravação de macro

CTRL+x) Encerra a gravação de macro

CTRL+xe Executa a macro

CTRL+U Cancela toda a linha

Tabela 11: Atalhos de Teclado no BASH

V 0.12.0628-2118 Gilberto Martins – [email protected] 101

Page 102: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6  Arquivos e diretóriosNão é obrigatório nem necessário decorar TODOS os comandos básicos do Linux, visto que são muitos, e cada um tem muitos parâmetros. No sistema que estou usando agora, tem uma quantidade enorme de comandos. A resposta a seguir obtive através do pressionamento da tecla tab por 3 vezes seguidas em uma linha vazia do prompt. Experimente fazer isto no seu sistema.

$ Display all 2006 possibilities? (y or n)

Neste momento, há 2006 comandos disponíveis para uso, neste sistema (Ubuntu 8.04).

Mas alguns fazem parte do dia a dia de um administrador, e por isso se tornam mais “memorizáveis”. Entretanto, é fundamental entender que tudo no linux é arquivo. Até mesmo um diretório é um arquivo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 102

Page 103: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.1  DiretóriosSão arquivos que podem conter outros arquivos e/ou diretórios. Nas interfaces gráficas, um diretório é conhecido em outros sistemas operacionais como pasta, o que simplifica a compreensão do conceito por usuários não habituados com a interface CLI.

6.1.1  Criar diretórios

Um diretório é usado para armazenar arquivos e outros diretórios.$ mkdir ~/andar1/porta1 ~/andar1/porta2mkdir: não é possível criar o diretório `/home/aluno/andar1/porta1': Arquivo ou diretório não encontradomkdir: não é possível criar o diretório `/home/aluno/andar1/porta2': Arquivo ou diretório não encontrado

Os diretórios acima (porta1 e porta2) não puderam ser criados pois o diretório andar1 não existe. Note que em uma única linha de comando podem ser criados mais de um diretório.

$ mkdir -pv ~/andar1/porta1 ~/andar1/porta2mkdir: created directory `/home/aluno/andar1'mkdir: created directory `/home/aluno/andar1/porta1'mkdir: created directory `/home/aluno/andar1/porta2'

Usando a opcao -p foi possível a criação de um diretório pai, no caso, o andar1, no mesmo comando usado para criar o porta1 e porta2. Veja que andar1 é criado primeiro.

A opcao -v aciona o modo verbose, que mostra os detalhes da operação a medida que esta vai sendo desenvolvida.

6.1.2  Mudar de diretórios

O comando usado para a troca de diretórios é cd, como no exemplo a seguir:$ cd /etc debian:/etc#

Observe que estávamos em /home/gmartins e mudamos para /etc. Para isso basta informar o diretório após o comando cd. Ainda há outros usos interessantes do comando cd:

Para mudar para o diretório um nível acima usamos o cd ..:$ cd .. $ ls -l total 4 drwxr-xr-x 25 gmartins gmartins 4096 2007-11-24 20:59 gmartins

Para voltarmos para o diretório onde estávamos antes do diretório atual usamos o comando cd -:$ cd /etc $ cd - /home/gmartins

Para voltarmos ao nosso diretório padrão usamos apenas o comando cd:$ pwd/usr/lib/AbiWord-2.4/plugins/AbiWord/glade$ cd $ pwd/home/gmartins

Para entrarmos no diretório padrão de algum usuário do sistema (caso haja permissão):

V 0.12.0628-2118 Gilberto Martins – [email protected] 103

Page 104: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

debian:/usr/lib/AbiWord-2.4/plugins/AbiWord/glade# cd ~gmartins debian:/home/gmartins#

6.1.3  Remover diretórios

Quando for necessário remover um diretório, usaremos rmdir quando o diretório estiver vazio, e rm -rf quando o diretório tiver conteúdo, mas sem nenhuma importância.

Exemplos:$ rmdir -v andar1rmdir: removing directory, andar1rmdir: andar1: Diretório não vazio

$ rmdir -v andar1/porta1rmdir: removing directory, andar1/porta1

$ rmdir -v andar1/porta2rmdir: removing directory, andar1/porta2

$ rmdir -v andar1rmdir: removing directory, andar1

$ ls amsn_received Curso Desktop Documentos Orçamento.jpg

Note que a resposta do comando ls não inclui mais o diretório andar1, confirmando que este foi realmente removido. Como não pudemos eliminar o diretório andar1 (pois havia dois outros diretórios nele), foi preciso remover um por vez.

O mesmo pode ser feito da seguinte maneira:$ rm -rfv andar1removed directory: `andar1/porta1'removed directory: `andar1/porta2'removed directory: `andar1'$ lsamsn_received Curso Desktop Documentos Orçamento.jpg

Note que a resposta do comando ls não inclui mais o diretório andar1, confirmando que este foi realmente removido. Observe também que não há recuperação pra a estrutura removida.

6.1.4  Verificando o diretório atual

A qualquer instante, é possível saber em que diretório estamos simplesmente lendo o prompt. Além deste recurso, há o comando pwd que dá o mesmo resultado:

$ pwd /etc/X11/app-defaults

No exemplo acima, o diretório atual é /etc/X11/app-defaults.

6.1.5  Consultando a estrutura de diretórios

Há momentos em que é necessário ter uma visão da estrutura dos diretórios. E quando esta estrutura é grande, isto pode ser extremamente cansativo e de difícil leitura. Para exemplificar isto, considere um diretório chamado estrutura, que internamente está bem dividido. Em um dos diretórios está um arquivo chamado RelatorioVisitas.odt. Esta é uma forma de vermos esta estrutura com detalhes:

V 0.12.0628-2118 Gilberto Martins – [email protected] 104

Page 105: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ ls -lR estrutura estrutura: total 8 drwx------ 4 root root 4096 2008-06-28 16:23 dir1 drwx------ 4 root root 4096 2008-06-28 16:23 dir2

estrutura/dir1: total 8 drwx------ 2 root root 4096 2008-06-28 16:23 subdir1 drwx------ 2 root root 4096 2008-06-28 16:23 subdir2

estrutura/dir1/subdir1: total 0

estrutura/dir1/subdir2: total 0

estrutura/dir2: total 8 drwx------ 2 root root 4096 2008-06-28 16:26 subdir1 drwx------ 2 root root 4096 2008-06-28 16:23 subdir2

estrutura/dir2/subdir1: total 0 -rw------- 1 root root 0 2008-06-28 16:25 RelatorioVisitas.odt

estrutura/dir2/subdir2: total 0

Um modo mais resumido de vermos a mesma estrutura seria não usar a opção -l do comando ls:$ ls -R estrutura estrutura: dir1 dir2

estrutura/dir1: subdir1 subdir2

estrutura/dir1/subdir1:

estrutura/dir1/subdir2:

estrutura/dir2: subdir1 subdir2

estrutura/dir2/subdir1: RelatorioVisitas.odt

estrutura/dir2/subdir2:

E a forma mais organizada de visualizar esta estrutura de arquivos em CLI seria instalando o comando tree:

$ tree estrutura/ estrutura/ |-- dir1 | |-- subdir1 | `-- subdir2 `-- dir2 |-- subdir1 | `-- RelatorioVisitas.odt `-- subdir2

A no comando tree, a opção -F caracteriza melhor os arquivos e diretórios, usando uma barra ao final do nome do arquivo para diferenciar arquivos de diretórios:

V 0.12.0628-2118 Gilberto Martins – [email protected] 105

Page 106: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ tree -F estrutura/ estrutura/ |-- dir1/ | |-- subdir1/ | `-- subdir2/ `-- dir2/ |-- subdir1/ | `-- RelatorioVisitas.odt `-- subdir2/

E também é possível exibir apenas a estrutura de diretórios, omitindo os arquivos. Para isto, a opção -d deve ser usada:

$ tree -d estrutura/ estrutura/ |-- dir1 | |-- subdir1 | `-- subdir2 `-- dir2 |-- subdir1 `-- subdir2

Há outras opções, e pra isto, o manual do comando deve ser consultado.

V 0.12.0628-2118 Gilberto Martins – [email protected] 106

Page 107: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.2  Ações comuns com arquivosÉ muito importante saber que, em sistemas operacionais baseados em Unix, TUDO é arquivo. Assim, ao se referir a um diretório, estaremos lidando com um arquivo que pode conter outros arquivos. Também quando nos referimos a dispositivo (ex: /dev/hda) também estamos nos referindo a um arquivo que proporciona acesso a um dispositivo físico.

Além disso, todos os arquivos pertencem a um dono (um usuário) e a um grupo de usuários, ainda que o dono não faça parte deste.

Diferente de alguns outros sistemas operacionais, apenas arquivos possuem permissões, e estas dizem o que alguns usuários podem fazer com este arquivo. Essencialmente, um usuário pode ler, gravar ou executar um arquivo.

Arquivos texto são fundamentais para o sistema operacional, e por isso é muito importante que conheçamos diversas ações possíveis com estes arquivos.

6.2.1  Copiar e mover arquivos

Estas são operações comuns e necessárias. Um exemplo de cópia é o seguinte:$ cp ~/nomes.txt ~/Arquivos/

Aqui estamos copiando o arquivo nomes.txt, que esta no meu diretório padrão (~/) para o diretório Arquivos que também esta no meu diretório padrão.

A seguir, as opções mais comuns para usar com o cp.

Opção Descrição-i Pergunta antes de substituir um arquivo existente.

-f Não pede confirmação mas substitui todos os arquivos, caso já existam.

-a Copia arquivos e sub-diretórios

-v Mostra os arquivos enquanto estão sendo copiados (verbose)

-p Preserva atributos do arquivo, se for possível.

-u Copia somente se o arquivo de origem é mais novo que o arquivo de destino ou quando o arquivo de destino não existe.

Tabela 12: Comando cp

Mais de um arquivo pode ser copiado de uma vez para outro diretório:$ cp -v Tab* xorg.conf.new ~/lixo `TabelaAlunos' -> `lixo/TabelaAlunos' `TabNumeros' -> `lixo/TabNumeros' `xorg.conf.new' -> `lixo/xorg.conf.new'

Observe que Tab* corresponde a “arquivos que começam com Tab”. Assim, tivemos TabelaAlunos e TabNumeros sendo copiados. Veja também que a última palavra tem que ser um diretório.

Para mover arquivos, o comando usado é o mv, e a sintaxe de uso é a mesma do cp.$ ls -l erros.txt -rw-r--r-- 1 root root 51 2007-11-22 14:50 erros.txt $ mv ~/erros.txt ~/lixo/ $ ls -l erros.txt ls: erros.txt: Arquivo ou diretório não encontrado $ ls -l ~/lixo/ total 4 -rw-r--r-- 1 root root 51 2007-11-22 14:50 erros.txt

Estas são as opções do comando mv:

V 0.12.0628-2118 Gilberto Martins – [email protected] 107

Page 108: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

Opção Descrição-f Substitui o arquivo de destino sem perguntar.

-i Pergunta antes de substituir.

-v Mostra os arquivos que estão sendo movidos.

Tabela 13: Comando mv

6.2.2  Renomear arquivos 

O mesmo comando de mover arquivos é usado para renomear arquivos. A sintaxe é exatamente a mesma.

$ ls -l ~/erros.txt -rw-r--r-- 1 root root 51 2007-11-22 14:50 /root/erros.txt

$ md5sum ~/erros.txtb3b229e57aa6d11329e8db659b91bf13 /root/erros.txt

$ mv ~/erros.txt ~/ArquivoErros.txt

$ md5sum ~/ArquivoErros.txt b3b229e57aa6d11329e8db659b91bf13 /root/ArquivoErros.txt

$ ls -l ~/erros.txt ls: /root/erros.txt: Arquivo ou diretório não encontrado

6.2.3  Criação de arquivos vazios

Para criação de arquivos vazios, pode ser usada a seguinte sintaxe:$ sudo -s# > arquivo.txt

Vemos aqui que o arquivo está completamente vazio.$ ls -l arquivo.txt -rw-r--r-- 1 aluno aluno 0 2006-08-14 10:57 arquivo.txt

6.2.4  Apagar arquivos

Para apagar um arquivo, deve ser usado o comando rm.$ rm -v ~/ArquivoErros.txt removed `/root/ArquivoErros.txt'

$ rm ~/resultado.txt

$ file resultado.txt ArquivoErros.txt resultado.txt: ERROR: cannot open `resultado.txt' (No such file or directory) ArquivoErros.txt: ERROR: cannot open `ArquivoErros.txt' (No such file or directory)

Vamos agora apagar todos os arquivos que estão dentro de um diretório. O diretório não sera apagado.

V 0.12.0628-2118 Gilberto Martins – [email protected] 108

Page 109: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ rm -v ~/lixo/* removed `/root/lixo/TabelaAlunos' removed `/root/lixo/TabNumeros' removed `/root/lixo/xorg.conf.new'

$ file ~/lixo /root/lixo: directory

6.2.5  Listar arquivos em um diretório

As opções mais comuns são as seguintes:Opção Descrição

-a Lista todos os arquivos (inclusive os ocultos) de um diretório. Lembrando que arquivos ocultos são arquivos cujo nome é iniciado com um ponto.

-A Lista todos os arquivos (inclusive os ocultos) de um diretório, exceto o diretório atual e o de nível anterior.

-d Lista os nomes dos diretórios ao invés do conteúdo.

-F Insere um caracter após arquivos executáveis ('*'), diretórios ('/'), soquete ('='), link simbólico ('@') e pipe ('|'). Seu uso é útil para identificar de forma fácil tipos de arquivos nas listagens de diretórios.

-G Oculta a coluna de grupo do arquivo.

-h Mostra o tamanho dos arquivos em Kbytes, Mbytes, Gbytes.

-HFaz o mesmo que -h, mas usa unidades de 1000 ao invés de 1024 para especificar Kbytes, Mbytes, Gbytes.

-l Usa o formato longo para listagem de arquivos. Lista as permissões, data de modificação, donos, grupos, etc.

-n Usa a identificação de usuário e grupo numérica ao invés dos nomes.

-o Usa a listagem longa sem os donos dos arquivos (mesma coisa que -lG).

-R Lista diretórios e sub-diretórios recursivamente.

--full-time Lista data e hora completa.

Tabela 14: Opções comuns do comando ls

A listagem pode ser classificada usando-se as seguintes opções: Opção Descrição-r Inverte a ordem de classificação.

-c Classifica pela data de alteração.

-X Classifica pela extensão.

-S Classifica pelo tamanho do arquivo

Tabela 15: Opções de Ordenação do comando ls

A forma mais comum de usar o comando ls é com a opção -l, que apresenta as informações a seguir:$ ls -l-rwxr-xr-- 1 gleydson user 8192 nov 4 16:00 teste

Abaixo as explicações de cada parte:

V 0.12.0628-2118 Gilberto Martins – [email protected] 109

Page 110: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

Opção Descrição-rwxr-xr-- Permissões de acesso ao arquivo teste.

1 Quantidade de hard links deste rquivo

Gleydson Nome da conta proprietária do arquivo teste.

user Nome do grupo proprietário do arquivo teste.

8192 Tamanho do arquivo (em bytes).

nov Mês da criação/ última modificação do arquivo.

4 Dia que o arquivo foi criado.

16:00 Hora em que o arquivo foi criado/modificado. Se o arquivo foi criado há mais de um ano, em seu lugar é mostrado o ano da criação do arquivo.

teste Nome do arquivo.

Tabela 16: Detalhes da listagem de um arquivo

V 0.12.0628-2118 Gilberto Martins – [email protected] 110

Page 111: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.3  RedirecionadoresAntes que um comando seja executado, sua entrada e saída podem ser redirecionados usando recursos especiais que são reconhecidos pelo shell. Isto se chama redirecionamento.

Os operadores de redirecionamento podem preceder ou aparecer em qualquer lugar na linha de comando, seja entre dois comandos ou entre um comando e o nome de um arquivo. O redirecionamento é processado na ordem da escrita, ou seja, da esquerda para a direita.

6.3.1  > (stdout)

Redireciona a saída de um programa, comando ou script para algum dispositivo ou arquivo ao invés do dispositivo de saída padrão (tela). Quando é usado com arquivos, este redirecionamento cria ou substitui o conteúdo do arquivo. Por exemplo, vamos usar o comando file nos arquivos que começam com e:

$ file e* examples.desktop: UTF-8 Unicode text exercicio.txt: ASCII text

Usando o redirecionador de saída, este resultado pode ser gravado em um arquivo texto chamado resultado.txt. Vamos supor que este arquivo já exista e que tenha 3,8M de tamanho:

$ ls resultado.txt -sh 3,8M resultado.txt

Agora vamos redirecionar o comando file acima:$ file e* > resultado.txt

Agora podemos ver o conteúdo do arquivo:$ cat ~/resultado.txt examples.desktop: UTF-8 Unicode text exercicio.txt: ASCII text

$ ls -sh resultado.txt 4,0K resultado.txt

NOTANOTA IMPORTANTEIMPORTANTE

O uso do redirecionador de saída (stdout) fará com que, caso o arquivo que vai receber o redirecionamento já existir, seu

conteúdo será perdido. Mas se este arquivo não existir, será criado.

6.3.2  >> (stdout)

Redireciona a saída de um programa, comando ou script para algum dispositivo ou final de arquivo ao invés do dispositivo de saída padrão (tela). A diferença entre este redirecionamento e o anterior, é que ao ser usado com arquivos, adiciona a saída do comando ao final do arquivo existente ao invés de substituir seu conteúdo.

Para exemplificar isto, usaremos o mesmo arquivo usado no redirecionamento anterior:$ cat ~/resultado.txt examples.desktop: UTF-8 Unicode text exercicio.txt: ASCII text

Vamos acrescentar mais duas linhas a este arquivo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 111

Page 112: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ echo "=====" >> ~/resultado.txt $ echo "fim da mensagem" >> ~/resultado.txt

O arquivo permanece como segue:$ cat ~/resultado.txt examples.desktop: UTF-8 Unicode text exercicio.txt: ASCII text ===== fim da mensagem

6.3.3  < (stdin)

Direciona a entrada padrão de arquivo/dispositivo para um comando. Este comando faz o contrário do anterior, ou seja, ele envia dados ao comando.Vamos considerar o comando tr, que vai ser usado neste exemplo aqui para trocar as vogais minúsculas por maiúsculas. O arquivo resultado.txt, do exemplo anterior,vai ser usado como entrada:

$ tr "aeiou" "AEIOU" < ~/resultado.txt ExAmplEs.dEsktOp: UTF-8 UnIcOdE tExt ExErcIcIO.txt: ASCII tExt ===== fIm dA mEnsAgEm

6.3.4  | (pipe)

Liga a saída de um comando (standard output) na entrada (standard input) de outro. Para exemplificar isto, vamos considerar as últimas 6 linhas do arquivo /etc/passwd:

$ tail -6 /etc/passwd rosa:x:1004:1011:,,,:/home/rosa:/bin/bash ana:x:1005:1011:,,,:/home/ana:/bin/bash paula:x:1006:1012:,,,:/home/paula:/bin/bash marta:x:1008:1012:,,,:/home/marta:/bin/bash sonia:x:1009:1006:,,,:/home/sonia:/bin/bash maria:x:1010:1006:,,,:/home/maria:/bin/bash

Deste resultado, vamos considerar apenas a primeira coluna:$ tail -6 /etc/passwd | cut -d: -f1 rosa ana paula marta sonia maria

Usamos o I para usar o resultado do comando tail como entrada para o comando cut. Podemos combinar o resultado desta combinação com o comando xargs, apenas para apresentar os nomes alinhados:

$ tail -6 /etc/passwd | cut -d: -f1 | xargs rosa ana paula marta sonia maria

É possível ordenar este resultado:$ tail -6 /etc/passwd | cut -d: -f1 | sort | xargs ana maria marta paula rosa sonia

As possibilidades são muitas, apenas limitadas pelo conhecimento do técnico.

6.3.5  2> (stderr)

Em geral (mas nem sempre) as mensagens de erro são enviadas para a saída padrão de erro (stderr). Logo, estas saídas não são capturadas por “>”. Observe o exemplo a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 112

Page 113: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ ls -d X* ls: cannot access X*: No such file or directory

$ ls -d X* > ~/result.txt ls: cannot access X*: No such file or directory

$ cat ~/result.txt

Não há arquivos que comecem com X no diretório padrão do usuário, por isso a mensagem “ls: cannot access X*: No such file or directory ”. E como dito, esta mensagem não foi copiada para o arquivo ~/result.txt. Para que este texto seja registrado, o redirecionador “2>” deve ser usado:

$ ls -d X* ls: cannot access X*: No such file or directory

$ ls -d X* 2> ~/result.txt

$ cat ~/result.txt ls: cannot access X*: No such file or directory

A mensagem de erro desta vez foi registrada no arquivo ~/result.txt.

6.3.6  |& (pipe no stderr)

Para que as mensagens de erro enviadas pelo comando em stderr possam ser processadas por outro comando, o redirecionador “|&” deve ser usado. Para demonstração, um erro vai ser provocado:

$ ls -d X* | wc -c ls: cannot access X*: No such file or directory 0

O objetivo seria contar a quantidade de caracteres da mensagem de erro gerada pelo comando ls -l. Como a mensagem de erro do ls é enviada para stderr, nada chegará ao wc.

$ ls -d X* |& wc -c 48

Neste caso, o redirecionador “|&” captura o que for enviado para stderr e envia para o comando seguinte. Podemos perceber que a mensagem de erro tinha 48 bytes.

6.3.7  << (stdin)

Este redirecionamento marca o fim de um bloco. Observe o exemplo a seguir:$ cat << fim > q > a > w > s > fim q a w s

O comando cat aceitou todas as digitações até que fim foi digitado no início de uma linha de texto. Após isso, tudo o que foi digitado foi processado pelo cat, ou seja, redirecionado para a saída padrão.

Assim sendo, este resultado poderia ser redirecionado para um arquivo texto:$ cat << xyz > ~/resultado.txt > ================ > teste de digitação > exemplo de marcador de final de fluxo de texto > xyz

O conteúdo anterior do arquivo resultado.txt se perdeu e em seu lugar entrou o texto digitado acima, que foi encerrado quando uma linha iniciou com xyz. Para conferir isto, podemos ver o conteúdo do arquivo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 113

Page 114: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ cat ~/resultado.txt ================ teste de digitaçãoexemplo de marcador de final de fluxo de texto

NOTANOTA IMPORTANTEIMPORTANTE

Enquanto o "|" (pipe) conecta a saída padrão (stdout) da instrução que o antecede à entrada padrão (stdin) da instrução

seguinte, o “>” envia a saída padrão (stdout) da instrução em um arquivo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 114

Page 115: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.4  Ações avançadas com arquivos texto

6.4.1  Conhecer o tipo de um arquivo

Diferente de outros sistemas operacionais, o Linux não obriga o uso de extensões no nome do arquivo, e assim, frequentemente temos dúvidas em relação ao tipo deste arquivo. Por este motivo, usamos o comando file para determinar o tipo do arquivo.

$ file Documentos/Documentos/: directory

O arquivo Documentos é um diretório. Também é possível o uso de caracteres coringas para consultarmos o tipo de mais de um arquivo.

$ file Desktop/*Desktop/Documentação: directoryDesktop/http_attack_sample.avi: RIFF (little-endian) data, AVI, 800 x 600, 25.00 fps, video: XviDDesktop/joao_eriberto_hlbr.pdf: PDF document, version 1.4Desktop/jre-1_5_0_06-linux-i586.bin: Bourne shell script text executableDesktop/mario_evangelista_voip.pdf: PDF document, version 1.4

Também é possível listar apenas os tipos MIME dos arquivos:$ file -i Desktop/*Desktop/Documentação: application/x-not-regular-fileDesktop/http_attack_sample.avi: video/x-msvideoDesktop/joao_eriberto_hlbr.pdf: application/pdfDesktop/jre-1_5_0_06-linux-i586.bin: application/x-shellscriptDesktop/mario_evangelista_voip.pdf: application/pdf

6.4.2  Visualizar o conteúdo de um arquivo

A forma mais simples e prática de visualizar um arquivo é com o comando cat:$ cat ~/nomes.txt paulaanamartasonia

Já o comando tac é semelhante ao comando cat, exceto que o arquivo é listado da última linha para a primeira.

$ tac ~/nomes.txtsoniamartaanapaula

Também é possível numerar as linhas do arquivo, usando a opção -n.$ cat -n nomes.txt 1 paula 2 ana 3 marta 4 sonia

Note que o tac não numera linhas, como o comando cat com as opções -b e -n. Para isso, podemos usar o cat em uma pipeline:

$ tac ~/nomes.txt | cat -n 1 sonia 2 marta 3 ana 4 paula

Esta é uma relação de opções úteis do cat:

V 0.12.0628-2118 Gilberto Martins – [email protected] 115

Page 116: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

Opção Descrição-A Equivale a -vET, ou seja, representa visualmente caracteres de controle(-v), marca o final

de cada linha com um caracter $ (-E) e representa cada TAB com ^I

-b Numera apenas as linhas não vazias do arquivo

-n Numera todas as linhas do arquivo

Tabela 17: Opções do cat

6.4.3  Visualizar arquivos extensos

Quando o arquivo é pequeno, o uso do cat é preferencial. Mas quando o arquivo é muito extenso, tendo mais linhas do que o que pode ser mostrado em tela, é necessário usar um paginador, que é um comando que permite visualizar arquivos extensos com mais facilidade,proporcionando inclusive procedimentos básicos, como procura de texto.

O paginador mais tradicional no UNIX é o more, que é usado como no exemplo a seguir, onde é mostrado o conteúdo do arquivo /etc/bash_completion:}

$ more /etc/bash_completion

No more, podem ser usados os seguintes comandos:Opções Descriçãob Volta uma página

/ Procura por um texto

n Repete a procura

q encerra o more

ENTER Avança uma linha

ESPAÇO Avança uma página

? Mostra a página de ajuda, que contém mais comandos

Tabela 18: Comandos do more

O less tem muito mais recursos que o more, mas nem sempre acompanha a instalação básica, tendo que ser instalado. A forma de uso é a mesma:

$ less /etc/bash_completion

Com o less o deslocamento no arquivo é mais facilitado, além de possuir mais recursos:Opções Descriçãob Volta uma página

/ Procura por um texto, de local atual até o final do que está sendo paginado

? Procura por um texto, de local atual até o início do que está sendo paginado

n Localiza a próxima ocorrência do texto procurado

N Localiza a ocorrência anterior do texto procurado

q encerra o less

ENTER Avança uma linha

ESPAÇO Avança uma página

h Mostra a página de ajuda, que contém mais comandos. Para a encerrar, digite q

setas Movimentação pelo texto

Tabela 19: Comandos do less

V 0.12.0628-2118 Gilberto Martins – [email protected] 116

Page 117: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.4.4  Visualizar caracteres ocultos

Por vezes, pode ser necessário visualizar o arquivo de uma forma especial. O comando od mostra os caracteres passados a ela, um por um, com seu correspondente código da tabela ASCII. Veja o resultado do exemplo a seguir, que usa o arquivo descrito aqui.

$ cat -n ~/TabelaAlunos | grep -vi an 2 14:Maria Lucia:1110

É difícil determinar quantos caracteres há antes do numero 2. Mas com o od fica simples determinar isto. Para esta tarefa, a melhor combinação de opções é a -cb:

$ cat -n ~/TabelaAlunos | grep -vi an | od -cb0000000 2 \t 1 4 : M a r i a 040 040 040 040 040 062 011 061 064 072 115 141 162 151 141 0400000020 L u c i a : 1 1 1 0 \n 114 165 143 151 141 072 061 061 061 060 0120000033

Repare que cada caractere está sobre o seu código OCTAL da tabela ASCII, que pode ser integralmente obtido a partir do comando man ascii. Vemos que o caractere 040 é um espaço, e que o caractere 011 é uma tabulação. É possível observar que cada linha termina com um caractere CTRL+N, como no exemplo a seguir:

$ cat -n ~/TabelaAlunos | grep -i d | od -cb0000000 1 \t 1 : M a r c o s 040 040 040 040 040 061 011 061 072 115 141 162 143 157 163 0400000020 A n d r e : 2 0 3 \n 3 101 156 144 162 145 072 062 060 063 012 040 040 040 040 040 0630000040 \t 1 0 1 : A n d r e i a M a r 011 061 060 061 072 101 156 144 162 145 151 141 040 115 141 1620000060 t i n s : 2 0 1 \n 6 \t 164 151 156 163 072 062 060 061 012 040 040 040 040 040 066 0110000100 4 4 : S a n d r a M a r c i a 064 064 072 123 141 156 144 162 141 040 115 141 162 143 151 1410000120 : 1 1 0 \n 072 061 061 060 0120000125

Cada final de linha é marcado com um CTRL+N, aqui representado por /n. Alem disso, a numeração no lado esquerdo é a contagem de bytes, em hexadecimal. Cada linha tem 16 caracteres, ou seja, de 0 a F (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F).

Todos os caracteres disponíveis em octal, hexadecimal e decimal podem ser obtidos através do comando man ascii.

6.4.5  Visualizar trechos de um arquivo

É possível que seja necessário visualizar apenas uma parte do arquivo, ao invés dele completo, ou seja, apenas o início do arquivo, o final do arquivo ou um certo trecho do arquivo.

6.4.5.1  Visualizando o início do arquivo

O comando head mostra as primeiras linhas do arquivo:$ head -3 ~/TabelaAlunos 1:Marcos Andre:203 14:Maria Lucia:1110 101:Andreia Martins:201

Para obter as três primeiras linhas do arquivo, bastou usar o próprio 3 como opção (-3). Se nada for especificado, o padrão é mostrar as primeiras 10 linhas.

V 0.12.0628-2118 Gilberto Martins – [email protected] 117

Page 118: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.4.5.2  Visualizando o final do arquivo

O comando tail mostra as últimas linhas do arquivo:$ tail -3 ~/TabelaAlunos 28:Carla Santos:110 512:Antonio Carlos:203 44:Sandra Marcia:110

Para obter as três últimas linhas do arquivo, bastou usar o próprio 3 como opção (-3). Se nada for especificado, o padrão é mostrar as últimas 10 linhas.

6.4.5.3  Visualizando o meio do arquivo

Uma aplicação interessante seria mostrar algumas linhas no meio de um arquivo texto. Vamos usar como exemplo o arquivo ~/TabelaAlunos acima, que tem apenas 6 linhas:

$ cat -b ~/TabelaAlunos 1 1:Marcos Andre:203 2 14:Maria Lucia:1110 3 101:Andreia Martins:201 4 28:Carla Santos:110 5 512:Antonio Carlos:203 6 44:Sandra Marcia:110

O objetivo é mostrar apenas da linha 2 até a linha 4. Para começar, mostramos apenas até a quarta linha:

$ cat -b ~/TabelaAlunos | head -4 1 1:Marcos Andre:203 2 14:Maria Lucia:1110 3 101:Andreia Martins:201 4 28:Carla Santos:110

E deste resultado, apenas as 3 últimas linhas interessam:$ cat -b ~/TabelaAlunos | head -4 | tail -3 2 14:Maria Lucia:1110 3 101:Andreia Martins:201 4 28:Carla Santos:110

Usando o pipe (|), foi possível combinar o resultado de comandos para atingir nosso objetivo.

6.4.6  Ordenação de arquivos

É comum ordenar uma sequência de texto. E esta ordenação pode ter diversas características, como ordenação reversa, em ordem alfabética, etc. O comando sort atende perfeitamente esta necessidade.

6.4.6.1  Ordenação simples

Quando for necessário que o conteúdo de um arquivo esteja sob uma certa ordem (alfabética, crescente, numérica, reversa, etc), o comando sort deve ser utilizado.

V 0.12.0628-2118 Gilberto Martins – [email protected] 118

Page 119: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ cat ~/nomes.txt paulaanamartasonia

$ sort ~/nomes.txt anamartapaulasonia

6.4.6.2  Ordenação reversa

Esta ordenação pode ainda ser reversa, usando a opção -r:$ sort -r ~/nomes.txt soniapaulamartaana

6.4.6.3  Ordenação numérica

Vamos agora usar um arquivo que tenha, de cada aluno, a matrícula, o nome e o número da sala. Crie este arquivo seguindo o exemplo abaixo:

$ cat > ~/TabelaAlunos1:Marcos Andre:20314:Maria Lucia:1110101:Andreia Martins:20128:Carla Santos:110512:Antonio Carlos:20344:Sandra Marcia:110

Vamos então usar o comando sort para ordenar este arquivo. Entretanto, veremos que o resultado não é o que esperávamos.

$ sort ~/TabelaAlunos 101:Andreia Martins:20114:Maria Lucia:11101:Marcos Andre:20328:Carla Santos:11044:Sandra Marcia:110512:Antonio Carlos:203

O arquivo acima não está em ordem, como podemos ver. Isto por que cada linha inicia com caracteres numéricos. Para estes casos, o correto seria usar a opção -n:

$ sort -n ~/TabelaAlunos 1:Marcos Andre:20314:Maria Lucia:111028:Carla Santos:11044:Sandra Marcia:110101:Andreia Martins:201512:Antonio Carlos:203

6.4.6.4  Ordenação por campo de tamanho variável

Este arquivo tem ainda um caractere delimitador, os "dois pontos". Assim, temos 3 campos por linha. Isso permite que a ordenação possa ocorrer em algum dos campos. Como no exemplo a seguir, onde o arquivo será ordenado tomando por base o conteúdo da segunda coluna (-k2):

V 0.12.0628-2118 Gilberto Martins – [email protected] 119

Page 120: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ sort -t: -k2 ~/TabelaAlunos 101:Andreia Martins:201512:Antonio Carlos:20328:Carla Santos:1101:Marcos Andre:20314:Maria Lucia:111044:Sandra Marcia:110

No próximo exemplo, a ordem é dada pelo número da sala (-k3):$ sort -n -t: -k3 ~/TabelaAlunos 28:Carla Santos:11044:Sandra Marcia:110101:Andreia Martins:2011:Marcos Andre:203512:Antonio Carlos:20314:Maria Lucia:1110

6.4.6.5  Ordenação por campo de tamanho fixo

Também é possível ordenar arquivos cujos campos tenham tamanho fixo. Para nosso exemplo, vamos usar um arquivo com o seguinte lay-out:

• Matricula: 4 caracteres• Sala 3 caracteres$ cat ~/TabNumeros 423110162531012635102736410228361018346102

Ordenando pela sala:$ sort ~/TabNumeros -k1.5,1.7 -k2.1,2.4283610142311016253101263510273641028346102

No exemplo acima, dissemos que o arquivo deve ser ordenado pela sala (-k1.5,1.7), ou seja, a primeira chave de ordenação começa na coluna 5 e vai até a coluna 7, e depois pela matrícula (-k2.1,2.4) ou seja, a segunda chave de ordenação começa na coluna 1 e vai até a coluna 4.

6.4.6.6  Numerar linhas de um arquivo texto

Além do cat -n, o comando nl também gera numeração de linhas, como podemos perceber nos exemplos a seguir:

$ nl nomes.txt 1 paula 2 ana 3 marta 4 sonia

$ cat -n nomes.txt 1 paula 2 ana 3 marta 4 sonia

Mas vejamos outro exemplo, onde o arquivo possui linhas em branco:

V 0.12.0628-2118 Gilberto Martins – [email protected] 120

Page 121: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ cat -n /etc/anacrontab 1 # /etc/anacrontab: configuration file for anacron 2 3 # See anacron(8) and anacrontab(5) for details. 4 5 SHELL=/bin/sh 6 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 7 8 # These replace cron's entries 9 1 5 cron.daily nice run-parts --report /etc/cron.daily 10 7 10 cron.weekly nice run-parts --report /etc/cron.weekly 11 @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly 12

$ nl /etc/anacrontab 1 # /etc/anacrontab: configuration file for anacron 2 # See anacron(8) and anacrontab(5) for details. 3 SHELL=/bin/sh 4 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 5 # These replace cron's entries 6 1 5 cron.daily nice run-parts --report /etc/cron.daily 7 7 10 cron.weekly nice run-parts --report /etc/cron.weekly 8 @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly

As linhas em branco não foram numeradas. Isto pode ser resolvido com:$ nl -ba /etc/anacrontab 1 # /etc/anacrontab: configuration file for anacron 2 3 # See anacron(8) and anacrontab(5) for details. 4 5 SHELL=/bin/sh 6 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 7 8 # These replace cron's entries 9 1 5 cron.daily nice run-parts --report /etc/cron.daily 10 7 10 cron.weekly nice run-parts --report /etc/cron.weekly 11 @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly 12

6.4.7  Extrair campos de um arquivo

Para este exemplo, vamos considerar o arquivo ~/TabelaAlunos, cujo conteúdo é:$ cat ~/TabelaAlunos 1:Marcos Andre:20314:Maria Lucia:1110101:Andreia Martins:20128:Carla Santos:110512:Antonio Carlos:20344:Sandra Marcia:110

Esta operação é feita usando o comando cut. Para isto ele considera a existência de um caractere delimitador de campos, e uma ordem dos campos, ou seja, um registro tem o campo 1, o campo 2, etc.

Assim, informando que o delimitador era um : (dois pontos), é possível extrair o conteúdo do campo 2 de cada registro, conforme mostrado a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 121

Page 122: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ cut ~/TabelaAlunos -d: -f2Marcos AndreMaria LuciaAndreia MartinsCarla SantosAntonio CarlosSandra Marcia

6.4.7.1  Extraindo campos de tamanho fixo

Vamos supor um outro tipo de arquivo, onde o lay-out do arquivo estabelece que cada campo vai ter um tamanho fixo pré-definido. Para nosso exemplo, vamos usar um arquivo com o seguinte lay-out:

• Matrícula: 4 caracteres• Sala: 3 caracteres$ cat ~/TabNumeros 423110162531012635102736410228361018346102

6.4.7.2  Extraindo até um determinado caracter

Mostrar até o quarto caracter (-4):$ cut ~/TabNumeros -c-4423162532635736428368346

6.4.7.3  Extraindo a partir de um determinado caracter

Mostrar a partir do quinto caractere (5-):$ cut ~/TabNumeros -c5101101102102101102

6.4.7.4  Extraindo uma seqüência de caracteres

Mostrar do terceiro ao sexto caractere (3-6):$ cut ~/TabNumeros -c3-6311053103510641036104610

6.4.8  Procurar texto em um arquivo

Frequentemente o administrador Unix precisa localizar textos em arquivos enormes. A saída em alguns sistemas operacionais é construir um software de busca. Entretanto, nem sempre este software atende alguns casos específicos, e as vezes este software exige uma interface gráfica.

V 0.12.0628-2118 Gilberto Martins – [email protected] 122

Page 123: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

No Unix, e nos sistemas operacionais derivados, há o grep, que é uma ferramenta versátil de busca em arquivos texto. Aqui abordaremos algumas características suas. Para isso, vamos considerar o seguinte exemplo:

$ cat ~/TabelaAlunos 1:Marcos Andre:20314:Maria Lucia:1110101:Andreia Martins:20128:Carla Santos:110512:Antonio Carlos:20344:Sandra Marcia:110

6.4.8.1  Busca simples

Deste texto, queremos ver apenas as linhas onde se encontra a string Ma, considerando a diferença entre maiúsculas e minúsculas:

$ grep Ma ~/TabelaAlunos 1:Marcos Andre:20314:Maria Lucia:1110101:Andreia Martins:20144:Sandra Marcia:110

6.4.8.2  Busca texto com espaços

Se a procura incluir um ou mais espaços em branco, é preciso usar as aspas ou “escapar” o espaço com o \:

$ grep "o " ~/TabelaAlunos 512:Antonio Carlos:203

$ grep -i a\ m ~/TabelaAlunos 101:Andreia Martins:201 44:Sandra Marcia:110

6.4.8.3  Busca texto com “ignore case”

Também é possível desconsiderar a diferença entre maiúsculas e minusculas, usando a opção -i:$ grep -i an ~/TabelaAlunos1:Marcos Andre:203101:Andreia Martins:20128:Carla Santos:110512:Antonio Carlos:20344:Sandra Marcia:110

6.4.8.4  Exclusão de texto

Alem disso, pode ser necessário obter as linhas que não contêm a string:$ grep -vi an ~/TabelaAlunos 14:Maria Lucia:1110

6.4.8.5  Numerando o resultado

Pode ser necessário numerar as linhas obtidas. O grep também tem uma solução para este caso:$ grep -nvi an ~/TabelaAlunos 2:14:Maria Lucia:1110

Note que neste nosso exemplo, o número da linha parece pertencer a própria linha. Usar o cat -n poderia dar um resultado visualmente melhor:

V 0.12.0628-2118 Gilberto Martins – [email protected] 123

Page 124: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ cat -n ~/TabelaAlunos | grep -vi an 2 14:Maria Lucia:1110

6.4.8.6  Mostrando linhas próximas

Sendo necessário, o grep pode mostrar N linhas antes do texto localizado ou M linhas depois do texto localizado. Aqui será mostrada 2 linhas depois da linha que contém Carla (-A2):

$ grep -A2 -i carla TabelaAlunos 28:Carla Santos:110 512:Antonio Carlos:203 44:Sandra Marcia:110

Neste exemplo, 2 linhas antes (-B2):$ grep -B2 -i carla TabelaAlunos 14:Maria Lucia:1110 101:Andreia Martins:201 28:Carla Santos:110

Também é possível combinar as duas operações:$ grep -A2 -B2 -i carla TabelaAlunos 14:Maria Lucia:1110 101:Andreia Martins:201 28:Carla Santos:110 512:Antonio Carlos:203 44:Sandra Marcia:110

6.4.9  Conferir integridade de arquivos

Quando for necessário garantir que um arquivo recebido é exatamente igual ao arquivo enviado, poderemos usar o comando md5sum para isso. Gera uma chave MD5 de verificação do arquivo. Por exemplo:

$ cat ~/nomes.txt paulaanamartasonia

$ md5sum ~/nomes.txt b0ea27f5809aca7943e6538e30e10541 /root/nomes.txt

Se alterarmos um único caractere, a chave MD5 sera completamente diferente. Para nosso exemplo, vamos alterar paula para paulo.

$ cat ~/nomes.txt pauloanamartasonia

$ md5sum ~/nomes.txt aa087d6327c44341480ad29cc821f039 /root/nomes.txt

Desta forma, a chave MD5 é muito indicada para garantir que um arquivo enviado chegou idêntico ao seu destino.

Também é possível fazer a checagem de um grupo de arquivos:$ md5sum ~/TabelaAlunos ~/TabNumeros ~/nomes.txt > ~/arquivos.md5$ cat ~/arquivos.md5 0167abc5b39b2585afc40218fda7889f /root/TabelaAlunosb9788891a4c730cce8ce2fd0a862df75 /root/TabNumerosaa087d6327c44341480ad29cc821f039 /root/nomes.txt

Para que seja feita uma checagem da integridade destes arquivos, podemos usar a opcao -c seguida do nome do arquivo que contem as chaves MD5:

V 0.12.0628-2118 Gilberto Martins – [email protected] 124

Page 125: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ md5sum -c ~/arquivos.md5 /root/TabelaAlunos: A soma coincide/root/TabNumeros: A soma coincide/root/nomes.txt: A soma coincide

Vamos uma vez mais alterar o arquivo nomes.txt, onde o nome paulo sera mudado de novo para paula:

$ cat ~/nomes.txt paulaanamartasonia

Fazendo a checagem de novo, podemos observar que uma diferença é identificada:$ md5sum -c ~/arquivos.md5 /root/TabelaAlunos: A soma coincide/root/TabNumeros: A soma coincide/root/nomes.txt: A soma não coincidemd5sum: WARNING: 1 of 3 computed checksums did NOT match

V 0.12.0628-2118 Gilberto Martins – [email protected] 125

Page 126: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.5  Compactação de ArquivosAs ferramentas de compactação de arquivos são úteis para compactar um ou mais arquivos, para que sejam distribuídos, para fins de backup, e/ou para disponibilizar espaço em disco através da compressão temporária de arquivos (ou mesmo diretórios) pouco usados. Neste capítulo, veremos as mais populares ferramentas de compressão.

Para exemplo, usaremos um arquivo temporário de 49 mega.$ ls -lh ArquivoGrande.huge -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge

Para fazer este arquivo, digite as seguintes linhas no seu sistema operacional:$ for i in $(seq 1 10); do ls -liR / >> ~/ArquivoGrande.huge; done

Dependendo de como está instalado o sistema operacional, os tamanhos do arquivo serão diferentes. Além disso, para garantir que o arquivo não sofre alterações pelos processos de compactação, é importante gerar uma chave md5 antes de começarmos.

$ md5sum ArquivoGrande.huge > arquivos.md5

A seguir, veremos algumas técnicas de compressão de arquivos.

6.5.1  zip / unzip

O zip grava um ou mais arquivos em um mesmo arquivo do tipo zip, e também informações sobre os arquivos (nomes, diretórios, data da última alteração e informação necessária para checagem de integridade de cada arquivo). Uma estrutura inteira de diretório pode ser guardada em um arquivo zip com um único comando.

6.5.1.1  Instalação

Provavelmente esta ferramenta já está instalada em seu sistema operacional. Mas se não estiver, e se o acesso à internet estiver disponível, é possível instalar o pacote zip usando o apt-get:

$ sudo apt-get install zip

Também é possível usar o aptitude para este fim:$ sudo aptitude install zip

Veja mais informações em Gerenciamento de pacotes.

6.5.1.2  Compactação

Para compactar o arquivo:$ zip compactado ArquivoGrande.huge updating: ArquivoGrande.huge (deflated 87%)

$ ls -lh ArquivoGrande.huge compactado.zip -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge -rw-r--r-- 1 root root 6,2M 2007-11-25 13:16 compactado.zip

Criamos um arquivo chamado compactado.zip de apenas 6,2M. também é possível guardar mais de uma arquivo no mesmo arquivo compactado pelo zip:

$ zip compactado ArquivoGrande.huge ~/arquivos.md5 adding: ArquivoGrande.huge (deflated 87%) adding: root/arquivos.md5 (deflated 22%)

Observe que o arquivo ArquivoGrande.huge foi incluído sem considerar o diretório em que ele está, enquanto o arquivo arquivos.md5 foi incluído com a informação de diretório que ele ocupa. Isto por

V 0.12.0628-2118 Gilberto Martins – [email protected] 126

Page 127: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

que mencionamos o caminho completo do arquivo na linha do zip.

6.5.1.3  Consulta de conteúdo

Para saber quais arquivos estão dentro de uma arquivo zip:$ unzip -v compactado.zip Archive: compactado.zip Length Method Size Ratio Date Time CRC-32 Name -------- ------ ------- ----- ---- ---- ------ ---- 50962776 Defl:N 6459341 87% 11-25-07 13:10 44efba2f ArquivoGrande.huge 154 Defl:N 120 22% 11-21-07 17:52 56c4b8f9 root/arquivos.md5 -------- ------- --- ------- 50962930 6459461 87% 2 files

6.5.1.4  Extração

Para extrair apenas um arquivo:$ cd lixo debian:~/lixo# ls -l total 0 debian:~/lixo# unzip ../compactado.zip Arqui* Archive: ../compactado.zip inflating: ArquivoGrande.huge debian:~/lixo# ls -lh total 49M -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge

Para extrair todo o conteúdo do arquivo compactado:$ cd lixo debian:~/lixo# unzip ../compactado.zip Archive: ../compactado.zip inflating: ArquivoGrande.huge inflating: root/arquivos.md5

$ ls -lh total 49M -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge drwxr-xr-x 2 root root 4,0K 2007-11-25 14:12 root

Para garantir que a estrutura toda foi descompactada, usaremos o comando tree:$ tree . |-- ArquivoGrande.huge `-- root `-- arquivos.md5

1 directory, 2 files

Observe que o arquivo arquivos.md5 foi incluído no arquivo zip dentro de um diretório root, e assim também foi extraído.

Finalmente, o zip é o único compactador (dos que abordaremos) que gera um outro arquivo compactado ao final do processo, deixando o(s) arquivo(s) original(is) intacto(s).

6.5.2  gzip / gunzip

Sempre que possível, o gzip troca o arquivo original pelo compactado, acrescentando a extensão gz. As permissões e datas de acesso e modificação não são alterados.

6.5.2.1  Instalação

Provavelmente esta ferramenta já está instalada em seu sistema operacional. Mas se não estiver, e se o acesso à internet estiver disponível, é possível instalar o pacote usando o apt-get:

V 0.12.0628-2118 Gilberto Martins – [email protected] 127

Page 128: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ sudo apt-get install zip

Também é possível usar o aptitude para este fim:$ sudo aptitude install zip

Veja mais informações em Gerenciamento de pacotes.

6.5.2.2  Compactação

Criando um arquivo compactado:$ ls -lh ArquivoGrande.huge -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge $ gzip ArquivoGrande.huge $ ls -lh ArquivoGrand* -rw-r--r-- 1 root root 6,2M 2007-11-25 13:10 ArquivoGrande.huge.gz

Observe que o arquivo original deixa de existir. Para preservar o arquivo original:$ gzip ArquivoGrande.huge -c > ~/ArquivoGrande.huge.gz $ ls -lh ArquivoGrand* -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge -rw-r--r-- 1 root root 6,2M 2007-11-25 15:14 ArquivoGrande.huge.gz

6.5.2.3  Consulta de conteúdo

Para obter dados da compressão:$ gzip -l ArquivoGrande.huge.gz compressed uncompressed ratio uncompressed_name 6459378 50962776 87.3% ArquivoGrande.huge

6.5.2.4  Extração

Para descompactar o arquivo:$ gunzip ArquivoGrande.huge.gz $ ls -lh ArquivoGrand* -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge

6.5.3  bzip2 / bunzip2

Sempre que possível, o bzip2 troca o arquivo original pelo compactado, acrescentando a extensão bz2. As permissões e datas de acesso e modificação não são alterados.

6.5.3.1  Instalação

Provavelmente esta ferramenta já está instalada em seu sistema operacional. Mas se não estiver, e se o acesso à internet estiver disponível, é possível instalar o pacote usando o apt-get:

$ sudo apt-get install bzip2

Também é possível usar o aptitude para este fim:$ sudo aptitude install bzip2

Veja mais informações em Gerenciamento de pacotes.

6.5.3.2  Compactação

Para compactar o arquivo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 128

Page 129: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ bzip2 ArquivoGrande.huge $ ls -lh ArquivoGrand* -rw-r--r-- 1 root root 4,5M 2007-11-25 13:10 ArquivoGrande.huge.bz2

Observe que o arquivo original deixa de existir. Para preservar o arquivo original:$ ls -lh ArquivoGrande.huge -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge $ bzip2 -k ArquivoGrande.huge

$ ls -lh ArquivoGrande.huge* -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge -rw-r--r-- 1 root root 4,5M 2007-11-25 13:10 ArquivoGrande.huge.bz2

6.5.3.3  Extração

Para descompactar o arquivo:$ bunzip2 ArquivoGrande.huge.bz2 $ ls -lh ArquivoGrande.huge -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge

6.5.4  tar

Esta ferramenta não faz compressão por si só, mas permite que muitos arquivos possam ser guardados em um único arquivo feito pelo tar (este arquivo é chamado de tarfile ou tarball). Opcionalmente pode ser usado o gzip ou o bzip2 para compressão. Esta é uma forma muito popular de distribuir software pela internet, por isso é muito importante dominar esta ferramenta. Inicialmente, esta ferramenta foi desenvolvida para uso em back up de dados em fitas magnéticas.

Estas são as principais opções do tar:Opções Descriçãoc Cria um tarball

x Extrai arquivos de um tarball

t Mostra os arquivos de um tarball

j Usa bzip2 para compressão

z Usa gzip para compressão

v Modo verbose

f Indica o nome do tarball

Tabela 20: Opções do tar

6.5.4.1  Extensões

6.5.4.2  Criação

Para criar um tarball sem compactação:$ du -sh /etc/X11/Xsession.d/ 32K /etc/X11/Xsession.d/

$ tar -cf Backup_etc.tar /etc/X11/Xsession.d/ tar: Removing leading `/' from member names

$ ls -lh Backup_etc* -rw-r--r-- 1 root root 20K 2007-11-25 15:39 Backup_etc.tar

Agora vamos criar um tarball usando compressão gzip:

V 0.12.0628-2118 Gilberto Martins – [email protected] 129

Page 130: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ du -sh /etc/X11/app-defaults/ 236K /etc/X11/app-defaults/

$ tar -czf Backup_etc.tar.gz /etc/X11/app-defaults/ tar: Removing leading `/' from member names

$ ls -lh Backup_etc.tar.gz -rw-r--r-- 1 root root 32K 2007-11-25 15:51 Backup_etc.tar.gz

Em geral, a extensão usada para este tarball é .tar.gz ou .tgz

Vamos repetir o procedimento, desta vez usando bzip2:$ tar -cjf Backup_etc.tar.bz2 /etc/X11/app-defaults/ tar: Removing leading `/' from member names

$ ls -lh Backup_etc.tar.bz2 -rw-r--r-- 1 root root 30K 2007-11-25 15:53 Backup_etc.tar.bz2

6.5.4.3  Consulta de Conteúdo

Para visualizar o conteúdo de um tarball:$ tar -tf Backup_etc.tar etc/X11/Xsession.d/ etc/X11/Xsession.d/75dbus_dbus-launch etc/X11/Xsession.d/99x11-common_start etc/X11/Xsession.d/30x11-common_xresources etc/X11/Xsession.d/55gnome-session_gnomerc etc/X11/Xsession.d/90x11-common_ssh-agent etc/X11/Xsession.d/20x11-common_process-args etc/X11/Xsession.d/50x11-common_determine-startup

Para visualizar o conteúdo de um tarball com detalhes:$ tar -tvf Backup_etc.tar drwxr-xr-x root/root 0 2007-11-22 22:16 etc/X11/Xsession.d/ -rw-r--r-- root/root 381 2006-12-12 19:54 etc/X11/Xsession.d/75dbus_dbus-launch -rw-r--r-- root/root 166 2007-02-13 07:02 etc/X11/Xsession.d/99x11-common_start -rw-r--r-- root/root 899 2007-06-11 23:50 etc/X11/Xsession.d/30x11-common_xresources -rw-r--r-- root/root 361 2007-07-08 05:48 etc/X11/Xsession.d/55gnome-session_gnomerc -rw-r--r-- root/root 612 2007-02-13 07:02 etc/X11/Xsession.d/90x11-common_ssh-agent -rw-r--r-- root/root 1878 2007-06-11 23:50 etc/X11/Xsession.d/20x11-common_process-args -rw-r--r-- root/root 1561 2007-02-13 07:02 etc/X11/Xsession.d/50x11-common_determine-startup

6.5.4.4  Extração

Para descompactar um tarball:$ tar xf ../Backup_etc.tar $ tree . `-- etc `-- X11 `-- Xsession.d |-- 20x11-common_process-args |-- 30x11-common_xresources |-- 50x11-common_determine-startup |-- 55gnome-session_gnomerc |-- 75dbus_dbus-launch |-- 90x11-common_ssh-agent `-- 99x11-common_start

Note que a mesma estrutura de diretórios foi criada no diretório /root/lixo.

6.5.5  Dividir um arquivo

O comando split permite dividir qualquer arquivo em pedaços de tamanho pré definido. Isto é interessante quando, por exemplo, é necessário enviar por email um arquivo muito grande (15M por exemplo), mas a capacidade máxima que o email suporta para anexos seria 10M.

V 0.12.0628-2118 Gilberto Martins – [email protected] 130

Page 131: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.5.5.1  Divisão$ ls -lh total 49M -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge

$ split -b10m ArquivoGrande.huge

$ ls -lh total 98M -rw-r--r-- 1 root root 49M 2007-11-25 13:10 ArquivoGrande.huge -rw-r--r-- 1 root root 10M 2007-11-25 19:51 xaa -rw-r--r-- 1 root root 10M 2007-11-25 19:51 xab -rw-r--r-- 1 root root 10M 2007-11-25 19:51 xac -rw-r--r-- 1 root root 10M 2007-11-25 19:51 xad -rw-r--r-- 1 root root 8,7M 2007-11-25 19:51 xae

No exemplo acima, dividimos o ArquivoGrande.huge em pedaços de 10 megabytes (-b10m). Podemos especificar b (unidade de 512 bytes), k (unidade de 1 kilobyte) e m (unidade de 1 megabyte) para o tamanho de cada pedaço.

O split criou arquivos de nome x e usou duas letras para criar um índice (aa, ab, ac, ad e ae). O último pedaço fica com tamanho menor que os outros.

6.5.5.2  Recompor

Para recompor este arquivo a partir dos pequenos pedaços usamos o comando cat:$ ls ArquivoGrande.huge xaa xab xac xad xae

debian:~/lixo# cat x* > ArquivoGrande.final

Para comprovar que o arquivo recriado é exatamente igual, basta efetuar um teste de integridade:$ md5sum ArquivoGrande.huge ArquivoGrande.final dfe3188c8e60c03cf797b19abe7b3daa ArquivoGrande.huge dfe3188c8e60c03cf797b19abe7b3daa ArquivoGrande.final

V 0.12.0628-2118 Gilberto Martins – [email protected] 131

Page 132: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.6  Permissões de arquivosAs permissões são identificadores que controlam o modo de acesso a arquivos. São visualizados usando o comando ls -l e são divididas em quatro grupos:Opções Descriçãotipo de arquivo Define se o arquivo é comum (-) ou se arquivo é um diretório(d)

usuário Define como poderá ser feito o acesso do dono dos arquivos

grupo Define como poderá ser feito o acesso dos usuários que pertençam ao mesmo grupo do arquivo

outros Define como poderá ser feito o acesso de todos os demais usuários que não se adequarem nos casos anteriores

Tabela 21: Permissões de arquivo

Os grupos usuário, grupo e outros possuem, cada um, 3 caracteres que controlam as operações que podem ser executadas:

• r É possível ler este arquivo• w É possível alterar (gravar) o conteúdo deste arquivo ou mesmo apagar o arquivo• x Este arquivo pode ser executado, ou seja, é um script ou um programa

O comando ls -l nos dá informações importantes, que são necessárias para interpretar as permissões e suas conseqüências:

$ cd /usr/local/share/fonts/aluno@maq13:/usr/local/share/fonts$ ls -l fonts.cache-1 -rw-r--r-- 1 root staff 0 2006-07-17 21:54 fonts.cache-1

Com o resultado acima, podemos concluir que:• o arquivo /usr/local/share/fonts/fonts.cache é um arquivo e não um diretório;• o proprietário é o usuário root e este pode ler o conteúdo deste arquivo e pode também alterar

este arquivo;• os membros do grupo staff podem apenas ler o conteúdo do arquivo;• Todos os outros usuários do sistema podem apenas ler o conteúdo do arquivo.

Estas informações podem ser modificadas, caso o usuário que esteja alterando tenha permissão para isso.

6.6.1  Alterar o usuário proprietário

Um arquivo será sempre pertencente a quem o criou, mas freqüentemente precisamos mudar o dono deste arquivo. O comando chown permite esta mudança.

Veja no exemplo a seguir:$ ls -l ~/nomes.txt -rw-r--r-- 1 root root 22 2007-11-21 18:00 /root/nomes.txt

$ chown -v gmartins ~/nomes.txt trocado dono de `/root/nomes.txt' para gmartins

$ ls -l ~/nomes.txt -rw-r--r-- 1 gmartins root 22 2007-11-21 18:00 /root/nomes.txt

Também é possível mudar o grupo do arquivo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 132

Page 133: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

$ chown -v root:staff ~/nomes.txt trocado dono de `/root/nomes.txt' para root:staff

$ chown -v :root ~/nomes.txt trocado dono de `/root/nomes.txt' para :root

No exemplo acima, mudamos o usuário e o grupo de uma só vez (root:staff), e também mudamos apenas o grupo (:staff).

6.6.2  Alterar o grupo de usuários

Quando um arquivo é criado, o grupo de quem criou o arquivo será o grupo do arquivo. Se for preciso mudar isto, o comando chgrp pode ser usado.

Esta são algumas das opções aceitas pelo comando:OPÇÕES DESCRIÇÃO

-v Mostra os arquivos enquanto são alterados.

-R Altera dono e grupo de arquivos no diretório atual e possíveis sub-diretórios.

Tabela 22: Opções do chgrp

Para exemplificar, vamos considerar a seguinte estrutura de diretórios:$ tree -ug estrutura/ estrutura/ |-- [root root ] dir1 | |-- [root root ] subdir1 | `-- [root root ] subdir2 `-- [root root ] dir2 |-- [root root ] subdir1 | `-- [root root ] RelatorioVisitas.odt `-- [root root ] subdir2

Na listagem acima, podemos ver que tanto os diretorios como o arquivo pertencem ao usuário root e ao grupo root. Vamos efetuar a mudança de propriedade usando as opções -vR:

$ chown gmartins:gmartins -vR estrutura/ trocado dono de `estrutura/dir1/subdir2' para gmartins:gmartins trocado dono de `estrutura/dir1/subdir1' para gmartins:gmartins trocado dono de `estrutura/dir1' para gmartins:gmartins trocado dono de `estrutura/dir2/subdir2' para gmartins:gmartins trocado dono de `estrutura/dir2/subdir1/RelatorioVisitas.odt' para gmartins:gmartins trocado dono de `estrutura/dir2/subdir1' para gmartins:gmartins trocado dono de `estrutura/dir2' para gmartins:gmartins trocado dono de `estrutura/' para gmartins:gmartins

6.6.3  Alterar as permissões

Com o comando chmod você pode escolher se usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo é criado, seu dono é o usuário que o criou e seu grupo é o grupo do usuário.A tabela a seguir relaciona algumas opções úteis, além de um resumo das permissões possíveis.

V 0.12.0628-2118 Gilberto Martins – [email protected] 133

Page 134: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

Opções Descrição-v, --verbose Mostra todos os arquivos que estão sendo processados.

-f, --silent Não mostra a maior parte das mensagens de erro.

-R, --recursive Muda permissões de acesso do diretório/arquivo no diretório atual e sub-diretórios.

Modo Simbólico:ugoa+-=rwxXst

• ugoa - Controla que nível de acesso será mudado. Especificam, em ordem, usuário (u), grupo (g), outros (o), todos (a).

• +-= - + coloca a permissão, - retira a permissão do arquivo e = define a permissão exatamente como especificado.

• rwx – Permissões do arquivo• r permissão de leitura do arquivo• w permissão de gravação• x permissão de execução (em arquivos)• x permissão de acesso (em diretórios)

Tabela 23: Opções do chmod

Obs.: as permissões podem também ser alteradas pelo modo octal de conversão. Para simplificar, admitimos que cada permissão tem os seguintes valores:

• r = 4• w = 2• x = 1

Além disso, é preciso considerar que cada classe de usuários vai ter a soma dos valores das permissões. Agora, vamos aplicar estes códigos usando o modo octal:

$ chmod -v 644 trash modo de `trash' mantido como 0644 (rw-r--r--)$ chmod -v 600 trash modo de `trash' mudado para 0600 (rw-------)

No primeiro exemplo, O usuário proprietário poderá ler e escrever neste arquivo (a soma do valor da permissão r e da permissão w é 6), enquanto os membros do grupo do arquivo poderão apenas ler neste arquivo (apenas a permissão r está presente, que vale 4).

Podemos também usar o modo simbólico para a mudança de permissão:$ chmod -v ug+x,o-r ~/nomes.txt modo de `/root/nomes.txt' mudado para 0750 (rwxr-x---)

$ chmod -v u-w,g-w,o+r ~/nomes.txt modo de `/root/nomes.txt' mudado para 0554 (r-xr-xr--)

$ chmod -v a-x ~/nomes.txt modo de `/root/nomes.txt' mudado para 0444 (r--r--r--)

$ chmod -v ug+w ~/nomes.txt modo de `/root/nomes.txt' mudado para 0664 (rw-rw-r--)

No exemplo acima, o a representa todas as classes de usuários, ou seja, o Usuário proprietário, Grupo e Outros.

6.6.4  Permissões por usuário

setfacl

getfacl

V 0.12.0628-2118 Gilberto Martins – [email protected] 134

Page 135: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.7  Editores de arquivoQuase sempre precisamos mudar o conteúdo de um arquivo, e para isso usamos os editores de texto. Nos sistemas operacionais baseados em Unix, existem diversos destes editores. Os mais comuns são o vi e o nano.

Precisamos lembrar que estes editores não são visuais, como o MS Word ou o OpenOffice, mas são todos com interface texto.

não vamos aqui abordar todos os comandos de cada um deles, mas apenas o essencial para nosso uso.

6.7.1  nano

Este é um editor muito simples e usado pela maioria dos iniciantes. Um rodapé mostra seus comandos, que são acionados pela tecla CONTROL e algum caractere. Para demonstrar o uso do nano, vamos supor a edição do arquivo /etc/apt/sources.list:

$ sudo nano /etc/apt/sources.list

O resultado é a imagem acima. A operação do nano é simples. Altere o que deve ser alterado, e tecle ^X para encerrar a edição. Se alguma modificação não tiver sido gravada, o nano vai solicitar a gravação.

V 0.12.0628-2118 Gilberto Martins – [email protected] 135

Imagem 30: Editor de Texto nano

Imagem 31: Nano pedindo confirmação de gravação

Page 136: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

Neste momento, confirmamos com S para que as alterações sejam gravadas. O editor nano vai pedir o nome do arquivo, apresentando o nome atual do arquivo. Apenas tecle ENTER.

Imagem 32: Nano solicitando o nome e o diretório do arquivo a ser gravado

Com isto, o arquivo esta gravado.

Apesar do seu uso ser extremamente simples, este editor de texto não está presente em todas as distribuições de Linux, e nem em todas as versões de Unix. Assim, se for realmente necessário, ele terá que ser instalado.

6.7.2  Editor vi / vim

Este editor de texto acompanha quase todas as distribuições Linux, e a maioria das versões de Unix. Sua operação é diferente dos editores habituais, o que para muitos representa um problema. Mas para nossos propósitos, poucos comandos de operação do vi vão ser suficientes.

6.7.2.1  Instalação

Na instalação padrão do Ubuntu, pode não estar presente o vim, que é uma versão melhorada do vi, com recursos adicionais, e sim uma versão simples do vi, que disponibiliza um conjunto básico de instruções, mas é invocado normalmente através do comando vim. Por isto, é interessante instalar esta versão:

$ sudo apt-get install vim

Também é possível instalar usando o aptitude:$ sudo aptitude install vim

6.7.2.2  Editando um arquivo

Para editar o arquivo, digitamos:$ vim ~/TabelaAlunos

A tela que se abre não apresenta menu nenhum. Apenas o arquivo que esta sendo editado. Linhas vazias começam com o sinal ~ (til). Note que estas linhas não existem no arquivo, apenas são marcadores.

V 0.12.0628-2118 Gilberto Martins – [email protected] 136

Page 137: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

A partir de agora, qualquer caractere digitado vai ser interpretado como comando. Assim, para começar a editar, devemos teclar o I, de Insert. Um texto vai ser mostrado na base da tela, informando que estamos em modo de edição.

Deste ponto em diante, pode ser inserido texto, corrigido, retirar texto, etc. Ao final da inserção de texto, basta teclar ESC.

6.7.2.3  Operações

A seguir, algumas operações úteis. Note que comandos iniciados com dois pontos (:) ou barra (/) surgirão no final da tela, enquanto comando iniciados com letras ou números não aparecerão na tela.

V 0.12.0628-2118 Gilberto Martins – [email protected] 137

Imagem 33: Editor VI

Imagem 34: VI em modo de inserção de texto

Page 138: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

Operação ComandoGravar o arquivo Digite :x ou :wq

Sair do arquivo sem gravar Digite :q!

Gravar sem sair do arquivo Digite :w

Apagar uma linha Posicione o cursor na linha e digite dd

Inserir uma linha Digite i

Procurar um texto adiante Digite / seguido do texto a ser localizado

Procurar um texto antes Digite ? seguido do texto a ser localizado

Repetir a procura anterior Digite n

Repetir a procura anterior na direção oposta Digite n

Ativar a numeração de linhas do arquivo Digite :set number

Desativar a numeração de linhas do arquivo Digite :set nonumber

Substituir texto no arquivo inteiro Digite :%s/ANTIGO/NOVO/g• ANTIGO: texto a ser substituído• NOVO: texto que vai substituir o ANTIGO

Tabela 24: Operações comuns no vi

6.7.2.4  Arquivo de Configuração

Para tirar um melhor proveito dos recursos do editor, é necessário algumas alterações no seu arquivo de configuração. Assim, vamos descomentar as linhas relacionadas a seguir. Note que qualquer comentário neste arquivo é iniciado por aspas duplas. Na tela a seguir, cada linha está numerada. Observe que se for feita uma instalação de uma versão diferente da que está sendo usada agora, a numeração pode mudar, ou mesmo o conteúdo do arquivo.

A seguir, as linhas do arquivo de configuração do vim que precisam ser descomentadas. Estas linhas estão no arquivo /etc/vim/vimrc, e para editar este arquivo, podemos editar o arquivo já iniciando a numeração de linhas, com a seguinte instrução:

$ vim /etc/vim/vimrc -c ':set number'

Neste arquivo, execute as seguintes alterações:

V 0.12.0628-2118 Gilberto Martins – [email protected] 138

Page 139: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime " you can find below. If you wish to change any of those settings, you should " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten " everytime an upgrade of the vim packages is performed. It is recommended to " make changes after sourcing debian.vim since it alters the value of the " 'compatible' option.

" This line should not be removed as it ensures that various options are " properly set to work with the Vim-related packages available in Debian. runtime! debian.vim

" Uncomment the next line to make Vim more Vi-compatible " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous " options, so any other options should be set AFTER setting 'compatible'. "set compatible

" Vim5 and later versions support syntax highlighting. Uncommenting the next " line enables syntax highlighting by default. if has("syntax") syntax on endif

" If using a dark background within the editing area and syntax highlighting " turn on this option as well set background=dark

" Uncomment the following to have Vim jump to the last position when " reopening a file if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif

" Uncomment the following to have Vim load indentation rules and plugins " according to the detected filetype. if has("autocmd") filetype plugin indent on endif

" The following are commented out as they cause vim to behave a lot " differently from regular Vi. They are highly recommended though. set showcmd " Show (partial) command in status line. set showmatch " Show matching brackets. set ignorecase " Do case insensitive matching set smartcase " Do smart case matching set incsearch " Incremental search set autowrite " Automatically save before commands like :next and :make set hidden " Hide buffers when they are abandoned "set mouse=a " Enable mouse usage (all modes) set number

" Source a global configuration file if available if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local endif

Estas modificações mudam profundamente a forma de trabalhar arquivos de configuração. Como exemplo vemos o vim editando um script, onde é possível observar a numeração automática de linhas, identificação do tipo do arquivo texto e uso de cores para palavras chave de acordo com o tipo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 139

Page 140: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

V 0.12.0628-2118 Gilberto Martins – [email protected] 140

Imagem 35: VIM

Page 141: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

6.8  ProcessosToda operação executada no Linux precisa de um ou mais processos. Todo processo em execução no Linux recebe um identificador numérico. Através deste identificador, podemos enviar instruções a alguns processos, como a interrupção de seu funcionamento, ou de sua existência.

Para demonstrar processos em execução, vamos usar dois consoles virtuais. Uma alteração no prompt vai diferenciar cada um deles.

$ export PS1="\h (ConV01):\w\$" debian (ConV01):~$

6.8.1  Identificando processo pelo nome

No console virtual 01, vamos executar man ls, e no console virtual 02 vamos verificar o PID (Process ID) do man:

debian (ConV02):~$ pidof man 19548

Através do comando pidof foi possível saber o PID de todos os processos do man. Neste nosso exemplo, apenas um (19548). Se tivesse mais de um processo, estes seriam relacionados.

6.8.2  Parando processos

Vamos identificar o PID de um cat que esta sendo executado no console virtual 1, e interromper este processo.

debian (ConV02):~$ pidof cat 20718 debian (ConV02):~$ kill 20718 debian (ConV02):~$ pidof cat

debian (ConV01):~$ cat Terminado

O comando kill envia um sinal para terminar a aplicação. Caso seja necessário encerrar uma aplicação “travada”, é necessário enviar um sinal 9 para o processo.

debian (ConV02):~$ pidof cat 21764 debian (ConV02):~$ kill -9 21764

debian (ConV01):~$ cat Morto debian (ConV01):~$

Desta vez, o processo foi encerrado forçadamente.

Também é possível encerrar um processo pelo seu nome, sem sequer saber do PID deste processo.debian (ConV02):~$ killall cat

debian (ConV01):~$ cat Terminado

Entretanto, se houver mais de um processo com o mesmo nome, todos serão eliminados.

6.8.3  Primeiro e segundo plano

Normalmente os processos são executados em primeiro plano. isto quer dizer que o controle da linha de comando só ocorre quando o processo encerrar. Para isso, os processos podem ser executados

V 0.12.0628-2118 Gilberto Martins – [email protected] 141

Page 142: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

em segundo plano.debian (ConV01):~$ updatedb & [1] 22260 debian (ConV01):~$ jobs [1]+ Running updatedb &

debian (ConV01):~$ [1]+ Done updatedb debian (ConV01):~$ jobs debian (ConV01):~$

Enquanto o comando updatedb estava em execução em segundo plano, foi possível executar o comando jobs. Este comando relaciona os processos em segundo plano.

debian (ConV01):~$ jobs [1] Stopped vim teste [2]- Stopped man ls [3]+ Stopped aptitude

Na relação do comando jobs podemos ver os processos e o status atual de cada um, além de um numero de tarefa. Este numero não pode ser confundido com PID. Através deste identificador podemos usar o comando kill para parar os processos relacionados pelo comando jobs.

debian (ConV01):~$ jobs [1] Stopped vim teste [2]- Stopped man ls [3]+ Stopped aptitude debian (ConV01):~$ kill %2

[2]- Stopped man ls debian (ConV01):~$ jobs [1] Stopped vim teste [2]- Terminado man ls [3]+ Stopped aptitude debian (ConV01):~$

6.8.4  Árvore de processos

Para fazer referência ao processo pelo número da tarefa, usar o sinal de porcentagem, como foi feito acima com o comando kill %2 que enviou um sinal para encerrar o processo número 2.

Para localizar os processos em execução, e poder visualizar a relação de dependência entre os pacotes, usamos o pstree. Neste comando a opção -p mostra os números de cada processo na árvore de processo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 142

Page 143: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Arquivos e diretórios

mac:~# pstree -pinit(1)─┬─apache2(2495)─┬─apache2(2533) │ ├─apache2(2534) │ └─apache2(2537) ├─apmd(2290) ├─avahi-autoipd(1898)───avahi-autoipd(1899) ├─bonobo-activati(2758) ├─bonobo-activati(2592) ├─clock-applet(2639) ├─cron(2461) ├─dbus-daemon(2304) ├─dbus-daemon(2585) ├─dbus-launch(2584) ├─dhclient3(1903) ├─events/0(3) ├─gconfd-2(2756) ├─gconfd-2(2587) ├─gdm(2399)───gdm(2403)─┬─Xorg(2408) │ └─x-session-manag(2538)───ssh-agent(2581) ├─getty(2517) ├─getty(2518) ├─getty(2519) ├─gnome-pty-helpe(2759) │ ├─gnome-keyring-d(2590) ├─gnome-panel(2605)───{gnome-panel}(2627) ├─gnome-power-man(2623) ├─gnome-screensav(2646) ├─gnome-settings-(2594)───{gnome-settings-}(2597) ├─gnome-vfs-daemo(2622)───{gnome-vfs-daemo}(2626) ├─gnome-volume-ma(2613) ├─gpm(2355) ├─hald(2312)───hald-runner(2313)─┬─hald-addon-cpuf(2317) │ ├─hald-addon-keyb(2325) │ ├─hald-addon-keyb(2328) │ ├─hald-addon-keyb(2330) │ └─hald-addon-stor(2684)

Resultado semelhante pode ser obtido com o comando ps.mac:~# ps fx PID TTY STAT TIME COMMAND 2754 pts/0 Sl+ 0:18 \_ gnome-terminal 2759 pts/0 S+ 0:00 \_ gnome-pty-helper 2760 pts/1 Ss 0:00 \_ bash 2974 pts/1 R+ 0:00 \_ ps fx 2313 ? S 0:00 hald-runner 2317 ? S 0:00 \_ /usr/lib/hal/hald-addon-cpufreq 2341 ? S 0:00 \_ hald-addon-storage: polling /dev/hdb 2684 ? S 0:00 \_ hald-addon-storage: polling /dev/sda 1899 ? Ss 0:00 avahi-autoipd: [eth1] callout dispatcher

Outras opções do comando ps seriam aux, efx e fx

V 0.12.0628-2118 Gilberto Martins – [email protected] 143

Page 144: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7  Administração de usuáriosEm todo sistema operacional de rede, é necessário usar procedimentos que permitem gerenciar contas de usuários. Em geral, este gerenciamento consiste das seguintes ações:

• Criar contas de usuários• Remover contas de usuários• Alterar contas de usuários

Nos sistemas operacionais derivados do Unix, os dados de contas de usuários são gravados em diversos arquivos.

Ainda que estas ações possam normalmente ser executadas em GUI, é muito importante que haja domínio sobre o procedimento quando em CLI.

V 0.12.0628-2118 Gilberto Martins – [email protected] 144

Page 145: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.1  Arquivos das contas de usuáriosA conta de usuário criada terá seus dados gravados em arquivos especiais, que são /etc/passwd, /etc/group e /etc/shadow.

Outras informações importantes são guardadas em /etc/skel e /etc/adduser.conf.

7.1.1  Lista das contas

Em /etc/passwd estão registradas as contas dos usuários.

No caso de uma conta de usuário chamada fulano temos o seguinte registro em /etc/passwd:$ grep fulano /etc/passwdfulano:x:1003:1003:Fulano,Sl 101,3231,1234-1234,4321-4321:/home/fulano:/bin/bash

Relacionando a linha acima com a tabela, teremos:Campo Descrição

fulano Nome da conta dos usuários do sistema. Estas contas não deveriam conter letras maiúsculas.

x A senha criptografada da conta. Atualmente as principais distribuições usam shadow, e por isto este campo contém apenas um x.

1003 Identificação numérica do usuário (UID).

1003 Identificação do grupo primário para este usuário (GID).

Fulano,Sl 101,3231,1234-1234,4321-4321

Este campo é opcional e somente usado para propósitos informativos. Usualmente, ele contém o nome completo do usuário, o número de sua sala, o telefone de trabalho, o telefone de casa, e alguma outra informação. Estas informações estão separadas por vírgulas. Caso nenhuma destas informações seja incluída, apenas as vírgulas vão preencher este campo.

/home/fulano Diretório padrão do usuário ($HOME).

/bin/bash Interpretador de comando usados depois do login.

Tabela 25: Dados do usuário Fulano em /etc/passwd

7.1.2  Lista dos grupos

Além de /etc/passwd, a criação de uma conta de usuário também altera o arquivo /etc/group, incluindo dados do grupo do usuário:

$ grep fulano /etc/groupfulano:x:1003:

Este é o significado de cada campo do arquivo /etc/group:Item Descriçãofulano o nome do grupo

x senha do grupo. Existindo um x, este campo não é considerado.

1003 ID numérico do grupo (GID).

Contas que são membros do grupo, separados por vírgulas. As contas que tem este grupo como grupo principal não figuram aqui. Neste exemplo, não há membros neste grupo.

Tabela 26: Campos do /etc/group

V 0.12.0628-2118 Gilberto Martins – [email protected] 145

Page 146: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.1.3  Lista de senhas

Para melhorar a segurança, as senhas não ficam mais no arquivo /etc/passwd. Estas agora estão no arquivo /etc/shadow, junto com outras informações de idade da senha.

A seguir um registro de /etc/shadow:aluno:$6$PqZOAKRayLci.yn2wXu3jUGEmWBkCCWoen71PdpKn1lYYuSDv.J8MwbpSw4cYP2XZz/:14368:0:99999:7:::

Tomando o registro acima como exemplo, temos os seguintes campos de cada registro do /etc/shadow:

Campo Descrição

aluno Nome de acesso

$6$PqZOAKRayLci.yn2wXu3jUGEmWBkCCWoen71PdpKn1lYYuSDv.J8MwbpSw4cYP2XZz/

Senha criptografada

14368 Dias decorridos entre 1 de janeiro de 1970 e a última alteração da senha

0 Número de dias até que a senha deva ser alterada

99999 Número de dias após o qual a senha deve ser alterada

7 Número de dias antes da expiração da senha no qual o usuário será avisado

Número de dias após a expiração da senha que a conta deve ser desabilitada

Dias decorridos entre 1 de janeiro de 1970 e a data em que a conta foi desabilitada

Campo reservado para uso futuro

Neste nosso exemplo, os 3 últimos campos não foram definidos, por isto estão vazios.

V 0.12.0628-2118 Gilberto Martins – [email protected] 146

Page 147: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.2  Delegação de tarefasAlguns procedimentos só podem ser realizados por determinados usuários, e em geral não é o usuário final. Algumas tarefas administrativas só podem ser realizadas pelo usuário root. Entretanto, por motivos de segurança a senha do usuário root não deve ser divulgada abertamente, nem mesmo entre os membros da equipe de administração de rede.

O comando sudo permite que usuários comuns executem tarefas como se fossem outros usuários, em geral o root, de forma segura e controlável pelo administrador. O nome é uma forma abreviada de se referir a substitute user do (em tradução livre, fazer substituindo usuário) ou super user do (super usuário faz).

De forma geral, na distribuição Ubuntu qualquer usuário que seja membro do grupo admin pode usar o comando sudo.

Um usuário que esteja inscrito no /etc/sudoers pode invocar o comando da seguinte forma:$ sudo [-u usuário] comando

Onde comando é o comando que deseja executar. A opção -u usuário serve para especificar qual usuário deve ser utilizado para executar o comando, se omitida sudo considera o usuário root.

Antes do comando ser executado, sudo confirma a identidade do usuário pedindo sua própria senha. Se o usuário tem permissão garantida na configuração, o comando é executado como super usuário e retorna. A linha de comando continua sendo a do usuário que executou sudo e não a do super usuário.

Caso sudo seja executado de forma não permitida pela configuração, um registro da ocorrência é feito no arquivo /var/log/auth.log.

V 0.12.0628-2118 Gilberto Martins – [email protected] 147

Page 148: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.3  Contas de usuário em CLI

7.3.1  Criação de contasO comando adduser permite que seja adicionada uma conta de usuário ao sistema. Serão feitas perguntas sobre dados do usuário que vão facilitar a inclusão.

$ sudo adduser fulanoAdding user `fulano' ...Adding new group `fulano' (1003) ...Adding new user `fulano' (1003) with group `fulano' ...Creating home directory `/home/fulano' ...Copying files from `/etc/skel' ...Enter new UNIX password: <aqui é digitada a senha do usuário>Retype new UNIX password: <aqui é confirmada a senha do usuário>passwd: senha atualizada com sucessoModificando as informações de usuário para fulanoInforme o novo valor ou pressione ENTER para aceitar o padrão Nome Completo []: Fulano Número da Sala []: Sl 101 Fone de Trabalho []: 3231 Fone Doméstico []: 1234-1234 Outro []: 4321-4321A informação está correta? [s/N] s

Algumas características sobre contas de usuários:• Toda conta de usuário tem um grupo;• Por padrão, a criação de um usuário força a criação de um grupo com o mesmo nome. No

exemplo acima, o usuário fulano é membro do grupo fulano;• Este grupo é chamado de grupo principal. Se esta conta também for membro de outros

grupos, estes são chamados de grupos suplementares.• Neste caso, o usuário fulano tem UID (User ID – Identificação do usuário) 1003, e o grupo

fulano tem GID (Group ID – Identificação do grupo) 1003.

7.3.2  Criando grupo vazio de usuários

Com o comando addgroup é possível criar um grupo vazio, para que depois este venha a ser usado por outras contas. Por exemplo, vamos criar o grupo vendas:

$ sudo addgroup vendas Adding group `vendas' (GID 1001) ... Done.

Agora, este grupo está criado, e nenhuma conta pertence a este grupo. Para confirmar quais grupos possuem quais usuários, podemos ver o arquivo de grupos:

$ tail -5 /etc/group kvm:x:123: postfix:x:124: postdrop:x:125: libvirtd:x:126:gmartins vendas:x:1001:

No exemplo acima, visualizamos apenas as últimas 5 linhas do arquivo. Que mostra tanto que o grupo vendas não tem usuário (pois acabou de ser criado) como mostra que o grupo libvirtd tem como membro o usuário da conta gmartins.

7.3.3  Criando conta  usando um outro grupo principal

Pode ser indesejável ter um grupo para cada usuário, como é o comportamento padrão das

V 0.12.0628-2118 Gilberto Martins – [email protected] 148

Page 149: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

distribuições Linux. Neste caso é obrigatório o uso de um grupo já existente. No exemplo a seguir o usuário fulano está sendo criado com o grupo vendas como grupo principal.

$ sudo adduser --ingroup vendas fulano Adding user `fulano' ...Adding new group `fulano' (1003) ...Adding new user `fulano' (1003) with group `vendas' ...Creating home directory `/home/fulano' ...Copying files from `/etc/skel' ...Enter new UNIX password: <aqui é digitada a senha do usuário>Retype new UNIX password: <aqui é confirmada a senha do usuário>passwd: senha atualizada com sucessoModificando as informações de usuário para fulanoInforme o novo valor ou pressione ENTER para aceitar o padrão Nome Completo []: Fulano Número da Sala []: Sl 101 Fone de Trabalho []: 3231 Fone Doméstico []: 1234-1234 Outro []: 4321-4321A informação está correta? [s/N] s

Observe na ação acima a mensagem de inclusão do usuário no grupo vendas:

Adding new user `fulano' (1003) with group `vendas' ...

É obrigatório que este grupo já exista.

7.3.4  Confirmando dados de uma conta de usuário

Podemos confirmar de uma conta de usuário com o comando id:$ id fulanouid=1003(fulano) gid=1003(fulano) grupos=1003(fulano)

Caso este usuário não exista, o id apresentará a seguinte mensagem:$ id smith id: smith: Usuário inexistente

7.3.5  Diretório padrão do usuário

A criação de uma conta também implica em criar um diretório para esta conta (o homedir). Os diretórios de usuários são, por default, criados abaixo do diretório /home, como vemos no caso da conta fulano a seguir:

$ sudo ls -l /hometotal 16drwxr-xr-x 2 fulano fulano 4096 2007-12-08 11:30 fulanodrwx------ 26 gmartins gmartins 4096 2007-12-08 22:26 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

7.3.6  Alterando o acesso aos diretórios dos usuários

No Ubuntu, por padrão os diretórios de usuários são criados com acesso de leitura para todos os outros usuários. Isto pode ser corrigido manualmente, alterando as permissões do diretório com o chmod:

V 0.12.0628-2118 Gilberto Martins – [email protected] 149

Page 150: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

$ sudo chmod -v 0700 /home/fulano/modo de `/home/fulano/' mudado para 0700 (rwx------)

$ ls -l /hometotal 16drwx------ 2 fulano fulano 4096 2007-12-08 11:30 fulanodrwx------ 26 gmartins gmartins 4096 2007-12-08 22:26 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

Deste modo, apenas o root e os proprietários terão acesso aos diretórios, proporcionando privacidade no acesso ao conteúdo:

$ cd /home/fulano/bash: cd: /home/fulano/: Permissão negada

7.3.7  O caracter especial “~”

O diretório padrão de um usuário pode ser mencionado usando o PATH absoluto:$ cd /home/fulano/root@mac:/home/fulano#

ou usando o caracter “~” antes do nome da conta de um usuário:$ cd ~fulano/root@mac:/home/fulano#

Neste caso, o “~” deve anteceder o nome da conta do usuário. O diretório padrão (homedir) do mesmo será o que está definido no 6° campo da lista de contas.

7.3.7.1  Acessando o homedir de outro usuário

Usando o caracter “~”, posso acessar o homedir de outros usuários com muito mais facilidade:$ cp -v arquivo.txt ~gilbertomartins `arquivo.txt' -> `/home/gilbertomartins/arquivo.txt'

Observe que no exemplo acima, o arquivo continua de propriedade do root e não do gilbertomartins:$ ls -l ~gilbertomartins/arquivo.txt -rw-r--r-- 1 root root 0 2009-05-26 07:08 /home/gilbertomartins/arquivo.txt

Isto deve ser corrigido mudando o proprietário do arquivo.

Observe que o usuário root pode gravar em qualquer homedir. Outro usuário não conseguiria o mesmo:

$ cp arquivo.txt ~erlane/ cp: impossível criar arquivo comum `/home/erlane/arquivo.txt': Permissão negada

O usuário gilbertomartins não pode gravar no homedir do usuário erlane.

7.3.7.2  Acessando um diretório no homedir de outro usuário

A mesma operação é possível para diretórios que estejam no homedir do usuário destino:$ cp -v ~/arquivo.txt ~gilbertomartins/Documentos `/root/arquivo.txt' -> `/home/gilbertomartins/Documentos/arquivo.txt'

No exemplo acima, o diretório atual é /etc/X11/app-defaults. De forma muito simples, foi feita uma cópia de /root para /home/gilbertomartins/Documentos.

Observe que no exemplo acima, o arquivo continua de propriedade do root e não do gilbertomartins:$ ls -l ~gilbertomartins/arquivo.txt -rw-r--r-- 1 root root 0 2009-05-26 07:08 /home/gilbertomartins/arquivo.txt

Isto deve ser corrigido mudando o proprietário do arquivo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 150

Page 151: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.3.7.3  Acessando o homedir do próprio usuário

Fica ainda mais simples usar o “~” para acessar o próprio diretório:$ cp -v ~gilbertomartins/Documentos/arquivo.txt ~ `/home/gilbertomartins/Documentos/arquivo.txt' -> `/root/arquivo.txt'

No exemplo acima, o arquivo arquivo.txt, que está em ~gilbertomartins/Documentos foi copiado para o diretório padrão.

V 0.12.0628-2118 Gilberto Martins – [email protected] 151

Page 152: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.4  Alternando entre usuáriosMuitas operações podem ser executadas pelo usuário comum, mas algumas são operadas apenas pelo root. Nesta ocasião,precisamos trabalhar como usuário root temporariamente, proceder a operação necessária, e logo após voltar ao nosso usuário. Para isso temos o su, que é um comando de mudança de usuários (switch user).

su [-] [usuário] [-c comando] Opção Descriçãousuário nome da conta do usuário que deseja usar para acessar o sistema. Se não digitado, é assumido o

usuário root.

- o usuário terá um shell idêntico ao que ele teria, caso ele tivesse entrado sua conta e senha diretamente no Linux.

-c comando Apenas o comando será executado como o usuário informado em [usuário]. O comando a ser executado deve estar entre aspas. A senha do usuário vai ser solicitada.

Tabela 27: Comando su

Neste exemplo o comando date vai ser executado como o usuário da conta aluno.$ dateSeg Ago 14 12:33:55 FNT 2006

Sem deixar de operar o sistema com a conta do usuário aluno, vamos mudar a data do sistema. $ su - -c "date 080714212006"Password: Seg Ago 7 14:21:00 FNT 2006

Repare que foi pedido uma senha, que é a senha do usuário root.

Mais uma vez, com o usuário da conta aluno, vamos verificar a data e constatar se houve mudança.$ dateSeg Ago 7 14:21:08 FNT 2006

A mudança de data foi executada pelo root, mas sem que tivesse sido necessário que o mesmo tivesse se conectado.

Note que este procedimento não pode ser executado por um usuário comum, como é o usuário da conta gmartins.

$ whoami gmartins

Em um outro exemplo, vamos alternar para o usuário root e criar uma conta de usuário, etapa por etapa:

$ su -Password: <senha do root>

Foi pedida a senha do root para autenticação, já que nenhuma conta foi mencionada.

V 0.12.0628-2118 Gilberto Martins – [email protected] 152

Page 153: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

# adduser fulanoAdding user `fulano' ...Adding new group `fulano' (1003) ...Adding new user `fulano' (1003) with group `fulano' ...Creating home directory `/home/fulano' ...Copying files from `/etc/skel' ...Enter new UNIX password: <aqui é digitada a senha do usuário>Retype new UNIX password: <aqui é digitada a senha do usuário>passwd: senha atualizada com sucessoModificando as informações de usuário para fulanoInforme o novo valor ou pressione ENTER para aceitar o padrão Nome Completo []: Número da Sala []: Fone de Trabalho []: Fone Doméstico []: Outro []:A informação está correta? [s/N] s

Foi criada a conta de usuário fulano. Vamos também confirmar a criação d esta conta :# id fulano uid=1003(fulano) gid=1003(fulano) grupos=1003(fulano)

Podemos agora encerrar a sessão do usuário root:# exit

Aqui, foi preciso usar mais de um comando, e por isso é melhor usar o su desta forma. Depois das tarefas concluídas, digitar exit ou ^D quando desejar retornar a identificação de usuário anterior.

NOTANOTA IMPORTANTEIMPORTANTE

Sempre que possível, deve ser evitado usar o sistema como o usuário root. Por este motivo, qualquer operação que exija este

usuário deve ser executada com o comando sudo.

Em uma instalação padrão Ubuntu, seja para desktop ou server, o usuário root não possui senha, estando impossibilitado de ser

usado diretamente, mas ainda podendo ser usado através do sudo (preferencial) e do su (não recomendado)

V 0.12.0628-2118 Gilberto Martins – [email protected] 153

Page 154: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.5  Remover conta de usuárioPara remover uma conta de usuário, usamos o comando deluser, como no exemplo a seguir:

$ sudo deluser fulanoRemoving user `fulano' ...Concluído.

Podemos agora confirmar que esta conta de usuário não existe mais no sistema:$ id fulanoid: fulano: Usuário inexistente

Entretanto, este comando apenas remove a conta deixando o diretório padrão do usuário removido inalterado:

$ ls -l /hometotal 16drwx------ 2 1003 1003 4096 2007-12-08 11:30 fulanodrwx------ 26 gmartins gmartins 4096 2007-12-09 11:33 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

O diretório /home/fulano ainda existe, mas pertence ao usuário 1003 e ao grupo 1003. Estes eram o UID e o GID do usuário fulano, respectivamente. Isto pode causar um problema, se este UID for reaproveitado por outro usuário. Vamos simular este caso:

$ sudo adduser cicranoAdding user `cicrano' ...Adding new group `cicrano' (1003) ...Adding new user `cicrano' (1003) with group `cicrano' ...Creating home directory `/home/cicrano' ...Copying files from `/etc/skel' ...Enter new UNIX password: <aqui é digitada a senha do usuário>Retype new UNIX password: <aqui é digitada a senha do usuário>passwd: senha atualizada com sucessoModificando as informações de usuário para cicranoInforme o novo valor ou pressione ENTER para aceitar o padrão Nome Completo []: Cicrano da Silva Número da Sala []: Sl 103 Fone de Trabalho []: 1234 Fone Doméstico []: 1234-1234 Outro []:A informação está correta? [s/N] s

$ id cicranouid=1003(cicrano) gid=1003(cicrano) grupos=1003(cicrano)

Observamos que o UID agora está sendo usado pela conta cicrano. Vejamos ficou a propriedade dos diretórios de usuários:

$ ls -l /hometotal 20drwxr-xr-x 2 cicrano cicrano 4096 2007-12-09 11:45 cicranodrwx------ 2 cicrano cicrano 4096 2007-12-08 11:30 fulanodrwx------ 26 gmartins gmartins 4096 2007-12-09 11:33 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

Note que foi criado o diretório ~cicrano (veja aqui mais informações sobre o “ ~ ” ) sendo propriedade da conta cicrano e do grupo cicrano. Entretanto, o diretório ~fulano passa a pertencer a conta cicrano. Vejamos o resultado disto.

Primeiro, vamos confirmar o diretório atual:$ pwd/home/cicrano

Vamos tentar mudar para o diretório padrão da conta do usuário fulano:

V 0.12.0628-2118 Gilberto Martins – [email protected] 154

Page 155: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

$ cd ~fulano-su: cd: ~fulano: Arquivo ou diretório não encontrado

Isto aconteceu pois não existe mais o usuário fulano. Usar ~fulano quer dizer acessar o seu diretório padrão. Lembre que removemos o usuário, e não seu diretório padrão.

Vamos agora tentar acessar o diretório pelo seu caminho completo:$ cd /home/fulanocicrano@mac:/home/fulano$ pwd/home/fulano

Não só conseguimos como agoora também temos acesso a qualquer arquivo que exista neste diretório.

O que poderia ser feito para evitar este problema seria remover o usuário e seu diretório padrão junto (o que destruiria todos os arquivos existentes nele) ou remover apenas o usuário e dar ao root a propriedade do arquivo.

No primeiro caso, o procedimento seria:$ sudo deluser --remove-home fulanoLooking for files to backup/remove ...Removing files ...Removing user `fulano' ...Concluído.

Podemos observar que o diretório /home/fulano foi removido:$ ls -l /hometotal 12drwx------ 26 gmartins gmartins 4096 2007-12-09 11:33 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

A outra solução seria:$ sudo deluser fulanoRemoving user `fulano' ...Concluído.

$ sudo chown -v root:root /home/fulano/trocado dono de `/home/fulano/' para root:root

$ sudo chmod -v 700 /home/fulano/modo de `/home/fulano/' mudado para 0700 (rwx------)

Podemos agora perceber a diferença:$ ls -l /home/total 16drwx------ 2 root root 4096 2007-12-09 12:02 fulanodrwx------ 26 gmartins gmartins 4096 2007-12-09 11:33 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

Um usuário qualquer que tente acessar o conteúdo de qualquer forma não o conseguiria:$ cd /home/fulano/-su: cd: /home/fulano/: Permissão negada

$ cp .bashrc /home/fulano/cp: impossível fazer stat em `/home/fulano/.bashrc': Permissão negada

$ rm /home/fulano/.bashrcrm: imposível remover `/home/fulano/.bashrc': Permissão negada

Assim, podemos preservar a privacidade dos arquivos contidos neste diretório.

V 0.12.0628-2118 Gilberto Martins – [email protected] 155

Page 156: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.6  Informações de contasExistem comandos que fornecem informações sobre contas do sistema local, como o caso do finger:

$ finger gmartinsLogin: gmartins Name: gmartinsDirectory: /home/gmartins Shell: /bin/bashOn since Sun Dec 9 13:12 (BRT) on pts/2 from :0.0 55 minutes 8 seconds idleMail last read Mon Nov 26 21:12 2007 (BRT)No Plan.

No exemplo acima, além dos dados da conta, temos o tempo que o usuário está conectado. Neste caso, o tempo que o usuário está inativo (idle).

O comando finger também mostra detalhes de forma resumida de todos os usuários conectados no momento:

$ fingerLogin Name Tty Idle Login Time Office Office Phonecicrano Fulano da Silva *tty1 Dec 9 15:22 Sl 103 x1234gmartins gmartins pts/2 2:10 Dec 9 13:12 (:0.0)root root pts/1 Dec 9 15:03 (:0.0)

O comando pinky dá quase o mesmo resultado.

Neste exemplo, para apenas um usuário:$ pinky gmartinsLogin Name TTY Ocioso Quando Ondegmartins gmartins pts/2 00:55 2007-12-09 13:12 :0.0

Aqui, para todos os que estiverem conectados no momento:$ pinkyLogin Name TTY Ocioso Quando Ondecicrano Fulano da Silva *tty1 00:02 2007-12-09 15:22root root pts/1 2007-12-09 15:03 :0.0gmartins gmartins pts/2 00:03 2007-12-09 13:12 :0.0

Igualmente ao finger, o pinky pode fornecer informações sobre um usuário em especial:$ pinky -l gmartinsNome de Login: gmartins Na vida real: gmartinsDiretório: /home/gmartins Interpretador: /bin/bash

Outra forma de acessar as informações dos usuários conectados é usando o comando w:$ sudo w 14:09:59 up 2:52, 2 users, load average: 0,11, 0,24, 0,63USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/1 :0.0 11:26 0.00s 2.34s 0.02s wgmartins pts/2 :0.0 13:12 57:07m 0.65s 0.65s bash

Além de relacionar quais são os usuários conectados ao sistema, informa o que estão fazendo no momento. Esta informação está na coluna WHAT. No exemplo acima o usuário root está usando o comando w e o usuário gmartins está usando o bash, ou seja, está executando um interpretador de comandos.

V 0.12.0628-2118 Gilberto Martins – [email protected] 156

Page 157: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

7.7  Modificar dados da contaDiversos detalhes de um usuário podem ser modificados a qualquer tempo, através do comando usermod A seguir alguns exemplos:

7.7.1  Mudar o grupo principal

Caso seja necessário que o usuário tenha como grupo principal outro grupo de usuários:$ id fulano uid=1008(fulano) gid=1009(fulano) grupos=1009(fulano)

$ sudo usermod -g staff fulano

$ id fulano uid=1008(fulano) gid=50(staff) grupos=50(staff)

7.7.2  Mudar o grupo suplementar$ sudo usermod -G contab fulano

$ id fulanouid=1003(fulano) gid=1003(fulano) grupos=1003(fulano),1004(contab)

Note que o usuário possui um grupo principal, e agora é membro de contab.$ grep fulano /etc/groupfulano:x:1003:contab:x:1004:fulano

7.7.3  Adicionar grupo suplementar$ sudo usermod -G drh fulano

$ id fulanouid=1003(fulano) gid=1003(fulano) grupos=1003(fulano),1006(drh)

Isto está incorreto, pois trocamos o grupo suplementar contab anterior pelo drh. O correto seria o seguinte:

$ id fulanouid=1003(fulano) gid=1003(fulano) grupos=1003(fulano),1004(contab)

$ sudo usermod -a -G drh fulano

$ id fulanouid=1003(fulano) gid=1003(fulano) grupos=1003(fulano),1004(contab),1006(drh)

7.7.4  Mudar o nome da conta$ sudo usermod -l cicrano fulano

$ id fulanoid: fulano: Usuário inexistente

$ id cicranouid=1003(cicrano) gid=1003(fulano) grupos=1003(fulano),1004(contab),1006(drh)

O usuário fulano não existe mais, pois passou a ser chamado de cicrano. Entretanto, o UID e GID permanecem os mesmos.

Outro detalhe importante é o diretório padrão:

V 0.12.0628-2118 Gilberto Martins – [email protected] 157

Page 158: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

$ ls -l /hometotal 16drwxr-xr-x 2 cicrano fulano 4096 2007-12-09 12:12 fulanodrwx------ 26 gmartins gmartins 4096 2007-12-09 11:33 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

O proprietário do diretório /home/fulano é cicrano, e o grupo permaneceu inalterado.

Vamos alterar o nome do grupo:$ sudo groupmod -n cicrano fulano

$ id cicranouid=1003(cicrano) gid=1003(cicrano) grupos=1003(cicrano),1004(contab),1006(drh)

Esta alteração provoca mudanças imediatas no arquivo de grupos:$ grep fulano /etc/group

$ grep cicrano /etc/groupcontab:x:1004:cicranodrh:x:1006:cicranocicrano:x:1003:

Mudanças ocorreram também nos proprietários do diretório:$ ls -l /hometotal 16drwxr-xr-x 2 cicrano cicrano 4096 2007-12-09 12:12 fulanodrwx------ 26 gmartins gmartins 4096 2007-12-09 11:33 gmartinsdrwx------ 5 ssp aluno 4096 2007-12-05 17:09 sspdrwx------ 2 unibratec unibratec 4096 2007-12-05 22:05 unibratec

Falta mudar o nome do diretório:$ mv -v /home/fulano/ /home/cicrano`/home/fulano/' -> `/home/cicrano'

$ su - cicranoSem diretório pessoal, logando com HOME=/

$ pwd/

Mudar o nome do diretório não é suficiente, pois o diretório padrão deste usuário é o que está definido em /etc/passwd:

$ grep cicrano /etc/passwdcicrano:x:1003:1003:Fulano da Silva,Sl 103,1234,1234-1234,4321-4321:/home/fulano:/bin/bash

Então não basta fazer a mudança do nome do diretório padrão, mas também a devida correção nos dados da conta do usuário:

$ grep cicrano /etc/passwdcicrano:x:1003:1003:Fulano da Silva,Sl 103,1234,1234-1234,4321-4321:/home/fulano:/bin/bash

$ sudo usermod -d /home/cicrano cicrano

$ grep cicrano /etc/passwdcicrano:x:1003:1003:Fulano da Silva,Sl 103,1234,1234-1234,4321-4321:/home/cicrano:/bin/bash

Agora, vamos repetir a tentativa de login do usuário:$ su – cicrano

$ pwd/home/cicrano

7.7.5  Mudança de senha

O root pode mudar a senha de todos os usuários:

V 0.12.0628-2118 Gilberto Martins – [email protected] 158

Page 159: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

$ sudo passwd cicranoEnter new UNIX password: <digite aqui a nova senha>Retype new UNIX password: <digite aqui a nova senha>passwd: senha atualizada com sucesso

O próprio usuário pode mudar sua senha, desde que esta atenda exigências de segurança:$ passwdChanging password for cicrano(current) UNIX password: <digite aqui a senha atual>Enter new UNIX password: <digite aqui a nova senha, porem com 3 caracteres>Retype new UNIX password: <digite aqui a nova senha, porem com 3 caracteres>Bad: new password is too shortEnter new UNIX password: <digite aqui a nova senha>Retype new UNIX password: <digite aqui a nova senha>passwd: senha atualizada com sucesso

Note que o usuário precisa confirmar a sua senha atual antes de tentar fazer a mudança. Além disso, conferências adicionais são exigidas. Aqui por exemplo, entrei uma senha de 3 caracteres, o que foi considerado muito curto.

Um usuário só pode mudar sua própria senha:$ passwd gmartinspasswd: Você não pode visualizar ou modificar informações de senha para gmartins.

Também é possível “zerar” a senha de um usuário, ainda que esta prática não seja recomendada. Vamos usar a conta cicrano para este exemplo. Antes de realizar esta operação, os dados de autenticação da conta estão desta forma:

$ sudo grep cicrano /etc/shadow cicrano:$6$QvNvdrU8$WkYRXf/tZNhVIqDZYNCF4doUP4exa6/vAbq/xP7yOO.nMgul/YbhiPGobtVHohZadSokKbSHTPkSki8wsX/9d.:15032:0:99999:7:::

Foi destacado aqui a infromação correspondente a sua senha. Agora vamos “zerar” a sua senha:$ sudo passwd -d cicranopasswd: informações de expiração de contas modificadas.

Este comando gera a seguinte alteração no arquivo /etc/shadow:$ sudo grep cicrano /etc/shadow cicrano::15032:0:99999:7:::

A partir de agora, a conta cicrano não precisará mais de senha para se autenticar.

7.7.6  Bloquear uma conta

Se for preciso impedir temporariamente que uma conta tenha acesso ao sistema, basta bloquear esta conta. Uma conta bloqueada tem todas as suas características preservadas, apenas não permite autenticação.

Antes de bloquear a conta cicrano, ela está registrada assim no /etc/shadow:$ sudo grep cicrano /etc/shadow cicrano:$6$srcJXm9k$xRxq6LkjSE1ZbpOk4sn8ONuhuGAEIM26Tj1f3OTA.LrICR5qoZiYNkbrECObOKT.kh0qH0UksvhHZ.r1fWjl5/:15032:0:99999:7:::

Para bloquear esta conta, usamos o seguinte comando:$ sudo usermod -L cicrano

Depois deste comando, o registro desta conta no /etc/shadow fica assim:$ sudo grep cicrano /etc/shadow cicrano:!$6$srcJXm9k$xRxq6LkjSE1ZbpOk4sn8ONuhuGAEIM26Tj1f3OTA.LrICR5qoZiYNkbrECObOKT.kh0qH0UksvhHZ.r1fWjl5/:15032:0:99999:7:::

A diferença é a adição de um caracter exclamação antes dos caracteres da senha. Mas este detalhe não é demonstrado normalmente. Vejamos o comando id:

$ id cicranouid=1003(cicrano) gid=1003(cicrano) grupos=1003(cicrano),1004(contab),1006(drh)

Não há nenhuma identificação de que esta conta esteja bloqueada. Mesmo ao tentar acessar esta conta, nada será informado em relação ao bloqueio da conta, por motivos de segurança, como podemos ver a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 159

Page 160: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração de usuários

$ su - cicranoPassword: <Digite aqui a senha da conta cicrano>su: Authentication failureDesculpe.

Uma vez que o bloqueio for desfeito, o login ocorre normalmente.$ sudo usermod -U cicrano$ su - cicranoPassword: <Digite aqui a senha da conta cicrano>

Observe que o bloqueio não impede que o root se logue com a conta bloqueada usando o comando su:

$ sudo usermod -L cicrano$ su - cicrano

V 0.12.0628-2118 Gilberto Martins – [email protected] 160

Page 161: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8  Administração do SistemaPara um administrador Linux, existem diversos detalhes do sistema operacional que merecem atenção, e precisam ser dominados. Neste capítulo, vamos abordar alguns destes itens.

V 0.12.0628-2118 Gilberto Martins – [email protected] 161

Page 162: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.1  Mudança de dataO comando date permite ver ou modificar a data e hora do sistema. A sintaxe do comando é:

date MMDDhhmm[YYYYss]

Opções DescriçãoMM Mês com dois dígitos

DD Dia com dois dígitos

hh Hora com dois dígitos

mm Minuto com dois dígitos

YYYY Ano com quatro dígitos (opcional)

ss Segundos com dois dígitos (opcional)

Tabela 28: Opções do date

Como exemplo, vamos verificar a hora atual:$ dateSeg Ago 14 11:31:48 FNT 2006

Usuário comum tentando alterar a data, o que não é permitido:$ date 010112502006date: impossível alterar data: Operação não permitidaDom Jan 1 12:50:00 FNT 2006$ dateSeg Ago 14 11:36:56 FNT 2006

Alterando a data:$ dateSeg Ago 14 11:46:24 FNT 2006$ sudo date 010112502006Dom Jan 1 12:50:00 FNT 2006$ dateDom Jan 1 12:50:09 FNT 2006

A forma de apresentação da data pode ser flexivelmente alterada usando formatação. Estes são os caracteres permitidos para isto:Opções Descrição

%d Dia do Mês (00-31).

%m Mês do Ano (00-12).

%y Ano (dois dígitos).

%Y Ano (quatro dígitos).

%H Hora (00-24).

%I Hora (00-12).

%M Minuto (00-59).

%j Dia do ano (1-366).

%p AM/PM (útil se utilizado com %d).

%r Formato de 12 horas completo (hh:mm:ss AM/PM).

%T Formato de 24 horas completo (hh:mm:ss).

%w Dia da semana (0-6).

Tabela 29: Formatação de data no date

V 0.12.0628-2118 Gilberto Martins – [email protected] 162

Page 163: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

Como exemplo, temos a apresentação da data de modo personalizado:$ date +%d/%m/%Y14/08/2006$ date +"Hoje é %d do mês %m de %Y"Hoje é 14 do mês 08 de 2006

Note que é preciso acrescentar o sinal de mais (+) antes de usar os caracteres de formatação da data, e se este novo formato usar espaços, todo ele deve ficar entre aspas.

V 0.12.0628-2118 Gilberto Martins – [email protected] 163

Page 164: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.2  Espaço em discoÉ possível verificar o espaço utilizado e/ou disponível por partição ou o espaço utilizado por diretório.

$ sudo dfSist. Arq. 1K-blocos Usad Dispon. Uso% Montado em/dev/hda3 13859788 2322228 10833508 18% /tmpfs 127992 0 127992 0% /lib/init/rwudev 10240 92 10148 1% /devtmpfs 127992 0 127992 0% /dev/shm/dev/sda1 488976 110600 378376 23% /media/GILLANE/dev/hdb 238880 238880 0 100% /media/cdrom0

Este comando mostra espaço usado e disponível para cada partição, em números e porcentagem. Esta leitura pode ser ainda mais simplificada:

$ df -hSist. Arq. Tam Usad Disp Uso% Montado em/dev/hda3 14G 2,3G 11G 18% /tmpfs 125M 0 125M 0% /lib/init/rwudev 10M 92K 10M 1% /devtmpfs 125M 0 125M 0% /dev/shm/dev/sda1 478M 109M 370M 23% /media/GILLANE/dev/hdb 234M 234M 0 100% /media/cdrom0

Além de verificar o espaço usado por partição, podemos verificar o espaço usado por diretórios. vamos examinar o conteúdo de /etc/X11/

$ sudo du -s /etc/X11336 X11

Desta forma, podemos ver o espaço total ocupado pelo diretório. Caso seja necessário saber quanto espaço cada um dos arquivos ocupa, temos o seguinte:

$ sudo du -s /etc/X11/*196 X11/app-defaults4 X11/blackbox4 X11/default-display-manager16 X11/fonts20 X11/rgb.txt4 X11/xorg.conf.original8 X11/Xresources8 X11/xserver4 X11/Xsession32 X11/Xsession.d4 X11/Xsession.options4 X11/XvMCConfig4 X11/Xwrapper.config

Usando o comando sort, podemos ter um resultado em ordem, para melhor localizar os arquivos com mais ou com menos espaço ocupado:

$ sudo du -s /etc/X11/* | sort -n0 X11/X4 X11/blackbox4 X11/default-display-manager4 X11/xorg.conf4 X11/xorg.conf.200711262138054 X11/xorg.conf.200711262141204 X11/xorg.conf.original4 X11/Xsession4 X11/Xsession.options4 X11/XvMCConfig4 X11/Xwrapper.config8 X11/Xresources8 X11/xserver12 X11/xinit16 X11/fonts20 X11/rgb.txt32 X11/Xsession.d196 X11/app-defaults

V 0.12.0628-2118 Gilberto Martins – [email protected] 164

Page 165: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.3  Uso de memóriaÉ possível verificar qual é o uso de memória em qualquer momento:

$ free total used free shared buffers cachedMem: 255988 242940 13048 0 15272 103880-/+ buffers/cache: 123788 132200Swap: 666984 92 666892

Para simplificar a leitura, a opção -m pode ser usada:$ free -m total used free shared buffers cachedMem: 249 237 12 0 14 101-/+ buffers/cache: 120 129Swap: 651 0 651

A opção -s2 vai reimprimir o resultado de free a cada 2 segundos. Este processo não terminará enquanto não for teclado um ^C.

V 0.12.0628-2118 Gilberto Martins – [email protected] 165

Page 166: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.4  Localizando arquivos

8.4.1  Usando whereis

O comando whereis procura por programas, ou arquivos fonte, ou páginas de manual. Esta procura é feita em diretórios conhecidos do linux, que são destinados para estes tipos de arquivo.

$ whereis passwdpasswd: /usr/bin/passwd /etc/passwd /usr/X11R6/bin/passwd /usr/bin/X11/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man5/passwd.5.gz

Todos os arquivos relacionados ao passwd foram mostrados, tanto os binários, como os arquivos de configuração como arquivos de documentação. Podemos separar alguns destes arquivos, com opções do comando whereis.

$ whereis -b passwdpasswd: /usr/bin/passwd /etc/passwd /usr/X11R6/bin/passwd /usr/bin/X11/passwd$ whereis -m passwdpasswd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man5/passwd.5.gz

8.4.2  Usando updatedb e locate

Outra forma de localizar um arquivo é usar o updatedb, que cria um banco de dados com todos os arquivos do sistema e seus caminhos completos. Com isso, a busca por qualquer arquivo é extremamente rápida, pois não é necessário buscar o arquivo diretamente no disco.

$ sudo updatedb

O comando acima atualiza o banco de dados. Para efetuar uma busca, a ferramenta usada é o locate.$ locate Special/usr/share/iceweasel/res/entityTables/html40Special.properties/usr/share/perl/5.8.8/unicore/SpecialCasing.txt/usr/share/xulrunner/res/entityTables/html40Special.properties

$ locate special/home/gmartins/.icons/LeopardX-Beta2/scalable/emblems/emblem-special.png/usr/include/c++/4.1.2/ext/codecvt_specializations.h/usr/share/doc/diveintopython/html/object_oriented_framework/special_class/usr/share/doc/diveintopython/html/object_oriented_framework/special_class

O comando locate é case-sensitive, ou seja, faz distinção entre maiúsculas e minúsculas. Caso seja necessário efetuar uma busca ignorando maiúsculas ou minúsculas, usamos a opção -i:

$ locate -i special/usr/share/iceweasel/res/entityTables/html40Special.properties/usr/share/perl/5.8.8/unicore/SpecialCasing.txt/usr/share/xulrunner/res/entityTables/html40Special.properties/home/gmartins/.icons/LeopardX-Beta2/scalable/emblems/emblem-special.png/usr/include/c++/4.1.2/ext/codecvt_specializations.h/usr/share/doc/diveintopython/html/object_oriented_framework/special_class/usr/share/doc/diveintopython/html/object_oriented_framework/special_class

Além disso, a procura não é feita apenas no nome do arquivo, mas em qualquer parte do caminho do arquivo.

Entretanto, o banco de dados não se atualiza automaticamente, tendo a característica de estar desatualizado a cada arquivo que for incluído ou alterado. A vantagem seria a velocidade de resposta, que é muito rápida. Para exemplificar, veja o seguinte exemplo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 166

Page 167: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

$ > lixo.xyz $ locate lixo.xyz

O arquivo lixo.xyz foi criado, mas não foi encontrado. Vamos atualizar o banco de dados:$ sudo updatedb $ locate lixo.xyz /home/gmartins/lixo.xyz

Agora, o arquivo foi encontrado.

8.4.3  Localizar qualquer tipo de arquivo

Uma alternativa é usar o comando find, que procura o arquivo diretamente no disco. Um exemplo simples seria procurar o arquivo vimrc.

$ sudo find / -name vimrc/etc/vim/vimrc/usr/share/vim/vimrc

Na procura acima, o find apresenta como resultado dois arquivos: o /etc/vim/vimrc e /usr/share/vim/vimrc. O comando find usa a seguinte sintaxe:

find [Diretório] [opção]

Item DescriçãoDiretório Diretório no qual a procura vai ser iniciada

Opção Opção de procura. Pode ser acompanhada por uma outra informação

Tabela 30: Componentes do comando find

O comando find tem diversas opções disponíveis, o que o torna uma excelente ferramenta de busca. Vejamos estes outros exemplos:

8.4.4  Busca por parte do nome do arquivo

Há casos em que não se sabe o nome completo do rquivo, mas lembramos de um fragmento do nome.

8.4.4.1  Diferenciando maiúsculas de minúsculas

A opção -name informa ao find que o que vai ser procurado é exatamente o que está entre aspas$ sudo find /etc -name "*date-initramfs*"/etc/initramfs-tools/update-initramfs.conf

8.4.4.2  Não diferenciando maiúsculas de minúsculas:$ sudo find /etc -iname "*bitmap*"/etc/X11/app-defaults/Bitmap-color/etc/X11/app-defaults/Bitmap/etc/X11/app-defaults/Bitmap-nocase/etc/fonts/conf.avail/70-yes-bitmaps.conf/etc/fonts/conf.avail/70-no-bitmaps.conf

8.4.5  Busca por permissões

Procura por arquivos com permissão rw-r--r-- que tenham fst no nome, no diretório /etc:

V 0.12.0628-2118 Gilberto Martins – [email protected] 167

Page 168: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

$ sudo find /etc -perm 0644 -iname "*fst*" /etc/fstab

8.4.6  Busca por datas

Procura por arquivos que foram alterados nos últimos 480 minutos (8 horas), começando esta busca no diretório /media:

$ sudo find /media -mmin -480/media/media/GILLANE/ssp-al/media/GILLANE/ssp-al/Operacao Linux DEBIAN.odt/media/GILLANE/ssp-al/LinuxAvancado.odt

Repetindo a busca acima, mas desta vez mostrando o resultado em formato semelhante ao formato usado pelo comando ls -dils:

$ sudo find /media -mmin -480 -ls277441 4 drwxr-xr-x 5 root root 4096 Dez 8 09:55 /media 994 4 drwx------ 2 gmartins gmartins 4096 Dez 8 11:03 /media/GILLANE/ssp-al 1010 268 -rwx------ 1 gmartins gmartins 271403 Dez 8 19:50 /media/GILLANE/ssp-al/Operacao\ Linux\ DEBIAN.odt 1205 12 -rwx------ 1 gmartins gmartins 11608 Dez 8 11:12 /media/GILLANE/ssp-al/LinuxAvancado.odt

8.4.7  Busca por tamanho

Procura arquivos em /usr (ou qualquer de seus subdiretórios), com tamanho entre 2M (-size +2M) e 2.2M (-size -2200k). Para cada arquivo localizado ({}) será executado (-execdir) o comando ls -sh.

$ sudo find /usr -size +2M -size -2200k -execdir ls -sh {} +2,2M ./base.pp2,2M ./powerpc-linux-gnu-run2,1M ./libcui680lp.so 2,1M ./slideshow.uno.so2,1M ./org.eclipse.team.cvs.core_3.2.1.M200608161750.jar.so2,2M ./libstdc++.a2,1M ./libsmbclient.so.0.1

No exemplo acima, é importante observar os seguintes detalhes:Item Descrição-size Permite especificar o tamanho do arquivo procurado. Esta opção tem as seguintes letras como sufixo:

• c bytes• k kilobytes• M megabytes• G gigabytes

Além disso, um sinal de menos antecedendo o número significa menor que, enquanto um sinal de mais significa maior que.

• -size -200M Tamanho menor que 200 megabytes• -size +50k Tamanho maior que 50 kilobytes

-execdir Executa o comando que o segue para cada arquivo localizado, em seu próprio diretório. Observe que o comando completo estará entre a opção -execdir e o sinal de mais (+). Entre estes deve haver um sinal {}, que vai ser substituído pelo arquivo localizado pelo find.

Tabela 31: Opções -size e -execdir do find

8.4.8  Busca por usuário

Neste caso podemos fazer a busca pelo nome do usuário ou pelo UID do usuário.

Vamos primeiro constatar que no diretório /usr/games não existe nenhum arquivo do usuário ssp:

V 0.12.0628-2118 Gilberto Martins – [email protected] 168

Page 169: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

$ sudo id sspuid=1001(ssp) gid=1001(aluno) grupos=1001(aluno),4(adm)$ sudo find /usr -uid 1001

Agora, vamos criar um arquivo onde este usuário seja o proprietário:$ sudo touch /usr/games/arquivo$ sudo chown -v ssp /usr/games/arquivotrocado dono de `/usr/games/arquivo' para ssp

Vamos fazer a busca pelo nome do usuário:$ sudo find /usr/games/ -user ssp/usr/games/arquivo

Vamos fazer a busca pelo UID do usuário:$ sudo find /usr/games/ -uid 1001/usr/games/arquivo

Existem outras opções úteis, que devem ser pesquisadas no man do comando find. Todas podem ser usadas em conjunto, como exemplificamos aqui.

Observação: Evite fazer buscas que iniciam no diretório raiz. Além de serem demoradas, pois vão realizar a busca em toda a estrutura de diretórios, fazem a CPU ser usada em praticamente 100%.

V 0.12.0628-2118 Gilberto Martins – [email protected] 169

Page 170: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.5  Agendamento de tarefasO cron, é o agendador de tarefas do linux, que ao contrário do at, que só permite que executemos tarefas agendadas apenas uma única vez, o cron nos permite executar tarefas repetidamente, ou seja, todo dia, toda semana, ou em qualquer período pré-estabelecido.

8.5.1  Ferramenta de agendamento

Para usar o cron, ou seja, agendar uma tarefa, precisamos editar o arquivo crontab. O caminho para este arquivo, na maioria das distribuições, é: /etc/crontab. Você pode agendar várias tarefas, para tanto você deve colocar um agendamento por linha. Para agendar alguma atividade, deve-se usar o seguinte comando:

$ sudo crontab -e

O comando acima vai gerar agendamentos pelo root. Para gerar agendamentos como usuário comum, basta usar o comando a seguir:

$ sudo crontab -e

O arquivo de configuração também aceita notação de comentário. Desta forma, toda a linha do arquivo que começar com o caractere #, será ignorada, ou seja, não será executada.

É importante que o caminho padrão a seguir seja incluído no início do arquivo:PATH=/usr/sbin:/usr/bin:/sbin:/bin

Assim se garante acesso aos principais binários do sistema, visto que nem sempre o PATH do sistema é utilizado.

8.5.2  Configuração pelo root

A sintaxe de configuração para um agendamento no arquivo /etc/crontab, que é bem simples, é explicada a seguir.

(minutos) (horas) (dias do mês) (mês) (dias da semana) (usuário) (comando)

Onde:OPÇÃO DESCRIÇÃO

minutos Representa o minuto no qual o comando será executado. Aceita apenas números de 0 a 59

horas Representa a hora em que o comando será executado. Aceita apenas números de 0 a 23

dias do mês Define em que dia o comando será executado. Aceita apenas números de 0 a 31

mês Mês para o qual se agendou a execução do comando. Aceita apenas números de 1 a 12

dias da semana Define o dia da semana onde o comando será executado. Aceita apenas números de 1 a 7. Sendo 1 para segunda-feira e 7 para o domingo

usuário Usuário que executará o comando. Aceita apenas nomes de usuários previamente criados

comando Comando do sistema, scripts em geral, ou seja, qualquer arquivo que tenha permissão de execução

8.5.3  Configuração por usuário comum

Quando o agendamento é executado por um usuário comum, a sintaxe de cada linha de agendamento tem uma ligeira mudança:

V 0.12.0628-2118 Gilberto Martins – [email protected] 170

Page 171: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

(minutos) (horas) (dias do mês) (mês) (dias da semana) (comando)

Ou seja, o nome do usuário é removido. De resto, toda a configuração é mantida.

8.5.4  Exemplos

Vamos agendar um fictício script de backup para ser executado toda a noite às 22hs.0 22 * * * root /root/backup.sh

Note a presença do *. Ele é interpretado como todos, ou todas. Neste caso, agendamos o nosso script para ser executado às 22h e 0m de todos os dias, todos os meses, todos os dias da semana. O usuário que executará o script será o root, e por fim, definimos qual script será executado.

Vamos a um próximo exemplo.0 0,6,12,18 * * * root /root/backup.sh

Note a presença da vírgula. Ela pode ser traduzida por e. Neste exemplo podemos ler da seguinte forma: “root, execute o script /root/backup.sh todos os dias da semana, todos os meses, todos os dias, às 0,6,12 e 18hs e 0 minutos.”

Mais um exemplo, iremos agendar um backup geral do sistema toda sexta-feira 13 antes da meia noite.

0 23 13 * 5 root /root/backupGeral.sh

No exemplo acima, o script é executado às 23hs e 0min do dia 13 de todos os meses, porém somente quando neste dia 13, o dia da semana for 5(sexta-feira) .

Para agendarmos um comando para ser executado de 5 em 5 minutos por exemplo, podemos fazer da seguinte forma:

*/5 * * * * root /root/backup.sh

Definimos um intervalo de 5 minutos com “*/5”. Isto pode ser interpretado como “a cada 5 minutos”. Desta forma é possível agendar um comando para ser executado da seguinte forma:

*/5 9-18 * * * root /root/backup.sh

Na linha acima, o comando /root/backup.sh é executado a cada 5 minutos, no intervalo das 9 as 18 hs de todos os dias, todos os meses, todos os dias da semana.

8.5.5  Agendamentos periódicos

Um sistema Ubuntu, assim como outras distribuições, tem agendamento periódico, definido nos diretórios /etc/cron.hourly (tarefas realizadas a cada hora), /etc/cron.daily (tarefas realizadas diariamente), /etc/cron.monthly (tarefas realizadas mensalmente) e /etc/cron.weekly (tarefas realizadas semanalmente).

Os arquivos que estão dentro destes diretórios são scripts bash, que serão executados na periodicidade. A maioria destes é criada no momento da instalação do sistema, e outros são automaticamente acrescentados através do apt-get ou do aptitude.

8.5.6  Listagem de tarefas

Para visualizar as tarefas agendadas para o usuário, digite o comando crontab -l.

V 0.12.0628-2118 Gilberto Martins – [email protected] 171

Page 172: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.5.7  Arquivo de log

Toda execução do cron é registrada em /var/log/syslog, e deve sempre ser observado.

8.5.8  Problemas comuns

• Ao adicionar uma nova linha a um crontab, esta deve sempre ser concluída com um caracter newline. Isto significa que cada linha deve ser encerrada com um ENTER. Isto ocorre em editores de texto mais antigos, ou com menos recursos, como o vim. Nestes, era necessário teclar ENTER na última linha do arquivo, antes de o gravar.

• Quando isto acontecia, nenhuma mensagem de erro era emitida, mas esta última linha era desconsiderada, apesar de existir no crontab.

• Em um sistema Ubuntu, o padrão é não existirem os arquivos /etc/cron.allow e /etc/cron.deny, permitindo que qualquer usuário possa acessar o comando crontab. Mas se existir um arquivo /etc/cron.deny vazio, apenas o root poderá agendar atividades.

• Quando o crontab for usado pelo root, é obrigatório que o nome do usuário que vai executar esta tarefa esteja depois dos parâmetros de data e hora. Um erro comum é fazer esta configuração quando se está usando o crontab como usuário comum. Caso isto ocorra, o nome do usuário será interpretado como um comando, eventualmente gerando uma mensagem de comando inexistente.

• Sempre use caminhos (PATH) completos para os programas a serem usados. Em determinadas configurações, o PATH do sistema não é utilizado, podendo causar mensagens de comando inexistente.

V 0.12.0628-2118 Gilberto Martins – [email protected] 172

Page 173: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.6  Administração de pacotesTodas as distribuições de Linux usam algum sistema de administração de pacotes para instalação de software. Um pacote é um arquivo que contêm outros arquivos do software, entre eles, os binários, documentação, imagens, etc.

Os principais sistemas de pacote são os baseados nos formatos .tar.gz, .tgz ou tarballs, RPM e DEB. O primeiro formato (. tar.gz, .tgz ou tarballs) é o mais fundamental, largamente utilizado desde o princípio da história do Unix. É normalmente composto de arquivos fonte que precisam ser compilados depois de instalados. A desvantagem é que todo o trabalho é manual, mas o resultado é (em geral) um binário mais rápido que o convencional.

O formato RPM foi criado pela Red Hat, e é aproveitado por outras distribuições que derivaram do Red Hat, como o SuSE, OpenSuse e Mandriva, além de outras.

Segundo pesquisa8, os softwares para o Ubuntu e distribuições derivadas do Debian são disponibilizados em pacotes de fácil distribuição e gerenciamento. O formato e as ferramentas usadas nestas distribuições foram criados pelo Projeto Debian, e são muito sofisticadas. Além disso, políticas rígidas de criação de pacotes e medidas de controle de qualidade garantem compatibilidade, e facilidade durante atualização de versão.

Um pacote .deb guarda em si informações sobre:Características Descriçãodependências Quais pacotes devem estar instalados ou quais devem ser instalados para que a instalação

deste pacote ocorra corretamente

conflitos Quais pacotes não podem estar presentes quando este pacote for instalado

substituições Quais pacotes serão substituídos através da instalação deste pacote

provisões Recursos disponibilizados pelo pacote

recomendações Pacotes que podem ser instalados, mas não são obrigatórios

Tabela 32: Características de pacotes .deb

É importante observar que dos recursos acima, nem todos estarão presentes em todos os pacotes.

Os pacotes Debian se apresentam de duas formas: binário e fonte. Pacotes binários contêm arquivos já compilados, gravados nos pacotes em uma estrutura de diretórios adequada para o funcionamento correto, scripts que serão executados automaticamente no momento em que o processo de instalação for iniciado e também quando se encerrar.

Já pacotes fonte contêm o código fonte e instruções de compilação que as ferramentas adequadas usam para criar pacotes binários.

Para resumir, quando o pacote é binário, basta instalar e usar o sistema. Quando o pacote contém fontes, é necessário não apenas instalar como também compilar o aplicativo.

8.6.1  Versões dos softwares

As ferramentas abordadas neste capítulo estão nas seguintes versões:PACOTE ARQUIVOS OU APLICAÇÕES VERSÃO

apt /etc/apt/sources.list 0.7.20.2ubuntu6

aptitude /usr/bin/aptitude 0.4.11.11-1ubuntu1

8 Livro “Linux Bible”

V 0.12.0628-2118 Gilberto Martins – [email protected] 173

Page 174: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.6.2  Repositórios

O sistema APT do Ubuntu e distribuições derivadas do Debian está centrado em repositórios, que são sites que contêm todos os pacotes disponibilizados para instalação. Estes estão espalhados pelo mundo, em diversos países. Na máquina em que o Ubuntu está sendo instalado, é preciso informar qual (ou quais) repositório será usado. E isso é feito pela edição do arquivo de configuração do APT:

$ sudo vim /etc/apt/sources.list

Segue um exemplo de um linha que compõe este arquivo:deb http://br.archive.ubuntu.com/ubuntu/ jaunty universe

Esta linha deve ser analisada usando o seguinte formato:deb uri distribuição [component1] [component2] […]

Analisando cada um dos componentes da linha exemplo teremos o seguinte:ITEM DESCRIÇÃO

deb

Indica o tipo de pacote que está sendo disponibilizado neste repositório. Neste caso é um pacote de instalação DEBIAN. Distribuições baseadas em Red Hat usam rpm ao invés de deb.Caso esteja sendo disponibilizado códigos fonte, este valor será deb-src. Este será útil caso haja a intenção de compilar software.

http://br.archive.ubuntu.com/ubuntu Esta é a URI, ou seja, a localização do repositório dentro do site. Neste caso, o repositório está em ubuntu, dentro do site http://br.archive.ubuntu.com/.

jauntyEsta é a distribuição que está sendo usada. No contexto do arquivo sources.list, distribuição é a versão em uso. Na introdução deste material abordamos as versões do Debian, por exemplo.

universe

Este é o componente a ser consultado. Os componentes do Ubuntu são os seguintes:

• main : Softwares de código aberto mantidos pela Canonical• universe : Softwares de código aberto mantidos pela comunidade• restricted : Drivers proprietários, isto é, sem o código tonte• multiverse : Software proprietário• partner : Software de “parceiros”. Não é mantido pela Canonical, mas é

oferecido como um serviço para usuários Ubuntu

8.6.3  Recriação do sources.list

Há casos em que precisamos alterar este arquivo para incluir ou remover um repositório. Há ainda a possibilidade de termos que o refazer por completo. Para reduzir este problema, é muito interessante manter sempre uma cópia deste arquivo, no mesmo diretório:

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.original

E para ainda maior garantia, é interesante que ninguém possa alterar este arquivo de back up. Por isto, é interessante garantir que o mesmo seja imutável:

$ sudo chattr +i /etc/apt/sources.list.original

8.6.3.1  No Debian

Em http://www.debian.org/mirrors/list encontra-se uma lista completa dos servidores oficiais de repositório para o Debian, para que sejam copiados para o sources.list.

8.6.3.2  No Ubuntu

Caso a interface gráfica esteja instalada, é possível automatizar e simplificar todo o processo. Primeiro, na barra de menus, escolher Sistema e depois Administração. Neste menu, escolheremos a opção Canais de software.

V 0.12.0628-2118 Gilberto Martins – [email protected] 174

Page 175: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

Imagem 36: Opção "Canais de Software"

O Software que vai ser mostrado permite selecionar diversas características necessárias para a alteração do sources.list.

Nesta primeira aba definiremos quais serão os nossos repositórios. Este assunto é abordado quando detalhamos o assunto Repositórios.

V 0.12.0628-2118 Gilberto Martins – [email protected] 175

Imagem 37: Canais de Software: Aba Programas do Ubuntu

Page 176: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

Na aba Atualizações, repetir a configuração da imagem acima. Aqui é definido quais alterações serão recebidas, quando e como.

Esta última aba é opcional, e muito bem explicada, no que diz respeito ao que está escrito. É recomendável que esteja sempre marcada, pois com esta informação, a Canonical concentra esforços nos softs mais utilizados pelos usuários.

8.6.4  Dependências

Na maioria das vezes, não basta instalar o pacote, mas também outros pacotes necessários para o funcionamento correto. A qualquer momento podemos verificar estas informações.

8.6.4.1  Dependência reversa

A dependência reversa relaciona os pacotes que precisam do pacote em questão. Para verificar quais pacotes dependem de <pacote>, usar a seguinte instrução:

$ apt-cache rdepends <pacote>

Vamos tomar como exemplo o aplicativo eog, que corresponde ao nosso visualizador de imagens:

V 0.12.0628-2118 Gilberto Martins – [email protected] 176

Imagem 38: Canais de Software: Aba Atualizações.

Imagem 39: Canais de Software: Aba Estatísticas

Page 177: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

$ sudo apt-cache rdepends eog eog Reverse Depends: nautilus ubuntustudio-desktop ubuntu-netbook-remix gnome-core deb-gview ubuntu-desktop nautilus gnupg eog-dev eog-dbg

Qualquer um destes 10 pacotes precisarão que eog já esteja instalado. Normalmente, caso se tente instalar um destes pacotes sem que eog esteja instalado, tanto o apt-get como o aptitude vão providenciar o download e instalação de eog automaticamente.

8.6.4.2  Dependência direta

Para verificar quais pacotes precisam estar instalados para que se possa instalar <pacote>, usar a seguinte instrução:

$ apt-cache depends <pacote>

Vamos aplicar isto no exemplo:$ sudo apt-cache depends eog-dev eog-dev Depende: eog Depende: libgnomeui-dev Depende: libgconf2-dev

No exemplo, para que o eog-dev seja instalado, vai ser necessário que os pacotes eog, libgnomeui-dev e libgconf2-dev esteja instalados. Igualmente ao exemplo anterior, caso eog-dev venha a ser instalado, tanto o apt-get quanto o aptitude vão providenciar a instalação de cada um destes pacotes.

8.6.4.3  Verificação via aptitude

Usando o aptitude, também podem ser visualizadas estas dependências diretas:

V 0.12.0628-2118 Gilberto Martins – [email protected] 177

Page 178: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

É possível também visualizar as dependências reversas:

V 0.12.0628-2118 Gilberto Martins – [email protected] 178

Imagem 40: aptitude mostrando as relações diretas de eog

Page 179: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

8.6.5  Arquivo de configuração

É o arquivo que contém o endereço de todos os repositórios, cujo nome é /etc/apt/sources.list. No meu sistema, onde este material está sendo digitado, este arquivo pode ser visto com o seguinte comando:

V 0.12.0628-2118 Gilberto Martins – [email protected] 179

Imagem 41: aptitude mostrando os pacotes que dependem de eog

Page 180: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

$ cat /etc/apt/sources.list

O resultado é:#deb cdrom:[Ubuntu 9.04 _Jaunty Jackalope_ - Release i386 (20090420.1)]/ jaunty main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution.

deb http://br.archive.ubuntu.com/ubuntu/ jaunty main restricted deb-src http://br.archive.ubuntu.com/ubuntu/ jaunty main restricted

## Major bug fix updates produced after the final release of the ## distribution. deb http://br.archive.ubuntu.com/ubuntu/ jaunty-updates main restricted deb-src http://br.archive.ubuntu.com/ubuntu/ jaunty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://br.archive.ubuntu.com/ubuntu/ jaunty universe deb-src http://br.archive.ubuntu.com/ubuntu/ jaunty universe deb http://br.archive.ubuntu.com/ubuntu/ jaunty-updates universe deb-src http://br.archive.ubuntu.com/ubuntu/ jaunty-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://br.archive.ubuntu.com/ubuntu/ jaunty multiverse deb-src http://br.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://br.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse deb-src http://br.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

## Uncomment the following two lines to add software from the 'backports' ## repository. ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. # deb http://br.archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse # deb-src http://br.archive.ubuntu.com/ubuntu/ jaunty-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu jaunty partner # deb-src http://archive.canonical.com/ubuntu jaunty partner

deb http://security.ubuntu.com/ubuntu jaunty-security main restricted deb-src http://security.ubuntu.com/ubuntu jaunty-security main restricted deb http://security.ubuntu.com/ubuntu jaunty-security universe deb-src http://security.ubuntu.com/ubuntu jaunty-security universe deb http://security.ubuntu.com/ubuntu jaunty-security multiverse deb-src http://security.ubuntu.com/ubuntu jaunty-security multiverse

# Google repository deb http://dl.google.com/linux/deb/ stable non-free # Google testing repository deb http://dl.google.com/linux/deb/ testing non-free

Como se pode notar, este arquivo tem muitos comentários, que são úteis no princípio, mas com o passar do tempo podem ser inconvenientes. Este arquivo pode ser visto sem os comentários, com o seguinte comando:

sudo egrep -v "^ *#|^$|^deb-src" /etc/apt/sources.list

O resultado deste comando é:

V 0.12.0628-2118 Gilberto Martins – [email protected] 180

Page 181: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Administração do Sistema

deb http://br.archive.ubuntu.com/ubuntu/ jaunty main restricted deb http://br.archive.ubuntu.com/ubuntu/ jaunty-updates main restricted deb http://br.archive.ubuntu.com/ubuntu/ jaunty universe deb http://br.archive.ubuntu.com/ubuntu/ jaunty-updates universe deb http://br.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://br.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse deb http://security.ubuntu.com/ubuntu jaunty-security main restricted deb http://security.ubuntu.com/ubuntu jaunty-security universe deb http://security.ubuntu.com/ubuntu jaunty-security multiverse deb http://dl.google.com/linux/deb/ stable non-free deb http://dl.google.com/linux/deb/ testing non-free

Assim, para preservarmos o arquivo original e “limparmos” o arquivo, seguiremos os seguintes passos:sudo cp /etc/apt/sources.list /etc/apt/sources.list.originalsudo chattr +i /etc/apt/sources.list.originalsudo egrep -v "^ *#|^$|^deb-src" /etc/apt/sources.list.original > /etc/apt/sources.list

/var/lib/apt/lists

/var/cache/apt/archives

apt-get (update, install, remove, autoclean, clean)

apt-cache (search)

aptitude modo tela cheia

dpkg (-l -L -s -p -i)• Sistema APT

○ apt-get■ purge■ autoremove

○ apt-cache■ show

○ aptitude■ purge■ nome do pacote terminando em + ou _

○ Criação de repositório apt interno

V 0.12.0628-2118 Gilberto Martins – [email protected] 181

Page 182: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

9  Compilação do KernelO kernel é o componente central da maioria dos sistemas operacionais. Suas responsabilidades incluem gerenciar os recursos do sistema (a comunicação entre os componentes de hardware e software). Como um componente básico de um sistema operacional, o kernel providencia a camada de abstração mais básica para os recursos.(especialmente memória, processadores e dispositivos de entrada e saída) que o software de aplicação tem que controlar para efetuar sua função. Para saber qual a versão do kernel está em uso, digite o seguinte comando:

$ uname -r2.6.28-16-generic

Neste exemplo, vemos que a versão em uso é a 2.6.28-16-generic.

Compilar o kernel do Linux não é um procedimento trivial, e por isto é preciso pensar antes de dedicar tempo e esforço nesta operação.

Por que recompilar o kernel?• Você é um desenvolvedor do kernel;• Você precisa de um kernel compilado de uma forma especial, diferente da forma como o kernel

disponibilizado na distribuição de teu uso foi compilado (por exemplo, caso seja necessário um kernel com alguma característica experimental ativada);

• Você está tentando resolver um problema que possa estar presente na distribuição de teu uso, para o qual você já tenha enviado um relatório de erro, ou mesmo que venha a querer enviar um relatório de erro;

• Você tem um hardware não suportado pela versão do kernel que acompanha tua distribuição;

Por que não recompilar o kernel ?• Sua necessidade é apenas compilar um driver. Neste caso, é suficiente instala o pacote linux-

headers, para compilar apenas este driver;• Caso você não tenha certeza do que está fazendo, como está fazendo ou por quê está fazendo.

Neste caso, se você danificar algo, certamente precisará de ajuda para recuperar os danos causados.

Ainda assim, caso você esteja querendo instalar um novo kernel sem que haja compilação, você pode usar o apt-get ou o aptitude para instalar o pacote linux-image na versão necessária.

As instruções aqui contidas foram testadas no Ubuntu Server versão 9.04.

V 0.12.0628-2118 Gilberto Martins – [email protected] 182

Page 183: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

9.1  Obtenção do código fontePara compilar o kernel em qualquer distribuição, é preciso obter os fontes. Existem duas possibilidades de obter o código fonte.

9.1.1  Método tradicional

Este método atende qualquer distribuição de linux, em qualquer plataforma, entretanto, este método é o mais trabalhoso. Os arquivos fontes do kernel devem ser obtidos em http://www.kernel.org. Depois de baixado o kernel, o próximo passo é descompactá-lo e configurá-lo de acordo com as suas necessidades.

No site, cada linha apresenta uma versão do kernel, estando em destaque a versão considerada como estável. Clicar neste link vai provocar o download do arquivo contendo os códigos fontes do kernel.

9.1.1.1  Descompactando o código fonte

No kernel acima vemos que este parece ser um pacote tar que está compactado no formato bzip2. Para confirmar, podemos usar o seguinte recurso:

$ file ~gmartins/Desktop/linux-2.6.31.5.tar.bz2/home/gmartins/Desktop/linux-2.6.31.5.tar.bz2: bzip2 compressed data, block size = 900k

Vamos descompactar este arquivo no diretório correto, que é o /usr/src:

V 0.12.0628-2118 Gilberto Martins – [email protected] 183

Imagem 42: Site do www.kernel.org

Page 184: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

$ sudo tar xf ~gmartins/Desktop/linux-2.6.31.5.tar.bz2 -C/usr/src

Note que foi criado um diretório com o nome da versão dentro do diretório /usr/src: É interessante fazer um link simbólico deste diretório para um diretório com nome linux.

$ sudo ln -sv /usr/src/linux-2.6.31.5/ /usr/src/linux

Assim temos o diretório que contêm os fontes e um atalho apontando para ele.$ ls -ltotal 4lrwxrwxrwx 1 root src 24 Mai 20 04:25 linux -> /usr/src/linux-2.6.31.5/drwxrwxr-x 21 root root 4096 Mai 20 04:24 linux-2.6.31.5

9.1.2  Obtendo o Kernel a partir de repositórios Canonical

O Kernel pode ser obtido a partir dos repositórios da Canonical. Esta é a melhor opção, caso se esteja usando o Ubuntu Server. Para obter os fontes, usa-se o apt-get:

$ sudo apt-get build-dep linux-image-$(uname -r)$ sudo apt-get source linux-source

ou usando o aptitude:$ sudo aptitude build-dep linux-image-$(uname -r)

Ambos os comandos acima obterão a imagem já compiladado kernel, e adicionalmente todos as dependências destes códigos fontes.

9.1.2.1  Descompactando o código fonte

A seguir, vamos abrir este pacote para o diretório em que nos encontramos:$ sudo apt-get source linux-image-$(uname -r)

ou usando o aptitude:$ sudo aptitude source linux-image-$(uname -r)

V 0.12.0628-2118 Gilberto Martins – [email protected] 184

Page 185: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

9.2  Instalando os pacotes adicionaisPara que a compilação ocorra normalmente, diversos pacotes precisam estar instalados.

$ sudo apt-get install fakeroot kernel-wedge build-essential makedumpfile libncurses5 libncurses5-dev

Esta instalação pode ser feita também com o comando aptitude:$ sudo aptitude install fakeroot kernel-wedge build-essential makedumpfile libncurses5 libncurses5-dev

Além destes pacotes, devemos proceder a seguinte operação:$ sudo apt-get build-dep linux

ou com o aptitude:$ sudo aptitude build-dep linux

Estes pacotes vão providenciar o necessário para que ocorra a configuração e compilação do kernel.

V 0.12.0628-2118 Gilberto Martins – [email protected] 185

Page 186: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

9.3  Configuração do kernelUma vez obtido os fontes completos, é preciso configurar o kernel. Neste exemplo usaremos o código fonte obtido pelos repositórios da Canonical.

9.3.1  Arquivos de configuração

Os arquivos de configuração vão trazer todos os parâmetros usados na geração do kernel do Ubuntu, e se encontra em ~/linux-<versão do kernel>/debian.master/config/<arch>. O <arch> reflete a arquitetura que está sendo utilizada. Para se determinar isso, usamos o seguinte comando:

$ uname -m

O resultado é idêntico ao obtido com o comando arch:$ arch

No sistema que estou usando, tive como resposta i686. Isto me leva a usar o diretório i386. Assim, tive o seguinte resultado:

$ ls -l linux-2.6.28/debian.master/config/i386/total 108-rw-r--r-- 1 root root 96034 2009-11-07 12:27 config-rw-r--r-- 1 root root 805 2009-11-07 12:27 config.generic-rw-r--r-- 1 root root 987 2009-11-07 12:27 config.server

Aqui tenho o arquivo de configuração base (config), genérico (generic) e para servidores (server). No meu caso, estarei usando o genérico, pois este é o kernel que estou usando, conforme pode ser conferido com o comando a seguir:

$ uname -r2.6.28-16-generic

Feito isso, devemos copiar o arquivo para o seu local correto:$ sudo cp ~/linux-2.6.28/debian.master/config/i386/linux-2.6.28/debian.master/config/i386/ ~/linux-2.6.28

9.3.2  Utilitário de configuração

Agora, para execução do utilitário de configuração, executamos o seguinte:$ sudo cd ~/linux-2.6.28$ sudo make menuconfig

Uma interface como a seguinte vai aparecer, para que seja feita a seleção de pacotes. Usando as setas, é possível percorrer as muitas opções do menu.

V 0.12.0628-2118 Gilberto Martins – [email protected] 186

Page 187: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

Cada item que termina com uma seta indica que há sub-itens a serem configurados. Para abrir as opções basta teclar ENTER. Vamos abrir o grupo Device Drivers.

Nesta tela, vamos procurar o suporte a porta paralela. A listagem a seguir relaciona os dispositivos disponíveis do menu.

V 0.12.0628-2118 Gilberto Martins – [email protected] 187

Imagem 43: Menu de configuração do kernel

Page 188: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

Neste menu, o suporte a porta paralela está configurada para estar disponível como um módulo, ou seja, vai ser compilada separadamente, e não interna ao kernel, podendo ser ativada ou desativada a qualquer momento. Como tem o símbolo de grupo (--->) ao teclar ENTER é possível examinar as outras opções. Vamos observar apenas, pois este suporte será desabilitado no nosso exemplo. Neste grupo (Device Drivers), por exemplo, poderíamos desmarcar o suporte à ISDN e interface ATA ou Serial ATA, dependendo da configuração do hardware. Bom seria excluir do kernel o que não necessitamos.

V 0.12.0628-2118 Gilberto Martins – [email protected] 188

Imagem 44: Menu de dispositivos (Device drivers)

Page 189: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

Supondo que nesta estação, portas paralelas não sejam necessárias, podemos eliminar o suporte a portas paralelas do processo de montagem do kernel. Isto é feito no menu anterior, posicionando na opção e teclando N, ou teclando ESPAÇO até que não tenha marca nenhuma entre os sinais < >.

Assim, quando o processo de compilação iniciar, não haverá suporte a porta paralela. Ao tentarmos encerrar todo o processo de configuração, o software vai perceber que foram feitas modificações que não foram gravadas, e vai nos convidar a gravar estas alterações no arquivo de configuração que está sendo editado, cujo nome aparece no canto superior esquerdo da tela de configuração. Neste nosso exemplo, o arquivo é o .config.

V 0.12.0628-2118 Gilberto Martins – [email protected] 189

Imagem 45: Opções do suporte a porta paralela

Imagem 46: Suporte a porta paralela desabilitada

Page 190: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

Pode ser interessante fazer estas modificações com calma e gravar as mesmas em um arquivo pessoal, para recuperação posterior. Para isso temos a opção Save an Alternate Configuration File no menu principal.

Basta informar o nome do arquivo, e ele será gravado no diretório em que iniciamos o software de configuração do kernel.

V 0.12.0628-2118 Gilberto Martins – [email protected] 190

Imagem 47: Confirmação de encerramento da configuração

Imagem 48: Gravação da configuração do kernel

Page 191: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

V 0.12.0628-2118 Gilberto Martins – [email protected] 191

Imagem 49: Escolha do nome para gravação

Page 192: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Compilação do Kernel

9.4  CompilaçãoNo estilo Ubuntu, executaremos o seguinte para iniciarmos a compilação:

$ sudo make-kpkg clean # opcional$ sudo fakeroot make-kpkg --initrd –append-to-version=<nome da versão> kernel-image kernel-headers

A primeira linha é opcional, mas deve ser usada quando se quer abandonar todas as compilações anteriores, ou seja, uma compilação “limpa”.

Na segunda linha, <nome da versão> deve ser substituído por alguma string, sem espaços. Serve apenas para identificar o pacote.

9.4.1  Compilação pelo método antigo

Em seguida a fase de configuração, o próximo passo é a compilação propriamente dita. Para qualquer distribuição, é necessário rodar a série de comandos abaixo relacionados. Do lado de cada comando, há uma rápida explicação de cada um.OPÇÃO DESCRIÇÃO

make dep irá gerar todas as dependências necessárias para a compilação correta do kernel. Não é necessário a partir da geração 2.6 de kernels.

make cleanapaga os arquivos objeto gerados durante a execução do 'make dep'. Esses arquivos não são necessários nos passos seguintes, por isso podem ser apagados para economia de espaço

make modules compilação dos módulos que foram selecionados na fase de configuração

make modules_installCopia os módulos gerados no passo anterior para o diretório correto para serem manipulados pelos programas que gerenciam os módulos no GNU/Linux (insmod, rmmod, modprobe, ...) . Esse diretório é, geralmente, o /lib/modules/VERSAO_DO_KERNEL

make bzImage gera a imagem do kernel (O kernel propriametne dito) comprimido via bzip2 e deixa o mesmo no diretório /usr/src/linux/i386/boot com o nome bzImage

make bzlilo Instala o kernel novo em /vmlinuz (A imagem anterior) e gera o arquivo /System.map que será necessário para o boot do novo kernel via um gerenciador de boot (grub, lilo, etc...)

9.4.2  Instalação do kernel antigo

Este processo vai gerar um pacote debian, que deve ser instalado com o seguinte comando:$ sudo dpkg -i linux-image-<versao>.deb$ sudo dpkg -i linux-headers-<versao>.deb

V 0.12.0628-2118 Gilberto Martins – [email protected] 192

Page 193: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10  ServidoresUm servidor é um software que disponibiliza uma atividade ou informação para hosts na rede. O software que solicita um serviço é chamado de cliente. A comunicação entre os dois lados é um relacionamento cliente/servidor.

Um exemplo popular de relacionamento cliente/servidor é o acesso de páginas html. Uma página deve estar em um servidor web, como é o caso do Apache, que é software livre, ou do MS-IIS, da Microsoft, o qual é um software proprietário. Do lado do cliente, os usuários deverão ter um browser em sua máquina, como por exemplo, o Firefox, ou Netscape, ou o Mozilla (todos software livre) ou o internet Explorer da Microsoft (software proprietário).

Vamos demonstrar serviços populares e suas configurações básicas, suficiente para o funcionamento de uma rede de médio porte.

V 0.12.0628-2118 Gilberto Martins – [email protected] 193

Page 194: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.1  Características comunsTodos os serviços instalados no Debian tem algumas informações comuns, e é fundamental que tenhamos em mente estes detalhes:

10.1.1  Hostname

É o nome de sistema da máquina. Este nome não é acessível por outras máquinas na rede. O hostname da máquina deve estar configurado no arquivo /etc/hosts e/ou no servidor DNS, e deve apontar para um ip existente na máquina. Neste exemplo, o hostname usado aqui é mac o qual aponta para 127.0.0.1, e foi definido em /etc/hostname, como podemos ver a seguir, no arquivo /etc/hosts:

$ cat /etc/hosts127.0.0.1 localhost mac

Neste arquivo, vemos que tanto mac como localhost apontam para o mesmo IP, que aqui é o 127.0.0.1.

Para verificar o hostname da máquina, usamos a seguinte instrução:$ hostnamemac

A conclusão é que o hostname desta máquina é mac. Mas é preciso verificar se ela é acessível, a partir da máquina onde estou. Para isso, podemos usar o ping:

$ ping -c 2 macPING localhost (127.0.0.1) 56(84) bytes of data.64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.150 ms64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.155 ms

--- localhost ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 999msrtt min/avg/max/mdev = 0.150/0.152/0.155/0.012 ms

A conclusão da instrução acima mostra que foram enviados 2 pacotes de teste (packets transmitted), e foram recebidos 2 pacotes de resposta(received), com 0% de perda de pacotes (packet loss).

Outra forma de verificar se o hostname está configurado corretamente é usar a opção -i do comando hostname:

$ hostnamezigotto

$ hostname -i 127.0.1.1

Como o hostname -i retornou um IP, e no nosso exemplo, este é o IP que está definido em /etc/hosts, a configuração do hostname da máquina está correta. Uma configuração incorreta daria a seguinte resposta:

$ hostname -i hostname: Unknown host

10.1.2  Default Gateway

Um gateway é um host em uma rede TCP/IP que serve como um ponto de acesso para outra rede.

Um default gateway é o endereço de um host na rede, para o qual uma informação cujo endereço IP destino não é atendido por nenhuma outra rota na tabela de roteamento. Em resumo, se a informação não se destina a nenhum host da rede, ela vai ser encaminhada para o host cujo endereço é o default gateway.

V 0.12.0628-2118 Gilberto Martins – [email protected] 194

Page 195: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.1.3  Script de inicialização

Todo servidor tem que poder ser pelo menos iniciado, parado e reinicializado. Para isso, todos tem um script no diretório /etc/init.d. Este script tem alguns parâmetros, dos quais estes são obrigatórios:Opção Descriçãostart Inicia o funcionamento do servidor

stop Interrompe o funcionamento do servidor

Tabela 33: Opções do script de inicialização

Para conhecermos as outras opções de inicialização, basta executar o script do servidor em questão:$ sudo /etc/init.d/networkingUsage: /etc/init.d/networking {start|stop|restart|force-reload}

$ sudo /etc/init.d/apache2Usage: /etc/init.d/apache2 {start|stop|restart|reload|force-reload}

$ sudo /etc/init.d/squidUsage: /etc/init.d/squid {start|stop|reload|force-reload|restart}

$ sudo /etc/init.d/openbsd-inetdUsage: /etc/init.d/inetd {start|stop|reload|force-reload|restart}

Nos exemplos acima podemos ver que há diferenças entre alguns serviços, mas sempre existirão a opção start e stop.

Normalmente, é fácil determinar nome do script de execução analisando o pacote de instalação do servidor:

$ dpkg -L squid | grep "/etc/init.d"/etc/init.d/etc/init.d/squid

$ dpkg -L openbsd-inetd | grep "/etc/init.d"/etc/init.d/etc/init.d/openbsd-inetd

Listando os arquivos que compõem o pacote, encontramos o caminho completo do script. Note que há alguns casos em que isto pode não acontecer.

$ sudo dpkg -L apache2 | grep init.d

Nestes casos o arquivo de instalação é gerado em tempo de instalação. Ainda assim, uma consulta ao man do pacote resolve este problema.

10.1.4  Criação de um script de configuração

Todos os scripts existentes em /etc/init.d são executados a partir de links simbólicos existentes nos diretórios /etc/rc«».d, onde «» corresponde a um runlevel. Um runlevel é o modo como um sistema operacional linux está sendo executado. Normalmente existem sete runlevels numerados de zero a seis.

10.1.5  Arquivo de configuração

Todo servidor tem um arquivo de configuração. Este é feito em texto plano, o qual pode ser visualizado e editado por qualquer editor de linha de comando, como o nano ou o vim. Este arquivo de configuração determina o modo de funcionamento do servidor.

Em geral, no Ubuntu, os serviços são empacotados com arquivos de configuração quase funcionais, necessitando de pouca modificação, o que simplifica sua configuração. O que nos resta de cada serviço é saber das (em geral) poucas modificações a serem executadas.

V 0.12.0628-2118 Gilberto Martins – [email protected] 195

Page 196: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Os arquivos de configuração estão localizados diretamente no diretório /etc ou em algum subdiretório abaixo de /etc. Como exemplo, podemos ver quais os arquivos de configuração existem no pacote bind9:

$ sudo dpkg -L bind9 | grep \.conf/etc/bind/named.conf/etc/bind/named.conf.local/etc/bind/named.conf.options/usr/sbin/rndc-confgen/usr/sbin/named-checkconf/usr/share/man/man5/named.conf.5.gz/usr/share/man/man5/rndc.conf.5.gz/usr/share/man/man8/rndc-confgen.8.gz/usr/share/man/man8/named-checkconf.8.gz

No exemplo acima, os arquivos de configuração estão no diretório /etc e em negrito. O mesmo exemplo no pacote dhcp3-server dá o seguinte resultado:

$ sudo dpkg -L dhcp3-server | grep \.conf/usr/share/man/man5/dhcpd.conf.5.gz/usr/share/doc/dhcp3-server/examples/dhcpd.conf/etc/dhcp3/dhcpd.conf

Usuários de outras distribuições poderão estar usando outras versões dos mesmos servidores, e por isso, é possível que sejam notadas algumas diferenças em detalhes dos arquivos de configuração. Mesmo assim, as modificações que abordaremos tem se mantido inalteradas ao longo das versões do sistema operacional.

Note que qualquer modificação em qualquer dos arquivos de configuração do servidor obriga a reinicialização do serviço. Caso isto não ocorra a modificação não será aplicada.

10.1.6  Daemon

Cada servidor tem um arquivo executável principal, que normalmente fica em execução constante. Este é o daemon. É comum (mas não obrigatório) este executável terminar com a letra “d”.

$ netstat -atnpConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nametcp 0 0 0.0.0.0:60270 0.0.0.0:* OUÇA 2541/rpc.statdtcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇA 2002/portmaptcp 0 0 192.168.0.186:53 0.0.0.0:* OUÇA 2402/namedtcp 0 0 127.0.0.1:53 0.0.0.0:* OUÇA 2402/namedtcp 0 0 127.0.0.1:953 0.0.0.0:* OUÇA 2402/namedtcp6 0 0 :::8080 :::* OUÇA 2647/apache2tcp6 0 0 :::53 :::* OUÇA 2402/namedtcp6 0 0 :::22 :::* OUÇA 2502/sshdtcp6 0 0 ::1:953 :::* OUÇA 2402/named

Podemos obser que o DNS tem o named como seu daemon e no caso do ssh, o sshd. Já o apache2 e o portmap não seguem esta tendência de ter a letra “d” ao final do nome do daemon. Devemos sempre lembrar que isto é uma tendência, e não uma norma obrigatória.

10.1.7  Ferramentas

Além da função principal, o serviço pode ter outras atividades, desempenhadas por executáveis adicionais, os quais podem estar presentes no mesmo pacote de instalação ou não,

O DNS é um bom exemplo, onde a ferramenta host não acompanha o pacote original do named, mas ao invés disso vem em outro pacote.

V 0.12.0628-2118 Gilberto Martins – [email protected] 196

Page 197: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ whereis -b hosthost: /usr/bin/host /etc/host.conf /usr/X11R6/bin/host /usr/bin/X11/host

$ dpkg -S /usr/bin/hostbind9-host: /usr/bin/host

$ whereis -b namednamed: /usr/sbin/named

$ dpkg -S /usr/sbin/namedbind9: /usr/sbin/named

Para conhecer as ferramentas que acompanham o pacote, uma consulta ao dpkg -L dá um excelente resultado:

$ dpkg -L apache2.2-common | grep bin

...

/usr/sbin/usr/sbin/apache2ctl/usr/sbin/httxt2dbm/usr/sbin/a2dismod/usr/sbin/a2ensite/usr/sbin/a2enmod/usr/sbin/a2dissite

Agora, basta procurar as informações sobre estas ferramentas no man ou na internet.

10.1.8  Verificando serviços ativos

Um servidor vai disponibilizar pelo menos uma porta na máquina em que estiver instalado, para que por ela receba as solicitações de conexão. Para conhecermos quais portas estão abertas em um host, usamos o comando netstat:

$ netstat -atnConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estadotcp 0 0 0.0.0.0:60270 0.0.0.0:* OUÇAtcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇAtcp 0 0 192.168.0.186:53 0.0.0.0:* OUÇAtcp 0 0 127.0.0.1:53 0.0.0.0:* OUÇAtcp 0 0 127.0.0.1:953 0.0.0.0:* OUÇAtcp 0 0 192.168.0.186:46912 192.168.0.186:22 ESTABELECIDAtcp6 0 0 :::8080 :::* OUÇAtcp6 0 0 :::53 :::* OUÇAtcp6 0 0 :::22 :::* OUÇAtcp6 0 0 ::1:953 :::* OUÇAtcp6 0 0 ::ffff:192.168.0.186:22 ::ffff:192.168.0.:46912 ESTABELECIDA

Este comando apresenta informações organizadas em colunas, sendo estas as mais importantes:

V 0.12.0628-2118 Gilberto Martins – [email protected] 197

Page 198: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Coluna DescriçãoProto Protocolo usado pela conexão

Endereço Local

IP e porta da host local0.0.0.0 – Qualquer IP que esteja configurado neste host127.X.Y.Z – Loopback deste host::: - Qualquer IP (ipv6) configurado neste host

Endereço Remoto

IP e porta do host remoto0.0.0.0:* - Representação de um IP e Porta no host remoto:::* - Representação de um IP (ipv6) e Porta no host remotoAs representações acima figuram em uma linha com estado OUÇA

Estado

Estado da conexão:• OUÇA – Aguardando uma conexão. Se diz que a porta associado do endereço Local está

aberta• ESTABELECIDA – Conexão estabelecida entre os hosts local e remoto• TIME_WAIT – Esta conexão acaba de ser encerrada

Tabela 34: Colunas do comando netstat

No exemplo acima, temos 2 conexões estabelecidas para o ssh (porta 22). Pelos endereços, podemos perceber que é uma conexão que saiu da máquina local (192.168.0.186), destinada para a própria máquina.

Também é possível perceber que que as portas 60270, 111, 53 (tanto no IP local como no loopback), 953 e 46912 estão abertas. O arquivo /etc/services associa as portas TCP e UDP aos nomes dos serviços. Assim, concluímos o seguinte:

$ egrep "(53|111|953|60270|22)\/" /etc/servicesssh 22/tcp # SSH Remote Login Protocolssh 22/udpdomain 53/tcp # name-domain serverdomain 53/udpsunrpc 111/tcp portmapper # RPC 4.0 portmappersunrpc 111/udp portmapperxmpp-client 5222/tcp jabber-client # Jabber Client Connectionxmpp-client 5222/udp jabber-clientmdns 5353/tcp # Multicast DNSmdns 5353/udp # Multicast DNSbpjava-msvc 13722/tcp # BP Java MSVC Protocolbpjava-msvc 13722/udpknetd 2053/tcp # Kerberos de-multiplexorkx 2111/tcp # X over Kerberos

Assim, a conclusão é que estão em execução os serviços ssh (porta 22/udp e tcp), DNS (porta 53/udp e tcp) e o sunrpc (porta 111/udp e tcp). A porta 60270 e a porta 8080 estão rodando serviços não identificados no /etc/services.

Para identificar estes serviços na máquina local, vamos precisar do número de processo dos mesmos, que podem ser obtidos pelo netstat com a opção -p:

$ sudo netstat -atnpConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nametcp 0 0 0.0.0.0:60270 0.0.0.0:* OUÇA 2541/rpc.statdtcp 0 0 0.0.0.0:111 0.0.0.0:* OUÇA 2002/portmaptcp 0 0 192.168.0.186:53 0.0.0.0:* OUÇA 2402/namedtcp 0 0 127.0.0.1:53 0.0.0.0:* OUÇA 2402/namedtcp 0 0 127.0.0.1:953 0.0.0.0:* OUÇA 2402/namedtcp6 0 0 :::8080 :::* OUÇA 2647/apache2tcp6 0 0 :::53 :::* OUÇA 2402/namedtcp6 0 0 :::22 :::* OUÇA 2502/sshdtcp6 0 0 ::1:953 :::* OUÇA 2402/named

Agora sabemos que o daemon rpc.statd está recebendo conexões na porta 60270, que a porta 953 também está sendo usada pelo DNS e que o apache2 deve ter sido reconfigurado para receber

V 0.12.0628-2118 Gilberto Martins – [email protected] 198

Page 199: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

conexões pela porta 8080, ao invés do padrão 80.

Não devemos esquecer que portas udp também precisam ser conferidas sempre. Assim como foi usada a opção t para relacionar os serviços tcp, a opção u relaciona os serviços baseados em udp. Veja no exemplo a seguir:

$ sudo netstat -aunpConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nameudp 0 0 0.0.0.0:32768 0.0.0.0:* 2402/namedudp 0 0 0.0.0.0:32770 0.0.0.0:* 2541/rpc.statdudp 0 0 127.0.0.1:4500 0.0.0.0:* 1974/plutoudp 0 0 192.168.0.186:4500 0.0.0.0:* 1974/plutoudp 0 0 192.168.0.186:53 0.0.0.0:* 2402/namedudp 0 0 127.0.0.1:53 0.0.0.0:* 2402/namedudp 0 0 0.0.0.0:67 0.0.0.0:* 2599/dhcpd3udp 0 0 0.0.0.0:111 0.0.0.0:* 2002/portmapudp 0 0 127.0.0.1:500 0.0.0.0:* 1974/plutoudp 0 0 192.168.0.186:500 0.0.0.0:* 1974/plutoudp 0 0 0.0.0.0:1021 0.0.0.0:* 2541/rpc.statdudp6 0 0 :::32769 :::* 2402/namedudp6 0 0 :::53 :::* 2402/named

Podemos ainda relacionar apenas as conexões abertas, e não as estabelecidas. Para isso, ao invés de usar a opção a, devemos usar a opção l, como no exemplo a seguir:

$ netstat -ltn Conexões Internet Ativas (sem os servidores) Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado tcp 0 0 0.0.0.0:901 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:139 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:80 0.0.0.0:* OUÇA tcp 0 0 192.168.1.101:53 0.0.0.0:* OUÇA tcp 0 0 169.254.6.100:53 0.0.0.0:* OUÇA tcp 0 0 127.0.0.1:53 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:22 0.0.0.0:* OUÇA tcp 0 0 127.0.0.1:631 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:3128 0.0.0.0:* OUÇA tcp 0 0 127.0.0.1:5432 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:25 0.0.0.0:* OUÇA tcp 0 0 127.0.0.1:953 0.0.0.0:* OUÇA tcp 0 0 0.0.0.0:445 0.0.0.0:* OUÇA tcp6 0 0 :::5900 :::* OUÇA tcp6 0 0 :::53 :::* OUÇA tcp6 0 0 :::22 :::* OUÇA tcp6 0 0 ::1:953 :::* OUÇA

10.1.9  Ferramentas básicas de rede

As ferramentas a seguir devem ser instaladas em servidores, devido sua eficácia e versatilidade.

V 0.12.0628-2118 Gilberto Martins – [email protected] 199

Page 200: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.1.9.1  iftop

10.1.9.2  iptraf

10.1.9.3  ipcalc

10.1.9.4  traceroute

10.1.9.5  mtr

10.1.9.6  tcpdump

10.1.9.7  htop

10.1.9.8  Aliases úteis

Um alias é um recurso que nos permite poupar tempo e (principalmente) evitar erros na digitação de comandos complexos. Estes são alguns que podem ser muito úteis:

alias dtbkp='date +'%Y%m%d''

O alias dtbkp retorna a data de hoje no formato YYYYMMDD, que neste material usamos em nomes de arquivo de backup.

10.1.10  Instalação de uma rede básica

Em seguida, veremos servidores bem conhecidos, e a ordem em que devem ser instalados.Note que isto não é uma regra definitiva, pois ela pode se adaptar normalmente ao administrador que vai utilizar.

1. Instalação do Sistema operacional

2. Configuração da Interface de rede

3. Configuração do Firewall

4. Instalação e configuração do DNS

5. Instalação e configuração dos serviços

V 0.12.0628-2118 Gilberto Martins – [email protected] 200

Page 201: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.2  Interface de redeA interface de rede do linux recebe nomes de acordo com o seu tipo. As interfaces mais conhecidas são as ethernet, e por isso o nome das interfaces de rede é eth seguido do número da interface. Como exemplo, teremos a eth0, a eth1, etc.

O GNU/Linux reconhece fisicamente as interfaces, e a configuração de cada uma delas (endereço IP, máscara, default gateway, endereçamento estático ou definido por DHCP, etc) é responsabilidade do Administrador do Sistema.

10.2.1  Arquivo de configuração

O arquivo de configuração das interfaces de rede no Ubuntu (e nas outras distribuições baseadas em Debian) é o /etc/network/interfaces, e este arquivo tem o seguinte conteúdo:

# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).

# The loopback network interfaceauto loiface lo inet loopback

# The primary network interfaceauto eth1iface eth1 inet dhcp

No exemplo acima, duas interfaces estão sendo mencionadas: a lo e a eth1. Cada interface precisa ser declarada com a seguinte sintaxe:

auto <Interface>iface <Interface> inet <Método>

Onde, em geral, é definido o seguinte:

Parâmetro Descrição

InterfaceNome da Interface física. Pode ser lo para a interface loopback, pode ser eth para as interfaces Ethernet. Neste último caso, elas serão numeradas, como eth0, eth1, eth2, etc.`

Método

Define o método pelo qual a Interface vai ser configurada. Os mais comuns são:

• loopback: usado apenas com a interface lo

• dhcp: usado em interfaces cuja configuração será dada por DHCP

• static: usado em interfaces com configuração estática de IP. Neste caso, existem diversas opções que podem ser usadas, das quais relacionamos as seguintes:○ address: IP a ser configurado na interface○ netmask: máscara de rede, em notação pontuada○ gateway: default gateway da estação

Tabela 35: Detalhes do arquivo interfaces

10.2.1.1  Realizando backup do arquivo de configuração

Antes de efetuar qualquer alteração no arquivo de configuração, é necessário fazer um backup deste arquivo. Para este backup, podemos usar o comando date para geração do nome do arquivo:

$ sudo cp -v /etc/network/interfaces /etc/network/interfaces.$(dtbkp)`/etc/network/interfaces' -> `/etc/network/interfaces.20112612'

Depois de criado o backup, é muito importante impedir qualquer alteração neste arquivo. Para isto, usaremos o comando chattr:

V 0.12.0628-2118 Gilberto Martins – [email protected] 201

Page 202: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo chattr -V +i /etc/network/interfaces.$(dtbkp) chattr 1.41.11 (14-Mar-2010) Flags of /etc/network/interfaces.20112612 set as ----i------------e-

10.2.2  Exemplo 1: Sistema com 2 interfaces

O arquivo de configuração de interfaces para um sistema com 2 interfaces, uma sendo dinâmica (cliente dhcp) e outra sendo estática, poderia ser assim:

# The loopback network interfaceauto loiface lo inet loopback

# The dynamic interfaceauto eth0iface eth0 inet dhcp

# The static interfaceauto eth1iface eth1 inet static

address 192.168.0.178netmask 255.255.255.0gateway 192.168.0.1

No exemplo acima, a interface loopback não está sendo considerada.

10.2.3  Exemplo 2: Sistema com 3 interfaces

O arquivo de configuração de interfaces para um sistema com 3 interfaces, uma sendo dinâmica (cliente dhcp) e as outras duas sendo estáticas, poderia ser assim:

# The loopback network interfaceauto loiface lo inet loopback

# The dynamic interfaceauto eth0iface eth0 inet dhcp

# The first static interfaceauto eth1iface eth1 inet static

address 192.168.0.178netmask 255.255.255.0

# The second static interfaceauto eth2iface eth2 inet static

address 172.16.100.70netmask 255.255.255.0

Neste exemplo, estamos supondo que o default gateway vai ser definido via DHCP na eth0, e por isso não foi definido em eth1 nem eth2. Além disso, a interface loopback não está sendo considerada.

10.2.4  Script do serviço de rede

Todo serviço instalado no Ubuntu vai criar um script no diretório /etc/init.d que vai ser usado para iniciar ou parar o servidor. No caso da rede, o procedimento é o mesmo para iniciar a rede:

$ sudo invoke-rc.d networking start

Também é possível inicializar o serviço usando a seguinte instrução:$ sudo /etc/init.d/networking start

As opções são:

V 0.12.0628-2118 Gilberto Martins – [email protected] 202

Page 203: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Parâmetro Descrição

start Inicia o serviço de rede

stop Suspende o serviço de rede

restartforce-reload Ambos reiniciam o serviço de rede

Tabela 36: Opções do script do servidor

Na inicialização da rede, as interfaces definidas no arquivo de configuração serão lidas e configuradas.

10.2.5  Configuração manual das interfaces

O comando ifconfig não só permite visualizar a configuração das interfaces, como também reconfigurá-las manualmente.

Para visualizar todas as interfaces existentes no sistema, estejam elas configuradas ou não:$ ifconfig -aeth0 Encapsulamento do Link: Não Especificado Endereço de HW 00-03-93-FF-FE-79-48-6E-00-00-00-00-00-00-00-00 BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

eth1 Encapsulamento do Link: Ethernet Endereço de HW 00:03:93:79:48:6E inet end.: 192.168.0.186 Bcast:192.168.0.255 Masc:255.255.255.0 UP BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) IRQ:41 Endereço de E/S:0xf800

lo Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:1790 errors:0 dropped:0 overruns:0 frame:0 TX packets:1790 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:89660 (87.5 KiB) TX bytes:89660 (87.5 KiB)

sit0 Encapsulamento do Link: IPv6 sobre IPv4 NOARP MTU:1480 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Das interfaces acima, apenas a lo e a eth1 estão configuradas.

Para visualizar apenas as interfaces configuradas:

V 0.12.0628-2118 Gilberto Martins – [email protected] 203

Page 204: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ ifconfigeth1 Encapsulamento do Link: Ethernet Endereço de HW 00:03:93:79:48:6E inet end.: 192.168.0.186 Bcast:192.168.0.255 Masc:255.255.255.0 UP BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) IRQ:41 Endereço de E/S:0xf800

lo Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:1790 errors:0 dropped:0 overruns:0 frame:0 TX packets:1790 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:89660 (87.5 KiB) TX bytes:89660 (87.5 KiB)

O ifconfig também pode promover configurações na interface de rede diretamente. Estas configurações permanecem em memória e são perdidas ao finalizar o sistema.

Vamos configurar a interface eth1 com o IP 192.168.100.1, com a rede 255.255.0.0:$ sudo ifconfig eth1 192.168.100.1 netmask 255.255.0.0

$ ifconfig eth1eth1 Encapsulamento do Link: Ethernet Endereço de HW 00:03:93:79:48:6E inet end.: 192.168.100.1 Bcast:192.168.255.255 Masc:255.255.0.0 UP BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) IRQ:41 Endereço de E/S:0xf800

Veja que neste caso, parar a rede no sistema não desfaz a configuração de eth1:$ sudo /etc/init.d/networking stopDeconfiguring network interfaces...SIOCDELRT: No such processdone.

$ ifconfig eth1eth1 Encapsulamento do Link: Ethernet Endereço de HW 00:03:93:79:48:6E inet end.: 192.168.100.1 Bcast:192.168.255.255 Masc:255.255.0.0 UP BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) IRQ:41 Endereço de E/S:0xf800

É preciso interromper apenas a interface que foi manualmente modificada:$ sudo ifconfig eth1 down

Observe que ela não perdeu as configurações:$ ifconfig eth1eth1 Encapsulamento do Link: Ethernet Endereço de HW 00:03:93:79:48:6E inet end.: 192.168.100.1 Bcast:192.168.255.255 Masc:255.255.0.0 BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) IRQ:41 Endereço de E/S:0xf800

Mesmo assim ela não está mais ativa:

V 0.12.0628-2118 Gilberto Martins – [email protected] 204

Page 205: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ ifconfiglo Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:1790 errors:0 dropped:0 overruns:0 frame:0 TX packets:1790 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:89660 (87.5 KiB) TX bytes:89660 (87.5 KiB)

Mas agora é possível reiniciar a rede normalmente;$ sudo /etc/init.d/networking stopDeconfiguring network interfaces...done.$ sudo/etc/init.d/networking startConfiguring network interfaces...done.

$ ifconfigeth1 Encapsulamento do Link: Ethernet Endereço de HW 00:03:93:79:48:6E inet end.: 192.168.0.186 Bcast:192.168.0.255 Masc:255.255.255.0 UP BROADCASTMULTICAST MTU:1500 Métrica:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) IRQ:41 Endereço de E/S:0xf800

lo Encapsulamento do Link: Loopback Local inet end.: 127.0.0.1 Masc:255.0.0.0 endereço inet6: ::1/128 Escopo:Máquina UP LOOPBACKRUNNING MTU:16436 Métrica:1 RX packets:1852 errors:0 dropped:0 overruns:0 frame:0 TX packets:1852 errors:0 dropped:0 overruns:0 carrier:0 colisões:0 txqueuelen:0 RX bytes:92760 (90.5 KiB) TX bytes:92760 (90.5 KiB)

V 0.12.0628-2118 Gilberto Martins – [email protected] 205

Page 206: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.3  SSH – Conexão remotaEste serviço permite que um usuário estabeleça uma conexão de sua estação para outra, para que esta possa ser acessada remotamente. A máquina acessada passa a ser utilizada como se fosse máquina local. A princípio, esta conexão é encriptada e voltada para operação sobre linha de comando (CLI).

Um usuário remoto apenas consegue acesso ao sistema se este possuir uma conta existente no sistema destino, e se possuir a senha válida para esta conta de sistema.

Este serviço se baseia na porta 22/tcp.

10.3.1  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install ssh

Também é possível instalar usando o aptitude:$ sudo aptitude install ssh

O pacote ssh é uma forma rápida de instalar os pacotes openssh-server e openssh-client, que estarão sendo utilizados neste capítulo. A instalação individual também poderia ser feita.

10.3.2  Arquivo de Configuração

O arquivo de configuração do servidor é o /etc/ssh/sshd_config.

10.3.2.1  Limpeza do arquivo de configuração

Assim como é muito importante ter este arquivo tão comentado, também passa a ser muito trabalhoso. Por isto, podemos trabalhar com uma versão resumida do arquivo, ou seja, sem os comentários. Para isto, é importante fazer uma cópia de segurança do arquivo antes de começarmos:

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:$ sudo chattr +i /etc/ssh/sshd_config.original

Em seguida, faremos a remoção das linhas em branco e das linhas de comentário:$ egrep -v "^$|^ *#" /etc/ssh/sshd_config.original > /tmp/sshd_config$ sudo mv /tmp/sshd_config /etc/ssh/sshd_config

Agora, o arquivo fica como demonstrado a seguir:Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key UsePrivilegeSeparation yes KeyRegenerationInterval 3600 ServerKeyBits 768 SyslogFacility AUTH LogLevel INFO LoginGraceTime 120 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes

V 0.12.0628-2118 Gilberto Martins – [email protected] 206

Page 207: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

IgnoreRhosts yes RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server UsePAM yes

Assim, um arquivo que tinha quase 100 linhas foi reduzido para menos de 30, restando apenas o que interessa no arquivo. Podemos confirmar isso usando os comandos seguintes:

$ wc -l /etc/ssh/sshd_config.original86 /etc/ssh/sshd_config.original$ wc -l /etc/ssh/sshd_config27 /etc/ssh/sshd_config

10.3.2.2  Criação do backup do arquivo de configuração

É muito importante realizar cópia de segurança do arquivo de configuração antes de qualquer alteração. Assim, se algo der errado, é possível voltar o arquivo ao que era antes da modificação. Para isso, podemos usar o alias dtbkp :

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.$(dtbkp)

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:$ sudo chattr +i /etc/ssh/sshd_config.$(dtbkp)

10.3.2.3  Restauração do backup do arquivo de configuração

Caso seja necessário, é possível recuperar uma versão anterior do arquivo de configuração (que agora se chama /etc/squid/squid.conf.<DATA>) com a seguinte instrução:

$ sudo cp /etc/ssh/sshd_config.<DATA> /etc/ssh/sshd_config

Note que <DATA> é a data em que este backup foi criado, no formato YYYYDDMM. Usar a tecla TAB é extremamente útil neste caso.

10.3.2.4  Evitando conexões do root no SSH

Por motivos de segurança, é interessante evitar que o usuário root se conecte diretamente ao sistema via ssh. Neste caso, no parâmetro PermitRootLogin deve ser especificada a opção no, como no exemplo a seguir:

LoginGraceTime 120PermitRootLogin noStrictModes yes

Depois de alterar esta configuração, o serviço ssh deve ser reiniciado.

10.3.2.5  Restringindo o IP usado pelo SSH

Para evitar que as conexões para ssh sejam aceitas através de qualquer IP, ou seja, restringir as conexões a um certo IP, é necessário especificar qual será o IP onde o ssh vai aceitar as conexões, como no exemplo a seguir:

ListenAddress 192.168.0.186

Depois de alterar esta configuração, o serviço ssh deve ser reiniciado.

V 0.12.0628-2118 Gilberto Martins – [email protected] 207

Page 208: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.3.3  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/ssh start

ou$ sudo invoke-rc.d ssh start

10.3.4  Verificacão

Podemos usar o netstat para verificar se o serviço está sendo executado:$ sudo netstat -atnpConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nametcp 0 0 192.168.0.186:22 0.0.0.0:* OUÇA 5191/sshd

10.3.5  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/ssh stop

Podemos usar o netstat para verificar se o serviço ainda está sendo executado. A porta 25 não pode figurar na lista.

10.3.6  Teste do serviço

Primeiro vamos tentar nos conectar ao serviço usando o IP de loopback. Não vai funcionar, pois no exemplo acima configuramos o servidor para aceitar as conexões vindas através de 192.168.0.186

$ ssh 127.0.0.1ssh: connect to host 127.0.0.1 port 22: Connection refused

Vamos tentar se conectar pelo IP correto:$ ssh 192.168.0.186The authenticity of host '192.168.0.186 (192.168.0.186)' can't be established.RSA key fingerprint is 2c:27:cb:93:95:8d:78:bc:8f:27:1c:88:87:96:8d:87.

Desta vez foi possível nos conectarmos, uma vez que neste servidor o ssh foi configurado para receber conexão apenas pela interface 192.168.0.186.

Como esta é a primeira vez que o usuário root tenta se conectar via ssh, será criada uma identificação única para este usuário, relacionada a máquina onde ele está. Para continuar a conexão, precisamos digitar yes por extenso.

Are you sure you want to continue connecting (yes/no)? YesWarning: Permanently added '192.168.0.186' (RSA) to the list of known hosts.

Agora tentaremos continuar a autenticação informando a senha do root:[email protected]'s password:Permission denied, please try [email protected]'s password:Permission denied, please try [email protected]'s password:Permission denied (publickey,password).

Entretanto, o servidor ssh está configurado para não aceitar a conexão pelo usuário root, e por isso, mesmo digitando a senha correta do usuário root, estamos impedidos de nos conectar.

Vamos tentar com um outro usuário:

V 0.12.0628-2118 Gilberto Martins – [email protected] 208

Page 209: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ ssh [email protected]@192.168.0.186's password:Linux mac 2.6.23.9 #2 Sat Dec 15 06:44:20 BRT 2007 ppc

The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.You have mail.$

Como foi possível observar acima, o login foi bem sucedido.

NOTANOTA IMPORTANTEIMPORTANTE

Todas as vezes que o cliente se conectar com um servidor SSH pela primeira vez, uma chave única que identifica este servidor SSH será criada no cliente, como no caso exemplificado a seguir:

$ ssh [email protected] The authenticity of host '172.21.43.99 (172.21.43.99)' can't be established. RSA key fingerprint is 51:1e:66:f0:73:32:a8:6f:87:00:06:97:b1:fb:7f:29. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.21.43.99' (RSA) to the list of known hosts. [email protected]'s password:

Analisando o exemplo acima detalhadamente:gmartins@r0-dup-not-01:~$ ssh [email protected]

Tentamos acessar via SSH o host 172.21.43.99 , pela primeira vez, e o cliente nos informa isso, com a mensagem a seguir:

The authenticity of host '172.21.43.99 (172.21.43.99)' can't be established. RSA key fingerprint is 51:1e:66:f0:73:32:a8:6f:87:00:06:97:b1:fb:7f:29. Are you sure you want to continue connecting (yes/no)? yes

Após este aviso, precisamos concordar que a chave seja criada e registrada, para validar futuras autenticações. Para continuar a conexão, precisamos digitar yes por extenso.

Depois de aceitar esta operação, o sistema nos avisa que a chave foi criada e acrescentada à lista de hosts conhecidos (list of known hosts), e nos é pedido a senha do usuário remoto, neste exemplo o usuário root, como se pode perceber no quadro a seguir:

Warning: Permanently added '172.21.43.99' (RSA) to the list of known hosts. [email protected]'s password:

Nas vezes seguintes, sempre a autenticidade será confirmada consultando a existência da chave de autenticidade do host remoto na lista de hosts conhecidos (list of known hosts).

10.3.7  Conexão em porta alternativa

A porta padrão do servidor ssh é a porta 22. Mas há casos em que o servidor pode ser configurado para ser acessado por uma outra porta. Um servidor nestas condições só pode ser acessado se a nova porta for especificada na solicitação do cliente, coo no exemplo a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 209

Page 210: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ ssh -p 2222 [email protected]

No exemplo acima, a porta a ser acessada no servidor 192.168.0.186 é a porta 2222.

10.3.8  Cópia de arquivos

Uma vez que o servidor ssh está instalado, é possível enviar e receber arquivos de outras estações. O comando scp permite esta transferência. O scp também é um cliente do servidor SSH. Por exemplo, vamos copiar o arquivo churrasco.jpg, que está no diretório padrão do root, para o diretório padrão do usuário beta, na máquina 192.168.254.1

$ scp ~/churrasco.jpg [email protected]:

Estes são os parâmetros envolvidos na operação:Parâmetros Descrição~/churrasco.jpg Arquivo a ser copiado

gmartins Nome do usuário

192.168.254.1 IP da máquina que receberá o arquivo

Tabela 37: Parâmetros do scp

Neste exemplo, o servidor ssh está instalado na máquina 192.168.254.1. Também é possível copiar o arquivo de um host remoto para o host que estivermos operando:

$ scp [email protected]:churrasco.jpg .

No caso acima, está sendo copiado o arquivo churrasco.jpg do host 192.168.254.1 para o diretório atual (representado pelo ponto ao final do comando).

No exemplo acima, o arquivo churrasco.jpg se encontra no diretório padrão do usuário operador, já que não foi especificado um diretório. No próximo exemplo, vamos considerar que o arquivo esteja em outro diretório:

$ scp [email protected]:/usr/share/images/churrasco.jpg /home/images

Desta vez, o arquivo churrasco.jpg está no diretório /usr/share/images do host 192.168.254.1, e está sendo copiado para o diretório /home/images.

Perceba que o usuário operador tem que ter permissão de leitura no diretório /usr/share/images na máquina remota, e o usuário que está executando o comando scp na máquina local tem que ter permissão de escrita no diretório /home/images na máquina local.

Finalmente, para procedermos uma transferência de arquivos entre hosts, mas quando o servidor não está respondendo pela porta default, que é a porta 22/tcp:

$ scp -P 2222 ~/churrasco.jpg [email protected]:

Observe que a porta é apresentada por -P, enquanto que no ssh a porta é apresentada por -p.

10.3.9  Arquivo de Log

O arquivo de log registra as tentativas de conexão e as conexões bem sucedidas:$ grep -n "ssh" /var/log/auth.log707:Dec 15 16:55:35 localhost sshd[5518]: Server listening on 192.168.0.186 port 22.

Obs: Note a opção -n do comando grep.

Tentativas de conexão do root, demonstrado nas linhas 708 e 709 do arquivo de log:

V 0.12.0628-2118 Gilberto Martins – [email protected] 210

Page 211: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

708:Dec 15 16:56:39 localhost sshd[5525]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.0.186 user=root709:Dec 15 16:56:40 localhost sshd[5525]: Failed password for root from 192.168.0.186 port 50578 ssh2

Conexão do gmartins, demonstrado nas linhas 711 e 712 do arquivo de log:711:Dec 15 17:05:04 localhost sshd[5552]: Accepted password for gmartins from 192.168.0.186 port 53805 ssh2712:Dec 15 17:05:04 localhost sshd[5557]: (pam_unix) session opened for user gmartins by (uid=0)

Encerramento da sessão do gmartins, demonstrado na linha 715 do arquivo de log:715:Dec 15 17:10:34 localhost sshd[5557]: (pam_unix) session closed for user gmartins

10.3.10  Erros comuns

10.3.10.1  Mudança da identificação do host remoto

Há circunstâncias em que a chave de identificação do host remoto é alterada, como a reinstalação do servidor SSH, e em outras. Neste caso, teremos uma advertência semelhante a exemplificada a seguir:

$ ssh [email protected] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 51:1e:66:f0:73:32:a8:6f:87:00:06:97:b1:fb:7f:29. Please contact your system administrator. Add correct host key in /home/gmartins/.ssh/known_hosts to get rid of this message. Offending key in /home/gmartins/.ssh/known_hosts:22 RSA host key for 172.21.43.99 has changed and you have requested strict checking. Host key verification failed.

Com sempre, é preciso analisar a mensagem de erro, a qual pode ser bastante útil. Inicialmente, somos advertidos de um possível ataque:

$ ssh [email protected] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is 51:1e:66:f0:73:32:a8:6f:87:00:06:97:b1:fb:7f:29. Please contact your system administrator.

Em seguida, caso saibamos que não estamos sendo realmente atacados como foi sugerido, nos é dito como proceder para prosseguir.

NOTANOTA IMPORTANTEIMPORTANTE

Note que, neste caso sabemos que o servidor SSH foi reinstalado no host 172.21.43.99. Sem a certeza do que causou

este aviso, é completamente inseguro prosseguir.

Observando outra parte da mensagem a seguir, temos os dados necessários para correção:Add correct host key in /home/gmartins/.ssh/known_hosts to get rid of this message. Offending key in /home/gmartins/.ssh/known_hosts:22 RSA host key for 172.21.43.99 has changed and you have requested strict checking.

A chave inútil se encontra na linha 22 do arquivo de hosts conhecidos, o qual é o arquivo

V 0.12.0628-2118 Gilberto Martins – [email protected] 211

Page 212: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

/home/gmartins/.ssh/known_hosts É necessário remover esta linha deste arquivo, usando o vim. É muito útil ativar o recurso de numeração de linhas, caso o mesmo já não esteja configurado por default.

NOTANOTA IMPORTANTEIMPORTANTE

Note que, neste caso a conta de usuário é gmartins, e por isso o arquivo está em /home/gmartins/. O melhor é usar o atalho ~

(til), como nos exemplos a seguir.

O arquivo de configuração é editado com o seguinte comando:$ sudo vim ~/.ssh/known_hosts

No arquivo a ser aberto a seguir, eliminar a linha 22. Não é preciso se preocupar em compreender o conteúdo do arquivo:

Eliminando esta linha, as linhas abaixo serão renumeradas, e com isso o arquivo já pode ser gravado. Assim, podemos repetir a tentaiva de conexão com o host remoto:

$ ssh [email protected] The authenticity of host '172.21.43.99 (172.21.43.99)' can't be established. RSA key fingerprint is 51:1e:66:f0:73:32:a8:6f:87:00:06:97:b1:fb:7f:29. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.21.43.99' (RSA) to the list of known hosts. [email protected]'s password:

Confirma-se a inclusão do host remoto na lista de hosts conhecidos, e se pode prosseguir com a senha do usuário no host remoto, neste caso, o usuário root.

V 0.12.0628-2118 Gilberto Martins – [email protected] 212

Imagem 50: Arquivo ~/.ssh/known_hosts

Page 213: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.4  NTPUm servidor NTP pode ser consultado por outros servidores e estações da rede para que a data e hora de cada host esteja sincronizada e não haja diferenças de horários na mesma rede. Igualmente, ele pode obter esta hora de servidores NTP externos para sincronizar o relógio do servidor corretamente.

Este serviço usa a porta 123/udp.

10.4.1  Instalação

Para que o serviço NTP seja instalado, usaremos o apt-get:$ sudo apt-get install ntp

Também é possível instalar usando o aptitude:$ sudo aptitude install ntp

10.4.2  Ativação

Como quase todo serviço instalado no Ubuntu, ao ser instalado o mesmo já estará em execução. Mesmo assim, quando for necessário inicializar o serviço, basta usar a seguinte instrução:

$ sudo invoke-rc.d bind9 start

Também é possível inicializar o serviço usando a seguinte instrução:$ sudo /etc/init.d/bind9 start

10.4.3  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo invoke-rc.d bind9 stop

Também é possível interromper o serviço usando a seguinte instrução:$ sudo /etc/init.d/bind9 stop

10.4.4  Servidor de hora

O servidor NTP já vem configurado para consultar o servidor ntp.ubuntu.com, mas caso seja necessário definir outro, a alteração deve ser feita em /etc/ntp.conf, na substituindo ntp.ubuntu.com pelo servidor em questão.

$ grep ntp.ubuntu.com /etc/ntp.confserver ntp.ubuntu.com

No arquivo inalterado desta versão, esta modificação deve ser feita na linha 16.

10.4.5  Configuração manual do Cliente

É possivel usar o comando ntpdate, ou o ntpdate-debian para configuração manual, de acordo com os exemplos a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 213

Page 214: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ dateQui Out 20 13:48:02 BRT 2005$ sudo ntpdate-debian 30 Nov 16:56:33 ntpdate[5183]: step time server 91.189.94.4 offset 8.674171 sec$ dateSeg Nov 30 16:56:37 BRT 2009

Esta configuração é simples e exata, porém depende de uma consulta ao um servidor de hora externo. Já existindo um servidor NTP interno, deveremos fazer uso do mesmo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 214

Page 215: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.5  DNSO serviço DNS é, sem dúvida alguma, dos mais importantes serviços em uma rede. O propósito deste serviço é muito simples: associar o nome de um host a um IP, e vice versa, ou seja, permitir que cada IP possa ser associado a um nome. O DNS não exige que o IP exista, esteja ativo ou desligado, ou mesmo que participe da mesma rede do servidor DNS.

O servidor DNS usa as portas 53 tcp e udp.

Algumas considerações:# Descrição1 Toda rede que tem um servidor DNS deve cadastrar neste os nomes de seus hosts servidores.

2 Todos os hosts da rede, sendo servidores ou não, deveriam ser clientes deste servidor DNS.

3 O servidor DNS não deveria estar em um host que tenha interface para a rede externa, por questões de segurança.

4 O servidor DNS pode ser configurado para redirecionar as consultas que não podem ser respondidas para um outro servidor DNS. Ou seja, Caso o servidor não conheça algum nome cujo IP lhe foi solicitado (ou o contrário), ele pode dirigir esta consulta para algum outro servidor DNS.

Tabela 38: Considerações sobre DNS

10.5.1  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install bind9

Também é possível instalar usando o aptitude:$ sudo aptitude install bind9

O pacote que instalamos é o bind9, que é o mais utilizado, mas existem outros pacotes que fornecem o DNS no sistema, como o PowerDNS e Maradns, os quais não abordaremos.

10.5.2  Arquivos de configuração do servidor

O arquivo de configuração do servidor é o /etc/bind/named.conf. No Ubuntu, este arquivo foi dividido em dois outros arquivos:Arquivo Descrição/etc/bind/named.conf.options Opções de funcionamento do servidor DNS

/etc/bind/named.conf.local Zonas de domínio do servidor DNS

Tabela 39: Arquivos de Configuração do DNS no Debian

NOTANOTA IMPORTANTEIMPORTANTE

O arquivo /etc/bind/named.conf não deve ser alterado, pois as alterações necessárias serão feitas em

/etc/bind/named.conf.local.

10.5.2.1  Definir a interface usada pelo DNS

Em /etc/bind/named.conf.options pode ser definido qual o IP (da máquina onde o DNS está instalado) que vai ser usado para receber solicitações. Este IP pode ser ipv6 ou ipv4. No arquivo de

V 0.12.0628-2118 Gilberto Martins – [email protected] 215

Page 216: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

configuração default, encontramos o seguinte:listen-on-v6 { any; };listen-on { any; };

Como definido acima, a solicitação virá em qualquer IP existente no host. Para aplicar estas modificações, vamos comentar a linha de IPV6, e alterar a linha de IPV4. Assim, esta modificação será:

// listen-on-v6 { any; };listen-on { 192.168.100.70; };

NOTANOTA IMPORTANTEIMPORTANTE

Observe que o comentário neste arquivo é feito pelo sinal de //.

No exemplo acima, ao ser iniciado o BIND vai receber solicitações vindas apenas do IP 192.168.100.70, e não terá nenhuma interface configurada com ipv6. É claro que este ip tem que existir na máquina onde o DNS está instalado.

10.5.2.2  Encaminhando consultas

Quando uma consulta não puder ser respondida pelo servidor DNS, é possível determinar o IP de um outro servidor DNS, para o qual as consultas serão encaminhadas. Isto se chama forwarding.9

Em /etc/bind/named.conf.options deve ser definido um ou mais IPs de servidores DNS, da seguinte maneira:

allow-query { any; };forwarders {

172.17.10.20;172.17.10.30;

};

A opção allow-query informa que as consultas vindas de qualquer rede (any) a este servidor DNS serão aceitas. É possível que esta opção tenha que ser digitada no arquivo de configuração.

A opção forwarders informa um ou mais IPs de servidores DNS para os quais as consultas devem ser encaminhadas.

10.5.3  Arquivos de configuração do cliente

No cliente do serviço DNS, precisamos informar qual é o endereço do servidor DNS que será usado. Isto é feito em /etc/resolv.conf:

$ cat /etc/resolv.confnameserver 127.0.0.1nameserver 192.168.0.1

No exemplo acima, as consultas serão feitas primeiro ao servidor DNS em 127.0.0.1, e caso este IP não esteja respondendo, a mesma consulta vai ser direcionada para 192.168.0.1.

Algumas considerações sobre este arquivo:

9 “ encaminhamento”, em inglês

V 0.12.0628-2118 Gilberto Martins – [email protected] 216

Page 217: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

# Descrição1 O nameserver é seguido do endereço de um servidor DNS

2 Este arquivo pode ter até 3 declarações nameserver

3 Os servidores DNS serão consultados na ordem da digitação. O arquivo é lido de cima para baixo

4 Caso este arquivo não exista, deve ser criado, com vim, nano, ou outro editor qualquer

5 Este arquivo não faz parte do pacote bind9, nem de nenhum outro servidor DNS

Tabela 40: Considerações sobre o /etc/resolv.conf

NOTANOTA IMPORTANTEIMPORTANTE

Caso o host seja cliente DHCP Linux, este arquivo vai ser sobrescrito cada vez que a rede for reiniciada. Nestes casos, a

configuração deve ser feita no servidor DHCP.

10.5.4  Arquivo de Log

Por default, o log do dns é gerado no arquivo /var/log/daemon.log, nas distribuições baseadas em Debian. Segue um trecho da inicialização do bind9:

Jan 22 17:40:37 dns-local named[1300]: starting BIND 9.6.1-P2 -u bind Jan 22 17:40:37 dns-local named[1300]: built with '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/etc/bind' '--localstatedir=/var' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld' '--with-dlz-postgres=no' '--with-dlz-mysql=no' '--with-dlz-bdb=yes' '--with-dlz-filesystem=yes' '--with-dlz-ldap=yes' '--with-dlz-stub=yes' '--with-geoip=/usr' '--enable-ipv6' 'CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS=' 'CXXFLAGS=-g -O2' 'FFLAGS=-g -O2' Jan 22 17:40:37 dns-local named[1300]: adjusted limit on open files from 1024 to 1048576 Jan 22 17:40:37 dns-local named[1300]: found 1 CPU, using 1 worker thread Jan 22 17:40:37 dns-local named[1300]: using up to 4096 sockets Jan 22 17:40:37 dns-local named[1300]: loading configuration from '/etc/bind/named.conf' Jan 22 17:40:37 dns-local named[1300]: using default UDP/IPv4 port range: [1024, 65535] Jan 22 17:40:37 dns-local named[1300]: using default UDP/IPv6 port range: [1024, 65535] Jan 22 17:40:37 dns-local named[1300]: listening on IPv6 interfaces, port 53 Jan 22 17:40:37 dns-local named[1300]: listening on IPv4 interface lo, 127.0.0.1#53 Jan 22 17:40:37 dns-local named[1300]: listening on IPv4 interface eth0, 192.168.253.72#53 Jan 22 17:40:37 dns-local named[1300]: listening on IPv4 interface eth2, 172.19.87.57#53 Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 254.169.IN-ADDR.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 2.0.192.IN-ADDR.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: D.F.IP6.ARPA Jan 22 17:40:37 dns-local named[1300]: command channel listening on 127.0.0.1#953 Jan 22 17:40:37 dns-local named[1300]: command channel listening on ::1#953 Jan 22 17:40:37 dns-local named[1300]: zone 0.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone 127.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone 253.168.192.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone 255.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone localhost/IN: loaded serial 2 Jan 22 17:40:37 dns-local named[1300]: zone ailvan.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone bruno.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone claudevan.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone cristiano.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone marcos.xyz/IN: loading from master file marcos.xyz failed: file not found Jan 22 17:40:37 dns-local named[1300]: zone omar.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone rafael.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: running

Da listagem acima, o trecho a seguir mostra a inicialização do servidor DNS:

V 0.12.0628-2118 Gilberto Martins – [email protected] 217

Page 218: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Jan 22 17:40:37 dns-local named[1300]: starting BIND 9.6.1-P2 -u bind Jan 22 17:40:37 dns-local named[1300]: built with '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--sysconfdir=/etc/bind' '--localstatedir=/var' '--enable-threads' '--enable-largefile' '--with-libtool' '--enable-shared' '--enable-static' '--with-openssl=/usr' '--with-gssapi=/usr' '--with-gnu-ld' '--with-dlz-postgres=no' '--with-dlz-mysql=no' '--with-dlz-bdb=yes' '--with-dlz-filesystem=yes' '--with-dlz-ldap=yes' '--with-dlz-stub=yes' '--with-geoip=/usr' '--enable-ipv6' 'CFLAGS=-fno-strict-aliasing -DDIG_SIGCHASE -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS=' 'CXXFLAGS=-g -O2' 'FFLAGS=-g -O2' Jan 22 17:40:37 dns-local named[1300]: adjusted limit on open files from 1024 to 1048576 Jan 22 17:40:37 dns-local named[1300]: found 1 CPU, using 1 worker thread Jan 22 17:40:37 dns-local named[1300]: using up to 4096 sockets

Depois, as configurações padrão do servidor DNS são iniciadas:Jan 22 17:40:37 dns-local named[1300]: loading configuration from '/etc/bind/named.conf' Jan 22 17:40:37 dns-local named[1300]: using default UDP/IPv4 port range: [1024, 65535] Jan 22 17:40:37 dns-local named[1300]: using default UDP/IPv6 port range: [1024, 65535] Jan 22 17:40:37 dns-local named[1300]: listening on IPv6 interfaces, port 53 Jan 22 17:40:37 dns-local named[1300]: listening on IPv4 interface lo, 127.0.0.1#53 Jan 22 17:40:37 dns-local named[1300]: listening on IPv4 interface eth0, 192.168.253.72#53 Jan 22 17:40:37 dns-local named[1300]: listening on IPv4 interface eth2, 172.19.87.57#53 Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 254.169.IN-ADDR.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 2.0.192.IN-ADDR.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA Jan 22 17:40:37 dns-local named[1300]: automatic empty zone: D.F.IP6.ARPA

As interfaces e portas que vão receber consultas DNS são disponibilizadas:Jan 22 17:40:37 dns-local named[1300]: command channel listening on 127.0.0.1#953 Jan 22 17:40:37 dns-local named[1300]: command channel listening on ::1#953

Finalmente, os domínios que foram configurados no servidor DNS são disponibilizados:Jan 22 17:40:37 dns-local named[1300]: zone 0.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone 127.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone 253.168.192.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone 255.in-addr.arpa/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone localhost/IN: loaded serial 2 Jan 22 17:40:37 dns-local named[1300]: zone ailvan.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone bruno.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone claudevan.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone cristiano.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone marcos.xyz/IN: loading from master file marcos.xyz failed: file not found Jan 22 17:40:37 dns-local named[1300]: zone omar.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: zone rafael.xyz/IN: loaded serial 1 Jan 22 17:40:37 dns-local named[1300]: running

No exemplo acima, os domínios ailvan.xyz, bruno.xyz, claudevan.xyz, cristiano.xyz, marcos.xyz, omar.xyz e rafael.xyz são os domínios configurados neste servidor DNS.

10.5.5  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ sudo invoke-rc.d bind9 start

ou$ sudo /etc/init.d/bind9 start

ou$ sudo service bind9 start

10.5.5.1  Verificacão

Cada vez que este serviço for reiniciado, devemos verificar se o mesmo está disponível. Podemos usar o comando netstat para verificar se o serviço está sendo executado, como no exemplo a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 218

Page 219: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo netstat -ltunp | grep “:53”tcp 0 0 169.254.6.100:53 0.0.0.0:* OUÇA 6314/namedtcp 0 0 127.0.0.1:53 0.0.0.0:* OUÇA 6314/namedtcp 0 0 127.0.0.1:953 0.0.0.0:* OUÇA 6314/namedtcp6 0 0 :::53 :::* OUÇA 6314/namedudp 0 0 169.254.6.100:53 0.0.0.0:* 6314/namedudp 0 0 127.0.0.1:53 0.0.0.0:* 6314/namedudp6 0 0 :::53 :::* 6314/named

Na listagem acima, podemos ver tanto a porta 53 como a 953 disponíveis em TCP e UDP.

10.5.6  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo invoke-rc.d bind9 stop

ou$ sudo /etc/init.d/bind9 stop

ou$ sudo service bind9 stop

Podemos usar o netstat para verificar se o serviço ainda está sendo executado. A porta 53 não pode figurar na lista.

10.5.7  Modelo para exemplo

Para nossa configuração, vamos usar o domínio erlane.xyz, que terá as seguintes máquinas:Nome DNS Endereço IP

www.erlane.xyz 172.16.10.20

mail.erlane.xyz 172.16.10.21

pop.erlane.xyz 172.16.10.21

Tabela 41: Configuração do domínio erlane.xyz

10.5.8  Zona de domínio

A zona do domínio deve ser declarada no servidor DNS para que o mesmo saiba de sua existência e possa responder pelas máquinas nele relacionadas.

No arquivo /etc/bind/named.conf.local devem ser incluídas as seguintes linhas para que uma zona de algum domínio possa ser declarada:

zone "DOMÍNIO" { type master; file "ARQUIVO";};

Analisando a estrutura acima, temos:

V 0.12.0628-2118 Gilberto Martins – [email protected] 219

Page 220: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Item Descriçãozone “DOMÍNIO” Declara a existência do domínio DOMÍNIO no servidor DNS

Type master Este servidor contém os dados principais do domínio. Em outras palavras, este servidor é o mestre para este domínio.

file “ARQUIVO”Nome do arquivo que conterá as máquinas que compõem o domínio. Aqui basta informar qual será o nome do arquivo, pois o sistema BIND sabe que o deverá encontrar no diretório definido pela opção directory, do arquivo /etc/bind/named.conf.options.

Tabela 42: Componentes da zona de domínio

Observe as linhas que terminam com ponto e vírgula, pois apesar de ser obrigatório é freqüentemente esquecido.

Para simplificar o trabalho do administrador do DNS, é interessante usar o nome do domínio como o nome do arquivo que conterá as máquinas que compõem o domínio, conforme veremos mais adiante.

10.5.8.1  Declaração da Zona

Considerando o domínio proposto, deverá ser feita a seguinte declaração no arquivo /etc/bind/named.conf.local:

zone "erlane.xyz" { type master; file "erlane.xyz";};

10.5.8.2  Arquivo da zona de domínio

As três máquinas vão ser descritas no arquivo /var/cache/bind/erlane.xyz, ou seja, todos os arquivos definidos em file serão procurados em /var/cache/bind. Isto está definido em /etc/bind/named.conf.options.

Este arquivo tem estrutura semelhante ao arquivo /etc/bind/db.0, o qual usaremos como modelo:$ sudo cp /etc/bind/db.0 /var/cache/bind/erlane.xyz

O arquivo /var/cache/bind/erlane.xyz precisa apenas receber as definições dos três nomes de hosts, como no exemplo a seguir. Observe que as alterações estão em negrito.

$ cat /var/cache/bind/erlane.xyz;; Máquinas do domínio erlane.xyz;$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;; Servidor de email do domínio;@ IN MX 2 mail.erlane.xyz.;@ IN NS localhost.www IN A 172.16.10.20smtp IN A 172.16.10.21pop IN CNAME mail.erlane.xyz.

Como este é o arquivo que define o nome das máquinas no domínio, basta acrescentar linhas contendo o nome do host sem que seja necessário incluir o nome do domínio. Por exemplo, é suficiente incluirmos www e não www.erlane.xyz.

Assim, lendo o arquivo acima, entendemos que:

V 0.12.0628-2118 Gilberto Martins – [email protected] 220

Page 221: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

1. A zona erlane.xyz está fisicamente no servidor DNS instalado no host localhost, e o email do administrador é host@localhost. Isto está definido no registro IN SOA

2. O servidor de email está instalado em mail.erlane.xyz. Isto está definido no registro IN MX 2. Este nome deve ser escrito com um ponto no final.

3. O servidor de nomes responsável por esta zona de domínio é o localhost (IN NS)4. O nome www.erlane.xyz tem o IP 172.16.10.205. O nome mail.erlane.xyz tem o IP 172.16.10.216. O nome mail.erlane.xyz é um apelido (CNAME) para a máquina mail.erlane.xyz.

NOTASNOTAS IMPORTANTESIMPORTANTES

• O nome de máquina definido nos registros IN SOA e IN NS (neste nosso exemplo, localhost) obrigatoriamente serão resolvíveis, ou seja, serão associados a um IP. Esta associação pode ser através do DNS ou do arquivo /etc/hosts. Além disso, devem ser terminados por um ponto .

• O número após o registro IN MX pode ter qualquer valor. É usado para definir a prioridade do servidor de emails, quando houver mais de um no mesmo domínio. Quanto menor o valor, maior a prioridade do servidor. Se houver apenas um, ainda assim um valor arbitrário deve ser usado.

• Nomes que serão apelidos devem obrigatoriamente apontar para outros nomes, os quais podem ou não pertencer ao mesmo domínio. Por isto os nomes devem ser escritos por extenso, e devem ser terminados por um ponto. Além disso, nem o IN NS nem o IN MX devem apontar para um nome definido por um CNAME.

NOTANOTA IMPORTANTEIMPORTANTE

Observe que o comentário neste arquivo é feito pelo sinal de ; (ponto e vírgula).

10.5.9  Zona de domínio reverso

A declaração de uma zona de domínio reversa é muito semelhante a declaração de uma zona de domínio comum. Esta zona é responsável pelas consultas onde são fornecidos os IPs dos hosts, e se aguarda o nome completo do mesmo.

No arquivo /etc/bind/named.conf.local devem ser incluídas as seguintes linhas para que uma zona de algum domínio possa ser declarada:

zone "REDE.in-addr.arpa" { type master; file "ARQUIVO";};

Onde temos:

V 0.12.0628-2118 Gilberto Martins – [email protected] 221

Page 222: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Itens Descriçãozone “REDE.in-addr.arpa” Declara a existência do domínio REDE.in-addr.arpa no servidor DNS

Type master Este servidor contém os dados principais do domínio. Em outras palavras, este servidor é o mestre para este domínio.

File “ARQUIVOS” Nome do arquivo que conterá as máquinas que compõem o domínio

Tabela 43: Componentes da zona de domínio reverso

NOTANOTA IMPORTANTEIMPORTANTE

• O servidor DNS sabe que um domínio é reverso se este nome terminar com .in-addr.arpa.

• O nome do domínio será a rede escrita do último octeto da rede para o primeiro.

• O nome do arquivo da zona de domínio reverso pode ser a parte de rede. Isto é uma sugestão, uma vez que qualquer nome pode ser usado aqui, desde que este seja o mesmo nome do arquivo que contêm os dados do domínio reverso.

10.5.9.1  Declaração da zona reversa

Assim, vamos supor que este domínio reverso vai atender a rede 172.16.10.0/24. A declaração do domínio reverso para esta rede deve ser inscrita no arquivo /etc/bind/named.conf.local, e deve ser segundo o exemplo a seguir:

zone "10.16.172.in-addr.arpa" { type master; file "172.16.10";};

10.5.9.2  Arquivo da zona de domínio reverso

Os dois IPs serão descritos no arquivo /var/cache/bind/172.16.10, ou seja, todos os arquivos definidos em file serão procurados em /var/cache/bind. Isto está definido em /etc/bind/named.conf.options.

Este arquivo tem estrutura semelhante ao arquivo /etc/bind/db.0, o qual usaremos como modelo:$ sudo cp /etc/bind/db.0 /var/cache/bind/172.16.10

O arquivo /var/cache/bind/172.16.10 precisa apenas receber as definições dos IPs dos hosts:$ cat /var/cache/bind/172.16.10;; IPs das máquinas da rede 172.16.10.0/24;$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS localhost.20 IN PTR www.erlane.xyz.21 IN PTR mail.erlane.xyz.

Foram acrescentadas linhas contendo a parte de host do IP. Lembre que este arquivo relaciona os ips dos hosts da rede.

Não é obrigatório incluir o IP do host cujo nome é um alias (CNAME) de outro host.

Assim, lendo este arquivo acima, entendemos que:1. A rede 172.16.10 está fisicamente no servidor DNS instalado no host localhost, e o email do

V 0.12.0628-2118 Gilberto Martins – [email protected] 222

Page 223: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

administrador é host@localhost. Isto está definido no registro IN SOA2. O servidor de nomes responsável por esta zona de domínio reverso é o localhost (IN NS)3. O host 20 da rede 172.16.10 está associado ao nome www.erlane.xyz.4. O host 21 da rede 172.16.10 está associado ao nome mail.erlane.xyz.5. O nome mail.erlane.xyz é um apelido (CNAME) para a máquina mail.erlane.xyz, e por isso

não precisa obrigatoriamente ter um registro nesta zona de domínio reverso.

O nome de máquina definido nos registros IN SOA e IN NS (neste nosso exemplo, localhost) obrigatoriamente serão resolvíveis, ou seja, serão associados a um IP. Esta associação pode ser através do DNS ou do arquivo /etc/hosts. Além disso, devem ser terminados por um ponto.

Um arquivo de uma zona de domínio reverso relaciona as máquinas de uma rede,e por isso pode conter hosts de mais de um domínio.

NOTANOTA IMPORTANTEIMPORTANTE

Observe que o comentário neste arquivo é feito pelo sinal de ; (ponto e vírgula) no início da linha.

10.5.9.3  Zona reversa para Classe B ou C

Caso a rede escolhida seja de classe B ou de classe C, o host que identifica cada registro deverá ter seus octetos escritos de modo reverso também. Para exemplificar, vamos supor um domínio reverso para a rede 10.0.0.0/16, e as máquinas www.teste.com (10.0.20.30) e ftp.teste.com (10.0.20.31).

Primeiro, declarar o domínio em /etc/bind/named.conf.local:zone "0.10.in-addr.arpa" { type master; file "10.0";}

Depois criar o arquivo da zona reversa:$ sudo cp /etc/bind/db.0 /var/cache/bind/10.0

Finalmente, lançar os IPs no arquivo da zona reversa:$ cat /var/cache/bind/10.0;; IPs das máquinas da rede 10.0/24;$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;@ IN NS localhost.30.20 IN PTR www.teste.com.31.20 IN PTR ftp.teste.com.

10.5.10  Testes do domínio

Para testar um domínio, podemos fazer consultas com o comando host.

NOTANOTA IMPORTANTEIMPORTANTE

Para realizar os testes, não esqueça que depois de alterar os arquivos de configuração do domínio, é obrigatório reiniciar o servidor BIND .

V 0.12.0628-2118 Gilberto Martins – [email protected] 223

Page 224: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.5.10.1  Consultar um host

Em uma estação Linux, o comando seguinte pede ao servidor DNS o IP de um host:$ host www.smux.orgwww.smux.org has address 192.168.100.143

No caso de uma estação Windows, o comando para testes é o nslookup, como no exemplo a seguir:

O servidor DNS recebeu a consulta e respondeu com o IP associado ao nome.

10.5.10.2  Teste de DNS reverso

Pedir ao servidor o possível nome que possa estar associado a um IP:$ host 192.168.100.172172.100.168.192.in-addr.arpa domain name pointer www.alcivam.org.

O IP é apresentado de modo reverso, além do sufixo obrigatório in-addr.arpa, e o nome para o qual o IP está apontando.

10.5.10.3  Erro: Consulta do nome de um host ou domínio inexistente

Caso o teste peça ao servidor o IP de um host inexistente no domínio acima, a seguinte mensagem de erro seria apresentada:

$ host xyz.smux.orgHost xyz.smux.org not found: 3(NXDOMAIN)

Esta mensagem de erro significa que o host xyz no domínio smux.org não existe ou mesmo que o domínio smux.org não existe. É preciso rever a definição do domínio ou a definição dos hosts.

10.5.10.4  Erro: Consulta do IP de um host ou domínio inexistente

Repetindo a mesma consulta, mas para um IP não descrito no domínio reverso:$ host 192.168.100.143Host 143.100.168.192.in-addr.arpa not found: 3(NXDOMAIN)

O IP 192.168.100.143 não foi encontrado no domínio reverso da rede 192.168.100. É preciso rever o arquivo de configuração de domínio reverso.

V 0.12.0628-2118 Gilberto Martins – [email protected] 224

Imagem 51: nslookup do Windows

Page 225: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.5.10.5  Erro: Servidor DNS não encontrado

Caso o teste não consiga alcançar algum servidor DNS, a seguinte mensagem de erro seria apresentada:

$ host www.inexistente.org;; connection timed out; no servers could be reached

Neste caso, é necessário rever a definição do servidor DNS.

V 0.12.0628-2118 Gilberto Martins – [email protected] 225

Page 226: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.6  DHCP – Administração de endereços IPPara configurar uma estação em uma rede, é preciso passar pelo menos algumas configurações básicas, como o default gateway, o endereço do DNS, o IP, a máscara, etc. Enquanto a rede é pequena, isto pode ser feito manualmente. Mas a medida que a rede cresce, esta tarefa fica mais difícil desta maneira. Para resolver este problema, um servidor DHCP deve ser configurado na rede.

DHCP é uma sigla para Dynamic Host Configuration Protocol] (Protocolo de Configuração de Servidor Dinâmico), e é um protocolo de Internet que configura automática e dinamicamente computadores ligados a uma rede TCP/IP, possibilitando a alocação dinâmica de endereços IP para reutilização. Um cliente DHCP procura um ou mais servidores DHCP que possam fornecer os parâmetros necessários para que sua máquina possa ser automaticamente configurada e obter um endereço IP toda vez que se conectar a rede. Se um novo computador for inserido à rede, um endereço IP ser-lhe-á atribuído automaticamente, evitando a configuração manual.10

As estações que usarão o servidor DHCP não podem ter sua configuração de interface como cliente DHCP, ou seja, uma estação sem IP, máscara, sem IPs do servidor DNS, etc. Esta estação estará configurada com cliente dhcp.

10.6.1  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install dhcp3-server

Também é possível instalar usando o aptitude:$ sudo aptitude install dhcp3-server

Observe que ao ser instalado pela primeira vez, o servidor DHCP vai gerar um erro, como segue:$ sudo aptitude install dhcp3-server Construindo árvore de dependências...Lendo informação de estado...Lendo informações estendidas de estado...Inicializando estados de pacotes...Os NOVOS pacotes a seguir serão instalados: dhcp3-server 0 pacotes atualizados, 1 novos instalados, 0 a serem removidos e 61 não atualizados.É preciso obter 0B/373kB de arquivos. Depois do desempacotamento, 872kB serão usados.Escrevendo informações estendidas de estado...Pré-configurando pacotes ... Selecionando pacote previamente não selecionado dhcp3-server. (Lendo banco de dados ... 69081 arquivos e diretórios atualmente instalados). Desempacotando dhcp3-server (de .../dhcp3-server_3.1.3-2ubuntu3.3_i386.deb) ... Processando gatilhos para man-db ... Processando gatilhos para ureadahead ... ureadahead will be reprofiled on next reboot Configurando dhcp3-server (3.1.3-2ubuntu3.3) ... Generating /etc/default/dhcp3-server... * Starting DHCP server dhcpd3 * check syslog for diagnostics. [fail] invoke-rc.d: initscript dhcp3-server, action "start" failed.

Lendo listas de pacotes...Construindo árvore de dependências...Lendo informação de estado...Lendo informações estendidas de estado...Inicializando estados de pacotes...Escrevendo informações estendidas de estado...

Esta mensagem de falha é causada pela configuração inicial do DHCP, não indicando nada de errado.

10 http://www.cadcobol.com/dd.htm

V 0.12.0628-2118 Gilberto Martins – [email protected] 226

Page 227: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.6.2  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/dhcp3-server start

ou$ sudo invoke-rc.d dhcp3-server start

ou$ sudo service dhcp3-server start

10.6.3  Verificacão

Podemos usar o netstat para verificar se o serviço está sendo executado:$ sudo netstat -aunp | egrep '\:67'Conexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nameudp 0 0 0.0.0.0:67 0.0.0.0:* 3212/dhcpd3

Lembrando que o DHCP usa protocolo UDP, por isto as opções -aunp e não -atnp.

10.6.4  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/dhcp3-server stop

ou$ sudo invoke-rc.d dhcp3-server stop

ou$ sudo service dhcp3-server stop

Devemos usar o netstat como no exemplo acima, para verificar se o serviço ainda está sendo executado. A porta 67 não pode figurar na lista.

10.6.5  Arquivo de Configuração

O arquivo de configuração do serviço DHCP está em /etc/dhcp3/dhcpd.conf.

10.6.5.1  “Limpeza” do arquivo de configuração

Assim como é muito importante ter este arquivo comentado, também passa a ser muito complicado trabalhar com um arquivo tão extenso. Por isto, devemos trabalhar com uma versão resumida do arquivo, ou seja, sem os comentários. Neste caso, é importante fazer uma cópia de segurança do arquivo antes de comerçarmos:

$ sudo cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.original

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:$ sudo chattr +i /etc/dhcp3/dhcpd.conf.original

Em seguida, faremos a remoção das linhas em branco e das linhas de comentário:$ egrep -v "^$|^ *#" /etc/dhcp3/dhcpd.conf.original > /tmp/dhcpd.conf$ sudo mv /tmp/dhcpd.conf /etc/dhcp3/dhcpd.conf

A listagem a seguir mostra o arquivo de configuração do servidor DHCP depois da limpeza, e com algumas linhas em branco inseridas para facilitar a compreensão e itens que precisam ser modificados:

V 0.12.0628-2118 Gilberto Martins – [email protected] 227

Page 228: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

ddns-update-style none;

option domain-name "NOME DO DOMINIO"; option domain-name-servers IP_DO_SERVIDOR_DNS_1, IP_DO_SERVIDOR_DNS_2, IP_DO_SERVIDOR_DNS_3;

default-lease-time 600; max-lease-time 7200;

log-facility local7;

subnet ENDERECO_NETWORK_DA_REDE netmask MASCARA_REDE_FORMA_PONTUADA { range IP_INICIAL IP_FINAL; option routers IP_DEFAULT_GATEWAY; }

10.6.5.2  Criação do backup do arquivo de configuração

É muito importante realizar cópia de segurança do arquivo de configuração antes de qualquer alteração. Assim, se algo der errado, é possível voltar o arquivo ao que era antes da modificação. Para isso, podemos usar o alias dtbkp :

$ sudo cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.$(dtbkp)

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:$ sudo chattr +i /etc/dhcp3/dhcpd.conf.$(dtbkp)

10.6.5.3  Restauração do backup do arquivo de configuração

Caso seja necessário, é possível recuperar uma versão anterior do arquivo de configuração (que agora se chama /etc/dhcp3/dhcpd.conf.<DATA>) com a seguinte instrução:

$ sudo cp /etc/dhcp3/dhcpd.conf.<DATA> /etc/dhcp3/dhcpd.conf

Note que <DATA> é a data em que este backup foi criado, no formato YYYYDDMM. Usar a tecla TAB é extremamente útil neste caso.

10.6.6  Servidor DNS

Cada estação que receber as configurações a partir do servidor DHCP, precisa receber o endereço IP do servidor DNS. A seguinte configuração informa aos clientes DHCP que o servidor DNS da rede está no host 192.168.0.186:

option domain-name-servers 192.168.0.186;

Observe que pode ser informado até 3 endereços de servidor IP. Caso o primeiro servidor não possa ser conectado, será tentado o segundo servidor, caso exista. De igual modo, se o segundo servidor não puder ser conectado, será tentado o terceiro, caso exista. Se ainda assim não puder ser conectado, um erro vai ser gerado.

Além disso, é importante informar qual o nome do domínio local. Para exemplificar, a seguinte configuração informa aos clientes DHCP que o nome do domínio é erlane.org:

option domain-name "erlane.org";

10.6.7  Duração do IP

Este IP vai ser reservado para o host, durante um tempo, que deve ser especificado em segundos. No arquivo de configuração do servidor DHCP, para informarmos que as configurações devem permanecer no cliente por 30 dias, usaremos a seguinte instrução:

default-lease-time 31104000;

No exemplo acima, estamos dizendo que cada IP pode permanecer com os clientes por no máximo

V 0.12.0628-2118 Gilberto Martins – [email protected] 228

Page 229: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

31.104.000 segundos, que representa 1 ano.

10.6.8  Rede disponibilizada

Ao configurar o servidor DHCP, é preciso determinar neles quais redes serão usadas.

NOTANOTA IMPORTANTEIMPORTANTE

É obrigatório que haja uma interface no host onde foi instalado o servidor DHCP que pertença à rede que vai ser disponibilizada.

No servidor DHCP, é preciso informar que desta rede, uma certa quantidade de Ips será disponibilizada, dependendo da necessidade.

Neste nosso exemplo, vamos disponibilizar os IPs 192.168.0.120 até 192.168.0.150 da rede 192.168.0.0/24. Esta rede possui as seguintes características:

$ ipcalc 192.168.0.120/24 Address: 192.168.0.120 11000000.10101000.00000000. 01111000 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000 HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001 HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110 Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111 Hosts/Net: 254 Class C, Private Internet

Apesar desta rede usar todos os IPs entre 192.168.0.0 a 192.168.0.254, apenas estamos disponibilizando o intervalo de 192.168.0.120 até 192.168.0.150. Ou seja, estamos usando o servidor DHCP para disponibilizar apenas alguns IPs em sequência, da rede em questão.

Além disso, cada host que receber um IP desta faixa terá como default gateway o IP 192.168.0.1.subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.120 192.168.0.150; option routers 192.168.0.1;}

10.6.9  Reserva por MAC

É possível associar IPs a máquinas específicas através do endereço MAC, de forma que haja uma reserva de IP para aquela interface. Para exemplificar, vamos obter o MAC da interface de uma estação cliente:

$ sudo ifconfig eth0 eth0 Link encap:Ethernet Endereço de HW 00:16:d3:42:7a:65 inet end.: 192.168.1.43 Bcast:192.168.1.255 Masc:255.255.255.0 endereço inet6: fe80::216:d3ff:fe42:7a65/64 Escopo:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1 pacotes RX:31275 erros:0 descartados:0 excesso:0 quadro:0 Pacotes TX:29114 erros:0 descartados:0 excesso:1 portadora:0 colisões:0 txqueuelen:1000 RX bytes:4496508 (4.2 MB) TX bytes:30405466 (28.9 MB) IRQ:18 Endereço de E/S:0xa000

Agora que sabemos que o MAC Address desta interface é 00:16:d3:42:7a:65, temos que associar este endereço físico ao IP, dentro do arquivo de configuração do servidor dhcp. Para isto, vamos editar o arquivo de configuração do servidor DHCP, e incluir as linhas a seguir:

host Estacao_01 { hardware ethernet 00:16:d3:42:7a:65; fixed-address 192.168.0.5;}

Então, para o host Estacao_01, que será o host que tiver com endereço físico 00:16:d3:42:7a:65, será sempre atribuído o IP 192.168.0.5.

V 0.12.0628-2118 Gilberto Martins – [email protected] 229

Page 230: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.6.10  Arquivo de Log do DHCP Server

Por default, o log do dhcp é gerado no arquivo /var/log/daemon.log, nas distribuições baseadas em Debian. Mas é possível usar outros recursos de log para tanto. Os recursos disponíveis para log são (de acordo com o servidor syslog) auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, ntp, security, syslog, user, uucp, e local0 até local7. No nosso exemplo, especificaremos o recurso daemon:

log-facility daemon;

10.6.11  Arquivo de leases

Para cada IP disponibilizado pelo servidor, um controle é feito no arquivo /var/lib/dhcp3/dhcpd.leases, contendo os seguintes dados:

$ cat /var/lib/dhcp3/dhcpd.leaseslease 192.168.0.150 { starts 1 2007/12/10 22:53:44; ends 4 2008/12/04 22:53:44; tstp 4 2008/12/04 22:53:44; binding state active; next binding state free; hardware ethernet 00:0c:29:d1:47:2f;}lease 192.168.0.147 { starts 1 2007/12/10 23:01:51; ends 4 2008/12/04 23:01:51; tstp 4 2008/12/04 23:01:51; binding state active; next binding state free; hardware ethernet 00:0c:29:82:53:f8;}

Podemos perceber que os IPs 192.168.0.150 e 192.168.0.147 foram disponibilizados para as interfaces cujo mac é demonstrado (hardware ethernet), além do período de permanência dos IPs.

Este arquivo é para controle do servidor, e não deve ser alterado manualmente.

10.6.12  Configuração do cliente

Toda Instalação de Linux possui um cliente DHCP. Na instalação padrão do Ubuntu este está disponível através do pacote dhcp3-client. Em geral, nenhuma modificação é necessária, bastando apenas usar a ferramenta necessária para manipular as configurações enviadas pelo servidor DHCP. A tabela a seguir demonstra estas operações:Comando Descrição

dhclient -r <interface> As configurações enviadas pelo servidor DHCP são liberadas, deixando a interface especificada sem configuração. Mesma ação do ipconfig /release no Windows.

dhclient <interface> Força a interface a solicitar uma configuração para o servidor DHCP. Mesma ação do ipconfig /renew no Windows.

V 0.12.0628-2118 Gilberto Martins – [email protected] 230

Page 231: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.7  Proxy

10.7.1  Introdução

Segundo a wikipedia11, um servidor proxy atua nas requisições dos seus clientes executando os pedidos de conexão a outros servidores. Um cliente conecta-se a um servidor proxy, requisita serviços como: Servidor de arquivos, website, ou outro recurso disponível. A tradução da palavra inglesa proxy, segundo o dicionário Michaelis, significa procurador, substituto ou representante.

O servidor proxy disponibiliza este recurso solicitado pelo cliente, conectando-se ao servidor correspondente e o repassa ao cliente. Um servidor proxy pode, opcionalmente, alterar a requisição do cliente ou a resposta do servidor e, algumas vezes, pode disponibilizar este recurso sem nem mesmo se conectar ao servidor especificado.

10.7.2  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install squid3

Também é possível instalar usando o aptitude:$ sudo aptitude install squid3

10.7.3  Ativação

Sempre que for necessário iniciar o proxy, deve ser executada a seguinte instrução:$ invoke-rc.d squid3 start

ou$ /etc/init.d/squid3 start

ou$ service squid3 start

10.7.4  Verificacão

Podemos usar o netstat para verificar se o serviço está sendo executado:$ netstat -ltnp | grep -i squidtcp 0 0 0.0.0.0:3128 0.0.0.0:* OUÇA 3395/(squid)

10.7.5  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo invoke-rc.d squid3 stop

ou$ sudo /etc/init.d/squid3 stop

ou

11 http://pt.wikipedia.org/wiki/Proxy

V 0.12.0628-2118 Gilberto Martins – [email protected] 231

Page 232: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ service squid3 stop

Podemos usar o netstat para confirmar que o serviço não está mais sendo executado. A porta 3128 não pode constar na lista.

10.7.6  Recarregar arquivo de configuração

Observe que, no caso do squid, o processo de interrupção do serviço é muito demorado. Por isso, é melhor recarregar o arquivo de configuração que foi alterado do que interromper o serviço e reinicializá-lo. Para isto executamos a seguinte instrução:

$ invoke-rc.d squid3 reload

ou$ service squid3 reload

ou$ /etc/init.d/squid3 reload

10.7.7  Arquivo de log

O serviço gera entradas no arquivo /var/log/daemon.log. Em /var/log/squid3/access.log, é registrado cada acesso feito pelo squid. Além destes arquivos, temos também os seguintes arquivos em /var/log/squid3:Arquivos Descriçãocache.log Registra a inicialização do squid.

access.log Registra a movimentação dos objetos no cache

10.7.7.1  Arquivo cache.log

Este arquivo vai receber as mensagens de inicialização e interrupção do SQUID. O trecho a seguir mostra uma inicialização de um SQUID recém-instalado:

V 0.12.0628-2118 Gilberto Martins – [email protected] 232

Page 233: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

2012/06/28 20:07:37| Squid Cache (Version 3.0.STABLE19): Exiting normally.2012/06/28 20:07:43| Starting Squid Cache version 3.0.STABLE19 for i486-pc-linux-gnu...2012/06/28 20:07:43| Process ID 16992012/06/28 20:07:43| With 65535 file descriptors available2012/06/28 20:07:43| DNS Socket created at 0.0.0.0, port 50919, FD 72012/06/28 20:07:43| Adding nameserver 8.8.8.8 from /etc/resolv.conf2012/06/28 20:07:43| Adding nameserver 8.8.4.4 from /etc/resolv.conf2012/06/28 20:07:43| Unlinkd pipe opened on FD 122012/06/28 20:07:43| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec2012/06/28 20:07:43| Swap maxSize 102400 + 8192 KB, estimated 8507 objects2012/06/28 20:07:43| Target number of buckets: 4252012/06/28 20:07:43| Using 8192 Store buckets2012/06/28 20:07:43| Max Mem size: 8192 KB2012/06/28 20:07:43| Max Swap size: 102400 KB2012/06/28 20:07:43| Version 1 of swap file with LFS support detected... 2012/06/28 20:07:43| Rebuilding storage in /var/spool/squid3 (CLEAN)2012/06/28 20:07:43| Using Least Load store dir selection2012/06/28 20:07:43| Set Current Directory to /var/spool/squid32012/06/28 20:07:43| Loaded Icons.2012/06/28 20:07:43| Accepting HTTP connections at 0.0.0.0, port 3128, FD 14.2012/06/28 20:07:43| Accepting ICP messages at 0.0.0.0, port 3130, FD 15.2012/06/28 20:07:43| HTCP Disabled.2012/06/28 20:07:43| Ready to serve requests.2012/06/28 20:07:43| Done reading /var/spool/squid3 swaplog (0 entries)2012/06/28 20:07:43| Finished rebuilding storage from disk.2012/06/28 20:07:43| 0 Entries scanned2012/06/28 20:07:43| 0 Invalid entries.2012/06/28 20:07:43| 0 With invalid flags.2012/06/28 20:07:43| 0 Objects loaded.2012/06/28 20:07:43| 0 Objects expired.2012/06/28 20:07:43| 0 Objects cancelled.2012/06/28 20:07:43| 0 Duplicate URLs purged.2012/06/28 20:07:43| 0 Swapfile clashes avoided.2012/06/28 20:07:43| Took 0.02 seconds ( 0.00 objects/sec).2012/06/28 20:07:43| Beginning Validation Procedure2012/06/28 20:07:43| Completed Validation Procedure2012/06/28 20:07:43| Validated 25 Entries2012/06/28 20:07:43| store_swap_size = 02012/06/28 20:07:44| storeLateRelease: released 0 objects

Deste log, podemos observar o começo do processo de inicialização, mostrando a versão do SQUID ,(Version 3.0.STABLE19) e o seu número de processo (1699):

2012/06/28 20:07:37| Squid Cache (Version 3.0.STABLE19): Exiting normally.2012/06/28 20:07:43| Starting Squid Cache version 3.0.STABLE19 for i486-pc-linux-gnu...2012/06/28 20:07:43| Process ID 16992012/06/28 20:07:43| With 65535 file descriptors available

A seguir, observamos que o SQUID vai usar como servidor DNS os IPs 8.8.8.8 e 8.8.4.4 (ambos lidos do arquivo /etc/resolv.conf), os tamanhos das memórias de trabalho (8192 KB) e de swap (102400 KB)

2012/06/28 20:07:43| DNS Socket created at 0.0.0.0, port 50919, FD 72012/06/28 20:07:43| Adding nameserver 8.8.8.8 from /etc/resolv.conf2012/06/28 20:07:43| Adding nameserver 8.8.4.4 from /etc/resolv.conf2012/06/28 20:07:43| Unlinkd pipe opened on FD 122012/06/28 20:07:43| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec2012/06/28 20:07:43| Swap maxSize 102400 + 8192 KB, estimated 8507 objects2012/06/28 20:07:43| Target number of buckets: 4252012/06/28 20:07:43| Using 8192 Store buckets2012/06/28 20:07:43| Max Mem size: 8192 KB2012/06/28 20:07:43| Max Swap size: 102400 KB2012/06/28 20:07:43| Version 1 of swap file with LFS support detected...

Finalmente, o final da inicialização do SQUID, mostrando o diretório onde os objetos acessados pelo SQUID serão armazenados (/var/spool/squid3) e informando também em qual IP e porta o SQUID está recebendo conexões (no IP 0.0.0.0, que significa qualquer IP existente no host, e na porta 3128):

V 0.12.0628-2118 Gilberto Martins – [email protected] 233

Page 234: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

2012/06/28 20:07:43| Rebuilding storage in /var/spool/squid3 (CLEAN)2012/06/28 20:07:43| Using Least Load store dir selection2012/06/28 20:07:43| Set Current Directory to /var/spool/squid32012/06/28 20:07:43| Loaded Icons.2012/06/28 20:07:43| Accepting HTTP connections at 0.0.0.0, port 3128, FD 14.2012/06/28 20:07:43| Accepting ICP messages at 0.0.0.0, port 3130, FD 15.2012/06/28 20:07:43| HTCP Disabled.2012/06/28 20:07:43| Ready to serve requests.2012/06/28 20:07:43| Done reading /var/spool/squid3 swaplog (0 entries)2012/06/28 20:07:43| Finished rebuilding storage from disk.2012/06/28 20:07:43| 0 Entries scanned2012/06/28 20:07:43| 0 Invalid entries.2012/06/28 20:07:43| 0 With invalid flags.2012/06/28 20:07:43| 0 Objects loaded.2012/06/28 20:07:43| 0 Objects expired.2012/06/28 20:07:43| 0 Objects cancelled.2012/06/28 20:07:43| 0 Duplicate URLs purged.2012/06/28 20:07:43| 0 Swapfile clashes avoided.2012/06/28 20:07:43| Took 0.02 seconds ( 0.00 objects/sec).2012/06/28 20:07:43| Beginning Validation Procedure2012/06/28 20:07:43| Completed Validation Procedure2012/06/28 20:07:43| Validated 25 Entries2012/06/28 20:07:43| store_swap_size = 02012/06/28 20:07:44| storeLateRelease: released 0 objects

Quando o SQUID é interrompido, neste mesmo arquivo de log são registradas as seguintes informações:

2012/06/28 20:30:22| Shutting down...2012/06/28 20:30:22| FD 15 Closing ICP connection2012/06/28 20:30:22| Closing unlinkd pipe on FD 122012/06/28 20:30:22| storeDirWriteCleanLogs: Starting...2012/06/28 20:30:22| Finished. Wrote 0 entries.2012/06/28 20:30:22| Took 0.00 seconds ( 0.00 entries/sec).CPU Usage: 10.685 seconds = 0.248 user + 10.437 sysMaximum Resident Size: 74896 KBPage faults with physical i/o: 0Memory usage for squid via mallinfo(): total space in arena: 2704 KB Ordinary blocks: 2666 KB 9 blks Small blocks: 0 KB 1 blks Holding blocks: 27172 KB 11 blks Free Small blocks: 0 KB Free Ordinary blocks: 37 KB Total in use: 29838 KB 1104% Total free: 37 KB 1%2012/06/28 20:30:22| Squid Cache (Version 3.0.STABLE19): Exiting normally.

10.7.8  Arquivo de configuração

O arquivo de configuração está em /etc/squid3/squid.conf, e é muito extenso, principalmente por ter comentários explicando detalhadamente o funcionamento do Squid. Estes comentários não fornecem toda a informação necessária para administrar o SQUID, mas são excelente fonte rápida de pesquisas.

10.7.8.1  Limpeza do arquivo de configuração

Assim como é muito importante ter este arquivo tão comentado, também passa a ser muito trabalhoso. Por isto, podemos trabalhar com uma versão resumida do arquivo, ou seja, sem os comentários. Para isto, é importante fazer uma cópia de segurança do arquivo antes de comerçarmos:

$ sudo mv /etc/squid3/squid.conf /etc/squid3/squid.conf.original

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:

V 0.12.0628-2118 Gilberto Martins – [email protected] 234

Page 235: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo chattr +i /etc/squid3/squid.conf.original

Em seguida, faremos a remoção das linhas em branco e das linhas de comentário:$ egrep -v “^$|^ *#” /etc/squid3/squid.conf.original > /tmp/squid.conf$ sudo mv /tmp/squid.conf /etc/squid3/squid.conf

Agora, o arquivo fica como demonstrado a seguir:acl manager proto cache_objectacl localhost src 127.0.0.1/32acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECThttp_access allow manager localhosthttp_access deny managerhttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localhosthttp_access deny allicp_access deny allhtcp_access deny allhttp_port 3128hierarchy_stoplist cgi-bin ?access_log /var/log/squid3/access.log squidrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern (cgi-bin|\?) 0 0% 0refresh_pattern . 0 20% 4320icp_port 3130coredump_dir /var/spool/squid3

Assim, um arquivo que tinha quase 5000 linhas foi reduzido para menos de 60, restando apenas o que interessa no arquivo. Podemos confirmar isso usando os comandos seguintes:

$ wc -l /etc/squid3/squid.conf.original4933 /etc/squid/squid.conf.20111226$ wc -l /etc/squid3/squid.conf32 /etc/squid/squid.conf

10.7.8.2  Criação do backup do arquivo de configuração

É muito importante realizar cópia de segurança do arquivo de configuração antes de qualquer alteração. Assim, se algo der errado, é possível voltar o arquivo ao que era antes da modificação. Para isso, podemos usar o alias dtbkp :

$ sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.$(dtbkp)

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:$ sudo chattr +i /etc/squid3/squid.conf.$(dtbkp)

10.7.8.3  Restauração do backup do arquivo de configuração

Caso seja necessário, é possível recuperar uma versão anterior do arquivo de configuração (que agora se chama /etc/squid/squid.conf.<DATA>) com a seguinte instrução:

$ cat /etc/squid3/squid.conf.<DATA> > /etc/squid3/squid.conf

Note que <DATA> é a data em que este backup foi criado, no formato YYYYDDMM. Usar a tecla TAB é extremamente útil neste caso.

V 0.12.0628-2118 Gilberto Martins – [email protected] 235

Page 236: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.7.8.4  Mensagens de erro em português

Todas as mensagens de erro gerada pelo squid são páginas em HTML. Na sua instalação padrão, o squid já traz muitas linguagens que podem ser escolhidas livremente. Na listagem a seguir, podemos ver diretórios que contêm estas páginas de erro para diversas linguagens. A usada no Brasil é a pt-br.

$ ls /usr/share/squid3/errors/ ar bg cs de en et fi he hy it ko lv nl pt ro sk sv th uk zh-cn az ca da el es fa fr hu id ja lt ms pl pt-br ru sr templates tr uz zh-tw

Assim, se queremos as mensagens padrão em português, devemos fazer a seguinte alteração no arquivo de configuração do squid:

error_directory /usr/share/squid3/errors/pt-br

10.7.8.5  Declaração do hostname

É importante informar ao squid qual é o hostname em uso. A máquina onde estou configurando o squid para este material, o hostname é mac. A linha a ser alterada no arquivo para isso é:

visible_hostname mac

Caso a linha acima não exista, deve ser incluída no arquivo de configuração, preferencialmente ao final do arquivo. Com certeza, poderia também ser usado o hostname localhost. Se for esta a escolha, a linha seria alterada para:

visible_hostname localhost

10.7.8.6  Controle de acesso

O Squid permite ou proíbe acesso do usuário a sites externos executando dois procedimentos para cada acesso que recebe:

1. Análise do acesso, que é feito pelas ACLs;

2. Ação a ser tomada, dependendo do resultado da análise do acesso, que é a validação;

10.7.8.7  Criação das ACLs

A ACL é uma regra que vai ser verificada para cada conexão que chega ao proxy. Aqui usaremos duas. A primeira ACL define uma rede interna:

acl rede_interna src 172.16.0.0/24

Analisando os detalhes desta acl, encontramos:Componente Descriçãoacl Declaração da acl

rede_interna Nome da acl. Qualquer nome pode ser escolhido aqui. Preferencialmente em minúsculas, com sinais de underline representando os espaços

src O tipo da acl. Esta acl será verdadeira se o endereço de origem da conexão coincidir com o endereço fornecido.

172.16.0.0/24 Parâmetro da opção. No caso da src esta é a rede a ser considerada.

Tabela 44: Detalhes da acl src

A outra acl que vamos criar é a seguinte:acl proibidas url_regex "/etc/squid3/proibidas.txt"

Nesta acl, encontramos:

V 0.12.0628-2118 Gilberto Martins – [email protected] 236

Page 237: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Componente Descriçãoacl Declaração da acl

proibidasNome da acl. Qualquer nome pode ser escolhido aqui. Preferencialmente em minúsculas, com sinais de underline representando os espaços

url_regex O tipo da acl. Aqui, serão consideradas as palavras existentes no arquivo especificado. A *acl* será verdadeira se qualquer das palavras for localizada em qualquer posição da url.

"/etc/squid/proibidas.txt"Parâmetro da opção. Para este tipo de acl (url_regex), este é um arquivo cujo conteúdo será considerado para análise. Note que o nome do arquivo tem que estar entre aspas.

Tabela 45: Detalhes da acl url_regex

10.7.8.8  Validação das ACLs

Nesta etapa, vamos determinar se o acesso é bloqueado ou liberado, de acordo com o resultado da análise feita pelas acls. Para isso é usado o http_acces, seguido de allow (permite o acesso) ou deny (impede o acesso).

No exemplo a seguir, temos os dois casos. Note que estas linhas devem ser inseridas imediatamente antes da linha “http_access deny all”:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTShttp_access deny proibidashttp_access allow rede_internahttp_access deny all

Ou seja, se a acl proibidas for verdadeira, o acesso a este site será negado, e uma mensagem de erro em HTML, do próprio squid, será automaticamente enviada para o solicitante.

Mas se a acl proibidas for falsa, a próxima condição será analisada. Assim, caso a solicitação tenha vindo da rede 172.16.0.0/24, o acesso será garantido ao solicitante. Observe então a ordem de como as declarações http_access serão organizadas no arquivo para que não haja prejuízo na concessão de acesso.

Servidor DNS

É possível e recomendado que o squid faça consultas ao servidor DNS interno, e não a um servidor DNS externo. Para isso, a seguinte alteração deve ser feita no arquivo de configuração do squid:

dns_nameservers 10.0.0.1 192.172.0.4

No exemplo acima, quando for preciso resolver um nome, o squid consultará os servidores DNS instalados em 10.0.0.1 e 192.172.0.4.

10.7.9  Proxy transparente

Um proxy transparente é uma forma de obrigar os usuários de uma rede a utilizarem o proxy. Além das características de caching dos proxies convencionais, estes podem impor políticas de utilização ou recolher dados estatísticos, entre outras . A transparência é conseguida interceptando o tráfego HTTP (por exemplo) e reencaminhando-o para o proxy mediante a técnica de port forwarding.

Esta modalidade de funcionamento do proxy torna desnecessário a configuração do endereço do mesmo no navegador de cada host da rede. É bom lembrar que quando o squid está configurado para trabalhar como proxy transparente, ele não pode autenticar o usuário.

Basta configurar o squid como proxy transparente, efetuando as alterações a seguir no /etc/squid3/squid.conf:

V 0.12.0628-2118 Gilberto Martins – [email protected] 237

Page 238: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

http_port 3128 transparent

Esta linha pode ser repetida para definir mais de uma interface e/ou porta pelas quais o proxy receberá conexão.

Além disso, é necessário que na mesma máquina, o iptables redirecione toda solicitação de conexão destinada à porta 80 para a porta do squid, neste caso, a 3128. Para isto, esta regra pode ser configurada como segue:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-ports 3128

Um exemplo de como configurar o proxy transparente na inicialização do sistema está demonstrado no capítulo de iptables.

10.7.10  Autenticação

Existem diversas formas de autenticação de usuários, ou seja, de exigir que ele apresente suas credencias como usuário válido para um procedimento. Neste caso, para acessar a Internet.

Para que um usuário possa ser autenticado ao tentar acessar uma página, é necessário fazer as seguintes alterações no início do arquivo de configuração do SQUID12:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/senhas/htpasswdauth_param basic children 5auth_param basic realm Squid proxy-caching web serverauth_param basic credentialsttl 2 hoursauth_param basic casesensitive off

No trecho acima, /usr/lib/squid/ncsa_auth é a ferramenta de autenticação que usaremos e /etc/senhas/htpasswd é o arquivo de senhas dos usuários que podem ser autenticados.

A seguir, um detalhamento as alterações acima:Detalhe Descriçãoauth_param basic program /usr/lib/squid/ncsa_auth /etc/squid3/htpasswd Especifica a localização da ferramenta de

autenticação e o arquivo de senhas

auth_param basic children 5 Quantidade de processos do autenticador a serem iniciados

auth_param basic realm Squid proxy-caching web server Texto apresentado ao usuário ao lhe solicitar login e senha

auth_param basic credentialsttl 2 hours Período de validade de uma autenticação, ou seja, quanto tempo o autenticador é iniciado para aquele usuário.

auth_param basic casesensitive off Diferencia maiúsculas de minúsculas. Pode ser on ou off

acl ncsa_users proxy_auth REQUIRED REQUIRED significa que qualquer usuário autenticado será referenciado nas ACLS por ncsa_users

http_access allow ncsa_users Permite acesso ao proxy apenas se o usuário conseguir ser autenticado

Tabela 46: Configurações necessárias para autenticação

O arquivo de senhas do usuário deve ser criado com a ferramenta htpasswd, que é disponibilizada pelo pacote apache2-utils. Caso este pacote não exista, ele deve ser instalado.

Para a criação do arquivo de senhas e do usuário que acessará esta página, usamos o seguinte comando:

12 Baseado em http://www.cyberciti.biz/tips/linux-unix-squid-proxy-server-authentication.html

V 0.12.0628-2118 Gilberto Martins – [email protected] 238

Page 239: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo htpasswd -cm /etc/senhas/usuarios gilberto

O comando acima vai criar o arquivo usuarios, dentro do diretório /etc/senhas. Note que este diretório já deve existir, ou então deve ser criado.

Caso o arquivo já exista, o comando é $ sudo htpasswd -m /etc/senhas/usuarios gilberto

O usuário “gilberto” agora existe no arquivo /etc/senhas/htpasswd e pode ser autenticado no momento da tentativa de acesso.

É também necessário criar as listas ACL e conceder permissão a partir de autenticação. Para isso é necessário fazer as seguintes alterações (ou inclusões) de ACL no arquivo de configuração do SQUID:

acl ncsa_users proxy_auth REQUIRED

e também as seguintes inclusões de liberação de acesso no arquivo de configuração do SQUID:http_access allow ncsa_users

No exemplo acima, qualquer usuário pode acessar qualquer site, desde que seja autenticado.

10.7.11  Dansguardian

O Dansguardian é um filtro de conteúdo desenvolvido para trabalhar em conjunto com o Squid, filtrando conteúdo indesejado. O DansGuardian utiliza um filtro adaptativo, que avalia o conteúdo da página e decide se ela é uma página imprópria com base no conteúdo, utilizando um conjunto de regras adaptativas. Ele inclui um conjunto de regras prontas, que contém palavras, frases e tipos de arquivos frequentemente usados em páginas impróprias, além de uma lista de páginas conhecidas e trabalha cruzando todas essas informações. Assim, Dansguardian é um filtro programável, que pode ser adaptado e personalizado de forma a obter melhores resultados.

No screenshot abaixo, por exemplo, temos uma pesquisa do Google por um termo indecoroso, que foi bloqueada por ter retornado um grande número de páginas impróprias. O domínio "google.com" naturalmente não foi bloqueado no filtro, mas mesmo assim o Dansguardian foi capaz de bloquear a página baseado no conteúdo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 239

Page 240: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Atualmente, o DansGuardian é um produto "semicomercial", que tem o código aberto e é gratuito para uso pessoal ou para qualquer fim não-comercial (pode ser usado em uma escola ou escritório, por exemplo, desde que implementado internamente), mas é pago para uso comercial (quando você cobra pelo serviço de implantação, ou o fornece como parte de uma solução comercial). Você pode ver mais detalhes sobre a licença de uso em http://dansguardian.org/?page=copyright2.

10.7.11.1  Instalação

Para instalar o Dansguardian, o apt-get pode ser usado:$ sudo apt-get install dansguardian

ou através do aptitude:$ sudo aptitude install dansguardian

10.7.11.2  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/dansguardian start

ou

V 0.12.0628-2118 Gilberto Martins – [email protected] 240

Imagem 52: Acesso impedido pelo DansGuardian

Page 241: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo service dansguardian start

10.7.11.3  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/dansguardian stop

ou$ sudo service dansguardian stop

10.7.11.4  Configuração

Para que o Dansguardian funcione, é preciso que o Squid esteja instalado e ativo. Ele trabalha sobre o Squid, implementando suas políticas de acesso, mas deixando que o próprio Squid faça o acesso à web, cache e autenticação.

O principal arquivo de configuração é o "/etc/dansguardian/dansguardian.conf". Ao editá-lo pela primeira vez, é importante verificar algumas opções:

# UNCONFIGURED

A linha acima deve ficar comentada, indicando que o arquivo já foi configurado.language = 'portuguese'

Esta opção configura a língua em que as mensagens de acesso bloqueado serão mostradas aos clientes.

loglocation = '/var/log/dansguardian/access.log'

Aqui vai a localização do arquivo de log do dansguardian, onde ficam armazenados os endereços das páginas cujo acesso foi bloqueado. Serve tanto para verificar a eficiência do filtro, quanto para identificar falsos-positivos, ou seja, páginas legítimas que estão sendo bloqueadas por engano. Essas exceções podem ser especificadas individualmente no arquivo "/etc/dansguardian/exceptionsitelist", que funciona como uma white list, contendo uma lista de páginas que sempre são permitidas, mesmo que sejam encontradas palavras proibidas dentro do texto.

filterport = 8080

A porta onde o DansGuardian fica ativo. Ele sempre deve utilizar uma porta diferente do Squid. O padrão é a porta 8080.

proxyip = 127.0.0.1

O endereço IP do servidor proxy que será usado. Por padrão ele vai utilizar uma cópia do Squid ativa na mesma máquina, mas é possível utilizar outro servidor Squid disponível na rede.

proxyport = 3128

A porta TCP onde o servidor Squid especificado na opção acima está ativo. Lembre-se de que, por padrão, o Squid usa a porta 3128.

A filtragem de páginas funciona em dois níveis. Ao receber a requisição do cliente, o DansGuardian verifica se o endereço a ser acessado está em uma das listas de domínios ou IPs proibidos. Caso esteja, o cliente recebe a mensagem de erro e o acesso sequer é feito, economizando banda.

Se não existir nenhum bloqueio relacionado ao domínio, a requisição é enviada ao Squid e o acesso é realizado. Ao receber os arquivos da página, o DansGuardian verifica o conteúdo em busca de expressões e palavras "ruins", freqüentemente encontradas em páginas indesejadas, e também palavras "boas", normalmente encontradas em páginas de bom conteúdo.

Cada palavra ruim soma um certo número de pontos. Por exemplo, a palavra "sexy" soma apenas 5 pontos, enquanto a expressão "sex orgies" soma 80 pontos. Palavras "boas", por outro lado, subtraem pontos, fazendo com que a página tenha uma possibilidade menor de ser bloqueada. A palavra

V 0.12.0628-2118 Gilberto Martins – [email protected] 241

Page 242: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

"education" subtrai 20 pontos, enquanto "medical problem" subtrai 50. As listas com palavras boas e ruins, juntamente com o peso positivo ou negativo de cada uma, são armazenadas na pasta "/etc/dansguardian/phraselist".

No final, o site recebe uma nota, apelidada pelos desenvolvedores de "naughtynesslimit", ou "índice de sem-vergonhice", resultado da soma de todas as palavras boas e ruins. Você define um índice máximo a ser tolerado no arquivo "/etc/dansguardian/dansguardianf1.conf", na opção:

naughtynesslimit = 160

Quanto mais baixo o número, mais severa é a censura, porém mais páginas boas acabam sendo bloqueadas por engano (falsos positivos). Os valores recomendados pelos desenvolvedores são "60" para crianças pequenas, "100" para pré-adolescentes e "160" para adolescentes. Para um público adulto, onde a principal preocupação seja não bloquear páginas úteis, mesmo que isso faça com que uma ou outra página inadequada passe pelo filtro de vez em quando, você pode arriscar "200" ou mesmo "240".

Como você pode notar dando uma olhada no conteúdo dos arquivos das listas de palavras, o DansGuardian vem configurado com listas em inglês, que deixam passar muitos sites nacionais. Você pode baixar um arquivo com listas em outras línguas, incluindo português no:

http://dansguardian.org/downloads/grosvenor/languages.tar.gz

Para instalar, descompacte o arquivo "languages.tar.gz" e copie os arquivos de dentro da pasta "languages", que será criada para a pasta "/etc/dansguardian/phraselist/". Falta agora configurar o DansGuardian para utilizar os novos arquivos. Para isso, abra o arquivo "/etc/dansguardian/weightedphraselist" e adicione as linhas:

.Include</etc/squid/dansguardian/languages/weightedphraselist.pornsites.portuguese>

.Include</etc/squid/dansguardian/languages/weightedphraselist.pornwords.portuguese>

Antes de usar estas listas de palavras, verifique o conteúdo dos arquivos. As listas de palavras em português são excessivamente rigorosas, o que faz com que seja bloqueado o acesso a um número muito grande de sites "bons", mesmo ao usar um naughtynesslimit alto. Use-os com cautela.

Aparentemente, os arquivos disponíveis no site foram escritos por um estrangeiro, por isso, não se adaptam bem à nossa realidade. Se decidir corrigir os arquivos, não deixe de enviá-los para os mantenedores, para que sejam incluídos no pacote.

Note que na configuração são especificados todos os arquivos de palavras que são utilizados. Na pasta existem várias categorias diferentes e, em algumas situações, você pode querer desabilitar algumas delas, a fim de flexibilizar o filtro. Você pode adicionar novas palavras ou editar o peso de cada uma, editando diretamente os arquivos.

Concluindo, abra também o arquivo "/etc/dansguardian/bannedphraselist" e inclua a linha:.Include</etc/squid/dansguardian/languages/bannedphraselist.portuguese>

Lembre-se de que é necessário reiniciar o DansGuardian para que qualquer uma das alterações tenha efeito:

$ sudo /etc/init.d/dansguardian restart

O DansGuardian pode ser usado tanto dentro da rede, quanto localmente. Além de ser utilizado em redes de todos os tamanhos, muita gente com crianças em casa se dá ao trabalho de instalá-lo avulso, no micro de casa.

Nas configurações do proxy (nos clientes), coloque o endereço IP do servidor (como, por exemplo, 192.168.1.1) e a porta do DansGuardian, definida no arquivo de configuração. Lembre-se de que, por padrão, ele usa a porta 8080.

No Firefox, a opção de configurar um proxy está em "Editar > Preferências > Proxy". Ou seja, com exceção da porta diferente, a configuração para usar o DansGuardian é a mesma que seria usada em

V 0.12.0628-2118 Gilberto Martins – [email protected] 242

Page 243: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

conjunto com um proxy tradicional. Em casos onde ele é usado num micro doméstico, com o objetivo de servir como um simples filtro de conteúdo, você pode até mesmo rodá-lo localmente. Neste caso, use o endereço "127.0.0.1" como proxy:

10.7.11.5  Atualização das Blacklists

Além do filtro com base em palavras, o DansGuardian utiliza uma lista de sites proibidos, que sequer chegam a ser acessados. Por padrão, o DansGuardian vem com uma lista muito pequena e desatualizada, apenas como exemplo. Para efetivamente usar este recurso, é preciso baixar uma lista mais elaborada.

Você pode baixar uma lista longa e atualizada no http://urlblacklist.com/, o mesmo site que citei no tópico sobre o SquidGuard. As listas do UrlBlacklist são mais adequadas para uso no DansGuardian, pois incluem também listas de termos (que são usadas pelo DansGuardian para complementar o filtro estático baseado em URLs), mas ele possui a desvantagem de ser um serviço não-gratuito, onde você precisa assinar o serviço para ter acesso completo às listas.

O link completo para a versão mais recente é:http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist

Para instalar, basta descompactar o arquivo e mover o conteúdo para dentro da pasta "/etc/dansguardian/", substituindo a pasta "/etc/dansguardian/blacklists" existente:

$ tar -zxvf bigblacklist.tar.gz # cp -a --reply=yes blacklists/ /etc/dansguardian/

Depois de instalar o arquivo completo, você pode usar o script de atualização, disponível no site, para baixar atualizações de forma automática. Baixe-o em:

http://urlblacklist.com/downloads/UpdateBL

Basta ativar a permissão de execução e executá-lo. Em algumas distribuições é preciso criar a pasta "/var/lib/lrpkg/", onde ele guarda os logs. Sem esta pasta, ele exibe um erro e não conclui a

V 0.12.0628-2118 Gilberto Martins – [email protected] 243

Imagem 53: Configuração do Browser para usar o Dansguardian

Page 244: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

atualização.# mkdir -p /var/lib/lrpkg/# chmod +x UpdateBL# ./UpdateBL

O pacote inclui várias listas diferentes, separadas por assunto. Assim como na lista do Shalla's, as listas incluem muitos assuntos inocentes como, "cellphones", "sports" e "childcare" (saúde infantil). Ele não é uma "blacklist" no sentido estrito da palavra, mas sim um conjunto de listas que incluem também sites sobre conteúdos diversos. A idéia aqui é que você pode bloquear todos os assuntos desejados.

Dentro de cada uma das subpastas, você encontra três arquivos: domains (sites completamente bloqueados), expressions (palavras comumente encontradas em sites de conteúdo impróprio) e urls (páginas específicas, dentro de sites permitidos). Para ativar o uso das blacklists, edite os arquivos "/etc/dansguardian/bannedsitelist" e "/etc/dansguardian/bannedurllist", adicionando (ou descomentando) as linhas referentes às categorias que devem ser ativadas.

Para bloquear páginas de conteúdo adulto (adult), drogas (drugs), páginas pornográficas (porn) e warez, adicione (ou descomente) no arquivo "/etc/dansguardian/bannedurllist" as linhas:

.Include</etc/dansguardian/blacklists/adult/urls>

.Include</etc/dansguardian/blacklists/drugs/urls>

.Include</etc/dansguardian/blacklists/porn/urls>

.Include</etc/dansguardian/blacklists/warez/urls>

No arquivo "/etc/dansguardian/bannedsitelist" vão as linhas:.Include</etc/dansguardian/blacklists/adult/domains>.Include</etc/dansguardian/blacklists/drugs/domains>.Include</etc/dansguardian/blacklists/porn/domains>.Include</etc/dansguardian/blacklists/warez/domains>

Você pode usar também os arquivos com expressões proibidas, incluídos no pacote para reforçar a lista adicional, com os termos em português, que já ativamos anteriormente. Para isso, abra novamente o arquivo "/etc/dansguardian/bannedphraselist" e adicione as linhas:

V 0.12.0628-2118 Gilberto Martins – [email protected] 244

Imagem 54: Assuntos usados para bloqueios

Page 245: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

.Include</etc/dansguardian/blacklists/adult/expressions>

.Include</etc/dansguardian/blacklists/drugs/expressions>

.Include</etc/dansguardian/blacklists/porn/expressions>

.Include</etc/dansguardian/blacklists/warez/expressions>

Faça o mesmo com outras categorias que quiser adicionar.

10.7.11.6  Proxy transparente com o DansGuardian

Normalmente, os clientes precisam ser configurados manualmente para utilizar o Dansguardian como proxy, acessando-o através da porta 8080. Isso traz de volta o problema de configurar manualmente cada um dos micros e evitar que os usuários removam a configuração para acessar diretamente caso você mantenha o compartilhamento via NAT ativo em adição ao proxy.

Contudo, é possível configurar o Dansguardian para trabalhar como proxy transparente, da mesma forma que fizemos anteriormente com o Squid. Neste caso, o firewall redireciona as requisições recebidas na porta 80 para o Dansguardian e ele as repassa para o Squid, que finalmente faz o acesso. Os clientes precisam apenas ser configurados para acessar a internet usando o servidor onde estão instalados o Squid e Dansguardian como gateway.

Para isso, comece configurando o Squid para trabalhar em modo transparente, adicionando a opção "transparent" na linha "http_port" do squid.conf:

http_port 3128 transparent

Depois vêm as regras de firewall para habilitar o compartilhamento da conexão e direcionar as requisições recebidas na porta 80 para a porta usada pelo DansGuardian. Novamente, é a mesma configuração usada para fazer um proxy transparente no Squid, mudando apenas a porta. Lembre-se de que o "eth0" deve ser substituído pela interface ligada na rede local e o "eth1" pela interface ligada à Internet:

modprobe iptable_natiptables -t nat -A POSTROUTING -o eth1 -j MASQUERADEecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080iptables -A INPUT -m tcp -p tcp -s ! 127.0.0.1 --dport 3128 -j DROP

A última regra bloqueia a porta 3128 usada pelo Squid, impedindo o acesso direto através do Squid, sem passar pelo Dansguardian. A única exceção é o endereço 127.0.0.1, ou seja, o próprio servidor. Lembre-se de colocar estes comandos no arquivo "/etc/rc.local" (ou no seu script de compartilhamento da conexão) para não precisar ficar digitando tudo a cada boot.

V 0.12.0628-2118 Gilberto Martins – [email protected] 245

Page 246: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.8  Servidor SMTP

10.8.1  Introdução

O correio eletrônico é uma das aplicações mais populares da Internet e considerando o crescimento vertiginoso da mesma junto às pessoas se percebe como o email está sendo usado de forma intensiva, facilitando a comunicação entre pessoas.

É preciso definirmos alguns termos importantes neste processo:Termo Descrição

Mail Transfer Agent (MTA) Um Mail Transfer Agent (MTA) é o agente responsável pelo envio e recebimento de e-mails. No nosso caso nós utilizaremos o Postfix como MTA.

Mail Delivery Agent (MDA)O Mail Delivery Agent (MDA) é o agente responsável pela entrega das mensagens para as caixas de mensagens dos usuários. No nosso caso utilizaremos o Qpopper da Qualcomm como MDA.

Mail User Agent (MUA)

O Mail User Agent (MUA), ou agente de usuário, é o mais numeroso dentre os itens que compõem um servidor de e-mail, mesmo ele não compondo o servidor SMTP em si, mas como parte do serviço de e-mail. O Mail User Agent é o software cliente que o usuário utiliza para ler e enviar os seus e-mails. Como exemplo temos o Eudora, o Outlook, Thunderbird, etc.

Tabela 47: Termos relevantes ao SMTP

10.8.1.1  Protocolo SMTP

O Simple Mail Transfer Protocol é o protocolo utilizado por servidores de e-mail para o envio de mensagens eletrônicas. Este envio pode ser de um agente usuário, como por exemplo o Outlook ou para outros servidores espalhados na Internet. Utiliza duas partes, uma cliente e outra servidor. Quando a mensagem é enviada de um agente usuário para um servidor o agente cliente é o MUA e o agente servidor é o MTA. O servidor pode ser também um cliente quando um servidor envia mensagens para outro servidor.

Um visão aproximada das etapas de envio e recebimento de emails seria a seguinte:# Descrição

1 Uma pessoa chama seu agente usuário (Outlook), fornece o endereço de email da outra, compõe a mensagem e manda o agente usuário enviar a mensagem.

2 O agente usuário da pessoa envia a mensagem para seu servidor de e-mail onde a mesma é colocada em uma fila de mensagens.

3 O lado cliente do SMTP da pessoa que está enviando vê a mensagem na fila e abre uma conexão TCP com o servidor de e-mail do destinatário.

4 Após os procedimentos de apresentação, o cliente SMTP envia a mensagem por meio da conexão TCP.

5 O servidor de e-mail do receptor recebe a mensagem, e a coloca na caixa postal do receptor.

6 O receptor chama seu agente usuário para ler a mensagem quando lhe for conveniente.

Tabela 48: Etapas do SMTP

No nosso exemplo, usaremos o Postfix, devido a sua fácil configuração. Postfix é um MTA free software/open source. Foi desenvolvido para ser rápidos, de fácil administração, e uma alternativa segura para o conhecido Sendmail.

Postfix já é o MTA default para diversos sistemas operacionais baseados em Unix, como o linux e o

V 0.12.0628-2118 Gilberto Martins – [email protected] 246

Page 247: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

MacOSX (Apple).

10.8.1.2  Protocolo POP

O POP (Post Office Protocol) é o protocolo responsável por entregar as mensagens armazenadas no servidor para o cliente requisitante. Também baseado em conexão TCP, utiliza-se de 3 etapas:Etapa DescriçãoAutorização usuário informa nome e senha que será autenticada.

Transação as mensagens são recuperadas, além de serem marcadas também as mensagens que devem ser apagadas.

Atualização ocorre quando o usuário encerra a sessão

Tabela 49: Etapas do POP

No nosso exemplo, usaremos o POP fornecido pelo pacote QPOPPER.

10.8.2  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install postfix qpopper

Também é possível instalar usando o aptitude:$ sudo aptitude install postfix qpopper

Qualquer uma das duas linhas acima instala dois pacotes: o postfix e o qpopper.

A instalação do postfix vai iniciar automaticamente um software de configuração que vai exibir as seguintes telas:

Na tela acima, que uma apresentação, basta confirmar pressionando OK. De acordo com a explicação deste texto, a opção que nos interessa é a “Site Internet”. Na tela a seguir, selecione-a.

V 0.12.0628-2118 Gilberto Martins – [email protected] 247

Imagem 55: Primeira tela de auto-configuração do Postfix

Page 248: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Na próxima tela, deveremos informar o hostname (verifique aqui mais informações sobre hostname) de nossa máquina. Em geral, este já é automaticamente apresentado, bastando aceitar a sugestão caso esteja correta. No nosso exemplo, o hostname da máquina é servidor01.

V 0.12.0628-2118 Gilberto Martins – [email protected] 248

Imagem 56: Segunda tela de auto-configuração do Postfix

Imagem 57: Terceira tela de auto-configuração do Postfix

Page 249: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.8.3  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ sudo invoke-rc.d postfix start

Também é possível inicializar o serviço usando a seguinte instrução:$ sudo /etc/init.d/postfix start

10.8.4  Verificacão

Podemos usar o netstat para verificar se o serviço está sendo executado:$ netstat -atnpConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nametcp 0 0 0.0.0.0:25 0.0.0.0:* OUÇA 4044/master

Percebe-se a porta 25 pronta para receber conexão

10.8.5  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo invoke-rc.d postfix stop

Também é possível inicializar o serviço usando a seguinte instrução:$ sudo /etc/init.d/postfix stop

Podemos usar o netstat para verificar se o serviço ainda está sendo executado. A porta 25 não pode figurar na lista.

10.8.6  Arquivo de Configuração SMTP

O arquivo de configuração é o /etc/postfix/main.cf. Para nosso propósito, poucas modificações são necessárias. Existe uma versão completa deste arquivo, com muitos comentários, o que é interessante para estender o conhecimento, pois muitas observações estão presentes em forma de comentários. Este arquivo está em /usr/share/postfix/main.cf.dist. Este é um exemplo de configuração simples do Postfix:

V 0.12.0628-2118 Gilberto Martins – [email protected] 249

Page 250: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

# Certifique-se que o IP Reverso do servidor onde o Postfix está instalado esteja configuradoalias_maps = hash:/etc/aliases alias_database = hash:/etc/aliasesinet_interfaces = allmydestination = $myhostname, localhost.$mydomain, localhost, DOMINIO_LOCALmydomain = DOMINIO_LOCALmyorigin = $mydomainsmtpd_banner = **Banner para seu servidor de correio**disable_vrfy_command = yessmtpd_helo_required = yesmynetworks = **Sua rede local ou redes remotas confiáveis**myhostname = ** O hostname deste computador **maximal_queue_lifetime = 1dbounce_queue_lifetime = 1hsmtpd_client_restrictions = permit_mynetworks, reject_unknown_client,# reject_rbl_client bl.spamcop.net,# reject_rbl_client sbl.spamhaus.org,# reject_rbl_client dnsbl.sorbs.net,# reject_rbl_client b.barracudacentral.org,# reject_rhsbl_client rhsbl.brasilrbl.com.br, permitsmtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domainsmtpd_recipient_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_unauth_destination, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_invalid_hostname reject_unauth_pipelining, permit

As modificações que devem ser feitas neste arquivo são as seguintes:

10.8.6.1  Nome internet do servidor

Deve ser usado o hostname (verifique aqui mais informações sobre hostname) da máquina, desde que este esteja associado a um IP existente na estação. Normalmente, usar o hostname do sistema.

myhostname = mac

10.8.6.2  Domínio local

Supondo que este servidor vai atender ao domínio erlane.xyz. Caso esta declaração não exista, a mesma pode ser incluída.

mydomain = erlane.xyz

10.8.6.3  Domínios do servidor

Aqui se define quais domínios poderão usar este servidor SMTP para envio de emails. Os Domínios são separados por vírgulas. Acrescente o domínio ao final da lista existente, sem alterar o conteúdo.

mydestination = mac, localhost, localhost.localdomain, erlane.xyz

Na linha acima, os nomes mencionados tem o seguinte significado:

V 0.12.0628-2118 Gilberto Martins – [email protected] 250

Page 251: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Item Significadomac hostname do computador onde o servidor smtp está instalado, conforme pode ser visto em /etc/hosts

localhost hostname padrão, conforme pode ser visto em /etc/hosts

localhost.localdomain fqdn do hostname, conforme pode ser visto em /etc/hosts

erlane.xyz o domínio que está sendo configurado.

Tabela 50: Itens de mydestination

10.8.6.4  Redes

Aqui são relacionadas as redes que vão poder usar este servidor SMTP. As redes estarão representadas com sua máscara no formato pontuado, e serão separadas por vírgulas. Para nosso exemplo, usaremos a rede 10.0.0.0/16 e 192.168.0.0/24. Apenas acrescentar as redes à lista existente, independendo de ordem. Caso na sua instalação existam mais redes do que o exemplo, deixe as redes existentes inalteradas e acrescente as suas redes.

mynetworks = 127.0.0.0/8 10.0.0.0/16 192.168.0.0/24

10.8.7  Arquivo de Configuração do POP

O qpopper usa o arquivo /etc/qpopper.conf. Mas para o nosso propósito, nada nele será alterado. Entretanto, o qpopper é iniciado por outro serviço, o inetd, cujo arquivo de configuração é o /etc/inetd.conf. Neste arquivo, a linha que habilita o servidor POP é descomentada pela própria instalação do qpopper.

10.8.7.1  Ativação do inetd

O serviço inetd é disponibilizado pelo pacote openbsd-inetd. Note que é possível que este pacote não esteja disponível. Neste caso é preciso instalar o pacote openbsd-inetd. Para que o serviço seja instalado, usaremos o apt-get:

$ sudo apt-get install openbsd-inetd

Também é possível instalar usando o aptitude:$ sudo aptitude install openbsd-inetd

Na listagem a seguir, podemos ver a linha que habilita qpopper no arquivo de configuração do inetd:#:MAIL: Mail, news and uucp services.pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.qpopper -f /etc/qpopper.conf

10.8.7.2  Ativação do qpopper

O qpopper vai ser iniciado pelo inetd, por isto é ele que devemos iniciar.$ sudo /etc/init.d/openbsd-inetd startStarting internet superserver: inetd.

Podemos usar o netstat para verificar se o serviço está sendo executado:$ netstat -atnpConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nametcp 0 0 0.0.0.0:110 0.0.0.0:* OUÇA 4478/inetd

Observe que quem está respondendo pela porta 110 é o inetd, e não o qpopper.

V 0.12.0628-2118 Gilberto Martins – [email protected] 251

Page 252: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.8.7.3  Interrupção do qpopper

Como o qpopper foi iniciado pelo inetd, é ele quem deve ser parado. Observe que parando o inetd, todos os serviços dependentes dele param também, como é o caso do ftp e telnet, se estiverem sendo usados.

$ sudo /etc/init.d/openbsd-inetd stop

Podemos usar o netstat para verificar se o serviço ainda está sendo executado. Por que nós paramos o serviço POP, a porta 110 não pode figurar na lista.

10.8.8  Servidor SMTP no DNS

O servidor SMTP é altamente integrado com o servidor DNS, e precisa obrigatoriamente ser definido.

Considere o arquivo de zona a seguir, onde as alterações estão em negrito:$ cat /var/cache/bind/erlane.xyz;; Máquinas do domínio erlane.xyz;$TTL 604800@ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL;; Servidor de email do domínio;@ IN MX 2 mail.erlane.xyz.;@ IN NS localhost.www IN A 172.16.10.20smtp IN A 172.16.10.21pop IN CNAME mail.erlane.xyz.

10.8.8.1  Registro MX

No arquivo da zona de domínio, um registro MX é obrigatório, indicando o nome do servidor SMTP. Este nome deve ser encerrado obrigatoriamente com um ponto.

@ IN MX 2 mail.erlane.xyz.

Este nome deve ser definido com um registro do tipo IN A:smtp IN A 172.16.10.21

O IP associado a ele (no nosso exemplo, 172.16.10.21) é o IP onde está instalado o servidor SMTP.

10.8.9  Contas de email

Para a criação de contas de email, podem ser usados diversos recursos, como contas em banco de dados, contas do Active Directory da MS, ou contas de usuário do sistema, descritas no arquivo /etc/passwd.

Como usaremos contas no /etc/passwd, basta criar os usuários no mesmo sistema onde o smtp foi instalado, e o nome da conta criada será automaticamente usada para email.

10.8.10  Testando o funcionamento

Podemos fazer um teste deste servidor usando a linha de comando, como segue no exemplo a seguir.

V 0.12.0628-2118 Gilberto Martins – [email protected] 252

Page 253: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Faça as seguintes considerações:• 192.168.253.119 : Servidor SMTP• guest : Conta do remetente do email• gmartins : Conta do destinatário do email• zigotto : Hostname da máquina onde o postfix está instalado• texto em negrito : O que eu digitei$ sudo telnet 192.168.253.119 25 Trying 192.168.253.119... Connected to 192.168.253.119. Escape character is '^]'. 220 zigotto ESMTP Postfix (Ubuntu)

Neste ponto, o cursor para, dando uma impressão de travamento. Digite o seguinte:helo teste 250 zigotto

Neste momento, vamos informar quem é o remetente do email:mail from: guest 250 2.1.0 Ok

Vamos agora informar quem é o destinatário:rcpt to: gmartins 250 2.1.5 Ok

Daqui em diante, estaremos digitando o corpo do email. Para encerrar a digitação, basta digitar um único ponto em uma linha:

data 354 End data with <CR><LF>.<CR><LF> teste de envio de email feito manualmente . 250 2.0.0 Ok: queued as 695984354E

Assim, encerramos o email. O próximo passo é encerrar a conexão com o servidor de email:quit 221 2.0.0 Bye Connection closed by foreign host.

No nosso exemplo, fizemos o envio manual de email da conta guest para a conta gmartins, ambos são contas existentes no servidor 192.168.253.119, como podemos comprovar a seguir:

$ id gmartins uid=1000(gmartins) gid=1000(gmartins) grupos=1000(gmartins),4(adm),20(dialout),24(cdrom),46(plugdev),108(lpadmin),123(admin),124(sambashare),1002(usbusers) $ id guest uid=1001(guest) gid=1001(guest) grupos=1001(guest) root@zigotto:~#

Para confirmar que o email foi enviado, podemos verificar no spool de emails a caixa do usuário gmartins:

$ ls -l /var/spool/mail/ total 4 -rw------- 1 gmartins mail 464 2009-01-24 11:29 gmartins $

O arquivo /var/spool/mail/gmartins é a caixa de email do usuário gmartins. O conteúdo da mesma pode ser visualizado como qualquer arquivo texto:

V 0.12.0628-2118 Gilberto Martins – [email protected] 253

Page 254: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ cat /var/spool/mail/gmartins From guest@zigotto Sat Jan 24 11:29:02 2009 Return-Path: <guest@zigotto> X-Original-To: gmartins Delivered-To: gmartins@zigotto Received: from teste (unknown [192.168.253.119])

by zigotto (Postfix) with SMTP id 695984354E for <gmartins>; Sat, 24 Jan 2009 11:28:39 -0300 (BRT)

Message-Id: <20090124142849.695984354E@zigotto> Date: Sat, 24 Jan 2009 11:28:39 -0300 (BRT) From: guest@zigotto To: undisclosed-recipients:;

teste de envio de email feito manualmente

$

Observe que este teste confirma que o servidor SMTP local está funcionando corretamente, quando o email enviado não precisa sair da rede. Para testar um servidor SMTP remoto, é preciso especificar o IP deste servidor de email.

NOTANOTA IMPORTANTEIMPORTANTE

Este teste pode não funcionar em alguns servidores de SMTP remotos, devido a recursos de segurança existentes nestes

servidores.

10.8.11  Integração do servidor SMTP e Antivírus

Para aumentar a segurança do servidor SMTP, podemos empregar um antivírus. Quem cuida desta integração é o AMAVISD-NEW, e o antivírus será o CLAMAV

10.8.11.1  Instalação do AMAVISDNEW 2.6.22

Amavis é uma interface entre o servidor SMTP e outras ferramentas de combate a malwares e spam. No Ubuntu, sua configuração default já está otimizada. Para sua instalação, executar o seguinte comando:

$ sudo aptitude install amavisd-new

10.8.11.2  Configuração do AMAVISDNEW 2.6.22

Os arquivos de configuração estão em /etc/amavis/conf.d, dos quais apenas alteraremos os seguintes:

$ sudo vi 50-user

E insira o seguinte neste arquivo:@local_domains_acl = qw(.);$log_level = 2;$syslog_priority = 'debug';$sa_kill_level_deflt = 8.0;$final_spam_destiny = D_PASS;# $final_spam_destiny = D_PASS;

10.8.11.3  Configuração do SMTP

O próximo passo é configurar o servidor SMTP a se comunicar com o AMAVIS. No caso do Postfix, devemos fazer a seguinte alteração ao final do arquivo /etc/postfix/master.cf:

V 0.12.0628-2118 Gilberto Martins – [email protected] 254

Page 255: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20

127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Os hífens acima e o espaço antes de cada -o são obrigatórios.

No mesmo arquivo, procure uma linha iniciada com pickup e acrescente o seguinte logo abaixo desta linha:

-o content_filter=-o receive_override_options=no_header_body_checks

Outra modificação que deve ser feita é no arquivo /etc/postfix/main.cf:content_filter = amavis:[127.0.0.1]:10024

A partir daqui, a integração Postfix e Amavis já deve estar funcionando. Reinicie o servidor de email e faça testes de envio e recepção de email, observando os arquivos de log.

Caso o funcionamento do servidor de email esteja correto, ative a função de verificação de vírus no Amavis, editando o arquivo /etc/amavis/conf.d/15-content_filter_mode:

@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

Se as linhas acima estiverem comentadas, basta descomentá-las.

Observe que o log do Postfix está razoavelmente detalhado, o que vai causar grandes arquivos de log. Podemos reduzir isto com a edição do arquivo /etc/amavis/conf.d/50-user:

@local_domains_acl = qw(.);$log_level = 1;$syslog_priority = 'info';$sa_kill_level_deflt = 8.0; # triggers spam evasive actions#$final_spam_destiny = D_PASS;$final_spam_destiny = D_DISCARD;

É preciso ainda registrar o nome do domínio do servidor SMTP em /etc/mailname. Neste exemplo, está sendo usado o domínio erlane.xyz:

$ sudo vim /etc/mailname

Neste arquivo basta incluir o nome do domínio:erlane.xyz

Ainda é necessário definir o hostname da máquina. Ainda neste exemplo, vamos supor que o nome do servidor seja srv-tosh:

$ sudo vim /etc/hostname

O conteúdo do arquivo /etc/hostname no sistema em que este material está sendo escrito é:

V 0.12.0628-2118 Gilberto Martins – [email protected] 255

Page 256: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

srv-tosh.erlane.xyz

Veja que este nome deve estar definido ou no DNS ou no /etc/hosts. Aqui vamos editar o arquivo /etc/hosts:

$ sudo vim /etc/hosts

E neste arquivo, vamos associar o nome srv-tosh.erlane.xyz a um ip da rede 127.0.0.0/8:127.0.0.1 localhost.localdomain localhost127.0.1.1 srv-tosh.erlane.xyz

# The following lines are desirable for IPv6 capable hosts::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allroutersff02::3 ip6-allhosts

Finalmente, ao invés de reiniciar o servidor, vamos definir o hostname pelo comando:$ sudo hostname srv-tosh.erlane.xyz

Depois desta alteração, o amavis deve ser reiniciado:$ sudo invoke-rc.d amavis restart

Podemos avaliar se o servidor SMTP está usando o amavis realizando o seguinte teste:$ telnet 127.0.0.1 10024

A resposta deve ser semelhante à seguinte:Trying 127.0.0.1...Connected to 127.0.0.1.Escape Character is '^]'.220 [127.0.0.1] ESMTP amavisd-new service ready

10.8.12  SPAMASSASSIN

SpamAssassin é um software licenciado através da licença Apache e utilizado como filtro de spam enviado através de mensagem eletrônica.

O filtro SpamAssassin funciona dando uma pontuação a cada mensagem que entra, baseado em diferentes "testes" que faz analisando todo o conteúdo da mensagem. De acordo com esta análise, ele acrescenta cabeçalhos na mensagem que informam o seu "nível de spam", e os testes nos quais ela caiu. Em particular, a mensagem recebe uma pontuação ("score").

Se o score fica acima de certo limite (5 por default), a mensagem é considerada como suspeita. Mas, se a mensagem tem um score muito alto (14 por default), ela é considerada como SPAM. Agora, se o score for inferior a 5, a mensagem é considerada como normal.

10.8.12.1  Instalação

A Instalação do SPAMASSASSIN pode ser feita de uma das seguintes maneiras:$ sudo apt-get install spamassassin

ou$ sudo aptitude install spamassassin

Note que o comando acima vai instalar o spamassassin e as dependências necessárias.

É interessante adicionar os pacotes de diversos métodos compactadores para permitir análise de arquivos compactados, e outros pacotes que tornarão o spamassassin mais eficaz:

$ sudo aptitude install arj bzip2 cabextract cpio file gzip lha nomarch pax rar unrar unzip unzoo zip zoo libnet-dns-perl libmail-spf-query-perl pyzor razor

ou

V 0.12.0628-2118 Gilberto Martins – [email protected] 256

Page 257: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo aptitude install arj bzip2 cabextract cpio file gzip lha nomarch pax rar unrar unzip unzoo zip zoo libnet-dns-perl libmail-spf-query-perl pyzor razor

10.8.12.2  Configuração

Edite /etc/default/spamassassin para ativar o daemon do spamassassin, trocandoENABLED=0

paraENABLED=0

Após esta modificação, basta apenas iniciar o daemon do spamassassin:$ sudo /etc/init.d/spamassassin start

ou$ sudo invoke-rc.d spamassassin start

Ative a função de verificação de vírus no Amavis, editando o arquivo /etc/amavis/conf.d/15-content_filter_mode:

@bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Se as linhas acima estiverem comentadas, basta descomentá-las.

Uma última alteração deve ser feita no arquivo /etc/amavis/conf.d/20-debian_defaults mudando:$final_spam_destiny = D_BOUNCE;

para$final_spam_destiny = D_DISCARD;

10.8.13  CLAMAV

O Clan AntiVirus é um pacote de ferramentas anti-vírus sobre licença GPL desenhado especificamente para análise de correio eletrônico em servidores de correio. Este pacote contém várias utilidades como um serviço com paralelismo (multi-threaded) flexível e escalável, um utilitário de análise para linha de comandos e uma ferramenta avançada para atualização automática da Base de Dados. O núcleo do pacote é um motor anti-viral disponível como biblioteca..

10.8.13.1  Instalação

A Instalação do CLAMV pode ser feita de uma das seguintes maneiras:$ sudo apt-get install clamav-daemon

ou$ sudo aptitude install clamav-daemon

Note que o comando acima vai instalar o clamav e as dependências necessárias.

É interessante adicionar os pacotes de diversos métodos compactadores para permitir análise de arquivos compactados:

$ sudo aptitude install arj bzip2 cabextract cpio file gzip lha nomarch pax rar unrar unzip unzoo zip zoo

10.8.13.2  Configuração

É preciso realizar uma alteração nos usuários amavis e clamav, para que o sistema possa funcionar corretamente:

V 0.12.0628-2118 Gilberto Martins – [email protected] 257

Page 258: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo adduser clamav amavis$ sudo adduser amavis clamav

Este pacote não necessita de configuração. Um único detalhe que pode ser revisto é a frequência de atualizações. Para isto, execute o configurador do próprio pacote:

$ sudo dpkg-reconfigure clamav-freshclam

As seguintes opções serão apresentadas:

Para uma rede com acesso constante à internet, a melhor opção é DAEMON.

V 0.12.0628-2118 Gilberto Martins – [email protected] 258

Imagem 58: Opções de Configuração do Clamav

Page 259: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

O próximo passo é selecionar um endereço de atualização. Preferencialmente, devemos optar pelo mais próximo:

Caso exista um proxy instalado na rede, é preciso informar o seu endereço de acesso no formato

V 0.12.0628-2118 Gilberto Martins – [email protected] 259

Imagem 59: Escolha do modo de atualização do CLAMAV

Imagem 60: Escolha do site de atualização do CLAMAV

Page 260: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

indicado:

É importante definir quantas atualizações por dia serão feitas:

Nesta próxima tela, definiremos que o antivírus use as novas definições tão logo elas tenham sido obtidas:

V 0.12.0628-2118 Gilberto Martins – [email protected] 260

Imagem 61: Proxy da rede para acesso pelo CLAMAV

Imagem 62: Quantidade de atualizações por dia

Page 261: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.8.13.3  Teste do antivírus

Crie um arquivo texto com a string a seguir:X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Nada mais deve ser inserido no arquivo. Maiores informações sobre este “vírus” de teste pode ser conseguida em http://www.eicar.org/anti_virus_test_file.htm . Anexe este arquivo a um email e o encaminhe para algum usuário. O email será identificado pelo clamav.

10.8.14  Instalação do Spamassassin

Instale o Spamassassin com o seguinte comando:$ sudo aptitude install spamassassin dkim-filter python-policy-spf pyzor razor

Edite /etc/default/spamassassin para ativar o spamassassin. Mude a linha ENABLED=0 para:ENABLED=1

Após isso, inicie o serviço do spamassassin:$ sudo /etc/init.d/spamassassin start

Ainda na configuração do CLAMAV, é preciso informar que o spamassassin será utilizado. Para isso, descomente a linha a seguir no arquivo /etc/amavis/conf.d/15-content_filter_mode:

@bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Ainda em /etc/amavis/conf.d/20-debian_defaults, mude a linha abaixo de D_BOUNCE para D_DISCARD:

$final_spam_destiny = D_DISCARD;

V 0.12.0628-2118 Gilberto Martins – [email protected] 261

Imagem 63: Notificação de atualização do CLAMAV

Page 262: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.9  Servidor WEBApache é um servidor web, ou seja, um software que disponibiliza páginas html. É o servidor web mais utilizado no mundo. Este servidor vai conter arquivos HTML, que são as páginas web que serão disponibilizadas.

Do lado dos clientes, devem ser usados browsers, como o Internet Explorer, o Firefox, e o Google Chrome, para acessar as páginas disponibilizadas.

Por padrão, servidores web usam a porta tcp/80.

10.9.1  Instalação

Para que o serviço seja instalado, pode ser usado o apt-get:$ sudo apt-get install apache2

Também é possível instalar usando o aptitude:$ sudo aptitude install apache2

10.9.1.1  Verificacão

Podemos usar o netstat para verificar se o serviço está sendo executado:$ sudo netstat -atnp | grep :80tcp 0 0 192.168.0.186:80 0.0.0.0:* OUÇA 5191/apache2

No exemplo acima, o serviço do Apache reponde solicitações direcionadas a 192.168.0.186:80, ou seja, na porta 80 do IP 192.168.0.186. É possível que o seguinte resultado seja fornecido também:

$ sudo netstat -atnp | grep :80tcp 0 0 0.0.0.0:80 0.0.0.0:* OUÇA 5191/apache2

Já no exemplo acima, o serviço do apache reponde solicitações direcionadas a porta 80 em qualquer que seja o IP configurado neste computador. É isto que significa o 0.0.0.0:80.

10.9.2  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/apache2 start

ou$ sudo invoke-rc.d apache2 start

ou$ sudo service apache2 start

10.9.2.1  Verificacão

Podemos usar o netstat para verificar se o serviço está sendo executado:$ sudo netstat -ltnp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* OUÇA 1456/apache2

Se a porta 80 for exibida como acima, o Apache está pronto para funcionar. O IP 0.0.0.0:80 significa que solicitações web destinadas à porta 80 de qualquer IP configurado no servidor onde o Apache está instalado serão aceitas.

V 0.12.0628-2118 Gilberto Martins – [email protected] 262

Page 263: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.9.3  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ sudo /etc/init.d/apache2 stop

ou$ sudo invoke-rc.d apache2 stop

ou$ sudo service apache2 stop

10.9.3.1  Verificação

Podemos usar o netstat para verificar se o serviço ainda está sendo executado. A porta 80 não pode figurar na lista.

10.9.4  Página padrão do Apache

Instalar o Apache já deixa uma página disponível para demonstração de funcionamento. Basta digitar o IP do servidor Apache para visualiza-la. É uma página extremamente simples, e produz o seguinte resultado:

Imagem 64: Página padrão do apache

Como exemplo, vamos personalizar esta página html de abertura padrão do apache2, que está em /var/www/index.html. O conteúdo deste arquivo é:

<html><body><h1>It works!</h1></body></html><p>This is the default web page for this server.</p> <p>The web server software is running but no content has been added, yet.</p> </body></html>

Faremos um backup deste arquivo e o alteraremos para que apareça nosso nome.$ sudo cp /var/www/index.html /var/www/index.html.original

Por exemplo, vamos modificar este arquivo para que apareça o texto Site do Gilberto:

V 0.12.0628-2118 Gilberto Martins – [email protected] 263

Page 264: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

<html><body><h1>Site do Gilberto</h1> <p>This is the default web page for this server.</p> <p>The web server software is running but no content has been added, yet.</p> </body></html>

Basta abrir um browser e acessar o IP do servidor. A página resultante será:

Imagem 65: Página Padrão do Apache alterada

NOTANOTA IMPORTANTEIMPORTANTE

Note que nas duas telas a página padrão do Apache foi acessada usando o IP 127.0.0.1, pois o acesso está sendo feito a partir do mesmo servidor onde está instalado o Apache. O teste correto

seria digitar o IP do servidor remoto onde está instalado o Apache.

10.9.5  Arquivo de Log

O apache usa os seguintes arquivos de log:$ ls -l /var/log/apache2/total 48-rw-r----- 1 root adm 0 2007-12-11 15:04 access.log-rw-r----- 1 root adm 2601 2007-12-19 08:23 error.log

O /var/log/apache2/access.log registra os acessos feitos ao servidor, enquanto as mensagens de erro e inicialização/interrupção do servidor ficam em /var/log/apache2/errorr.log.

10.9.6  Arquivo de configuração

O arquivo de configuração está em /etc/apache2/apache2.conf, e é muito extenso, principalmente por ter comentários explicando detalhadamente o seu funcionamento. Podemos resumir sua configuração na alteração de poucos arquivos adic

V 0.12.0628-2118 Gilberto Martins – [email protected] 264

Page 265: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.9.6.1  Limpeza do arquivo de configuração

Assim como é muito importante ter este arquivo tão comentado, também passa a ser muito trabalhoso. Por isto, podemos trabalhar com uma versão resumida do arquivo, ou seja, sem os comentários. Para isto, é importante fazer uma cópia de segurança do arquivo antes de começarmos:

$ sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.original

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:$ sudo chattr +i /etc/apache2/apache2.conf.original

Em seguida, faremos a remoção das linhas em branco e das linhas de comentário:$ egrep -v "^$|^ *#" /etc/apache2/apache2.conf.original > /tmp/apache2.conf$ sudo mv /tmp/apache2.conf /etc/apache2/apache2.conf

Agora, o arquivo fica como demonstrado a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 265

Page 266: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

ServerRoot "/etc/apache2"LockFile /var/lock/apache2/accept.lockPidFile ${APACHE_PID_FILE}Timeout 300KeepAlive OnMaxKeepAliveRequests 100KeepAliveTimeout 15<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0</IfModule><IfModule mpm_worker_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients 150 MaxRequestsPerChild 0</IfModule><IfModule mpm_event_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestsPerChild 0</IfModule>User ${APACHE_RUN_USER}Group ${APACHE_RUN_GROUP}AccessFileName .htaccess<Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy all</Files>DefaultType text/plainHostnameLookups OffErrorLog /var/log/apache2/error.logLogLevel warnInclude /etc/apache2/mods-enabled/*.loadInclude /etc/apache2/mods-enabled/*.confInclude /etc/apache2/httpd.confInclude /etc/apache2/ports.confLogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combinedLogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %O" commonLogFormat "%{Referer}i -> %U" refererLogFormat "%{User-agent}i" agentCustomLog /var/log/apache2/other_vhosts_access.log vhost_combinedInclude /etc/apache2/conf.d/Include /etc/apache2/sites-enabled/

10.9.7  Usuário do Apache

O Apache conta com um usuário especial, o qual precisa ser informado no arquivo de configuração. Edite o arquivo /etc/apache2/apache2.conf com o vim e procure por “User \$”.

NOTANOTA IMPORTANTEIMPORTANTE

Note que o caracter “\” informa ao vim que o cifrão deve ser interpretado como um caracter e não uma instrução. Caso o

editor utilizado seja outro, procure por “User $”.

O trecho a seguir deverá ser modificado de:

V 0.12.0628-2118 Gilberto Martins – [email protected] 266

Page 267: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

# These need to be set in /etc/apache2/envvars User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP}

para:# These need to be set in /etc/apache2/envvars User www-data Group www-data

10.9.8  Domínio Virtual

Domínio Virtual é nome dado a cada site configurado dentro do Apache. Por exemplo, se for necessário disponibilizar 153 sites através do Apache, é preciso configurar 153 Domínios virtuais no Apache.

Vamos agora configurar o Apache para que a partir dele possamos disponibilizar dois sites. Um será acessado pelo nome www.erlane.xyz e o outro será acessado pelo nome www.amarelo.com. Lembre que estes dois domínios (erlane.xyz e amarelo.com) deverão ser criados no DNS, e os nomes www de cada domínio deverão apontar para o IP do servidor Apache no arquivo de hosts do domínio.

NOTANOTA IMPORTANTEIMPORTANTE

Como foi alterado o arquivo de configuração do servidor DNS, este precisa ser interrompido e reiniciado para que estas

modificações estejam disponíveis.

Depois disso, é interessante testar os dois nomes.

Cada um destes sites terá seu próprio código HTML. Estes códigos HTML deverão ser gravados com o nome index.html em diretórios diferentes, que neste exemplo serão /var/www/verde e /var/www/amarelo. Note que estes diretórios não existem e precisam ser criados.

Como os dois sites serão disponibilizados a partir do mesmo Apache, é preciso informar que teremos diversos sites em um mesmo IP. Para isto, é usaremos a diretiva NameVirtualHost seguida do IP e porta do servidor, ou um asterisco (que significa que qualquer IP presente no servidor poderá ser usado). Isto é feito no arquivo /etc/apache2/ports.conf. Observe que nenhuma alteração neste arquivo é necessária. Este arquivo possui o seguinte conteúdo:

# If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80 Listen 80

<IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule>

A seguir, deverá ser criado um arquivo de configuração para cada domínio a ser configurado, e estes arquivos devem ser gravado no diretório /etc/apache2/sites-enabled.

No diretório /etc/apache2/sites-enabled/ faremos a declaração dos dois domínios virtuais. Serão criados dois arquivosNeste arquivo vamos declarar os sites www.erlane.xyz e www.amarelo.com. Estas declarações serão incluídas no final do arquivo.

V 0.12.0628-2118 Gilberto Martins – [email protected] 267

Page 268: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

<VirtualHost *:80> ServerAdmin webmaster@localhost

DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory>

</VirtualHost> # Declaração do site WWW.erlane.xyz<VirtualHost *:80>

# O diretorio /var/www/verde deve ser criado pelo administradorDocumentRoot /var/www/verdeServerName www.erlane.xyz

</VirtualHost>

# Declaração do site WWW.AMARELO.COM<VirtualHost *:80>

# O diretorio /var/www/amarelo deve ser criado pelo administradorDocumentRoot /var/www/amareloServerName www.amarelo.com

</VirtualHost>

Depois que estas alterações forem feitas, o servidor Apache deve ser reiniciado, ou seja, o serviço deve ser interrompido e depois iniciado.

10.9.8.1  HTMLs de exemplo

Para este nosso exemplo, vamos criar dois arquivos index.html. O arquivo /var/www/verde/index.html fica assim:

V 0.12.0628-2118 Gilberto Martins – [email protected] 268

Page 269: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

<HTML> <HEAD> <TITLE>Site Verde</TITLE> </HEAD> <BODY LANG="pt-BR" BGCOLOR="#008000" DIR="LTR"> <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR> </P> <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR> </P> <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm"> <FONT COLOR="#ffffff"> <FONT SIZE=7 STYLE="font-size: 54pt">SITE VERDE</FONT> </FONT></P> </BODY> </HTML>

O arquivo /var/www/amarelo/index.html fica assim:<HTML> <HEAD> <TITLE>Site Amarelo</TITLE> </HEAD> <BODY LANG="pt-BR" BGCOLOR="#ffff00" DIR="LTR"> <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR> </P> <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR> </P> <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0cm"> <FONT COLOR="#000000"> <FONT SIZE=7 STYLE="font-size: 54pt">SITE AMARELO</FONT> </FONT> </P> </BODY> </HTML>

NOTANOTA IMPORTANTEIMPORTANTE

Lembre que para o nosso exemplo, os diretórios /var/www/verde e /var/www/amarelo não existem. Assim, o administrador terá

que criar estes diretórios.

10.9.9  Suporte a PHP

Vamos criar um arquivo apenas com o seguinte conteúdo:<?php phpinfo(); ?>

O arquivo acima contém uma instrução PHP que apresenta informações sobre o PHP instalado. Este arquivo deverá ter o nome index.php.

NOTANOTA IMPORTANTEIMPORTANTE

Veja que o nome index.php tem que ser mencionado na declaração DirectoryIndex, nos arquivos de configuração.

Por default, este nome já é reconhecido pelo Apache, como se pode comprovar a seguir:$ grep -rni index.php /etc/apache2//etc/apache2/mods-enabled/dir.conf:3: DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Para que o index.php acima possa ser interpretado corretamente, é preciso instalar o pacote PHP5:$ apt-get install php5

Também é possível usar o aptitude para este fim:$ aptitude install php5

Basta reiniciar o servidor web, e tentar acessar o index.php. Como sugestão, crie um domínio virtual onde a página de abertura seja este pequeno teste.

10.9.10  Documentação

É interessante consultar a documentação do apache2. Esta precisa ser instalada independentemente,

V 0.12.0628-2118 Gilberto Martins – [email protected] 269

Page 270: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

e podemos usar o apt-get para isso:$ sudo apt-get install apache2-doc

Também é possível instalar usando o aptitude:$ sudo aptitude install apache2-doc

V 0.12.0628-2118 Gilberto Martins – [email protected] 270

Page 271: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Uma vez instalada, o acesso pode ser feito via browser:

Imagem 66: Documentação do Apache 2

Observe que o acesso demonstrado acima foi feito na própria máquina. Por isto, a URL começa com file:// e não com http://.

V 0.12.0628-2118 Gilberto Martins – [email protected] 271

Page 272: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.10  SAMBA

10.10.1  Introdução

O Samba é uma coleção de programas que implementam o protocolo Server Message Block (frequentemente abreviado como SMB) em sistemas operacionais baseados em Unix. Este protocolo também é conhecido como Common Internet File System (CIFS). O Samba também implementa o protocolo NetBIOS.

Ou seja, o Samba disponibiliza compartilhamento de arquivos para estações Windows, com reconhecimento de nomes no estilo NetBIOS. Desta forma, é possível estabelecer troca de arquivos diretamente entre estações MS e estações com qualquer outro sistema operacional, onde seja possível instalar o Samba.

10.10.2  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install samba swat smbclient smbfs

Também é possível instalar usando o aptitude:$ sudo aptitude install samba swat smbclient smbfs

O Samba instala dois daemons, o smbd, que controla os compartilhamentos e o nmbd que controla os nomes no modo NetBIOS.

O swat é uma ferramenta que é acessada por meio de interface web, tanto na própria estação como em estações remotas. Neste último caso, é necessário aumentar a precaução pois as senhas são transmitidas de modo aberto, sem usar nenhuma encriptação. Esta ferramenta simplifica a configuração do servidor, mas ainda pode ser feita a configuração manual.

10.10.3  Arquivo de configuração

O Samba usa o arquivo /etc/samba/smb.conf. Originariamente este arquivo vem com uma grande quantidade de comentários, os quais com o tempo se tornam incômodos. Uma das tarefas do swat é eliminar estes comentários, deixando apenas as linhas necessárias para o funcionamento.

Neste arquivo, é usado o mesmo formato dos antigos arquivos .ini do Windows 3.1. Cada arquivo consiste de várias seções, que são iniciadas com uma linha contendo apenas o nome da seção entre colchetes.

Cada seção do /etc/samba/smb.conf representa ou um compartilhamento ou um serviço no servidor Samba. A seção [global] é especial, uma vez que contém configurações que se aplicam a todo o servidor Samba.

A seção [homes] é um compartilhamento especial, associado automaticamente a cada usuário registrado no Samba.

A seção [printers] estabelece suporte a filas de impressoras e especificam a localização do diretório intermediário no qual as tarefas de impressão (conhecidos como print jobs) vindas de clientes Windows são recebidas, antes de serem despachadas para o serviço de impressão (conhecido como print spooler).Cada uma das seções do arquivo também recebem o nome de stanza. A seção [global] especifica

V 0.12.0628-2118 Gilberto Martins – [email protected] 272

Page 273: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

configurações que afetam todas as outras stanzas em /etc/samba/smb.conf.

10.10.3.1  Limpeza do arquivo de configuração

Assim como é muito importante ter este arquivo tão comentado, também passa a ser muito trabalhoso. Por isto, podemos trabalhar com uma versão resumida do arquivo, ou seja, sem os comentários. Para isto, é importante fazer uma cópia de segurança do arquivo antes de comerçarmos:

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:$ sudo chattr +i /etc/samba/smb.conf.original

Em seguida, faremos a remoção das linhas em branco e das linhas de comentário:$ sudo egrep -v “^$|^ *#” /etc/samba/smb.conf.original > /tmp/smb.conf$ sudo mv /tmp/smb.conf /etc/samba/smb.conf

Agora, o arquivo fica como demonstrado a seguir:[global] workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no

Assim, um arquivo que tinha quase 350 linhas foi reduzido para menos de 35, restando apenas o que interessa no arquivo. Veremos aqui a conferência dos tamanhos de arquivo em linhas:

$ sudo wc -l /etc/samba/smb.conf* 31 /etc/samba/smb.conf 322 /etc/samba/smb.conf.original 353 total

10.10.3.2  Criação do backup do arquivo de configuração

É muito importante realizar cópia de segurança do arquivo de configuração antes de qualquer alteração. Assim, se algo der errado, é possível voltar o arquivo ao que era antes da modificação. Para isso, podemos usar o alias dtbkp :

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.$(dtbkp)

Vamos impedir que o arquivo de backup seja alterado ou apagado, usando o comando chattr:

V 0.12.0628-2118 Gilberto Martins – [email protected] 273

Page 274: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ sudo chattr +i /etc/samba/smb.conf.$(dtbkp)

10.10.3.3  Restauração do backup do arquivo de configuração

Caso seja necessário, é possível recuperar uma versão anterior do arquivo de configuração (que agora se chama /etc/squid/squid.conf.<DATA>) com a seguinte instrução:

$ cat /etc/samba/smb.conf.<DATA> > /etc/samba/smb.conf

Note que <DATA> é a data em que este backup foi criado, no formato YYYYDDMM. Usar a tecla TAB é extremamente útil neste caso.

10.10.4  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ /etc/init.d/samba startStarting Samba daemons: nmbd smbd.

10.10.5  Verificacão

Podemos usar o netstat para verificar se o serviço está sendo executado, tanto observando portas tcp como portas udp :

$ netstat -lutnp | egrep "\:13[789]|445" tcp 0 0 0.0.0.0:139 0.0.0.0:* OUÇA 5096/smbdtcp 0 0 0.0.0.0:445 0.0.0.0:* OUÇA 5096/smbdudp 0 0 192.168.253.119:137 0.0.0.0:* 5094/nmbdudp 0 0 169.254.6.100:137 0.0.0.0:* 5094/nmbdudp 0 0 0.0.0.0:137 0.0.0.0:* 5094/nmbdudp 0 0 192.168.253.119:138 0.0.0.0:* 5094/nmbdudp 0 0 169.254.6.100:138 0.0.0.0:* 5094/nmbdudp 0 0 0.0.0.0:138 0.0.0.0:* 5094/nmbd

10.10.6  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ /etc/init.d/samba stopStopping Samba daemons: nmbd smbd.

10.10.7  Swat

O swat é uma ferramenta de configuração do samba que usa uma interface web. Assim, ela pode ser acessada de qualquer host na rede, independente do sistema operacional em uso neste host.

O swat depende do serviço inetd para ser iniciado, e responde solicitações na porta 901. Assim que é instalado no Debian, a linha do arquivo de configuração que habilita o swat é descomentada, como podemos ver a seguir:

$ grep -n swat /etc/inetd.conf41:swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

Para o swat funcionar, nenhuma alteração é necessária em seu arquivo de configuração. Apenas é necessário iniciar o inetd:

$ /etc/init.d/openbsd-inetd startStarting internet superserver: inetd.

O serviço inetd está presente no Debian, na instalação básica. O pacote que o disponibiliza é o openbsd-inetd. Após sua inicialização, a porta 901 passa a estar recebendo conexões:

V 0.12.0628-2118 Gilberto Martins – [email protected] 274

Page 275: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ netstat -atnpConexões Internet Ativas (servidores e estabelecidas)Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program nametcp 0 0 0.0.0.0:901 0.0.0.0:* OUÇA 9465/inetd

Observe que o daemon que recebe conexões direcionadas à porta 901 é o inetd. Uma vez iniciado, em qualquer browser podemos acessar a porta 901 deste servidor:

Esta deve ser a senha de um usuário que possa administrar o servidor. Assim que o usuário for devidamente reconhecido pelo sistema, uma tela mostrará as opções disponíveis:

V 0.12.0628-2118 Gilberto Martins – [email protected] 275

Imagem 67: Autenticação do swat

Page 276: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Os quadros acima tem a seguinte função:

10.10.7.1  Home

Tela de abertura do swat, com links para diversas fontes de documentação

10.10.7.2  Globals

Área de configurações globais. Configura as diversas opções da sessão [global]

10.10.7.3  Shares

Área de configurações de compartilhamentos. Tanto a sessão [homes] quanto os outros compartilhamentos são configurados aqui. Na tela de abertura, se pode criar um novo compartilhamento ou editar informações de um compartilhamento existente.

V 0.12.0628-2118 Gilberto Martins – [email protected] 276

Page 277: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.10.7.4  Printers

Área de configuração das impressoras. As impressoras configuradas no CUPS serão visíveis nesta sessão, e disponibilizadas para outras estações Windows.

10.10.7.5  Wizard

Assistentes para configurações pré-definidas. Aqui se pode configurar o Linux para ser visto como um servidor simples, ou um Domain Controller. Além disso, é possível configurar o sistema para responder como um servidor WINS. Ideal para configurações rápidas, que podem ser ajustadas posteriormente.

V 0.12.0628-2118 Gilberto Martins – [email protected] 277

Imagem 68: Tela de compartilhamentos do swat

Page 278: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Tendo escolhido a opção adequada, basta confirmar com o botão Commit.

10.10.7.6  Status

Esta tela permite interromper/iniciar os daemons do serviço de modo isolado., Em geral, basta usar o botão “Restart All”. Entretanto, o swat dispõe de um controle de tempo que reinicia o sistema a cada 30 segundos, ou no intervalo que for configurado.

V 0.12.0628-2118 Gilberto Martins – [email protected] 278

Imagem 69: Assistentes do Samba

Page 279: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.10.7.7  View

Mostra apenas o arquivo /etc/samba/smb.conf como estabelecido pelas configurações.

10.10.8  Tarefas

Para habilitar o servidor Samba para algumas tarefas, é necessário realizar algumas configurações:

10.10.8.1  Identificação do Servidor

Toda estação Windows precisa ser identificada. Na sessão [global], é feito o seguinte:workgroup = CURSO_LINUXnetbios name = INSTRUTORserver string = High Level File sharing Server (LX Based)

A máquina acima é chamada de INSTRUTOR, e pertence ao grupo CURSO_LINUX. No Windows Explorer, ainda será visto como comentário o texto High Level File sharing Server (LX Based).

10.10.8.2  Tipo de acesso

O Samba pode definir como os compartilhamentos serão acessados. Se for necessário definir que todos os usuários tenham acesso aos compartilhamentos, devemos alterar o arquivo /etc/samba/smb.conf para:

security = SHARE

Se o acesso deve ser dado apenas aos usuários proprietários do compartilhamento, a alteração deve ser:

V 0.12.0628-2118 Gilberto Martins – [email protected] 279

Imagem 70: Tela de Status do swat

Page 280: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

security = USERS

Esta alteração deve ser feita na sessão [global].

10.10.8.3  Compartilhamento de arquivos

Para que um diretório do Linux seja compartilhado via Samba, é preciso que este já exista ou seja criado.

$ mkdir /home/teste

Este diretório vai ser compartilhado com o nome arquivos. Este nome será visualizado pelas estações Windows. No arquivo de configuração do Samba devem ser feitas as seguintes modificações:

[arquivos] path = /home/arquivos read only = No

browseable = Yes guest ok = Yes available = Yes

10.10.8.4  Inclusão de usuários

É preciso associar usuários existentes no Linux a usuários visíveis pelas estações Windows. Assim, podemos definir que algum compartilhamento seja acessado apenas por usuários identificados. Para nosso exemplo, vamos supor a existência de um usuário no linux chamado usuario. Vamos então criar o usuário para o samba

$ pdbedit –a –u usuario

10.10.8.5  Remoção de usuários

Para excluirmos um usuário do Samba, o processo é bem simples:$ pdbedit –x –u usuário

10.10.8.6  Listar usuários

Podemos listar os usuários do Samba de forma resumida:$ pdbedit –Lssp:1001:,,,unibratec:1002:,,,

Ou listar os usuários com todos os detalhes:

V 0.12.0628-2118 Gilberto Martins – [email protected] 280

Page 281: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

$ pdbedit –L –v ---------------Unix username: sspNT username:Account Flags: [U ]User SID: S-1-5-21-1518769422-1536409526-1063316091-1000Primary Group SID: S-1-5-21-1518769422-1536409526-1063316091-513Full Name: ,,,Home Directory: \\instrutor\sspHomeDir Drive:Logon Script:Profile Path: \\instrutor\ssp\profileDomain: MACAccount desc:Workstations:Munged dial:Logon time: 0Logoff time: Ter, 19 Jan 2038 00:14:07 BRTKickoff time: Ter, 19 Jan 2038 00:14:07 BRTPassword last set: Qua, 19 Dez 2007 13:00:45 BRTPassword can change: Qua, 19 Dez 2007 13:00:45 BRTPassword must change: Ter, 19 Jan 2038 00:14:07 BRTLast bad password : 0Bad password count : 0Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF---------------Unix username: unibratecNT username:Account Flags: [U ]User SID: S-1-5-21-1518769422-1536409526-1063316091-1002Primary Group SID: S-1-5-21-1518769422-1536409526-1063316091-513Full Name: ,,,Home Directory: \\instrutor\unibratecHomeDir Drive:Logon Script:Profile Path: \\instrutor\unibratec\profileDomain: INSTRUTORAccount desc:Workstations:Munged dial:Logon time: 0Logoff time: Ter, 19 Jan 2038 00:14:07 BRTKickoff time: Ter, 19 Jan 2038 00:14:07 BRTPassword last set: Qua, 19 Dez 2007 13:37:06 BRTPassword can change: Qua, 19 Dez 2007 13:37:06 BRTPassword must change: Ter, 19 Jan 2038 00:14:07 BRTLast bad password : 0Bad password count : 0Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Ou ainda uma lista no formato do comando smbpasswd$ pdbedit –L –w ssp:1001:889393BF643C0D08AAD3B435B51404EE:B5E3B0E4B2E4416607E23164AC0BC2A2:[U ]:LCT-4769402D:unibratec:1002:E5E8B9754473D73C22D3B69D51786748:4BC81176779860E19E682A70BF5F73C8:[U ]:LCT-476948B2:

V 0.12.0628-2118 Gilberto Martins – [email protected] 281

Page 282: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.11  CUPS – Servidor de Impressão

10.11.1  Introdução

O CUPS (Common Unix Printing System) é o sistema de impressão padrão do Linux. Ele que faz a mediação entre o software que tem a página que você quer imprimir e a impressora em si, o hardware. O CUPS é um sistema modular de impressão para sistemas operacionais baseados em Unix, que torna o computador em um servidor de impressão. Este pode aceitar impressões the computadores clientes, os processar e os enviar para a impressora apropriada.

O CUPS consiste em uma fila de impressão, um sistema de conversão de formatos de dados, e um controle de envio, que trabalha com as impressoras configurasas no sistema. O protocolo usado é o IPP (Internet Printing Protocol), como base de gerenciamento de impressões e enfileiramento.

10.11.2  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install cupsys cupsys-bsd cupsys-client cupsys-common cups-pdf

Também é possível instalar usando o aptitude:$ sudo aptitude install cupsys cupsys-bsd cupsys-client cupsys-common cups-pdf

10.11.3  Ativação

Quando for necessário inicializar o serviço, basta usar a seguinte instrução:$ /etc/init.d/cupsys startStarting Common Unix Printing System: cupsd.

Podemos usar o netstat para verificar se o serviço está sendo executado:# netstat -ltnp Conexões Internet Ativas (sem os servidores) Proto Recv-Q Send-Q Endereço Local Endereço Remoto Estado PID/Program name tcp 0 0 127.0.0.1:631 0.0.0.0:* OUÇA 3103/cupsd

10.11.4  Interrupção

Quando for necessário interromper o serviço, basta usar a seguinte instrução:$ /etc/init.d/cupsys stop

Podemos usar o netstat para verificar se o serviço ainda está sendo executado. A porta 631/tcp não pode figurar na lista.

10.11.5  Arquivo de Configuração

O arquivo de configuração está em /etc/cups/cupsd.conf. Este arquivo possui a formatação semelhante ao arquivo de configuração do apache, e está dividido em diversas partes ou seções. Este é uma cópia do arquivo inalterado, quando da instalação:

V 0.12.0628-2118 Gilberto Martins – [email protected] 282

Page 283: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

# # # Sample configuration file for the Common UNIX Printing System (CUPS) # scheduler. See "man cupsd.conf" for a complete description of this # file. #

# Log general information in error_log - change "info" to "debug" for # troubleshooting... LogLevel warning

# Administrator user group... SystemGroup lpadmin

# Only listen for connections from the local machine. Listen localhost:631 Listen /var/run/cups/cups.sock

# Show shared printers on the local network. Browsing On BrowseOrder allow,deny BrowseAllow @LOCAL

# Default authentication type, when authentication is required... DefaultAuthType Basic

# Restrict access to the server... <Location /> Order allow,deny Allow localhost </Location>

# Restrict access to the admin pages... <Location /admin> Encryption Required Order allow,deny Allow localhost </Location>

# Restrict access to configuration files... <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny Allow localhost </Location>

# Set the default printer/job policies... <Policy default> # Job-related operations must be done by the owner or an adminstrator... <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Rep rocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit>

# All administration operations require an adminstrator to authenticate... <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept- Jobs CUPS-Reject-Jobs CUPS-Set-Default> AuthType Basic Require user @SYSTEM Order deny,allow </Limit>

# Only the owner or an administrator can cancel or authenticate a job... <Limit Cancel-Job CUPS-Authenticate-Job> Require user @OWNER @SYSTEM

V 0.12.0628-2118 Gilberto Martins – [email protected] 283

Page 284: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Order deny,allow </Limit>

<Limit All> Order deny,allow </Limit> </Policy> # #

# # Printcap: the name of the printcap file. Default is /etc/printcap. # Leave blank to disable printcap file generation. #

Printcap /var/run/cups/printcap

# # PrintcapFormat: the format of the printcap file, currently either # BSD or Solaris. The default is "BSD". #

#PrintcapFormat BSD #PrintcapFormat Solaris

# # PrintcapGUI: the name of the GUI options panel program to associate # with print queues under IRIX. The default is "/usr/bin/glpoptions" # from ESP Print Pro. # # This option is only used under IRIX; the options panel program # must accept the "-d printer" and "-o options" options and write # the selected printer options back to stdout on completion. #

#PrintcapGUI /usr/bin/glpoptions

10.11.6  Configuração do servidor:

Apesar de ser possível configurar todo o sistema pela operação direta do arquivo de configuração, é recomendado usar a interface de configuração do serviço. Esta é semelhante ao SWAT do samba, com a diferença de já estar incluído no pacote do cups.

V 0.12.0628-2118 Gilberto Martins – [email protected] 284

Page 285: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.11.6.1  Software de configuração

Inicie um browser, e chame o software de configuração do CUPS digitando o IP da máquina onde o mesmo se encontra, na porta 631. Como vimos na listagem do netstat acima, o mesmo apenas está respondendo chamadas vindas de 127.0.0.1.

10.11.6.2  Adicionar Impressora

Na tela principal mostrada anteriormente, clique em ADMINISTRATION. A tela apresentada será a seguinte:

V 0.12.0628-2118 Gilberto Martins – [email protected] 285

Imagem 71: Configuração do CUPS

Page 286: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Note que já está presente uma impressora PDF. Assim, mesmo que não haja impressoras reais instaladas, um gerador de PDFs está disponível.

O próximo passo é clicar em Add Printer para efetivamente adicionar a impressora.

V 0.12.0628-2118 Gilberto Martins – [email protected] 286

Imagem 72: Administração de Impressoras

Page 287: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

O que foi feito aqui:1. Foi determinado que o nome da impressora será Deskjet2. Foi informado o local em que a impressora se encontra

Para o próximo passo, é preciso clicar em Continue:

V 0.12.0628-2118 Gilberto Martins – [email protected] 287

Imagem 73: Descrevendo a impressora

Page 288: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

O que foi feito aqui:1. Foi determinado qual o IP do servidor de impressão e que o protocolo usado será o IPP

Para o próximo passo, é preciso clicar em Continue:

V 0.12.0628-2118 Gilberto Martins – [email protected] 288

Imagem 74: Endereçamento do servidor

Page 289: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

O que foi feito aqui:1. Foi determinado qual o fabricante da impressora

Para o próximo passo, é preciso clicar em Continue:

V 0.12.0628-2118 Gilberto Martins – [email protected] 289

Imagem 75: Escolha do Fabricante

Page 290: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

O que foi feito aqui:1. Foi determinado qual o modelo da impressora

Para o próximo passo, é preciso clicar em Continue:

V 0.12.0628-2118 Gilberto Martins – [email protected] 290

Imagem 76: Seleção do Modelo da Impressora

Page 291: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.12  OpenLDAPLightweight Directory Access Protocol, ou LDAP, é um protocolo para atualizar e pesquisar diretórios rodando sobre TCP/IP. Um diretório LDAP geralmente segue o modelo X.500, que é uma árvore de nós, cada um consistindo de um conjunto de atributos com seus respectivos valores. O LDAP foi criado como uma alternativa ao muito mais incômodo Directory Access Protocol (DAP).

Um diretório LDAP tende a refletir vários limites políticos, geográficos e/ou organizacionais, dependendo do modelo adotado. A utilização do LDAP hoje em dia tende a se basear nos nomes já existentes do sistema Domain Name System (DNS), na estruturação dos níveis mais básicos de hierarquia. Mais profundamente, podem aparecer estruturas representando pessoas, unidades organizacionais, impressoras, documentos, grupos de pessoas ou qualquer outra coisa que represente um nó.

A versão atual é LDAPv3, especificado em uma série de RFC como mostra o RFC 4510.13

O LDAP é uma definição de protocolo para acesso a bancos de dados especializados chamados diretórios. É similar ao SQL no sentido que é uma linguagem para interagir com bancos de dados sem especificar um banco de dados particular. De fato, o banco de dados de suporte ao LDAP é quase sempre um sistema RDBMS geral, como o LDBM ou o Oracle.

A maioria das diversas tecnologias que uma empresa de médio e grande porte utilizam hoje em dia exigem autenticação, o que pode muitas vezes ocasionar muitos cadastros de usuários replicados entre os sistemas. Assim, um usuário pode ter muitos "logins" e "senhas" para acesso aos sistemas da empresa e frequentemente pode precisar lembrar ou alterar alguma informação de seu cadastro. Por exemplo, login e senha para acesso a máquina, a rede, ao email, ao sistema de gestão, sistema de documentos, etc. Isto deixa o usuário confuso e a equipe de TI perde muito tempo com o serviço repetitivo e de suporte.

Um servidor de diretórios como o Open LDAP ou MS Active Directory recebem esta autenticação dos muitos sistemas, usando o protocolo LDAP, proporcionando consultas em um único servidor de diretórios. O OpenLDAP é um software livre de código aberto que implementa o protocolo LDAP.

10.12.1  Instalação

Para que o serviço seja instalado, usaremos o apt-get:$ sudo apt-get install slapd ldap-utils

Também é possível instalar usando o aptitude:$ sudo aptitude install slapd ldap-utils

10.12.2  Configuração

Para iniciar a configuração, é preciso digitar o seguinte comando:$ sudo dpkg-reconfigure slapd

Será iniciada a configuração com uma sequência de telas. A primeira é a seguinte:

13 http://pt.wikipedia.org/wiki/LDAP

V 0.12.0628-2118 Gilberto Martins – [email protected] 291

Page 292: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Responderemos NÃO a esta pergunta para podermos configurar o servidor.

A instalação vai pedir a senha de administrador como a tela a seguir:

V 0.12.0628-2118 Gilberto Martins – [email protected] 292

Imagem 77: Reconfiguração do OpenLDAP

Page 293: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Após a instalação, é necessário fazer algumas modificações manualmente:

1. Faça um backup do diretório do OpenLDAP inteiro:$ sudo tar czvpf ~/OpenLDAP.tgz /etc/ldap

2. Delete a pasta /etc/ldap/slapd.d

3. Altere a diretiva do SLAPD_CONF do arquivo /etc/default/slapd para SLAPD_CONF=/etc/ldap/slapd.conf

4. Copiar os schemas a seguir:$ cd /usr/share/doc/gosa/contrib/openldap$ sudo cp -v samba.schema.gz dnszone.schema.gz pureftpd.schema dhcp.schema.gz /etc/ldap/schema$ cd /etc/ldap/schema$ sudo gunzip *.gz$ cd

5. Criar o arquivo /etc/ldap/slapd.conf com o seguinte conteúdo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 293

Imagem 78: Configuração inicial do OpenLDAP

Page 294: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

include /etc/ldap/schema/core.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/openldap.schemainclude /etc/ldap/schema/nis.schemainclude /etc/ldap/schema/misc.schemainclude /etc/ldap/schema/samba.schemainclude /etc/ldap/schema/pureftpd.schemainclude /etc/ldap/schema/gofon.schemainclude /etc/ldap/schema/gosystem.schemainclude /etc/ldap/schema/goto.schemainclude /etc/ldap/schema/samba3.schemainclude /etc/ldap/schema/gosa+samba3.schemainclude /etc/ldap/schema/gofax.schemainclude /etc/ldap/schema/goserver.schemainclude /etc/ldap/schema/goto-mime.schemainclude /etc/ldap/schema/dhcp.schemainclude /etc/ldap/schema/dnszone.schema

password-hash {CRYPT}defaultsearchbase dc=toshiba pidfile /var/run/slapd/slapd.pidargsfile /var/run/slapd/slapd.args loglevel 1024 #Cara os modulosmodulepath /usr/lib/ldapmoduleload back_hdbmoduleload back_monitoraccess to dn.base= by * read access to dn.subtree=cn=Monitor by * read

# A ser corrigido # access to attrs=userPassword,sambaPwdLastSet,sambaPwdMustChange,\# sambaPwdCanChange,shadowMax,shadowExpire# by dn.regex=uid=[^/]+/admin\+(realm=TOSHIBA) write# by anonymous auth# by self write# by * none access to attrs=goImapPassword by dn.regex=uid=[^/]+/admin\+(realm=TOSHIBA) write by * noneaccess to attrs=goKrbPassword by dn.regex=uid=[^/]+/admin\+(realm=TOSHIBA) write by * noneaccess to attrs=goFaxPassword by dn.regex=uid=[^/]+/admin\+(realm=TOSHIBA) write by * none access to attrs=gotoLastUser by * write access to attrs=sambaLmPassword,sambaNtPassword by dn.regex=uid=[^/]+/admin\+(realm=TOSHIBA)write by anonymous auth by self write by * none access to * by dn.regex=uid=[^/]+/admin\+(realm=TOSHIBA)=wrscx by * read # Monitor backenddatabase monitor

V 0.12.0628-2118 Gilberto Martins – [email protected] 294

Page 295: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

database hdbcachesize 5000mode 0600 suffix dc=toshibacheckpoint 512 720

# Usuario administrador do LDAP rootdn cn=manager,dc=toshibarootpw x # Indexingindex default subindex uid,mail eqindex gosaMailAlternateAddress,gosaMailForwardingAddress eqindex cn,sn,givenName,ou pres,eq,subindex objectClass pres,eqindex uidNumber,gidNumber,memberuid,macAddress eqindex gosaSubtreeACL,gosaObject,gosaUser pres,eq # Indexing for Samba 3index sambaSID eqindex sambaPrimaryGroupSID eqindex sambaDomainName eq # Indexing for DNS/DHCPindex zoneName eqindex relativeDomainName eqindex dhcpHWAddress eqindex dhcpClassData eqindex dhcpPrimaryDN eqindex dhcpSecondaryDN eq directory /var/lib/ldaplastmod on

6. Teste a configuração do servidor OpenLDAP com os comandos a seguir. Caso ocorra algum erro, o mesmo será exibido com detalhes, e caso esteja funcionando corretamente, o servidor estará aguardando solicitações, bastando então um CTRL+C para o interromper:

$ sudo invoke-rc.d sldap stop$ sudo slapd -d 123 -u openldap

7. Criar a estrutura base do LDAP. Para isso crie um arquivo chamado base.ldif. O conteúdo deste arquivo seria:

dn: dc=toshibaobjectClass: topobjectClass: dcObjectobjectClass: organizationdc: toshibao: Gilberto Martins

8. É preciso enviar essas informações do arquivo LDIF para a base LDAP. O comando ldapadd faz isso:

$ sudo ldapadd -f base.ldif -x -D cn=manager,dc=toshiba -W

9.

O gerenciador GOsa está em condições de ser utilizado, podendo ser acessado através do browser de algum cliente. Basta digitar o IP do servidor onde o Apache2 está instalado e digitar:

V 0.12.0628-2118 Gilberto Martins – [email protected] 295

Page 296: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.12.3  Erro no GOsa 2.5.16

Ao tentar acessar o GOsa no browser surge a seguinte mensagem de erro:

Para corrigir este erro, as seguintes alterações devem ser feitas:

Em /usr/share/gosa/html/index.php substituir as duas seguintes linhas :

V 0.12.0628-2118 Gilberto Martins – [email protected] 296

Imagem 79: Abertura do GOsa

Imagem 80: Erro na abertura do GOsa

Page 297: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

require_once ("../include/php_setup.inc");require_once ("functions.inc");

porrequire_once ("../include/functions.inc");require_once ("../include/php_setup.inc");

Em /usr/share/gosa/include/php_setup.inc substituir a linha a seguir:/* Do smarty setup */require("/usr/share/php/smarty/lib/Smarty.class.php");

por/* Do smarty setup */require("/usr/share/php/smarty/Smarty.class.php");

Este erro deve ser corrigido em breve.

10.12.4  Primeiro uso do Gosa

Para aumentar a segurança do uso do sistema, é necessário rolar a tela de abertura até o final, copiar a linha mostrada e a executar no servidor. A linha a seguir foi exibida no sistema que está sendo usado para criar este documento, e não será a mesma que surgirá no seu sistema, ela está sendo demonstrada aqui e não deve ser copiada deste documento para o seu sistema:

echo -n 72fa9950651899c5e577c9a6233ee96b > /tmp/gosa.auth

Depois de executar a linha sugerida pelo Gosa, deve-se prosseguir com a configuração:

A próxima etapa é fazer uma checagem de dependências no sistema:

V 0.12.0628-2118 Gilberto Martins – [email protected] 297

Imagem 81: Linguagem a ser usada pelo GOsa

Page 298: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

Em seguida, aceitaremos a licença GNU, e depois vamos configurar a conexão com o LDAP:

V 0.12.0628-2118 Gilberto Martins – [email protected] 298

Imagem 82: Checagem da Instalação do GOsa

Page 299: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.13  rsyslog – Servidor de LogsA maioria das atividades executadas pelos servidores geram mensagens, sejam estas mensagens de erro, de advertências ou mensagens comuns, que não indicam necessariamente uma falha. Estas mensagens são enviadas para um serviço de log, que as registra em arquivos adequados.

Um servidor de log é um serviço de log executado em uma outra estação, que tem o objetivo de receber os arquivos de log gerados por outros servidores. Dispositivos como servidores, roteadores, switches e outros podem desempenhar este papel. Um servidor de log então pode ser definido como um repositório de mensagens de log, Esta é uma configuração do tipo Cliente/Servidor, onde os dispositivos serão os clientes.

Quando configurados para usarem um servidor de logs, os dispositivos ou servidores vão enviar suas mensagens de log para este servidor, ao invés de registrar-los localmente ou os exibir na console.

10.13.1  Instalação

Este serviço vem pré instalado nas principais distribuições. Mas caso seja necessário reinstalar este serviço, pode ser usado o comando apt-get:

$ sudo apt-get install rsyslogd

Também é possível instalar usando o aptitude:$ sudo aptitude install rsyslogd

10.13.2  Ativação

Uma vez que o serviço de log já vem nas instalações básicas das principais distribuições, o mesmo já estará iniciado automaticamente. Mas se for preciso reinicializar o serviço, a instrução é:

$ /etc/init.d/sysklogd start

Diferente dos servidores anteriores, não poderemos usar o netstat. Ao invés disso, verificamos se o processos do servidor está em execução:

$ pidof rsyslogd 4480

Pode ser verificado que o processo está em execução com o comando pidof, já que há um número de processo, neste caso, o 4480.

10.13.3  Arquivo de configuração

O arquivo de configuração é o /etc/rsyslog.conf, e seu conteúdo determina diversos aspectos de seu funcionamento. Ao final deste arquivo, os relacionamentos de arquivos de log são importados, através da seguinte instrução:

$IncludeConfig /etc/rsyslog.d/*.conf

Na instalação padrão, há apenas um arquivo neste diretório:$ ls /etc/rsyslog.d/*.conf /etc/rsyslog.d/50-default.conf

Neste arquivo, todas as linhas tem a mesma configuração:facility.severity action

facility e severity são os dois operadores que são fundamentais para construção do nosso sistema de log, além do action.

V 0.12.0628-2118 Gilberto Martins – [email protected] 299

Page 300: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

10.13.3.1  facility

Cada mensagem enviada para o serviço de log tem uma categoria, que é chamada de facility. Os tipos de facility são:

CÓDIGO TIPO DA FACILITYauth mensagens de autenticação

cron mensagens do agendamento de tarefas

daemon mensagens dos serviços em execução

kern mensagens do kernel

lpr mensagens do sistema de impressão

mail mensagens específicas dos servidores de correio eletrônico

user messagens dos processos/aplicações iniciadas pelo usuário

local0-local7 Livre para uso do usuário

syslog mensagens geradas pelo próprio syslog

Tabela 51: Facilities do Syslog

10.13.3.2  severity

Esta informação define o nível de complexidade expresso pela mensagem. Os tipos válidos são:Código Descrição Do Tipo Da Mensagem (Abreviação)0 emergência (emerg)

1 alerta (alert)

2 crítico (crit)

3 erro (err)

4 aviso (warn)

5 notificação (notice)

6 informação (info)

7 debug (debug)

Tabela 52: Níveis de severidade do Syslog

Para compreender melhor o arquivo de configuração, aqui faremos uma cópia de segurança e a remoção dos comentários:

$ sudo cp /etc/rsyslog.d/50-default.conf ~/50-default.conf.original $ egrep -v "^#|^$" ~/50-default.conf.original > ~/50-default.conf $ sudo mv ~/50-default.conf /etc/rsyslog.d/

O arquivo final deve ter o seguinte conteúdo:

V 0.12.0628-2118 Gilberto Martins – [email protected] 300

Page 301: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice *.=debug;\

auth,authpriv.none;\ news.none;mail.none -/var/log/debug

*.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages

*.emerg * daemon.*;mail.*;\

news.err;\ *.=debug;*.=info;\ *.=notice;*.=warn |/dev/xconsole

Do arquivo acima, podemos ressaltar alguns detalhes:

10.13.3.3  Log simples

Para criar um arquivo simples de log, basta informar a facility e o arquivo de log (action), como no exemplo a seguir:

mail.* -/var/log/mail.log

Neste exemplo, todas as mensagens de erro dos sistemas de email (mail.*) serão gravadas em /var/log/mail.log. O hífen antes do endereço indica que a gravação será realizada diretamente no arquivo, ao invés de ser progressivamente armazenada em buffer.

É possível também gravar apenas algumas mensagens, como no exemplo a seguir:mail.err /var/log/mail.err

Apenas as mensagens do tipo err, crit, alert e emerg serão gravadas em /var/log/mail.err, ou seja, apenas mensagens da priority err ou mais sérias.

A seguir, é possível registrar apenas mensagens de uma única priority, como no exemplo a seguir:mail.=crit /var/log/mail.ecrit

O exemplo acima grava apenas as mensagens do tipo crit.

10.13.3.4  Log composto

Mais de um selector pode ser agrupado em um único arquivo, como no exemplo acima:*.=info;*.=notice;*.=warn;\

auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages

No exemplo acima, constando ainda no nosso arquivo:

EXEMPLO DESCRIÇÃO

*.=info Apenas os erros com priority info, de qualquer facility

*.=notice Apenas os erros com priority notice, de qualquer facility

V 0.12.0628-2118 Gilberto Martins – [email protected] 301

Page 302: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

*.=warn Apenas os erros com priority warn, de qualquer facility

auth,authpriv.none Nenhum tipo de erro das facilities auth e authpriv

cron,daemon.none Nenhum tipo de erro das facilities cron e daemon

mail,news.none Nenhum tipo de erro das facilities mail e news

O sinal de igual informa que apenas um severity deve ser considerado. Usando um sinal de exclamação, podemos excluir alguma severity:

mail.err; mail.!=alert /var/log/teste

Todos os severities de mail serão considerados, exceto o alert.

No arquivo exemplo, todas estas mensagens estarão sendo enviadas para /var/log/messages,

10.13.4  Servidor de Log14  Traduzir

Level 7 basically says to send every peep to the syslog server. It's good to use when you want to test your syslog server to make sure it's working.

The Syslog Server Top of page

There's two things you have to do to set up your Debian system as a log host. Luckily they're simple edits to a couple text files. They are:

* Tell the syslog daemon to listen for messages from remote devices

* Tell the syslog daemon what to do with those messages

The syslog daemon is run at system startup by default because it also handles all the local log files, and there are a bunch of them. If you list the files in the /var/log directory you'll see what I'm talking about.

To take care of the first item above we have to edit the startup script that runs the syslogd daemon when the system boots. Open the script using the command:

nano /etc/init.d/sysklogd

and look for this line near the top:

SYSLOGD=""

and change it to:

14 http://www.aboutdebian.com/syslog.htm

V 0.12.0628-2118 Gilberto Martins – [email protected] 302

Page 303: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

SYSLOGD="-r -m0"

(That's a zero after the 'm'.) Then exit the editor saving the file. The -r tells syslogd to listen for remote messages. The -m0 stops syslogd from putting a bunch of annoying -- MARK -- entries in your log files.

To take care of the second item, open the follwing file:

nano /etc/syslog.conf

and add the following lines to it near the top:

*.emerg /var/log/enterprise.log

*.alert /var/log/enterprise.log

*.crit /var/log/enterprise.log

Here we are just telling the syslogd daemon to write the messages to the enterprise.log file. If you want to monitor Windows servers and Cisco devices add this line also:

local7.debug /var/log/enterprise.log

We're using the 'debug' level here just for testing to make sure our server is receiving and logging messages. It can tightened up later. Now restart the syslogd daemon with the command:

/etc/init.d/sysklogd restart

Congratulations, you've got yourself a syslog server! You can check it out by listing the files in the /var/log directory again. You should see the enterprise.log file there now.

Syslog Clients Top of page

Now you have to go around to your devices and tell them to use it, and what level of messages to send to it.

Cisco Devices

For Cisco switches running the CatOS you can console or telnet into the switch and enter the following commands to accomplish that:

V 0.12.0628-2118 Gilberto Martins – [email protected] 303

Page 304: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

set logging server <ip address of your Debian system>

set logging server severity 3

set logging timestamp enable

set logging server enable

Note that 3 is where you set the level of severity. For Cisco routers and switches running IOS the commands are:

config term

logging <ip address of your Debian system>

logging trap errors

service timestamps log datetime

logging on

Note that errors is where you set the level of severity.

Linux Systems

If you want to set up other Linux servers (or even desktops) to be clients (i.e. to send their messages to this Debian log server) you'd add the following line to their /etc/syslog.conf files:

*.* @debianbox

replacing 'debianbox' with whatever the hostname of your Debian system is. The '*.*' specifies that all log messages be sent to the log server. Some devices, like JetDirect cards will not allow you to specify a severity level which is why you want to restrict what's actually logged by the settings you enter in the /etc/syslog.conf file on the syslog server.

Windows Servers

Naturally Microsoft doesn't want to support a long-held standard like syslog so we have to jump through some hoops to monitor Windows servers. A company in Sweden called Datagram has a great free utility called SyslogAgent that runs as a service on Windows servers. It converts the messages in all of the Event Viewer logs (System, Applications, Security, etc.) to a syslog format and sends them to a syslog server. You can even specify a different severity level for each log. And even better, installing it doesn't require a reboot. Go to their download page at:

www.syslogserver.com/download.html

V 0.12.0628-2118 Gilberto Martins – [email protected] 304

Page 305: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

and download just the SyslogAgent file, not the whole suite. It runs on NT, 2000, and 2003.

Rotating Log Files

Syslog is a daemon that runs on every Linux/UNIX system to keep local logs. The -r parameter (listen for remote systems) is what turns a system into a syslog server. There's one other daemon that works with syslog to maintain the files called logrotated. "Rotating" a log file means renaming the current file to append a .0 or .1 etc. to a log file and starting a new one (or optionally just keep appending to what's there - kind of a snapshot in time thing). The keeping (renaming) of the old log file and how many to keep are settable options and the frequency of the rotation is customizable by editing the /etc/logrotate.conf file. If you're only logging critical and above errors from remote devices you may want to only rotate them monthly. Weekly is the default. You can also set how many of the old log files to keep.

The key settings in the /etc/logrotate.conf file are:

# rotate log files weekly

weekly

# keep 4 weeks worth of backlogs

rotate 4

# create new (empty) log files after rotating old ones

create

# uncomment this if you want your log files compressed

#compress

You can even set up sections so that different log files have different settings. See the man page for logrotate for details.

Viewing The Log Files Top of page

If you set your /etc/syslog.conf file to have everything written to the same file, once you get all the client devices set up you'll only have one log file to check for all the devices on your network.

Rather than having to go to the Debian system itself to look at the central log fle, you can make it accessible from anywhere on your network via a browser provided you have Apache installed on your syslog server. In addition to installing Apache you'd have to configure it to process SSI (Server-Side Includes). We show you how to do both on the Internet Servers page.

Once you've got Apache set up we need to create a Web page that will display the log. Start out by

V 0.12.0628-2118 Gilberto Martins – [email protected] 305

Page 306: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

renaming the supplied home page (because it has some useful Apache path information) using the following command:

mv /var/www/index.html /var/www/index.org

Then use the nano editor to create a new home page with the command:

nano /var/www/index.shtml

(note that the s in the file extension is required for SSI) and enter the following into it:

<html>

<head>

<title>Enterprise Syslog Log File</title>

</head>

<body>

<center>

<h2>

MyCorp Enterprise Syslog Log

</h2>

</center>

<!--#include file="enterprise.log" -->

<br>

</body>

</html>

Exit the editor saving the file.

The file reference in the SSI include directive is relative to the "Document Root" of the Apache Web server. In other words, the enterprise.log file has to reside in the /var/www directory with the index.shtml file that contains the directive.

Creating an enterprise log file in the Document Root of your Web server probably isn't the best idea. As mentioned above, if you're going to set up a serious log server you'll probably want to create a separate large partition with the mount point of /logs to store the log files. Perhaps the easiest way to handle accessing the enterprise log file from the Web page is to change your Apache Document Root setting to point to the same /logs mount point.

V 0.12.0628-2118 Gilberto Martins – [email protected] 306

Page 307: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Servidores

We covered changing the Apache configuration back on the Internet Servers page. Changing the Document Root setting is simply a matter of opening the Apache configuration file in a text editor with the command:

nano /etc/apache/httpd.conf

and changing the line (in Section 2):

DocumentRoot /var/www

to

DocumentRoot /logs

and exit the editor saving the file. Be sure to move your index.shtml to the /logs partition and to change you /etc/syslog.conf file so that the enterprise log file is also saved to the /logs partition. For testing purposes make it:

*.* /logs/enterprise.log

After you've got all the changes made you'll have to restart the syslog and Apache services or just reboot the system.

Now go to another system on the network, fire up a Web browser, and point it to the IP address of your syslog server like so:

http://192.168.0.70

A Web page containing the contents of the 'enterprise.log' file should appear (provided it has something in it at this point). If it doesn't, click on "View" on your browser menu and select "Source" and see if the SSI directive line is listed with the HTML code. It shouldn't. If it does it means that Apache is not properly configured to process SSI directives (or you didn't use the s in the extension of the page file name). The /var/log/apache.log and /var/log/apache.err files are also helpful in troubleshooting SSI problems.

Syslog is a very powerful tool. It has many options, such as sending messages to devices rather than files, that you should investigate. It can also be used to log authentication failures which could indicate a hacking attempt. With lower severity it can log all authentication attempts so you can archive who logged in when.

Syslog can also be the source of security concerns because it doesn't care who sends it messages. This may not be a huge issue on an internal LAN, but it isn't an appropriate service to run on Internet-connected systems.

V 0.12.0628-2118 Gilberto Martins – [email protected] 307

Page 308: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

11  FirewallFirewall é um componente do sistema que pode permitir ou negar tráfego de entrada e/ou saída baseado em um conjunto de regras15.

O iptables é uma ferramenta de administração para filtragem de pacotes e NAT. Em palavras mais simples, iptables é a ferramenta de configuração do firewall do Linux.

Todos os pacotes que transitam pelo sistema passam pela filtragem de pacotes do firewall. Assim, tanto para sair pacotes como para entrar pacotes, há regras. Cada regra tem critérios e ações.

11.1.1  Fluxos possíveis dos pacotes no firewall

O diagrama a seguir mostra os possíveis percursos de um pacote dentro de um firewall Linux:

Imagem 83: Fluxo de pacotes no firewall Linux

11.1.2  Detalhes das regras de firewall

Para que fique mais claro, vamos considerar a criação de uma regra básica:15 http://en.wikipedia.org/wiki/Firewall

V 0.12.0628-2118 Gilberto Martins – [email protected] 308

Page 309: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

$ iptables -p icmp -A INPUT -j DROP

Esta é uma apresentação típica de uma regra simples:Opção Descrição-p icmp especifica o protocolo a ser considerado. Neste caso, o ICMP

-A INPUT especifica o canal a ser considerado. INPUT é o canal pelo qual os pacotes destinados ao próprio host seguem.

-j DROP especifica a ação a ser executada. DROP descarta os pacotes que atenderem aos critérios desta regra.

Tabela 53: Exemplo do comando iptables

Regras são acrescentadas na medida em que são digitadas. Por isso, a ordem da definição das regras do firewall é muito importante.

11.1.3  Opções do comando iptables

Analisando os parâmetros básicos de uma regra de iptables, temos:Opção Descrição

-t

Tabela do Firewall a ser usada. Atualmente temos:• filter: tabela padrão. Possui as listas

• INPUT: Pacotes destinados ao próprio host• FORWARD: Pacotes que passarão pelo host, ou seja, que são destinados a outro host• OUTPUT: Pacotes gerados na host local

• nat: usada quando for necessária uma alteração no endereço de origem ou de destino. Possui as listas:• PREROUTING: Tratamento dos pacotes que chegam no host, antes de serem encaminhados para a

interface de destino, ou seja, antes do roteamento• OUTPUT: Idem à PREROUTING, mas destinado aos pacotes gerados na própria máquina• POSTROUTING: Tratamento dos pacotes depois de ser determinado qual será a interface de destino,

ou seja, depois do roteamento

-p

Protocolo descrito no pacote analisado. Pode ser:• tcp• udp• icmp• all• Um dos códigos de protocolo descritos em /etc/protocols

-A Acrescenta esta regra ao final da lista especificada (veja opção -t).

-s Especifica o endereço de origem no formato X.Y.Z.W/MÁSCARA

-d Especifica o endereço de destino no formato X.Y.Z.W/MÁSCARA

-i Considera o pacote que chega no host através da interface especificada. As interfaces aqui são descritas pelo nome (por exemplo, eth0, eth1, sl0, etc)

-o Considera o pacote que sai do host através da interface especificada. As interfaces aqui são descritas pelo nome (por exemplo, eth0, eth1, sl0, etc)

-j Especifica a ação a ser executada caso os critérios definidos coincidam com o pacote examinado

-F Remove todas as regras da tabela especificada. Se nenhuma tabela for mencionada, atuará sobre a tabela filter

Tabela 54: Opções básicas do iptables

Algumas das opções de protocolo disponibilizam outras opções. As mais usadas são:Opção Descrição

-p tcp• --sport: portas especificadas no endereço de origem• --dport: portas especificadas no endereço de destino

-p udp• --sport: portas especificadas no endereço de origem• --dport: portas especificadas no endereço de destino

Tabela 55: Sub-opções do protocolo (-p)

V 0.12.0628-2118 Gilberto Martins – [email protected] 309

Page 310: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

11.1.3.1  Ações do Firewall

Caso as características especificadas pelos critérios coincidam com o pacote, a opção -j especifica uma ação a ser executada. As mais usadas são:Ação Descrição

DNAT

Permite a alteração do endereço de destino.• Após a ação DNAT, o novo endereço de destino deve ser especificado com --to-destination

X.Y.Z.W:Porta.• A porta é opcional. Se não for especificada, a porta original será reutilizada.• Somente válida na tabela nat, nas listas PREROUTING ou OUTPUT.

SNAT

Permite a alteração do endereço de origem.• Após a ação SNAT, o novo endereço de origem deve ser especificado com --to-source

X.Y.Z.W:Porta.• A porta é opcional. Se não for especificada, a porta original será reutilizada.• Para poder usar --to-ports, é obrigatório o uso de -p tcp ou -p udp, conforme necessário.• Somente válida na tabela nat, na lista POSTROUTING.• Deve ser usado em caso de endereço de saída estático, ao invés da opção MASQUERADE.

MASQUERADE

Permite a alteração do endereço de origem.• O novo endereço de origem será o IP da interface de saída, normalmente especificada pela opção -o,

conforme descrito anteriormente.• Somente válida na tabela nat, na lista POSTROUTING.• Deve ser usado em caso de endereço de saída dinâmico, ao invés da opção SNAT.

REDIRECT

Faz um DNAT, redirecionando o pacote para o próprio host• Após a ação REDIRECT, novas portas de destino podem ser especificadas com --to-ports Porta• Para poder usar --to-ports, é obrigatório o uso de -p tcp ou -p udp, conforme necessário.• Somente válida na tabela nat, nas listas PREROUTING ou OUTPUT.

REJECT

Não aceita o pacote de entrada.• Somente válida nas listas INPUT, FORWARD e OUTPUT• Envia um sinal de volta a origem, informando o motivo da rejeição.• Os motivos que podem ser informados são:

• icmp-net-unreachable• icmp-host-unreachable• icmp-port-unreachable• icmp-proto-unreachable• icmp-net-prohibited• icmp-host-prohibited

DROP Não aceita o pacote de entrada.

Tabela 56: Ações do iptables

11.1.4  Ativação

O firewall já está ativo desde a inicialização do sistema. Entretanto, suas regras existem apenas em memória, e por isso são apagadas no quando o sistema for desligado. Por este motivo, as regras devem ser recriadas sempre que o sistema for inicializado.

NOTANOTA IMPORTANTEIMPORTANTE

É importante ressaltar que o que vamos fazer agora é uma das muitas formas de configurar o firewall para ser iniciado

automaticamente, junto com o sistema. Além disso, a escolha do nome a ser usado no script de firewall fica à cargo do

administrador.

Para automatizar este processo, usaremos um script contendo todos os comandos iptables

V 0.12.0628-2118 Gilberto Martins – [email protected] 310

Page 311: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

necessários, o qual vai ser chamado a partir do /etc/rc.local.

No script /etc/rc.local faremos a inclusão da linha destacada:#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing.

. /etc/firewall.shexit 0

NOTANOTA IMPORTANTEIMPORTANTE

Repare a presença de um ponto (.) antes de /etc/firewall.sh em /etc/rc.local. Este ponto chama para execução o script

/etc/firewall.sh.

Esta alteração vai ativar o script /etc/firewall.sh, que contém as regras do firewall.

11.1.5  Script básico de firewall

O exemplo mostrado a seguir é um exemplo básico, com procedimentos bem comentados, que não deve ser usado em uma rede corporativa sem as devidas alterações de segurança.

O firewall para este script tem 3 interfaces de rede.

V 0.12.0628-2118 Gilberto Martins – [email protected] 311

Page 312: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

#!/bin/bash## Regras do Firewall## Autor: Gilberto Martins

# Localização do IPTABLESIPT=$(whereis -b iptables | cut -d" " -f 2)

# Variaveis de Interfaces no Firewall# Estas variaveis devem conter o nome das interfaces do sistema.# Por exemplo: "eth0"# =========================================================# Interface ExternaIF_EXTERNA="NOME DA INTERFACE EXTERNA DO FIREWALL"# Interface da rede de UsuariosIF_USUARIOS="NOME DA INTERFACE DA REDE DE USUARIOS"# Interface da rede de servidoresIF_SERVIDORES="NOME DA INTERFACE DA REDE SERVIDORES"

# Variaveis de Interfaces de redes existentes# Estas variaveis devem conter as redes e mascaras usadas nas redes internas# Por exemplo: "192.168.1.1/24"# ==========================================================================# Rede de UsuariosREDE_USUARIOS="REDE USUARIOS/BITS de MASCARA"# Rede de ServidoresREDE_SERVIDORES="REDE SERVIDORES/BITS de MASCARA"

# Variaveis de IPs de serviços# Estas variaveis devem conter os IPs dos hosts onde estao instalados os servicos# ===============================================================================# Neste exemplo, todos os serviços estao instalados em um mesmo IPIP_SERVPRINCIPAL="IP DO SERVIDOR ONDE ESTAO INSTALADOS OS SERVICOS"IP_PROXY=${IP_SERVPRINCIPAL}IP_WEBSERVER=${IP_SERVPRINCIPAL}IP_SMTP=${IP_SERVPRINCIPAL}

# Limpeza das regras do Firewall# ==============================${IPT} -F -t filter${IPT} -F -t nat${IPT} -F -t mangle

# Parametros de seguranca no /proc# ===============================# Observe que a maioria deles já está habilitado no /proc# Confirme em /etc/sysctl

# Encaminhamento de pacotes entre as interfacesecho "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/tcp_syncookiesecho "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcastsecho "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responsesecho "1" > /proc/sys/net/ipv4/conf/$IF_EXTERNA/log_martiansecho "0" > /proc/sys/net/ipv4/conf/$IF_EXTERNA/accept_redirectsecho "0" > /proc/sys/net/ipv4/conf/$IF_EXTERNA/accept_source_route

# Regras do Firewall # – Usando nomes de servicos descritos em /etc/services ao inves do numero das portas# - As linhas ja estao prontas, basta tirar o comentario# ===================================================================================

# Redirecionamento para proxy transparente, para solicitacoes vindas da rede de usuarios #${IPT} -t nat -p tcp -A PREROUTING -i ${IF_USUARIOS} --dport www -j DNAT --to-destination ${IP_PROXY}:3128

# Nat para conexoes vindas do PROXY#${IPT} -t nat -A POSTROUTING -s ${IP_PROXY} -o ${IF_EXTERNA} -j MASQUERADE

# Nat para conexoes vindas da Rede de Usuarios #${IPT} -t nat -A POSTROUTING -s ${REDE_USUARIOS} -o ${IF_EXTERNA} -j MASQUERADE

# Redirecionamento para o servidor web, para solicitacoes vindas da rede externa#${IPT} -t nat -p tcp -A PREROUTING -i ${IF_EXTERNA} --dport www -j DNAT --to-destination ${IP_WEBSERVER}

# Redirecionamento para o servidor SMTP, para solicitacoes vindas da rede externa#${IPT} -t nat -p tcp -A PREROUTING -i ${IF_EXTERNA} --dport smtp -j DNAT --to-destination ${IP_SMTP}

V 0.12.0628-2118 Gilberto Martins – [email protected] 312

Page 313: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

Este script /etc/firewall.sh pode também ser manualmente invocado, caso necessário, sendo muito interessante acrescentar as permissões de execução a este arquivo. Feito isto, para executar este script, digite:

$ sudo /etc/firewall.sh

Caso este script ainda não tenha as permissões de execução adequadas, o mesmo ainda pode ser executado usando a seguinte instrução:

$ sudo bash /etc/firewall.sh

É possível ainda realizar um debug, ou seja, as linhas do script que estão sendo executadas serão exibidas, para efeito de acompanhamento da execução:

$ sudo bash -x /etc/firewall.sh

11.1.6  Script mais complexo de firewall

O script a seguir tem como configuração padrão bloquear todo e qualquer pacote que não tiver sido habilitado por uma das regras. Caso algum pacote seja bloqueado por este procedimento padrão, este é automaticamente registrado no arquivo /var/log/kern.log

Além disso, neste script é garantida o retorno de uma conexão estabelecida. Ou seja, basta uma regra de iptables para garantir o sentido de entrada e de saída de uma conexão.

V 0.12.0628-2118 Gilberto Martins – [email protected] 313

Page 314: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

#!/bin/bash## Regras do Firewall## Autor: Gilberto Martins

# Localização do IPTABLES# =======================IPT=$(whereis -b iptables | cut -d" " -f 2)

# Interfaces do firewall# ======================IF_EXTERNA="NOME DA INTERFACE EXTERNA DO FIREWALL"IF_USUARIOS="NOME DA INTERFACE DA REDE DE USUARIOS"IF_SERVIDORES="NOME DA INTERFACE DA REDE SERVIDORES"

# Redes de usuarios e servidores# ==============================RD_INTERNA="REDE / MASCARA"RD_SERVIDORES="REDE / MASCARA"

# Redes usadas para atualizacao do UBUNTU# =======================================RD_CANONICAL="91.189.88.0/21"# Bloco da Canonical (Ubuntu)RD_UFPR1="200.17.192.0/19" # Bloco UFPRRD_UFPR2="200.236.16.0/20" # Bloco UFPRRD_USP="200.144.160.0/19" # Bloco USPRD_UNICAMP="143.106.0.0/16" # Bloco Unicamp

# Servidores Internos# ===================IP_SERVPRINCIPAL="IP DO SERVIDOR ONDE ESTAO INSTALADOS OS SERVICOS"IP_WEB=${IP_SERVPRINCIPAL}IP_SMTP=${IP_SERVPRINCIPAL}IP_PROXY=${IP_SERVPRINCIPAL}IP_DNS=${IP_SERVPRINCIPAL}IP_AD="IP DO SERVIDOR ONDE ESTA INSTALADO O ACTIVE DIRECTORY"IP_NTP=${IP_AD}

# IPs no firewall# ===============IP_FW_EXTERNA="IP DA INTERFACE EXTERNA DO FIREWALL"IP_FW_USUARIOS="IP DA INTERFACE DA REDE DE USUARIOS DO FIREWALL"IP_FW_SERVIDORES="IP DA INTERFACE DA REDE DE SERVIDORES DO FIREWALL"

# Remocao de todas as regras do firewall# ======================================$IPT -t filter -F$IPT -t nat -F$IPT -t mangle -F

# Procedimento padrao do firewall: bloquear acesso# ================================================$IPT -P INPUT DROP$IPT -P OUTPUT DROP$IPT -P FORWARD DROP

# Parametros de seguranca em /proc# ================================# A maioria destes ja esta habilitada por default no Ubuntu Serverecho "1" > /proc/sys/net/ipv4/tcp_syncookiesecho "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcastsecho "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responsesecho "0" > /proc/sys/net/ipv4/conf/${IF_EXTERNA}/log_martiansecho "0" > /proc/sys/net/ipv4/conf/${IF_EXTERNA}/accept_redirectsecho "0" > /proc/sys/net/ipv4/conf/${IF_EXTERNA}/accept_source_routeecho "1" > /proc/sys/net/ipv4/ip_forward

# Habilita retorno de conexoes previamente aceitas

V 0.12.0628-2118 Gilberto Martins – [email protected] 314

Page 315: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

# ================================================$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Regras de NAT#==============# Todas as conexoes saem com IP de origem = ${IP_FW_EXTERNA}$IPT -t nat -A POSTROUTING -o ${IF_EXTERNA} -j SNAT --to-source ${IP_FW_EXTERNA}

# ICMP - PING# ===========# PING entre redes internas$IPT -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT$IPT -A FORWARD -p icmp --icmp-type echo-reply -j ACCEPT

# PING rede interna x firewall# ============================$IPT -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT$IPT -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Transito Proxy x Rede Interna#==============================$IPT -A INPUT -p tcp -s ${RD_INTERNA} -d ${IP_PROXY} -m multiport –ports 3128,www -j ACCEPT

# Transito web Proxy x Rede Servidores#=====================================$IPT -A INPUT -p tcp -s ${RD_SERVIDORES} -d ${IP_PROXY} -m multiport --ports 3128,www -j ACCEPT

# Transito web originado no Firewall, para Internet#==================================================$IPT -A OUTPUT -p tcp -s ${IP_FW_EXTERNA} -m multiport --ports www,http-alt,https -j ACCEPT

# Acesso ao DHCP (instalado no Firewall), vindo da rede interna# =============================================================$IPT -A INPUT -p udp -i ${IF_USUARIOS} --sport bootpc --dport bootps -j ACCEPT

# Atualizacao do Ubuntu# =====================$IPT -A FORWARD -p tcp -d ${RD_CANONICAL} --dport www -j ACCEPT$IPT -A FORWARD -p tcp -d ${RD_USP} --dport www -j ACCEPT$IPT -A FORWARD -p tcp -d ${RD_UFPR1} --dport www -j ACCEPT$IPT -A FORWARD -p tcp -d ${RD_UFPR2} --dport www -j ACCEPT$IPT -A FORWARD -p tcp -d ${RD_UNICAMP} --dport www -j ACCEPT

# Acesso a DNS# ============$IPT -A INPUT -p tcp -m multiport --ports domain -j ACCEPT$IPT -A INPUT -p udp -m multiport --ports domain -j ACCEPT$IPT -A OUTPUT -p tcp -m multiport --ports domain -j ACCEPT$IPT -A OUTPUT -p udp -m multiport --ports domain -j ACCEPT$IPT -A OUTPUT -p tcp -s 127.0.0.1 -m multiport --ports 953 -j ACCEPT$IPT -A INPUT -p tcp -s 127.0.0.1 -m multiport --ports 953 -j ACCEPT

# Acesso SSH da Rede Interna para a rede Servidores# =================================================$IPT -A FORWARD -p tcp -s ${RD_INTERNA} -d ${RD_SERVIDORES} --dport ssh -j ACCEPT

# Acesso SSH da Rede Interna para o Firewall# ==========================================$IPT -A INPUT -p tcp -i ${IF_USUARIOS} --dport ssh -j ACCEPT

V 0.12.0628-2118 Gilberto Martins – [email protected] 315

Page 316: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

# Acesso SSH da Rede Interna para a Rede Externa# ==============================================$IPT -A FORWARD -p tcp -i ${IF_EXTERNA} --dport ssh -j ACCEPT

# Acesso SSH do Firewall para a Rede Externa# ==========================================$IPT -A OUTPUT -p tcp -o ${IF_EXTERNA} --dport ssh -j ACCEPT

# Acesso ao Servidor NTP vindo da Rede Interna# ============================================$IPT -A FORWARD -p udp -s ${RD_INTERNA} -d ${IP_NTP} --dport ntp -j ACCEPT

# Acesso ao Servidor NTP vindo do Firewall# ========================================$IPT -A OUTPUT -p udp -s ${IP_FW_SERVIDORES} -d ${IP_NTP} --dport ntp -j ACCEPT

# Log dos pacotes nao tratados - sempre ao final do script# ========================================================$IPT -p all -A FORWARD -j LOG --log-level debug --log-prefix 'DROP FORWARD: '$IPT -p all -A INPUT -j LOG --log-level debug --log-prefix 'DROP INPUT: '$IPT -p all -A OUTPUT -j LOG --log-level debug --log-prefix 'DROP OUTPUT: '

11.1.7  Interrupção

Para remover todas as regras do firewall, podemos digitar os comandos de limpeza de regras manualmente:

$ sudo iptables -t filter -F$ sudo iptables -t nat -F$ sudo iptables -t mangle -F

Note que estes mesmos comandos iptables estão nos arquivos de script apresentados anteriormente.

11.1.8  Listagem das regras

Para saber quais são as regras existentes no firewall podemos executar a seguinte instrução:$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Observe que este comando lista 3 chains, a INPUT, OUTPUT e FORWARD. Não há nenhuma regra definida neste caso. Mas vamos analisar a tabela nat:

$ sudo iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- anywhere anywhere tcp dpt:www redir ports 3128

Chain POSTROUTING (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Vemos a existência de uma regra de redirecionamento (REDIRECT) no canal PREROUTING. Usando a opção -v, é possível ver ainda mais detalhes:

V 0.12.0628-2118 Gilberto Martins – [email protected] 316

Page 317: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Firewall

$ sudo iptables -L -t nat -v Chain PREROUTING (policy ACCEPT 4 packets, 477 bytes) pkts bytes target prot opt in out source destination 0 0 REDIRECT tcp -- eth0 any anywhere anywhere tcp dpt:www redir ports 3128

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination

V 0.12.0628-2118 Gilberto Martins – [email protected] 317

Page 318: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Tópicos Avançados

12  Tópicos Avançados

V 0.12.0628-2118 Gilberto Martins – [email protected] 318

Page 319: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Tópicos Avançados

12.1  Munin  Monitoramento

12.1.1  Introdução

12.1.2  Instalação do servidor

É recomendado que o servidor APACHE2 já esteja instalado.

12.1.3  Instalação do nó

12.1.4  Ativação

12.1.5  Interrupção

12.1.6  Arquivo de Configuração

12.1.7  Configuração do Apache

A instalação do munin no Ubuntu já copia um arquivo de configuração para o apache2, o /etc/apache2/conf.d/munin. Este deve ser adaptado da seguinte forma:

V 0.12.0628-2118 Gilberto Martins – [email protected] 319

Page 320: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Tópicos Avançados

Alias /munin /var/cache/munin/www<Directory /var/cache/munin/www> Order allow,deny# Allow from localhost 127.0.0.0/8 ::1

Allow from all# Options None Options Indexes FollowSymlinks

# This file can be used as a .htaccess file, or a part of your apache# config file.## For the .htaccess file option to work the munin www directory# (/var/cache/munin/www) must have "AllowOverride all" or something # close to that set.#

AuthUserFile /etc/.htpasswd AuthName "Munin" AuthType Basic require valid-user

# This next part requires mod_expires to be enabled.#

# Set the default expiration time for files to 5 minutes 10 seconds from# their creation (modification) time. There are probably new files by# that time. #

<IfModule mod_expires.c> ExpiresActive On ExpiresDefault M310 </IfModule>

</Directory>

Os arquivos criados pelo munin estarão em /var/cache/munin/www. Da forma como o arquivo acima foi construído, fica desnecessário o uso do arquivo .htaccess, mas ainda é preciso criar o arquivo de senhas.

12.1.8  Monitoramento de hosts

A configuração padrão já permite que o host local seja monitorado. As etapas a seguir vão permitir que outros clientes sejam adicionados.

12.1.8.1  Arquivo de configuração do servidor

No arquivo de configuração do servidor é preciso que no mínimo as seguintes linhas estejam presentes:

dbdir /var/lib/muninhtmldir /var/cache/munin/wwwlogdir /var/log/muninrundir /var/run/munin

Além disso, é preciso relacionar os servidores a serem monitorados, no mesmo arquivo:# a simple host tree[lucidserver.dsi.local]

address 10.0.2.15use_node_name yes

[servidor.dsi.local]address 10.0.2.16use_node_name yes

12.1.8.2  Arquivo de configuração do cliente

No arquivo /etc/munin/munin-node.conf é necessário fazer os seguintes ajustes:

V 0.12.0628-2118 Gilberto Martins – [email protected] 320

Page 321: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Tópicos Avançados

#host_name localhost.localdomain

A linha acima deve ser descomentada e nela deve ser declarado o FQDN da máquina

Depois de alguns minutos, o monitoramento já recolheu informação suficiente para ser exibida em tela. Neste exemplo o acesso foi feito a partir de um Internet Explorer em um máquina Windows.

A partir dos links apresentados, é possível analisar mais caraterísticas, como o uso do disco, e todas as outras que estiverem disponíveis na página:

V 0.12.0628-2118 Gilberto Martins – [email protected] 321

Imagem 84: Recursos disponíveis nos servidores configurados

Page 322: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Tópicos Avançados

12.1.9  Monitoramento do host remoto

V 0.12.0628-2118 Gilberto Martins – [email protected] 322

Imagem 85: Gráficos do Munin mostrando o uso do disco

Page 323: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

13  Ferramentas EspeciaisExistem algumas ferramentas especiais que prestam grande ajuda ao administrador, seja para segurança, seja para desenvolvimento de pequenas tarefas, ou outras atividades. Aqui estarão relacionadas algumas que uso com relativa frequência, e algumas outras interessantes que venham a ser sugeridas por leitores deste material.

V 0.12.0628-2118 Gilberto Martins – [email protected] 323

Page 324: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

13.1  NMAP

13.1.1  Introdução

De acordo com o próprio site16, “Nmap ("Network Mapper") is a free and open source (license) utility for network exploration or security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and OS versions) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. It was designed to rapidly scan large networks, but works fine against single hosts. Nmap runs on all major computer operating systems, and official binary packages are avalable for Linux, Windows, and Mac OS X ”

13.1.2  Instalação

Para que o nmap seja instalado, usaremos o aptitude:$ sudo aptitude install nmap

Também é possível instalar usando o apt-get::$ sudo apt-get install nmap

13.1.3  Versão

Neste artigo, estamos usando a versão 4.76$ sudo nmap -VNmap version 4.76 ( http://nmap.org )

13.1.4  Uso simples

Para verificar as possíveis conexões em um host, o nmap pode ser usado da seguinte forma:$ sudo nmap 10.0.2.15Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 07:44 BRTInteresting ports on 10.0.2.15:Not shown: 998 closed portsPORT STATE SERVICE22/tcp open ssh3128/tcp open squid-http

Percebe-se que as portas abertas neste host são a 22 e a 3128, no protocolo TCP. O padrão é relacionar as portas TCP.

Para relacionar as portas UDP abertas:

16 http://nmap.org/

V 0.12.0628-2118 Gilberto Martins – [email protected] 324

Page 325: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo nmap -sU 10.0.2.15Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 08:33 BRTInteresting ports on 10.0.2.15:Not shown: 998 closed portsPORT STATE SERVICE68/udp open|filtered dhcpc3130/udp open|filtered squid-ipc

Nmap done: 1 IP address (1 host up) scanned in 14.37 seconds

O nmap pode ser usado para levantar portas UDP e TCP:$ sudo nmap -sTU 10.0.2.15

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 08:46 BRTInteresting ports on 10.0.2.15:Not shown: 1996 closed portsPORT STATE SERVICE22/tcp open ssh3128/tcp open squid-http68/udp open|filtered dhcpc3130/udp open|filtered squid-ipc

Nmap done: 1 IP address (1 host up) scanned in 14.50 seconds

13.1.5  Acelerando o NMAP

O nmap usa sempre pacotes ICMP para identificar o host remoto. Caso o mesmo este configurado para não responder estes pacotes, devemos desabilitar esta característica:

$ sudo nmap -P0 172.18.10.1

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 11:32 BRTInteresting ports on 172.18.10.1:Not shown: 998 closed portsPORT STATE SERVICE22/tcp open ssh3128/tcp open squid-http

Nmap done: 1 IP address (1 host up) scanned in 0.27 seconds

13.1.6  Especificando Hosts

É possível especificar os hosts a serem analisados. Neste exemplo, vamos analisar um segmento de rede, limitando pela máscara:

V 0.12.0628-2118 Gilberto Martins – [email protected] 325

Page 326: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo nmap -sTU 172.18.10.0/30

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 09:03 BRTInteresting ports on 172.18.10.1:Not shown: 1996 closed portsPORT STATE SERVICE22/tcp open ssh3128/tcp open squid-http68/udp open|filtered dhcpc3130/udp open|filtered squid-ipc

Interesting ports on 172.18.10.2:Not shown: 1995 closed portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp53/tcp open domain110/tcp open pop353/udp open|filtered domainMAC Address: 08:00:27:94:C8:44 (Cadmus Computer Systems)

Nmap done: 4 IP addresses (2 hosts up) scanned in 1100.98 seconds

Observe que foram analisados os 4 IPs, ou seja, incluindo os endereços de network e broadcast, o que não retorna nenhum resultado. Observe também que o tempo de busca foi muito alto. Se possível, devem ser especificados os hosts a serem analisados:

$ sudo nmap -sTU 172.18.10.1-2

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 09:28 BRTInteresting ports on 172.18.10.1:Not shown: 1996 closed portsPORT STATE SERVICE22/tcp open ssh3128/tcp open squid-http68/udp open|filtered dhcpc3130/udp open|filtered squid-ipc

Interesting ports on 172.18.10.2:Not shown: 1995 closed portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp53/tcp open domain110/tcp open pop353/udp open|filtered domainMAC Address: 08:00:27:94:C8:44 (Cadmus Computer Systems)

Nmap done: 2 IP addresses (2 hosts up) scanned in 1099.38 seconds

13.1.7  Especificando portas

É possível limitar as portas a serem analisadas, agilizando o trabalho. Neste exemplo vamos analisar apenas as portas de 1 a 1024:

V 0.12.0628-2118 Gilberto Martins – [email protected] 326

Page 327: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo nmap -sTU 10.0.2.15 -p 1-1024

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 08:50 BRTInteresting ports on 10.0.2.15:Not shown: 2046 closed portsPORT STATE SERVICE22/tcp open ssh68/udp open|filtered dhcpc

Nmap done: 1 IP address (1 host up) scanned in 14.59 seconds

13.1.8  Identificar a versão do Sistema Operacional

É possível tentar identificar informações sobre o sistema operacional, usando o NMAP:$ sudo nmap -O 172.18.10.1

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 10:36 BRTInteresting ports on 172.18.10.1:Not shown: 998 closed portsPORT STATE SERVICE22/tcp open ssh3128/tcp open squid-httpDevice type: general purposeRunning: Linux 2.6.XOS details: Linux 2.6.17 - 2.6.25Network Distance: 0 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 1.97 seconds

Na máquina usada nestes exemplos, a versão do kernel bate com a descrição:$ uname -r2.6.28-15-generic

13.1.9  Identificar a versão da aplicação

O nmap ainda permite verificar a versão do aplicativo associado a uma determinada porta.$ sudo nmap -sV 172.18.10.1 -p 22,3128

Starting Nmap 4.76 ( http://nmap.org ) at 2009-10-03 11:00 BRT

Interesting ports on 172.18.10.1:PORT STATE SERVICE VERSION22/tcp open ssh (protocol 2.0)3128/tcp open http-proxy Squid webproxy 3.0.STABLE81 service unrecognized despite returning data. If you know the service/version,please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :SF-Port22-TCP:V=4.76%I=7%D=10/3%Time=4AC758E7%P=i686-pc-linux-gnu%r(NULL,2SF:7,SSH-2.0-OpenSSH_5.1p1x20Debian-5ubuntu1rn);

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .Nmap done: 1 IP address (1 host up) scanned in 11.55 seconds

Observe que o aplicativo associado a porta 22 não foi identificado. Devemos sempre que possível colaborar com o desenvolvimento do projeto enviando as informações necessárias para identificação destes serviços:

V 0.12.0628-2118 Gilberto Martins – [email protected] 327

Page 328: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

V 0.12.0628-2118 Gilberto Martins – [email protected] 328

Imagem 86: Envio de Fingerprint do NMAP

Page 329: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

13.2  TcpdumpEsta ferramenta é um sniffer, ou seja, é capaz de interceptar e registrar o tráfego de dados em uma rede de computadores. Conforme o fluxo de dados trafega na rede, o sniffer captura cada pacote e eventualmente decodifica e analisa o seu conteúdo de acordo com o protocolo definido em um RFC ou uma outra especificação.

O sniffing pode ser utilizado com propósitos maliciosos por invasores que tentam capturar o tráfego da rede com diversos objetivos, dentre os quais podem ser citados, obter cópias de arquivos importantes durante sua transmissão, e obter senhas que permitam estender o seu raio de penetração em um ambiente invadido ou ver as conversações em tempo real.17

13.2.1  Instalação

Em geral, o tcpdump já é instalado junto com a distribuição. Mas caso seja necessário instalar a ferramenta, pode ser usado o aptitude:

$ sudo aptitude install tcpdump

Também é possível instalar usando o apt-get:$ sudo apt-get install tcpdump

13.2.2  Verificação da Versão

É sempre importante verificar a versão deste software:$ tcpdump --helptcpdump version 3.9.8libpcap version 1.0.0

13.2.3  Análise completa

Esta é a modalidade mais simples, entretanto a mais complicada de analisar, pois tudo o que passar pela interface vai ser capturado.

17 http://pt.wikipedia.org/wiki/Sniffer

V 0.12.0628-2118 Gilberto Martins – [email protected] 329

Page 330: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo tcpdump -i eth1tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes

11:49:14.664115 IP 172.18.10.2 > 10.0.2.5: ICMP echo request, id 23857, seq 1, length 6411:49:15.662083 IP 172.18.10.2 > 10.0.2.5: ICMP echo request, id 23857, seq 2, length 6411:49:17.669041 IP 10.0.2.15 > 172.18.10.2: ICMP host 10.0.2.5 unreachable, length 9211:49:17.669174 IP 10.0.2.15 > 172.18.10.2: ICMP host 10.0.2.5 unreachable, length 9211:49:19.658813 arp who-has 172.18.10.1 tell 172.18.10.211:49:19.658838 arp reply 172.18.10.1 is-at 08:00:27:76:fa:eb (oui Unknown)11:49:27.179707 IP 172.18.10.2.60113 > 10.0.2.15.ssh: S 750635560:750635560(0) win 5840 <mss 1460,sackOK,timestamp 14286243 0,nop,wscale 2>11:49:27.179799 IP 10.0.2.15.ssh > 172.18.10.2.60113: S 687709422:687709422(0) ack 750635561 win 5792 <mss 1460,sackOK,timestamp 14033085 14286243,nop,wscale 2>11:49:27.180573 IP 172.18.10.2.60113 > 10.0.2.15.ssh: . ack 1 win 1460 <nop,nop,timestamp 14286243 14033085>11:49:27.249265 IP 10.0.2.15.ssh > 172.18.10.2.60113: P 1:40(39) ack 1 win 1448 <nop,nop,timestamp 14033103 14286243>11:49:27.250047 IP 172.18.10.2.60113 > 10.0.2.15.ssh: . ack 40 win 1460 <nop,nop,timestamp 14286261 14033103>11:49:27.250227 IP 172.18.10.2.60113 > 10.0.2.15.ssh: P 1:40(39) ack 40 win 1460 <nop,nop,timestamp 14286261 14033103>11:49:27.250285 IP 10.0.2.15.ssh > 172.18.10.2.60113: . ack 40 win 1448 <nop,nop,timestamp 14033103 14286261>11:49:27.250891 IP 172.18.10.2.60113 > 10.0.2.15.ssh: P 40:832(792) ack 40 win 1460 <nop,nop,timestamp 14286261 14033103>11:49:27.250904 IP 10.0.2.15.ssh > 172.18.10.2.60113: . ack 832 win 1844 <nop,nop,timestamp 14033103 14286261>11:49:27.255508 IP 10.0.2.15.ssh > 172.18.10.2.60113: P 40:824(784) ack 832 win 1844 <nop,nop,timestamp 14033104 14286261>11:49:27.256054 IP 172.18.10.2.60113 > 10.0.2.15.ssh: P 832:856(24) ack 824 win 1852 <nop,nop,timestamp 14286262 14033104>11:49:27.259378 IP 10.0.2.15.ssh > 172.18.10.2.60113: P 824:976(152) ack 856 win 1844 <nop,nop,timestamp 14033105 14286262>11:49:27.262446 IP 172.18.10.2.60113 > 10.0.2.15.ssh: P 856:1000(144) ack 976 win 2244 <nop,nop,timestamp 14286264 14033105>11:49:27.279008 IP 10.0.2.15.ssh > 172.18.10.2.60113: P 976:1696(720) ack 1000 win 2240 <nop,nop,timestamp 14033110 14286264>11:49:27.282804 IP 172.18.10.2.60113 > 10.0.2.15.ssh: P 1000:1016(16) ack 1696 win 2636 <nop,nop,timestamp 14286269 14033110>11:49:27.320379 IP 10.0.2.15.ssh > 172.18.10.2.60113: . ack 1016 win 2240 <nop,nop,timestamp 14033121 14286269>11:49:27.321364 IP 172.18.10.2.60113 > 10.0.2.15.ssh: P 1016:1064(48) ack 1696 win 2636 <nop,nop,timestamp 14286279 14033121>11:49:27.321385 IP 10.0.2.15.ssh > 172.18.10.2.60113: . ack 1064 win 2240 <nop,nop,timestamp 14033121 14286279>11:49:27.321606 IP 10.0.2.15.ssh > 172.18.10.2.60113: P 1696:1744(48) ack 1064 win 2240 <nop,nop,timestamp 14033121 14286279>11:49:27.322157 IP 172.18.10.2.60113 > 10.0.2.15.ssh: P 1064:1128(64) ack 1744 win 2636 <nop,nop,timestamp 14286279 14033121>11:49:27.360396 IP 10.0.2.15.ssh > 172.18.10.2.60113: . ack 1128 win 2240 <nop,nop,timestamp 14033131 14286279>11:49:27.469999 IP 10.0.2.15.ssh > 172.18.10.2.60113: P 1744:1808(64) ack 1128 win 2240 <nop,nop,timestamp 14033158 14286279>11:49:27.508709 IP 172.18.10.2.60113 > 10.0.2.15.ssh: . ack 1808 win 2636 <nop,nop,timestamp 14286326 14033158>

^C29 packets captured29 packets received by filter0 packets dropped by kernel

A captura foi interrompida por um CTRL + C. Mas a quantidade de informação capturada foi muito grande, e envolvendo mais de um protocolo. Vamos examinar alguns detalhes de uma linha de captura:

11:49:27.249265 IP 10.0.2.15.ssh > 172.18.10.2.60113: P 1:40(39) ack 1 win 1448 <nop,nop,timestamp 14033103 14286243>

• 11:49:27 - Esta captura ocorreu às 11:49:27

• 172.18.10.ssh – host de origem na porta 22

• para o host 172.18.10.2, na porta 60113 (10.0.2.15.ssh > 172.18.10.2.60113). Note que o sinal “>” indica o sentido da informação, identificando a origem (ip ao lado esquerdo) e o destino (ip do lado direito).

13.2.4  Análise por protocolo

O tcpdump permite que sejam separadas apenas as informações com um determinado protocolo:$ sudo tcpdump -i eth1 icmptcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes12:08:01.004098 IP 172.18.10.2 > 172.18.10.1: ICMP echo request, id 4914, seq 1, length 6412:08:01.004149 IP 172.18.10.1 > 172.18.10.2: ICMP echo reply, id 4914, seq 1, length 6412:08:02.007291 IP 172.18.10.2 > 172.18.10.1: ICMP echo request, id 4914, seq 2, length 6412:08:02.007375 IP 172.18.10.1 > 172.18.10.2: ICMP echo reply, id 4914, seq 2, length 644 packets received by filter0 packets dropped by kernel

13.2.5  Análise por host

O tcpdump filtra todo o fluxo de pacotes, exibindo apenas os fluxos de/para um determinado host:

V 0.12.0628-2118 Gilberto Martins – [email protected] 330

Page 331: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo tcpdump -i eth1 host 172.18.10.2tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes12:21:30.227172 arp who-has 172.18.10.1 tell 172.18.10.212:21:30.227204 arp reply 172.18.10.1 is-at 08:00:27:76:fa:eb (oui Unknown)12:21:30.228381 IP 172.18.10.2.38691 > 10.0.2.15.ssh: S 828363494:828363494(0) win 5840 <mss 1460,sackOK,timestamp 14767005 0,nop,wscale 2>12:21:30.228478 IP 10.0.2.15.ssh > 172.18.10.2.38691: S 771891908:771891908(0) ack 828363495 win 5792 <mss 1460,sackOK,timestamp 14513848 14767005,nop,wscale 2>12:21:30.228843 IP 172.18.10.2.38691 > 10.0.2.15.ssh: . ack 1 win 1460 <nop,nop,timestamp 14767006 14513848>12:21:30.251659 IP 10.0.2.15.ssh > 172.18.10.2.38691: P 1:40(39) ack 1 win 1448 <nop,nop,timestamp 14513853 14767006>12:21:30.324913 IP 10.0.2.15.ssh > 172.18.10.2.38691: P 1696:1744(48) ack 1064 win 2240 <nop,nop,timestamp 14513872 14767030>12:21:30.325285 IP 172.18.10.2.38691 > 10.0.2.15.ssh: P 1064:1128(64) ack 1744 win 2636 <nop,nop,timestamp 14767030 14513872>12:21:30.364378 IP 10.0.2.15.ssh > 172.18.10.2.38691: . ack 1128 win 2240 <nop,nop,timestamp 14513882 14767030>12:21:30.474862 IP 10.0.2.15.ssh > 172.18.10.2.38691: P 1744:1808(64) ack 1128 win 2240 <nop,nop,timestamp 14513909 14767030>12:21:30.515511 IP 172.18.10.2.38691 > 10.0.2.15.ssh: . ack 1808 win 2636 <nop,nop,timestamp 14767078 14513909>12:21:32.174082 IP 172.18.10.2.38691 > 10.0.2.15.ssh: F 1128:1128(0) ack 1808 win 2636 <nop,nop,timestamp 14767492 14513909>12:21:32.185605 IP 10.0.2.15.ssh > 172.18.10.2.38691: F 1808:1808(0) ack 1129 win 2240 <nop,nop,timestamp 14514337 14767492>12:21:32.186291 IP 172.18.10.2.38691 > 10.0.2.15.ssh: . ack 1809 win 2636 <nop,nop,timestamp 14767495 14514337>

13.2.6  Análise por host de origem

Também podem ser considerados apenas os pacotes originados de um determinado host:$ sudo tcpdump -i eth1 src host 172.18.10.2tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes12:26:05.373601 IP 172.18.10.2.60050 > 10.0.2.15.ssh: S 846327327:846327327(0) win 5840 <mss 1460,sackOK,timestamp 14835791 0,nop,wscale 2>12:26:05.375166 IP 172.18.10.2.60050 > 10.0.2.15.ssh: . ack 796459270 win 1460 <nop,nop,timestamp 14835792 14582634>12:26:05.404084 IP 172.18.10.2.60050 > 10.0.2.15.ssh: . ack 40 win 1460 <nop,nop,timestamp 14835799 14582641>12:26:05.404401 IP 172.18.10.2.60050 > 10.0.2.15.ssh: P 0:39(39) ack 40 win 1460 <nop,nop,timestamp 14835799 14582641>12:26:05.404693 IP 172.18.10.2.60050 > 10.0.2.15.ssh: P 39:831(792) ack 40 win 1460 <nop,nop,timestamp 14835799 14582642>12:26:05.414325 IP 172.18.10.2.60050 > 10.0.2.15.ssh: P 831:855(24) ack 824 win 1852 <nop,nop,timestamp 14835802 14582642>12:26:05.419682 IP 172.18.10.2.60050 > 10.0.2.15.ssh: P 855:999(144) ack 976 win 2244 <nop,nop,timestamp 14835803 14582645>12:26:05.442581 IP 172.18.10.2.60050 > 10.0.2.15.ssh: P 999:1015(16) ack 1696 win 2636 <nop,nop,timestamp 14835809 14582650>12:26:05.481401 IP 172.18.10.2.60050 > 10.0.2.15.ssh: P 1015:1063(48) ack 1696 win 2636 <nop,nop,timestamp 14835819 14582661>12:26:05.482254 IP 172.18.10.2.60050 > 10.0.2.15.ssh: P 1063:1127(64) ack 1744 win 2636 <nop,nop,timestamp 14835819 14582661>12:26:05.657399 IP 172.18.10.2.60050 > 10.0.2.15.ssh: . ack 1808 win 2636 <nop,nop,timestamp 14835863 14582695>12:26:07.137969 IP 172.18.10.2.60050 > 10.0.2.15.ssh: F 1127:1127(0) ack 1808 win 2636 <nop,nop,timestamp 14836230 14582695>12:26:07.155652 IP 172.18.10.2.60050 > 10.0.2.15.ssh: . ack 1809 win 2636 <nop,nop,timestamp 14836237 14583077>

13.2.7  Análise por host de destino

Também podem ser considerados apenas os pacotes destinados a um determinado host:

V 0.12.0628-2118 Gilberto Martins – [email protected] 331

Page 332: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo tcpdump -i eth1 dst host 172.18.10.2tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes12:32:19.305847 IP 10.0.2.15.ssh > 172.18.10.2.39888: S 2372340412:2372340412(0) ack 2427047522 win 5792 <mss 1460,sackOK,timestamp 14676117 14929275,nop,wscale 2>12:32:19.328715 IP 10.0.2.15.ssh > 172.18.10.2.39888: P 1:40(39) ack 1 win 1448 <nop,nop,timestamp 14676123 14929275>12:32:19.329791 IP 10.0.2.15.ssh > 172.18.10.2.39888: . ack 40 win 1448 <nop,nop,timestamp 14676123 14929281>12:32:19.330230 IP 10.0.2.15.ssh > 172.18.10.2.39888: . ack 832 win 1844 <nop,nop,timestamp 14676123 14929281>12:32:19.334843 IP 10.0.2.15.ssh > 172.18.10.2.39888: P 40:824(784) ack 832 win 1844 <nop,nop,timestamp 14676124 14929281>12:32:19.338541 IP 10.0.2.15.ssh > 172.18.10.2.39888: P 824:976(152) ack 856 win 1844 <nop,nop,timestamp 14676125 14929283>12:32:19.357663 IP 10.0.2.15.ssh > 172.18.10.2.39888: P 976:1696(720) ack 1000 win 2240 <nop,nop,timestamp 14676130 14929284>12:32:19.400778 IP 10.0.2.15.ssh > 172.18.10.2.39888: . ack 1016 win 2240 <nop,nop,timestamp 14676141 14929289>12:32:19.401398 IP 10.0.2.15.ssh > 172.18.10.2.39888: . ack 1064 win 2240 <nop,nop,timestamp 14676141 14929299>12:32:19.401672 IP 10.0.2.15.ssh > 172.18.10.2.39888: P 1696:1744(48) ack 1064 win 2240 <nop,nop,timestamp 14676141 14929299>12:32:19.440774 IP 10.0.2.15.ssh > 172.18.10.2.39888: . ack 1128 win 2240 <nop,nop,timestamp 14676151 14929299>12:32:19.549474 IP 10.0.2.15.ssh > 172.18.10.2.39888: P 1744:1808(64) ack 1128 win 2240 <nop,nop,timestamp 14676178 14929299>12:32:21.239682 IP 10.0.2.15.ssh > 172.18.10.2.39888: F 1808:1808(0) ack 1129 win 2240 <nop,nop,timestamp 14676599 14929754>

13.2.8  Análise por porta

Podemos filtrar apenas os pacotes destinados ou originados a uma porta:

V 0.12.0628-2118 Gilberto Martins – [email protected] 332

Page 333: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo tcpdump -i eth0 port 25tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

12:42:02.498225 IP 172.18.10.1.58877 > nome.toshiba.xyz.smtp: S 2913014946:2913014946(0) win 5840 <mss 1460,sackOK,timestamp 14821915 0,nop,wscale 2>12:42:02.498281 IP nome.toshiba.xyz.smtp > 172.18.10.1.58877: S 2975725661:2975725661(0) ack 2913014947 win 5792 <mss 1460,sackOK,timestamp 15075073 14821915,nop,wscale 2>12:42:02.499083 IP 172.18.10.1.58877 > nome.toshiba.xyz.smtp: . ack 1 win 1460 <nop,nop,timestamp 14821915 15075073>12:42:02.582146 IP nome.toshiba.xyz.smtp > 172.18.10.1.58877: P 1:26(25) ack 1 win 1448 <nop,nop,timestamp 15075094 14821915>12:42:02.582729 IP 172.18.10.1.58877 > nome.toshiba.xyz.smtp: . ack 26 win 1460 <nop,nop,timestamp 14821936 15075094>12:42:06.262927 IP 172.18.10.1.58877 > nome.toshiba.xyz.smtp: P 1:7(6) ack 26 win 1460 <nop,nop,timestamp 14822855 15075094>12:42:06.262962 IP nome.toshiba.xyz.smtp > 172.18.10.1.58877: . ack 7 win 1448 <nop,nop,timestamp 15076014 14822855>12:42:06.264862 IP nome.toshiba.xyz.smtp > 172.18.10.1.58877: P 26:41(15) ack 7 win 1448 <nop,nop,timestamp 15076015 14822855>12:42:06.265563 IP nome.toshiba.xyz.smtp > 172.18.10.1.58877: F 41:41(0) ack 7 win 1448 <nop,nop,timestamp 15076015 14822855>12:42:06.265822 IP 172.18.10.1.58877 > nome.toshiba.xyz.smtp: . ack 41 win 1460 <nop,nop,timestamp 14822857 15076015>12:42:06.267311 IP 172.18.10.1.58877 > nome.toshiba.xyz.smtp: F 7:7(0) ack 42 win 1460 <nop,nop,timestamp 14822857 15076015>12:42:06.267327 IP nome.toshiba.xyz.smtp > 172.18.10.1.58877: . ack 8 win 1448 <nop,nop,timestamp 15076015 14822857>

13.2.9  Análise por porta de origem

Podemos filtrar apenas os pacotes originados a uma porta:$ sudo tcpdump -i eth0 src port 25 > /var/cache/apt/archives/lixo.txttcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

12:46:45.994982 IP nome.toshiba.xyz.smtp > 172.18.10.1.48444: S 3115160828:3115160828(0) ack 3067952628 win 5792 <mss 1460,sackOK,timestamp 15145947 14892789,nop,wscale 2>12:46:46.153650 IP nome.toshiba.xyz.smtp > 172.18.10.1.48444: P 1:26(25) ack 1 win 1448 <nop,nop,timestamp 15145987 14892790>12:46:49.974549 IP nome.toshiba.xyz.smtp > 172.18.10.1.48444: . ack 7 win 1448 <nop,nop,timestamp 15146942 14893784>12:46:49.974853 IP nome.toshiba.xyz.smtp > 172.18.10.1.48444: P 26:41(15) ack 7 win 1448 <nop,nop,timestamp 15146942 14893784>12:46:49.975450 IP nome.toshiba.xyz.smtp > 172.18.10.1.48444: F 41:41(0) ack 7 win 1448 <nop,nop,timestamp 15146942 14893784>12:46:49.975734 IP nome.toshiba.xyz.smtp > 172.18.10.1.48444: . ack 8 win 1448 <nop,nop,timestamp 15146943 14893784>

13.2.10  Análise por porta de destino

Podemos filtrar apenas os pacotes destinados a uma porta:

V 0.12.0628-2118 Gilberto Martins – [email protected] 333

Page 334: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo tcpdump -i eth0 dst port 25 > /var/cache/apt/archives/lixo.txttcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

12:50:59.374982 IP 172.18.10.1.50560 > nome.toshiba.xyz.smtp: S 2756718190:2756718190(0) win 5840 <mss 1460,sackOK,timestamp 14956134 0,nop,wscale 2>12:50:59.375587 IP 172.18.10.1.50560 > nome.toshiba.xyz.smtp: . ack 2797735875 win 1460 <nop,nop,timestamp 14956134 15209292>12:50:59.474157 IP 172.18.10.1.50560 > nome.toshiba.xyz.smtp: . ack 26 win 1460 <nop,nop,timestamp 14956159 15209317>12:51:01.994436 IP 172.18.10.1.50560 > nome.toshiba.xyz.smtp: P 0:6(6) ack 26 win 1460 <nop,nop,timestamp 14956789 15209317>12:51:01.995128 IP 172.18.10.1.50560 > nome.toshiba.xyz.smtp: . ack 41 win 1460 <nop,nop,timestamp 14956789 15209947>12:51:01.995493 IP 172.18.10.1.50560 > nome.toshiba.xyz.smtp: F 6:6(0) ack 42 win 1460 <nop,nop,timestamp 14956789 15209947>

13.2.11  Observando o conteúdo dos pacotes

É possível ainda visualizar os pacotes capturados:

V 0.12.0628-2118 Gilberto Martins – [email protected] 334

Page 335: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

$ sudo tcpdump -X -i eth0 dst port 25 > /var/cache/apt/archives/lixo.txttcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

12:56:46.024958 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: S 3886972390:3886972390(0) win 5840 <mss 1460,sackOK,timestamp 15042797 0,nop,wscale 2>

0x0000: 4510 003c f50b 4000 4006 d978 ac12 0a01 E..<..@[email protected]: ac12 0a02 bc8f 0019 e7ae 7de6 0000 0000 ..........}.....0x0020: a002 16d0 18fd 0000 0204 05b4 0402 080a ................0x0030: 00e5 88ed 0000 0000 0103 0302 ............

12:56:46.025349 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: . ack 3943074925 win 1460 <nop,nop,timestamp 15042797 15295955>

0x0000: 4510 0034 f50c 4000 4006 d97f ac12 0a01 E..4..@[email protected]: ac12 0a02 bc8f 0019 e7ae 7de7 eb06 8c6d ..........}....m0x0020: 8010 05b4 7a9f 0000 0101 080a 00e5 88ed ....z...........0x0030: 00e9 65d3 ..e.

12:56:46.027064 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: . ack 26 win 1460 <nop,nop,timestamp 15042797 15295955>

0x0000: 4510 0034 f50d 4000 4006 d97e ac12 0a01 E..4..@.@..~....0x0010: ac12 0a02 bc8f 0019 e7ae 7de7 eb06 8c86 ..........}.....0x0020: 8010 05b4 7a86 0000 0101 080a 00e5 88ed ....z...........0x0030: 00e9 65d3 ..e.

12:57:02.683395 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: P 0:29(29) ack 26 win 1460 <nop,nop,timestamp 15046962 15295955>

0x0000: 4510 0051 f50e 4000 4006 d960 ac12 0a01 E..Q..@.@..`....0x0010: ac12 0a02 bc8f 0019 e7ae 7de7 eb06 8c86 ..........}.....0x0020: 8018 05b4 9734 0000 0101 080a 00e5 9932 .....4.........20x0030: 00e9 65d3 6d61 696c 2066 726f 6d3a 7465 ..e.mail.from:te0x0040: 7374 6540 746f 7368 6962 612e ste@toshiba.

12:57:02.684026 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: . ack 40 win 1460 <nop,nop,timestamp 15046963 15300120>

0x0000: 4510 0034 f50f 4000 4006 d97c ac12 0a01 E..4..@.@..|....0x0010: ac12 0a02 bc8f 0019 e7ae 7e04 eb06 8c94 ..........~.....0x0020: 8010 05b4 59d0 0000 0101 080a 00e5 9933 ....Y..........30x0030: 00e9 7618 ..v.

12:57:04.527671 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: P 29:35(6) ack 40 win 1460 <nop,nop,timestamp 15047423 15300120>

0x0000: 4510 003a f510 4000 4006 d975 ac12 0a01 E..:..@[email protected]: ac12 0a02 bc8f 0019 e7ae 7e04 eb06 8c94 ..........~.....0x0020: 8018 05b4 7002 0000 0101 080a 00e5 9aff ....p...........0x0030: 00e9 7618 7175 6974 0d0a ..v.quit..

12:57:04.528172 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: . ack 55 win 1460 <nop,nop,timestamp 15047423 15300581>

0x0000: 4510 0034 f511 4000 4006 d97a ac12 0a01 E..4..@[email protected]: ac12 0a02 bc8f 0019 e7ae 7e0a eb06 8ca3 ..........~.....0x0020: 8010 05b4 5622 0000 0101 080a 00e5 9aff ....V"..........0x0030: 00e9 77e5 ..w.

12:57:04.529123 IP 172.18.10.1.48271 > nome.toshiba.xyz.smtp: F 35:35(0) ack 56 win 1460 <nop,nop,timestamp 15047424 15300581>

0x0000: 4510 0034 f512 4000 4006 d979 ac12 0a01 E..4..@[email protected]: ac12 0a02 bc8f 0019 e7ae 7e0a eb06 8ca4 ..........~.....0x0020: 8011 05b4 561f 0000 0101 080a 00e5 9b00 ....V...........0x0030: 00e9 77e5 ..w.

13.2.12  Capturar pacotes para visualização com wireshark

Wireshark é um sniffer desenvolvido para interface gráfica, oferecendo excelentes recursos para análise de pacotes. É possível usar tcpdump para capturar pacotes no servidor e grava-los para interpretação em outro host onde o wireshark estará instalado.

$ sudo tcpdump -s 0 -i eth0 -w ~/pacotes.txttcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes18 packets received by filter0 packets dropped by kernel

teste@servidor01:~$ file ~/pacotes.txt/home/teste/pacotes.txt: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 65535)

V 0.12.0628-2118 Gilberto Martins – [email protected] 335

Page 336: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Ferramentas Especiais

V 0.12.0628-2118 Gilberto Martins – [email protected] 336

Page 337: Apostila AdministracaoRedesLinux - GILBERTO

Administração de Redes Linux Histórico

14  HistóricoA partir de 07/02/2009, relaciono as colaborações que recebi na construção deste material.

• 07/02/2009 – Paulo (Aluno da Conhecimento Digital / AL) aponta erro no expressão regular usado na limpeza de comentários no capítulo do squid;

• 14/2/2008 – Marcelo Dias e Thiago Lino (Aluno da Conhecimento Digital / AL) apontam erro no forwarder do bind.• 14/2/2008 – Marcelo Dias e Thiago Lino (Aluno da Conhecimento Digital / AL) apontam falta de configurações na

autenticação do SQUID

Correção de erros de digitação• Aluno da Conhecimento Digital / AL: Jonatas Ferro, Fernando Oliveira, Eduardo Gusmão• IGESP / AL: Lourenço Alves• Wilson Wanderlei – Aluno da Conhecimento Digital / AL

O processo de limpeza do material começou em 25/02/2011• 13/08/2011 – Inclusão da criação de VM no Virtualbox

V 0.12.0628-2118 Gilberto Martins – [email protected] 337