Anda di halaman 1dari 166

UNISUL

Universidade do Sul de Santa Catarina

Servidores Linux,
O curso...

African Penguin Spheniscus demersus

Fernando Cerutti

Uma versão não autorizada, não recomendada e não certificada por organismo algum.
UNISUL
Curso de Servidores Linux

1. lntrodução (ou: como falar de nada para alguém com insônia).......... 6


1.1. ................................................................................................ Unix 6
1.2. ............................................................................ Histórico do Unix 6
1.3. ............................................................................... O que é Linux? 7
1.4. ........................................................................... Histórico do Linux 8
1.5. ......................................................................... Distribuições Linux 8
1.6. .............................................. Conceitos e caracteristicas do Linux 10
2. .............................................................................................. lnstalação 11
2.1. ............................................................................ Cuidados Iniciais 11
2.2. ................................................................Disquete de Inicialização 11
2.3. ...................................................... Informações sobre o Hardware 12
2.4. ....................................................................Métodos de instalação 13
2.4.1. ............................................................ Instalação Via CDROM 13
2.4.2. ................................................................... Instalação Via FTP 13
2.4.3. .................................................................Instalação Via HTTP 13
2.4.4. ...................................................................Instalação Via NFS 13
2.4.5. ......................................................Instalação Via Disco Rígido 13
2.5. .................................................................... Disquete Suplementar 14
2.6. .....................................................................Classes de instalação 14
2.6.1. .....................................................Classe Estação de Trabalho 14
2.6.2. ........................................................................ Classe Servidor 15
2.6.3. ...............................................................Classe Personalizada 15
2.7. ........................................................................................ Partições 15
2.7.1. ................................ Partições e outros sistemas operacionais 19
2.8. .................................................................................. Boot Loaders 19
2.8.1. ..................................................................Limitações da BIOS 22
2.9. .................................................................. Processo de instalação 22
2.9.1. ......................................... Iniciando o Programa de Instalação 23
2.9.2. ............................................................. Escolhendo um idioma 24
2.9.3. ....................................................... Selecionando Um Teclado 24
2.9.4. ................................................................... Suporte a PCMCIA 24
2.9.5. ...................................Selecionando um Método de Instalação 24
2.9.6. ............................................................ Instalando Via CDROM 24
2.9.7. ........................................................ Instalando ou Atualizando 24
2.10.................................................................... Classes de Instalação 25
2.10.1. .......................................................................Suporte a SCSI 25
2.10.2. ..........................................Criando as Partições para o Linux 25
2.10.3. ................................................. Inicializando a Área de Troca 26
2.10.4. ....................................................... Formatando as Partições 26
2.10.5. ....................................... Selecionando e Instalando Pacotes 26
2.10.6. ............................................................ Instalação de Pacotes 26
2.10.7. .........................................................Finalizando a Instalação 27

Fernando Cerutti
UNISUL
Curso de Servidores Linux

2.10.8. ....................................... Adicionando Opções à Inicialização 29


2.10.9. ..................................... Selecionando Partições Inicializáveis 29
3. ................................................... Inicializando e Encerrando o Sistema 30
3.1. .................................................................................... Inicialização 31
3.2. ................................................................................. Encerramento 32
3.3. ................................................................................Reinicialização 32
3.4. ................................................................................Login e Logout 33
3.4.1. .........................................................................................Login 33
3.4.2. ...................................................................................... Logout 34
4. ...................................................................................... Documentação 34
4.1. .....................................................................Fontes de lnformação 34
4.1.1. ........................................................ Páginas de Manual (man) 34
4.1.2. ............................................................................. Páginas Info 35
4.1.3. ...................................................... Documentação de Pacotes 35
4.1.4. ................................................................... HOWTO's e FAQ's 35
5. ..............................................................Organização do Sistema Linux 36
5.1. ............................................................................................. Kernel 36
5.2. ............................................................................................... Shell 36
5.3. ........................................................ Variáveis ambientais do Bash 38
6. ........................................................................................................... VI 39
7. ..............................................................................Sistema de Arquivos 41
7.1. ........................................................................Principais Diretórios 43
7.2. .......................................................................... Tipos de arquivos: 43
7.2.1. ...................................................................... Arquivos comuns 43
7.2.2. .................................................................................. Diretórios 43
7.2.3. ....................................................................Arquivos especiais 44
7.2.4. ........................................................................... Arquivos Pipe 44
7.3. ........................................................................ Nomes de Arquivos 44
7.3.1. ................................................................... Caracteres Válidos 44
7.3.2. ........................................................................ Case Sensitivity 44
7.3.3. .................................................................................. Tamanho 44
7.3.4. ................................................................................. Unicidade 45
7.3.5. .................................................................. Nomes Reservados 45
7.3.6. ................................................................ Nomes de Caminhos 45
7.4. .......................................................................................Processos 46
7.4.1. ........................................Comandos para controlar processos 46
7.4.2. ........................................................Foreground e Background 47
7.5. ................................................................ Arquivos de Inicialização 48
7.5.1. ....................................... Arquivos de inicialização do Sistema 48
7.5.2. ............................................................................ System V Init 50
7.5.3. ............. Utilitários para Configuração dos Níveis de Execução 54
8. ............................................................................................. Comandos 56
8.1. ........................................................Alterando a Senha do Usuário 56

Fernando Cerutti
UNISUL
Curso de Servidores Linux

8.2. .........................................................................Comandos Básicos 57


8.2.1. ............................................................................Pipes (Dutos) 59
8.2.2. ................................................................... Teclas de Controle 60
9. ................................................................ DNS - Domain Name System 62
9.1. ........................................................................................... História 62
9.2. ....................................Formato dos domínios (Espaço de nomes) 64
9.3. ....................................................................................... Conceitos 66
9.3.1. ..................................................................................Resolvers 66
9.3.2. ............................................................................. Zona (zone): 67
9.3.3. ................................................................... Domínio (Domain): 67
9.4. ................................................. Hierarquia organizacional do DNS 71
9.4.1. ......................................................................... domínio ARPA: 71
9.4.2. .... Domínios genéricos (generic top-level domains, ou gTLDs) 73
9.4.3. .............................................................. geographical domains 74
9.5. ....................................................................... Dinâmica do serviço 75
10. .......................................................Instalação e configuração do Bind 80
10.1..............................................................................Versão do BIND 80
10.2.................................................................... Tipos de configuração 81
10.2.1. .....................................Um servidor DNS somente de Cache 83
10.2.2. ............................................................. Estrutura de arquivos 83
10.2.3. .......................................................................... /etc/host.conf 83
10.2.4. ................................................................................ /etc/hosts 83
10.2.5. ....................................................................... /etc/resolv.conf 83
10.2.6. ...................................................................... /etc/named.conf 83
10.3.............................................................. Inicialização dos serviços: 86
10.4.................................................................................Servidor slave 86
10.5.............................................................................. Servidor master 86
10.5.1. .........................................................Arquivo /etc/named.conf 86
10.5.2. ............................................... Arquivo /var/named/linux.zone 87
10.5.3. .......................................... Arquivo /var/named/linux.revzone 88
10.6.......................................................................... Erros e problemas 88
10.7............................................................ Ferramentas de verificação 89
10.7.1. .........................................................................................host 89
10.7.2. ........................................................................... NSLOOKUP 90
10.7.3. ................................................................................... WHOIS 92
11. ........................................................................................HTTP Server 99
11.1.....................................................................................Comando 2 100
11.2.....................................................................................Comando 3 100
11.3...........................................................................................passo 4 101
11.4.......................................................................................... Passo 5 103
11.5.......................................................................................... Passo 6 104
11.6............................................................................Diretórios virtuais 104
11.7................................................................................... Virtual Hosts 104

Fernando Cerutti
UNISUL
Curso de Servidores Linux

11.8............................ Autenticação, Autorização e controle de acesso 106


11.9......................................................................... O Apache e o PHP 110
11.10...................................................................O Apache e o MySQL 113
11.11............................................................ A monitoração do Apache 115
11.11.1. ............................................................... SERVER-STATUS 115
11.12...................................................... Os arquivos de log do apache 116
12. .............................................................Servidor de Correio Eletrônico 118
12.1...................................................................................... Introdução 118
12.2...................................................................MUA - Mail User Agent 118
12.3............................................................MTA - Mail Transport Agent 119
12.4.....................................................Partes importantes do Sendmail 120
12.5........................................................................FILA de ENTREGA: 121
12.6.................................................................................... Inicialização 121
12.7....................................................................... Modos de Execução 122
12.8................................................................. arquivo de configuração 123
12.9..............................................................Instalação e Configuração 126
12.9.1. ...................................................... Instalação dos Programas 126
12.10....................................... Instalação Suporte ao formato NEWDB 127
12.11......................................................... Criação Arquivo sendmail.cf 129
12.12.......................................................configuração do virtusertable. 136
12.13........................................................... Interação DNS x Sendmail 139
12.14...................................................................... Segurança precaria 141
12.15............................................................. POP Post Office Protocol 142
12.16..................................................................................... Instalação 143
12.17..................................IMAP - Internet Messsage Access Protocol 144
12.18..........................................................................................Aliases 145
12.19....................................................................... Fila de Mensagens 145
12.20.................................. Regras de Relaying Deny - Sendmail 8.8.x 146
12.21................................................Evitando comandos para porta 25 155
12.22........................................................................................... SPAM 157

Fernando Cerutti
UNISUL
Curso de Servidores Linux

1.lntrodução (ou: como falar de nada para alguém com


insônia)

1.1. Unix
Vertentes, tendências, lendas sobre o cara.

O Unix é um sistema operacional multiusuário e multitarefa. Diversos


usuários podem ter diversas tarefas executando concorrentemente. O Unix foi um
sistema desenvolvido desde o inicio para ser independente de máquina e não
especifico a apenas algum tipo de hardware. O Unix é também um ambiente de
desenvolvimento de software. Foi projetado para funcionar neste tipo de ambiente.

1.2. Histórico do Unix


Foi desenvolvido pela AT&T Bell Labs em Murray HiLi, NJ, um dos
maiores centros de pesquisa do mundo (o mundo, como nós sabemos, nesse caso
resume-se ao hemisfério norte do planeta).
Os caras criaram a coisa em 1969. Essa deve ser considerada a primeira
vertente do Unix (ATT). Em 1976 o SO estava na versão 6 (criada em 75) e começou
a ser vendido: U$ 100 para as uniersidades e U$21.000 para o resto do mundo
Em 1977, a Universidade de Berkeley licenciou a versão 6 e originou-se a
segunda vertente: a BSD (Berkeley Software Distribution).
Daí em diante, temos:

UNIX

ATT BSD
(System III e V)

Solaris IRIX (Silicon


SunOS FreeBSD
Graphycs)
OpenBSD
HP-UX SCO
Linux
Interface de DEC-OSF
programação ATT
Kernel e Adm BSD

• Surgiu em um ambiente onde a maioria dos trabalhos em computador eram


alimentados em sistemas batch. AIX
• Foi desenvolvido por pesquisadores que precisavam de ferramentas para suportar

Fernando Cerutti 6
UNISUL
Curso de Servidores Linux

os seus projetos e colaboradores.


• Unix possibilitou a um grupo de projetistas trabalhando em conjunto compartilhar
dados e programas.

• O Unix tornou-se popular para programas científicos em universidades

• A AT&T começou a distribuir versões standard em código fonte (Version 6 1975-


Version 7 1978 - System III 1981 ).

1984 . A Universidade da California em Berkeley adicionou atualizaç~es


Importantes e Criou o Berkeley Standard Distribution (BSD). Muitas caracteristicas do
BSD foram incorporadas à nova versão AT&T System V . O Unix tornou-se o sistema
preferencial para workstations cientificas e de engenharia

1980's - .1990's . Um comitê do IEEE iniciou o desenvolvimento de uma


especlficação para um sistema operacional portável (Portable Operating System)
baseado em Unix (POSIX)
O Unix possui uma concha que o protege dos usuários. E que também
protege o usuário do Unix, que é um cara perigoso, pode formatar o cérebro de forma
irreversível.

Figura 1-1 Relações entre Kernel, Shell, Utilities, e Aplicações


O shell starta os programas e, em alguns casos (cat, ls, vi) deixa por conta
da aplicação a interpretação da vontade do usuário.

1.3. O que é Linux?


O Linux é um sistema "Unix-like" de distribuição livre para PC's baseados em
processadores Intel 386/486/Pentium.. É uma implementação independente da

Fernando Cerutti 7
UNISUL
Curso de Servidores Linux

especificação POSIX, com a qual todas as versões do Unix padrão (true Unix) estão
convencionadas.. O Linux foi primeiramente desenvolvido para processadores Intel,
mas atualmente também roda em computadores DEC Alpha, SUN Sparc, M68000
(Atari e Amiga), MIPS e PowerPC Apple e IBM). O Linux foi escrito complemente 'from
scratch'. Não há código proprietário em seu interior . O Linux está disponível na forma
de código objeto, bem como em código fonte por meio de centenas de sites FTP . O
Linux pode ser livremente distribuido nos termos da GNU General Public License. A
maioria dos programas rodando em Linux são freeware genéricos para Unix, muitos
provenientes do proleto GNU . Alguns benchmarks foram executados em sistemas
486 com Linux, julgando-os comparávels com workstations médias da Sun e da
Digital. O Linux está sendo usado hoje em dia por milhões de pessoas pelo mundo.
Está sendo usado para desenvolvimento de software, networking (Intranet e Internet),
e mesmo como platafcrma de usuário final. O Linux tem se tornado uma alternativa
efetiva de custo em relação aos demais sistemas existentes.

1.4. Histórico do Linux


O kernel do Linux foi originalmente escrito por Linus Torvalds da
Universidade de Helsinkl, Finlândia, com a ajuda de vários programadores voluntários
através da Internet. Linus Iniciou o kernel como um projeto particular, inspirado em
seu interesse no Minix, um pequeno sistema Unix desenvolvido por Andy
Tannenbaum. Ele se limitou a criar, em suas próprias palavras, "um Minix melhor que
o Minix

Em um dia de outubro de 1991 Linus Torvalds levantou, escovou os


dentes com creme de barbear e anunciou a primeira versão "oficial" do Linux. Versão
0.0.2. Desde então muitos programadores têm respondido ao seu chamado e têm
ajudado a fazer do Linux o Sistema Operacional que é hoje

1.5. Distribuições Linux

Fernando Cerutti 8
UNISUL
Curso de Servidores Linux

Figura 1-2 - Montagem das aplicações em volta do hw e so

Free-lancers, Betas, Outros

Semi-comerciais

Ferramentas Básicas

6 HW
H
6 Kernel
find,
grep

O sistema Operacional que chamamos de "Linux" é de fato um sistema "Unix-like' que


Incorpora o kernel Linux. compilador e utilitários GNU, software BSD. o sistema X
Window para Interface gráfica. e software aplicativo Um sistema Linux, na sua
totalidade, é às vezes chamado "GNU/Linux" devido à sua dependência em software
básico desenvolvido pelo Projeto GNU da Open Softvare Foundation
Criar um sistema Linux completo, do nada, compilando o kernel, útilitários, rotinas de
inicialização e outros softwares, é um trabalho monumental e é melhor deixá-lo para
os autênticos hackers.
Fornecedores como a Red Hat Software e organizações como a Debian fazem este
trabalho para os usuários em geral do Linux. O resultado de compilar um sistema
Linux completo é conhecido como uma Distribuição

Fernando Cerutti 9
UNISUL
Curso de Servidores Linux

As distribuições mais populares são


• Caldera Open Linux
• Deblan GNU/Linux
• Red Hat Linux
• Slackware Linux .
• S u S E Linux
• Mandrake
• Yellow Dog
• Eonova Linux
• Stampede GNU/Linux
• TurboLinux

Em sistemas 386/486 com pouca memória e disco, a maior parte das novidades para
Linux não significa muito O mais importante é poder usar estes sistemas como
roteadores ou outros dispositivos com finalidades especificas Distribuições especiais
tem sido desenvolvidas para atender estas necessidades, como por exemplo o Linux
Router Project-
Existem também Distribuições Linux para diferentes arquiteturas de processador,
como por exemplo
Red Hat (Alpha e SPARC)
Debian (Alpha e M68000)
MkLinux e LinuxPPC (PowerPC)
Suse (PPC, Sparc)

1.5.1. Conectiva Linux

Criada pela Conectiva (Curitiba, PR), foi a primeira distribuição de Linux fora dos
Estados Unidos e Europa

1.6. Conceitos e caracteristicas do Linux


O Linux segue a filosofia do Unix, que pode ser resumida nos seguintes pontos
• Cada programa executa bem uma única tarefa (uma ferramenta = uma função)
• A saida de cada programa pode ser a entrada de outro, combinando ferramentas
simples para executar tarefas complexas.

• Prototipagem: obter um programa pequeno em funcionamento o mais breve


possível e modificá-lo incrementalmente até estar concluido.
• Comandos e mensagens sucintos, reduzindo a digltação e mensagens na tela.

Fernando Cerutti 10
UNISUL
Curso de Servidores Linux

O Linux possui todas as caracteristicas que se pode esperar de um Unix moderno.


como

• Independência de hardware (código escrito em C).


• Software facilmente portado de um computador para outro.
• Ambiente para desenvolvimento de software Multitarefa real.
• Gerenciamento de memória.
• Memória virtual.
• Carga de módulos sob demanda.
• Bibliotecas compartilhadas.
• Suporte a multiprocessamento SMP.
• Rede TCP/IP (incluindo SLIP/PPP/ISDN)
X Window

2. lnstalação
A instalação do Linux nem sempre é calma e saborosa como um sorriso da Mel
Lisboa
2.1. Cuidados Iniciais
Embora a instalação seja um processo direto e simples, gastar algum tempo antes
de comecar a instalação pode facilitar bastante as coisas.

Cuidados que devem ser tomados antes da instalação do Linux:

• Ter acesso aos componentes necessários para a instalação.


• Conhecer a configuração do hardware e informações da rede (topologia e layout)

• Baseando-se nos dois primeiros itens, escolher o método a utilizar na instalação


• Determinar em que local do disco rígido o Linux será instalado
• Ter documentação suficiente para o uso do sistema depois da instalação

2.2. Disquete de Inicialização


Este dlsquete e usado para inicializar o processo de instalação, havendo um tipo
para instalação local e outro para instalação através de rede. Não será necessário
um disquete se a inicialização for diretamente do CD-ROM. Um disquete adicional
com os drivers menos populares deve ser montado. Será necessario um terceiro
disquete suplementar (PCMCIA) caso a instalação seja feita a partir de um CD-ROM
conectado a cartão PCMCtA ou a partir da rede através de um cartão PCMCIA de
rede.

Fernando Cerutti 11
UNISUL
Curso de Servidores Linux

2.3. Informações sobre o Hardware


Estas informações devem ser encontradas na documentação do
computador. É recomendável fazer uma verificação prévia do hardware antes de
prosseguir.
Antes de iniciar o processo de instalação são necessárias algumas informações sobre
o hardware e a rede, tais como:

• Disco rígido
Quantidade e tamanho. Qual é o primário, secundário, etc . Se IDE ou SCSI . Se
IDE se o acesso no modo LBA está habilitado na BIOS

• Memória .
Quantidade de memória instalada

• CDROM.
Se IDE ou SCSI . Se nem IDE nem SCSI qual o fabricante e modelo do CDROM
• Adaptador SCSI
(se presente) . Fabrlcante e modelo

• Placa de Rede (NIC).


Fabricante e modelo

• Mouse
Tipo (serial, PS/Z, bus mouse)
Protocolo (Logitech, MouseMan, etc )
Número de botões
Porta de Comunicação (mouse serlal)

• Video
(se instalando X Window).
Placa de Video.
Fabrtcante e modelo ou chipset.
Quantidade de memória.

• Monitor
Fabricante e modelo.
Taxas de atualização horizontal e vertical suportadas

• Informações da Rede:

• Nome da Maquina.
• Nome do Dominio.
• Endereço IP.

Fernando Cerutti 12
UNISUL
Curso de Servidores Linux

• Netmask . Gateway.
• Servidores DNS

Em muitos sistemas atuais, o Linux será capaz de reconhecer automaticamente uma


série de componentes Mas de qualquer forma é aconselhavel ter os dados acima à
mão

2.4. Métodos de instalação


A instalação pode ser feita de várias formas. Dependendo do método que seja
utilizado serão necessários os disquetes conforme mencionado acima.

2.4.1. Instalação Via CDROM

Quando instalado a partir de uma unidade de CDROM local, os pacotes selecionados


são lidos do CDROM e instalados no disco rígido. Este é o método mais simples e
direto de Instalação e deve ser sempre considerado como a alternativa preferencial,
quando precisamos instalar uma única máquina. Os métodos que utilizam a rede são
mais eficientes para grandes instalações (redes locais com vários clientes)

2.4.2. Instalação Via FTP

Se não há um CD do Linux ou unidade de CD disponível, voce pode fazer duas


coisas:
Peça demissão dessa instituição (aconselhável)
Instale por FTP. Quando instalado via FTP, os pacotes selecionados são baixados da
rede até o computador e são instalados no disco rígido

2.4.3. Instalação Via HTTP

Outra opção é instalar via HTTP. Ao executar uma instalação HTTP, o computador
acessará os pacotes através da rede. Os pacotes selecionados serão então
instalados no disco rígido.

2.4.4. Instalação Via NFS

Caso não haja CD ou unidade de CD, mas se tenha acesso à rede, então a
instalação via NFS (Network File System) pode ser uma alternativa. Nas instalações
via NFS, os pacotes selecionados são fornecidos ao computador através de um
servidor de NFS. Os pacotes serão então instalados no disco rígido

2.4.5. Instalação Via Disco Rígido

Caso nenhum dos métodos anteriores seja aplicável, mas há uma forma de se copiar
os arquivos do sistema para o disco rígido, a instalação pode ser feita a partir do

Fernando Cerutti 13
UNISUL
Curso de Servidores Linux

sistema local. Nesta opção, os pacotes selecionados serão lidos de uma partição do
disco e instalados em outra.

2.5. Disquete Suplementar


Será necessária a criação de um ou mais disquetes suplementares nos casos abaixo:
• Instalação a partir de CDROM conectado a PCMCIA
• Instalação a partir de placa de rede PCMCIA (pcmcia.img)
• Instalação de drivers pouco populares (drivers.img)

Caso os disquetes suplementares sejam necessários, deverão ser gerados a partir


das imagens localizadas no diretório /images do CD do Linux.

2.6. Classes de instalação


O programa de instalação possui classes pré-definidas de instalação:

• Estação de Trabalho
• Servidor
•Personalizada
Estas classes visam:

Simplificar o processo de instalação com perda da flexibilidade de configuração

ou ter toda a flexibilidade com um pouco mais de complexidade.

2.6.1. Classe Estação de Trabalho

A classe Estação de Trabalho é a mais apropriada para os iniciantes no mundo Linux


e que querem travar um primeiro contato. Através de algumas poucas respostas,
pode-se ter o Linux instalado e funcionando em muito pouco tempo.
Esta classe remove todas as partições Linux (e usa todo o espaço livre em disco)
para criar seguintes partições:

• Uma partição de troca (swap) de 64 Mb.


• Uma partição de 16 Mb, montada como /boot, na qual o núcleo do Linux e
arquivos relacionados estarão residindo.
• Uma partição maior (o tamanho exato depende do espaço disponível em disco)
montado como / (barra-root) na qual os demais arquivos serão armazenados.

Esta abordagem de particionamento de disco resulta na mais simples configuração


de sistema de arquivos possível. Serão necessários aproximadamente 600 Mb de
espaço livre em disco para executar a instalação. Caso o sistema tenha também

Fernando Cerutti 14
UNISUL
Curso de Servidores Linux

MS-Windows, esta classe de instalação irá automaticamente configurar o sistema


para dupla Inicialização usando o LILO (Linux Loader)

2.6.2. Classe Servidor

A classe servidor é a mais apropriada quando o sistema tiver a função de um


servidor baseado em Linux, e não for necessária uma configuração detalhada do
mesmo.
Esta classe remove todas as partições existentes no sistema. Ao escolher esta opção
é necessário estar seguro de que todos os dados do disco podem ser removidos.
Quando a instalação for completada, estarão disponíveis as seguintes partições:

• Uma partição de troca de 64 Mb.


• Uma partição de 16 Mb, montada como /boot, na qual o núcleo do Linux e
arquivos relacionados estarão residindo. Uma partição de 256 Mb montada como /
(barra-root)
• Uma partição de no minimo 512 Mb montada como /usr.
• Uma partição de no mínimo 512 Mb montada como /home.
• Uma partição de 256 Mb montada como /var.

Esta abordagem de particionamento de disco resulta em uma flexibilidade razoável


do sistema de arquivos para diversas atividades realizadas pelos servidores.
Serão necessários 1.6 Gb de espaço livre em disco para executar a instalação.

2.6.3. Classe Personalizada


Essa é a dos caras da terra de

Como se pode deduzir a partir do nome, uma instalação de classe Personalizada


proporciona muita flexibilidade. Pode-se ter completo controle sobre os pacotes que
serão instalados no sistema assim como determinar se será usado o LILO para
inicializar o sistema.

2.7. Partições
Para Instalar o Linux é necessário haver espaço disponível no disco rígido, Magda.
[? ], o qual deve estar separado de áreas que possuam outros sistemas
operacionais (DOS, OS/2, Windows. outras versões de Linux, etc.) A forma de
separar estas áreas é dividindo o espaço disponível em áreas distintas chamadas
partições. Cada partição pode ser acessada como se fosse um disco totalmente
diferente. Cada partição tem um tipo de file system que indica como os dados são
armazenados. O Linux deve ser Instalado em uma ou mais partições que tenham o
tipo igual a Linux Nativo O Linux requer ainda uma partição de troca, a qual tem o
tipo Linux Swap. Isso significa que uma instalação do Linux requer pelo menos duas
partições.

Fernando Cerutti 15
UNISUL
Curso de Servidores Linux

Teoria das partições


As partições de um disco tem uma relação muito íntima com a segurança. As
partições são áreas do HD reservadas para os File Systems.
Um HD pode ser formado por uma ou mais placas:

Podemos imaginar uma dessas bolachas como um disco antigo de vinil, com círculos
concentricos. Os espaços entre os círculos são as trilhas (tracks)

Fernando Cerutti 16
UNISUL
Curso de Servidores Linux

As trilhas são divididas em partes menores, chamados setores.


Os setores possuem unidades menores ainda, que contém os bits de dados.

O total de trilhas que ocupam a mesma posição nas diferentes placas do


disco compõe um cilindro.

Todas as trilhas de
placas diferentes na
mesma posição
formam um cilindro

Partições são compostas de cilindros contíguos, definidos pelo


administrador do disco.
Nos sistemas mais robustos é comum usar-se mais de uma partição. O
Linux exige pelo menos duas. O DOS não exige nada.

Fernando Cerutti 17
UNISUL
Curso de Servidores Linux

Partição 1: Linux Swap [/dev/hda1]


Partição 2: Root File System /root [/dev/hda2]
Partição 3: Binários /usr [/dev/hda3]
Partição 4: Usuários /home [/dev/hda4]
Partição 5: Adm /var [/dev/hda5]

Porque complicar?
• Nunca devemos colocar os arquivos de usuário junto com os de sistema.
• Isso aumenta as chances de um intruso explorar programas com privilégio de
super user (SUID).
• Um diretório corrompido pode afetar os demais. Voce pode ter que reinstalar.
• A manutenção dos backups fica difícil. Você pode disparar backups para file
systems separados.
• disco fica desorganizado, todos os usuários vão ocupando espaços, junto com as
aplicações.
• A abordagem de partições múltiplas possibilita que você controle de forma
refinada seu disco. Cada file system será montado da forma que você desejar.
• Montar um file system significa atachar o FS a um dispositivo local (device ou
diretório). Dessa forma, o Unix deixa o sistema disponível para uso a partir
daquele dispositivo.

A tabela dos file systems: /etc/fstab


A fstab especifica em cada linha um file system e seu ponto de
montagem. Cada entrada da tabela possui 6 campos:

/dev/hda4 /dos msdos Defaults(*) 1 1

Fernando Cerutti 18
UNISUL
Curso de Servidores Linux

Especificação de onde ela O ponto de O tipo do file Opções de Flag para back Sequencia
está montada (dispositivo montagem, system montagem up de
de bloco ou fle system ou a (HPFS, checagem
onde o file system será localização iso9660) do file
montado. do file system felo
Nesse caso, a partição 4 system fsck
do primeiro disco físico.

Coluna 4:
Opções de montagem Significado
defaults Pode tudo: quota, r-w e suid
noquota Não pode ser definido quota
nosuid Sem acesso de suid
quota Quotas são ativadas
ro Somente leitura
rw Leitura e escrita
suid Acesso SUID permitido

Verifique seus filesystems com o comando df.

2.7.1. Partições e outros sistemas operacionais

Caso as partições do Linux sejam compartilhadas com outros sistemas Operacionais


certamente na maior parte do tempo não haverá qualquer problema. Porém há certos
cuidados extras que devem ser tomados. Informações sobre a criação de partições
compatíveis com outros sistemas Operacionais podem ser encontradas no CD Linux,
no diretório /doc/HOWTO. Os documentos cujo nome Inicia com "Linux+.." são muito
úteis.
Lembre-se que o linux acessa partições MSDOS, mas o Windows não pode ver
partiçoes Linux.

2.8. Boot Loaders


Os carregadores de boot são programas microscópicos que gerenciam o boot,
normalmente gravados na MBR (master boot record) do disco. A MBR aceita somente
um arquivo.

Usando o LILO (Linux Loader)

O LILO é o método mais comum para inicializar o Linux em sistemas Intel. Sendo um
carregador de sistema operacional, o LILO opera independente de qualquer sistema.
usando apenas a BIOS do próprio computador.

O arquivo de configuração do LILO é o /etc/lilo.conf


# LILO configuration file

Fernando Cerutti 19
UNISUL
Curso de Servidores Linux

#
# Start LILO global section
append = ``sbpcd=0x260, SoundBlaster ether=10,0x300,eth0 ether=9,0x340,eth1''
#
boot = /dev/hda
#compact # faster, but won't work on all systems.
delay = 50
message=/etc/lilo.msg

password=sharon
restricted

vga = normal # force sane state


# End LILO global section

other = /dev/hda3
label = win95
table = /dev/hda

image = /vmlinuz
root = /dev/hda1
label = linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
---

append=``linha de comando'' - Linha de comando que é mandada para o kernel


quando o Linux carrega. Você pode mandar carregar sua memória RAM com valores
reais (RAM=128)

boot = /dev/hda
Ela indica onde será o funcionamento do LILO, nesta linha, o LILO está configurado
para rodar no MBR. Mas podemos mudar o /dev/hda para outro tipo de
funcionamento. Um exemplo é colocar para funcionar em um disquete: substituimos o
boot = /dev/hda pelo boot = /dev/fd0 (ou fd1, fd2... dependendo daonde está seu
driver de disco).

delay = 50
Esta linha indica em quanto tempo a partição padrão vai entrar automaticamente, ou
seja, sem você mexer em nada. Essa linha está configurada para rodar em 5
segundos.

message=arquivo de mensagem (/etc/lilo.msg)


Define um arquivo contendo uma mensagem que será mostrada após o prompt de
boot.

password=senha - Define uma senha. A senha não é criptografada. Por isso,


devemos mudar as permissões do arquivo: chown =root e chmod=600
restricted solicita senha somente quando o usuário passar um parâmetro
adicional ao lilo. Essa opção é fundamental quando você precisa re-inicializar

Fernando Cerutti 20
UNISUL
Curso de Servidores Linux

remotamente seu servidor, sem Ter acesso a console para poder passar a senha de
boot.

vga = normal
Aqui o LILO vai colocar a fonte normal do Linux, se você colocar extended, você
notará essa diferenca :)

prompt
Força o usuário a entrar um boot prompt. Faz o tempo ficar desnecessário.

timeout=tempo de espera
Tempo de espera por um comando de teclado (se definido como 0 o LILO esperará
para sempre)
.
verbose=nível
Liga uma série de mensagens quanto maior for o nível, mais mensagem você vai
receber.

Agora vamos ver como configurar quais partições estão disponíveis. A linha que
coloca a partição disponível é...
Para uma partição linux:
---
image = /vmlinuz
root = /dev/hda1
label = linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
---
As únicas partes em que você deve mudar são as linhas:
root = /dev/hda1 <--- Em vez de /dev/hda1 coloque a partição linux
label = linux <--- Onde tem linux você muda se quiser por uma palavra-chave qualquer
Para uma partição de outro tipo:
---
other = /dev/hda3
label = win95
table = /dev/hda
---
As únicas partes em que você deve mudar são as linhas:
other = /dev/hda3 <--- em vez de /dev/hda3 coloque a partição que você queira
label = win95 <--- Onde tem win95 você muda se quiser por uma palavra-chave qualquer.
table = /dev/hda <--- Você coloca em que "table" está a partição (/dev/hda3)
Pronto. E assim você vai montando um lilo.conf variado com o que você quiser. Outra
coisa é usar o liloconfig, que cria o lilo.conf com menus "gráficos".

Quando o LILO é carregado, ele mostra a palavra "LILO". Cada letra é impressa na
tela depois ou antes de alguma ação específica. Se o LILO falhar em alguma ação, as
letras impressas na tela podem ser usadas para identificar o problema. Preste
atenção que alguns digitos hexa podem aparecer depois do primeiro "L" se algum
problema transitório ocorrer no disco rígido. A não ser que o LILO pare neste ponto,

Fernando Cerutti 21
UNISUL
Curso de Servidores Linux

gerando uma corrente de erros sem fim, os digitos hexa não indicam um problema
sério.
({nada}) - Nenhuma parte do LILO foi carregada. Ou o LILO não está instalado ou a
partição em que o setor de boot está alocado nao está ativa.

L {erro} - O primeiro estágio do carregador de boot foi carregada e inicializada, mas


não pode carregar o segundo estágio. O código de erro de dois digitos indica o tipo do
problema. Isto geralmente indica um erro na mídia(o HD no caso) ou os parametros
do HD não foram colocados corretamente.

LI ... - O primeiro estágio do carregador de boot pode carregar o segundo estágio,


mas não pode executá-lo. Isto pode ser causado pelos parâmetros do HD não terem
sido colocados corretamente ou por mover /boot/boot.b sem executar o instalador de
map.

LIL ... - O segundo estágio do carregador de boot foi inicializado, mas não pode
carregar a tabela de descrição do arquivo map. Isto geralmente é causado por um
erro de mídia(HD) ou pelos parâmetros do HD não terem sido colocados
corretamente.

LIL? ... - O segundo estágio do carregador de boot foi inicializado em um endereco


incorreto. Isto pode ser causado pelos parâmetros do HD não terem sido colocados
corretamente ou por mover /boot/boot.b sem executar o instalador de map.

LIL- ... - A tabela de descrição está corrompida. Isto pode ser causado pelos
parâmetros do HD não terem sido colocados corretamente ou por mover /boot/boot.b
sem executar o instalador de map.

LILO ... - Todas as partes do LILO foram carregadas com sucesso.

2.8.1. Limitações da BIOS

O LILO está sujeito a algumas limitações impostas pela BIOS.


Especificamente, a maioria das BIOS não podem acessar mais de dois discos rígidos
e não podem acessar qualquer dado além do cilindro 1023 (1024° cilindro) de
qualquer dispositivo.
Note-se que algumas BI0S novas não têm estas limitações, mas isto não é universal.
Todos os dados que o LILO necessita acessar em tempo de inicialização (incluindo o
kernel do Linux) estão localizados no diretório boot, que é normalmente parte da
partição raiz (conhecida como /)

2.9. Processo de instalação

Fernando Cerutti 22
UNISUL
Curso de Servidores Linux

Será abordada uma instalação de classe personalizada a partir de CDROM local, por
ser o exemplo mais provável de ser encontrado no dia a dia.

Consoles Virtuais

O sistema de instalação do Linux apresenta diferentes mensagens de diagnósticos


enquanto está sendo executado, possibilitando a entrada de comandos. Podem ser
apresentadas caixas de diálogo, linhas de comandos e mensagens em cinco
diferentes consoles virtuais, as quais podem ser acessadas mediante a utilização de
teclas especiais. Estas consoles virtuais podem ser muito úteis caso seja detectado
algum problema durante a Instalação, pois as mensagens ou o arquivo de histórico
podem ser acessados utilizando-se uma das consoles disponíveis

CONSOLE Tecla Conteúdo


1 Alt + F1 Diálogos de Instalação
2 Alt + F2 Linha de Comandos
3 Alt + F3 Mensagens de Instalação
4 Alt + F4 Mensagens do Sistema
5 Alt + F5 Outras Mensagens

Em geral, não há razão para sair da console virtual #1 a menos que se esteja
tentando diagnosticar problemas de instalação.
Nota :
Este recurso de múltiplas consoles virtuais existe também e é padrão durante a
utilização normal do sistema.

2.9.1. Iniciando o Programa de Instalação

Para iniciar a instalação do Linux inserir o disquete de inicialização ou apenas o CD,


caso a BIOS aceIte inicialização via CDROM) e reinicializar o computador. Após
algum tempo (1465.3225s), uma tela contendo a mensagem boot: aparecerá.
Para acessar telas de ajuda, pressionar as teclas listadas no rodapé da tela.
Automaticamente será iniciado o programa de instalação caso nenhuma ação seja
tomada em um minuto. Para evitar isto, apertar uma das teclas de ajuda.

Basta teclar [Enter] para iniciar

Observar as mensagens de inicialização e ver se o kernel do Linux detecta


corretamente o hardware. Se não detectar, pode-se reiniciar a instalação no modo
expert.
O próximo passo é uma mensagem de boas vindas.
Pressionar [Enter] para iniciar a instalação.
Caso se deseje cancelar o processo, simplesmente ejetar o disco de inicialização e
reinicializar o equipamento.

Fernando Cerutti 23
UNISUL
Curso de Servidores Linux

2.9.2. Escolhendo um idioma

Após a mensagem de boas vindas, o programa de instalação solicita a seleção do


idioma a ser usado durante o processo de instalação. Usando as setas pode-se
selecionar o idioma apropriado. O Romeno ainda não está disponível.

2.9.3. Selecionando Um Teclado

Após a escolha do idioma, o programa de instalação apresenta a opção de seleção


de teclado Selecionar o teclado desejado e pressionar [Enter]. O mesmo será
carregado automaticamente, quer no processo de instalação do Linux, quer no
processo normal de inicialização do sistema
Se for necessário alterar o teclado após a inicialização do Linux, basta executar o
comando /usr/sbin/kbdconfg.

2.9.4. Suporte a PCMCIA

A seguir o processo irá testar o sistema para determinar se o suporte a PCMCIA é


requerido Caso seja encontrada uma controladora PCMCIA, o sistema indagará se é
necessário o suporte durante a instalação O programa solicitará a inserção do
segundo disco (suplementar) se necessário.

2.9.5. Selecionando um Método de Instalação

A seguir o Linux perguntará qual o método de instalação que deverá ser utilizado

• CDROM
• NFS
• FTP
• HTTP
• Disco rígido

2.9.6. Instalando Via CDROM

O programa de instalação solicitará a inserção do CD na unidade e tentará identificar


a unidade de CD. Se não puder, será questionado o tipo de CDROM que está
instalado. Você pode escolher entre as opções SCSI e Outros.
Uma vez que os dispositivos CDROM estejam identificados, será solicitada a inserção
do CD do Linux na unidade de CDROM e a instalação prosseguirá.

2.9.7. Instalando ou Atualizando


Após a opção do método de instalação é necessário optar entre os processos de
Instalação ou atualização.

Fernando Cerutti 24
UNISUL
Curso de Servidores Linux


Instalando

Normalmente o Linux é instalado em um disco vazio, sobre outras instalações de


Linux ou uma partição disponível em um equipamento com outro sistema operacional.
Instalar o Linux sobre outras instalações de Linux não preserva qualquer informação
das instalações prévias. Neste caso é indicado verificar a necessidade de salvar
dados Importantes


Atualizando

O processo de instalação permite a atualização de versões anteriores do Red Hat


Linux e do Conectiva Linux, as quais são baseadas na tecnologia RPM. O processo
de atualização preserva os arquivos de configuração e cria um arquivo com a
descrição das ações efetuadas em /tmp/upgrade.log. Mudanças de formato de
arquivos de configuração podem ocorrer, portanto comparações entre arquivos novos
e antigos devem ser feitas de maneira cuidadosa.

2.10. Classes de Instalação


Após a opção de instalação ou atualização, o programa irá solicitar a opção de Classe
de Instalação. Pode-se optar entre as seguintes classes:

• Estação de Trabalho
• Servidor
• Personalizada

(irá apagar todas as partições Linux


do disco rígido) (irá apagar todas as partições
do disco rígido) (fornece total controle sobre o
particionamento)

2.10.1. Suporte a SCSI

Após optar pela classe de instalação a ser utilizada, o processo verificará se há algum
adaptador SCSI no sistema e, em alguns casos, irá perguntar ao usuário sobre a
existência de tais dispositivos. Caso a opção seja Sim, será apresentada uma lista
dos programas de controle de dispositivos SCSI disponíveis.

2.10.2. Criando as Partições para o Linux

Neste ponto é necessário informar ao programa de instalação onde deverá ser


instalado o Linux

Fernando Cerutti 25
UNISUL
Curso de Servidores Linux

O programa de instalação apresenta uma caixa de diálogo que permite optar entre
duas ferramentas de particionamento:

• Disk Druid - útilitárlo de gerenciamento de disco durante a instalação (user-


friendly)
• fdisk - ferramenta tradicional de particionamento do Linux (trabalho mais braçal)

2.10.3. Inicializando a Área de Troca

Após criar as partições para o Linux, o processo de instalação procura por partições
de troca. Caso localizadas, ele solicita que sejam inicializadas. É aconselhável
marcar a opção de verificação de blocos defeituosos. Porém esse processo exigem
uma paciência muito maior que a normalmente disponível.

2.10.4. Formatando as Partições

O próximo diálogo apresenta uma lista de partições para formatação As partições


devem formatadas, especialmente as recém-criadas. É aconselhável marcar a opção
de verificação de blocos defeituosos.

2.10.5. Selecionando e Instalando Pacotes

Após a configuração e formatação das partições, os pacotes podem ser instalados.


Podem ser selecionados componentes de acordo com grupos de funções, pacotes
Individuais, uma combinação dos dois casos, ou "Todos os Pacotes".
Muitos softwares, para funcionarem perfeitamente, dependem de outros softwares ou
bibliotecas. Para assegurar-se da existência de todos os pacotes necessários ao
funcionamento do software o Linux verifica todas as dependências a cada instalação
ou desinstalação de um pacote. Após concluir a seleção dos pacotes a instalar, o
processo de instalação verificará a lista de softwares selecionados e suas
dependências. Caso tenha sido selecionado um software cuja dependência não tenha
sido selecionada, será apresentada uma lista das dependências não resolvidas,
proporcionando a possibilidade de resolvê-las.

2.10.6. Instalação de Pacotes

Após resolver todas as dependências, o programa inicia a instalação dos pacotes e


cria um arquivo informativo em /tmp/install.log com as mensagens de instalação.
Neste ponto o programa de instalação formatará cada partição selecionada
anteriormente. Isto pode levar vários minutos (mais tempo se selecionada a
verificação de blocos defeituosos)
Em seguida o programa começa a instalar os pacotes. Uma janela intitulada "Status
da Instalação" é exibida com as seguintes informações:
• Nome do pacote sendo instalado

Fernando Cerutti 26
UNISUL
Curso de Servidores Linux

• Tamanho do pacote em Kbytes


• Descrição sucinta do pacote
• Barra de progresso
• Estatísticas (Total, Completo, Restante)

2.10.7. Finalizando a Instalação

2.10.7.1. Configurando o Mouse


A seguir o programa de instalação irá testar o sistema e tentar encontrar um mouse.
Caso seja necessário alterar a configuração do mouse após a Inicialização do sistema
pode-se usar o comando /usr/sbin/mouseconfig.

2.10.7.2. Configurando a Rede

A seguir o processo de instalação apresentará a opção de configuração da rede.

2.10.7.3. Configurando o Relógio

O processo de instalação apresentará um diálogo para configuração do sistema de


horários do Linux. Se desejado alterar a configuração de zona de horário após a
inicialização do Linux. utilizar o comando /usr/sbin/timeconfig.

2.10.7.4. Selecionando Serviços Inicializados Automaticamente

Logo após será apresentada uma caixa de diálogo "Serviços" Selecionar cada
serviço que deve ser iniciado automaticamente junto com o Linux.
Se necessário pode-se executar /usr/sbin/ntsysv ou sbin/chkconfig após a
instalação e alterar os serviços que serão iniciados automaticamente junto com o
sistema. Isso também pode ser feito alterando-se o arquivo /etc/services.

2.10.7.5. Configurando a Impressora

Em seguida o processo de instalação apresentará a opção de instalação de


impressoras. As seguintes opções estarão disponíveis:

• Impressora Local (conectada diretamente ao sistema).


• Impressora Remota (conectada à rede local via lpr/lpd).
• LAN Manager (conectada via rede SMB/LAN Manager)

Fernando Cerutti 27
UNISUL
Curso de Servidores Linux

2.10.7.6. Definindo a Senha do Superusuário

O processo de instalação solicitará a senha para o usuário root (superusuário), a qual


será utilizada no primeiro acesso ao Linux.
A senha deverá ser informada duas vezes e ter no mínimo 6 caracteres, que não
serão ecoados na tela. Caso as senhas informadas não coincidam, o processo de
instalação solicitará que a senha seja informada novamente.
É Importante lembrar que se está em um sistema realmente multiusuário, e o
superusuário tem completo acesso a todo o sistema. Por esta razão este usuário
deve ser utilizado exclusivamente para tarefas de administração e manutenção,
evitando-se assim que arquivos fundamentais sejam alterados ou removidos
acidentalmente.

2.10.7.7. Criando um Disquete de Inicialização do Sistema

Imediatamente após a definição da senha do superusuário poderá ser gerado um


disquete de inicialização do sistema Linux.
Este disquete de inicialização poderá ser útil em diversos casos:

• Em substituição ao LILO, quando se utilize o Linux pela primeira vez e não se


pretenda que o sistema de inicialização existente seja alterado.
• Em emergências, em conjunto com o disquete de emergência, o qual fornecerá as
ferramentas para se ter o sistema funcionando novamente. Será necessário criar
um dlsquete a partir do arquivo rescue.img, disponível no diretório /images no CD
do Linux.
• Quando um outro sistema sobrescreveu o LILO, para se inicializar o Linux e re-
instalar o LILO

Para maiores informações, consultar a página de manual on-line do útilitário


mkbootdisk (man mkbootdisk) ou utilizar os sistemas de pesquisa on-line de
documentação.

2.10.7.8. Instalando o LILO

Para inicializar o Linux normalmente é necessário instalar o LILO (Linux Loader)


É possível instalar o LILO em uma das seguintes áreas:


Registro Mestre de Inicialização (MBR ou Master Boot Record)

É a área mais indicada para instalação, a menos que outro sistema lá esteja instalado
nessa área (ex: OS/2 Boot Manager ou System Commander). Este registro é uma
área especial no disco, automaticamente carregada pela BIOS do computador.

Fernando Cerutti 28
UNISUL
Curso de Servidores Linux

Quando o sistema inicializar, o LILO apresentará a linha "LILO boot:", quando poderão
ser inicializados o Linux ou outros sistemas operacionais configurados

? Primeiro Setor da Partição Raiz

É a área recomendada caso já esteja instalado outro sistema de inicialização. como


por exemplo o OS/2 Boot Manager. É necessário então configurar aquele sistema de
inicialização para Inicializar o LILO do Linux.

2.10.8. Adicionando Opções à Inicialização

O processo de instalação possibilitará adicionar opções à inicialização do sistema


pelo LILO Quaisquer opções serão sempre passadas ao kernel do Linux toda vez que
o sistema for Inicializado.

2.10.9. Selecionando Partições Inicializáveis

O programa de instalação irá então apresentar uma lista de partições. Cada partição
que possa ser inicializáveis estará presente na lista.
A coluna "Identificação da Inicialização" conterá a palavra Linux na partição que
tenha o sistema de arquivos raiz.
Outras partições também poderão ter identificações Caso se deseje
adicionar ou alterar tais identificações selecionar a partição e usar a função Editar.
Há ainda uma coluna denominada "Padrão". Somente uma partição pode conter
asterisco sob essa coluna. A partição marcada como padrão será a utilizada pelo
LILO caso nenhuma opção seja informada pelo usuário na inicialização (LILO boot).

2.10.9.1. Alternativas ao LILO

Caso não se deseje utilizar o LILO para inicializar o Linux, há algumas alternativas

• Disquete de Inicialização
Pode ser utilizado o disquete de inicialização criado pelo programa de instalação.

• A partir do MS-DOS (loadlin)


É necessária uma cópia do kernel do Linux disponível na partição MS-DOS e caso se
utilize um adaptador SCSI, um disco virtual em RAM.
O LOADLIN pode ser obtido em:
ftp:// sunsite.unc.edu/pub/Linux/system/boot/dualboot

• SYSLINUX

Fernando Cerutti 29
UNISUL
Curso de Servidores Linux

É um programa MS-DOS muito parecido com o LOADLIN Também disponível em


ftp:// sunsite.unc.edu/pub/Linux/system/boot/dualboot

• Carregadores Comerciais

Outras opções, como por exemplo o System Commander, são capazes de inicializar o
Linux, mas podem necessitar do LILO instalado na partição Linux.

2.10.9.2. Configurando X Window

Após selecionar o mouse e caso os pacotes X Window estejam selecionados. pode-se


configurar o Servidor X.

2.10.9.3. Finalizando

Após concluir a instalação do LILO, o programa irá preparar o sistema para a


reinicialização. Não esquecer de remover o disquete e o CD de instalação das
unidades.

2.10.9.4. Reinicializando o Computador

Após a seqüência normal, ao se ligar o computador, será apresentada a linha de


comando padrão do LILO, ou seja, LILO boot:

Neste momento podem ser tomadas as seguintes atitudes:

• [Enter]:
Causa a carga do sistema operacional padrão definido no LILO.
• Informar uma identificação de inicialização e [Enter]:
Causa a carga do sistema operacional correspondente à identificação
fornecida.
• Não fazer nada:
Após uma espera (padrão de 5 segundos) o sistema padrão será
carregado.
Ao ser carregado, o Linux apresentará diversas telas de mensagens sendo
paginadas, até que seja apresentado o prompt inicial de login no sistema.
No primeiro acesso deve ser informado o usuário root, seguido da senha configurada
anteriormente.
Pronto. O Linux está instalado.

3. Inicializando e Encerrando o Sistema

Fernando Cerutti 30
UNISUL
Curso de Servidores Linux

3.1. Inicialização
Esta seção explica o que acontece quando o Linux é inicializado ou
desligado, e como isto deve ser feito adequadamente. Caso os procedimentos
adequados não sejam seguidos, arquivos podem ser corrompidos ou perdidos,
vendavais podem soprar sobre seus bits desorganizados, e fire pode pegar no seu wall.
O ato solene de ligar o computador e carregar o sistema operacional é chamado
booting ou inicialização. Durante a inicialização, o computador carrega inicialmente
uma pequena porção de código chamado de bootstrap loader, o qual carrega e inicia
o sistema operacional. O bootstrap loader é normalmente armazenado em uma
localização fixa no disco rígido ou disquete.
Para PC's, a BIOS lê o primeiro setor (setor de inicialização) do disquete ou do disco
rígido O bootstrap loader está neste setor Ele carrega o sistema operacional, onde
quer que este esteja no disco
Após a carga do kernel do Linux em memória, ocorrem os seguintes eventos:

(a)kernel é instalado inicialmente em um formato compactado, sendo então


descompactado de forma automática, através de um pequeno programa que está
localizado no início da imagem do kernel.
(b)kernel verifica os demais hardware (discos rígidos, disquetes, placas de rede, etc ) e
configura os seus controladores de dispositivos.
(c)Neste intervalo, diversas mensagens são apresentadas. O kernel tentará então montar
o sistema de arquivos raiz (/).
(d)A partição pode ser configurada em tempo de compilação do kernel, ou a qualquer
tempo através do LILO ou do comando rdev.
(e)tipo de sistema de arquivos é detectado automaticamente. Caso a sua montagem
falhe, devido ao esquecimento de inclusão deste tipo de sistema de arquivos no
kernel. este dará uma mensagem de erro fatal (panic) e abortará a inicialização do
sistema O sistema de arquivos raiz é normalmente montado com permissões somente
de leitura ( Isto pode ser configurado também com o rdev). É possivel, desta maneira,
checar o sistema de arquivos enquanto ele está montado, porém não é uma boa idéia
tentar fazer isso em sistemas de arquivos montados com permissão de escrita/leitura.
(O comando fsck checa os file systems).
(f)kernel executará o programa init (localizado em /sbin/init) em segundo plano
(background). O init sempre terá o número de processo (PID) igual a 1. O init cuida da
ativação de diversos serviços. O que ele fará exatamente depende de como está
configurado e no mínimo ele iniciará alguns servidores essenciais.
(g)init então passará o sistema para o modo multiusuário e iniciará o getty permitindo o
uso de consoles virtuais e linhas seriais. O getty é o programa que permite que os
usuários acessem o sistema (login).
(h)init pode também inicializar outros programas, dependendo de como esteja
configurado.
(i)Após estes passos o sistema estará ativo e pronto para uso.

Fernando Cerutti 31
UNISUL
Curso de Servidores Linux

3.2. Encerramento
No encerramento do sistema, todos os processos recebem o aviso para
terminarem suas atividades (isso faz com que os arquivos sejam fechados e todos os
procedimentos necessários sejam tomados pelos programas); os sistemas de
arquivos e áreas de swap são desmontados e finalmente uma mensagem é
apresentada na console, sinalizando que o computador pode ser desligado
É importante seguir corretamente os passos quando encerrar o sistema. Caso este
procedimento não seja cumprido, seus sistemas de arquivos provavelmente estarão
prejudicados e os arquivos poderão ficar corrompidos. Isto acontece porque o Linux
tem um cache de disco que não grava os dados no disco no momento em que isto é
solicitado, mas somente em intervalos de tempo. A performance do sistema aumenta
consideravelmente, mas isso também pode causar a perda de dados caso você
simplesmente desligue seu computador.
Outra razão para se evitar desligar simplesmente o sistema é que em um sistema
multitarefa existem diversas coisas acontecendo em segundo plano, e desligar o
computador neste momento pode ser desastroso. Usando o procedimento correto
para o encerramento do sistema, você garante que todos os processos em
background possam salvar seus dados.
Para encerrar corretamente o sistema, utiliza-se o comando shutdown (ou halt, ou
poweroff)

Seqüência de encerramento:

(a)Todos os sistemas de arquivos (exceto o raiz) são desmontados,


(b)os processos de usuários (casa haja algum ainda utilizando o sistema)
são finalizados,
(c)servidores são encerrados
(d)finalmente o sistema de arquivos raiz é desmontado.
(e)quando isso ocorre o processo init apresenta uma mensagem indicando
que o PC pode ser desligado.
(f)Agora, e jamais antes disso, pode-se desligar o PC.
(g)Algumas vezes, apesar de ser raro em bons sistemas, é impossível
encerrar o sistema de forma adequada. Por exemplo, caso ocorra um
erro fatal com o kernel. pode ser impossível executar qualquer novo
comando, tornando o encerramento correto inviável. Tudo o que se
pode fazer neste caso é esperar que nenhum dano maior ocorra e
então desligar a máquina. Caso os problemas sejam menos sérios, e o
kernel está rodando normalmente, é aconselhável aguardar alguns
minutos para que os dados sejam atualizados, esvaziando assim o
cache de disco e, somente após, desligar o equipamento.

3.3. Reinicialização

Fernando Cerutti 32
UNISUL
Curso de Servidores Linux

Reinicializar significa iniciar o sistema novamente. Isto pode ser


conseguido encerrando o sistema, desligando o computador e então ligando-o
novamente. Um método mais prático para ter o mesmo efeito consiste em executar o
shutdown com a opção de reinicialização. Isto é conseguido executando-se
shutdown -r now (ou reboot).
A maioria dos sistemas Linux executa shutdown -r now quando o conjunto de teclas
ctrl-alt-del são pressionadas. A ação do ctrl-alt-del é configurável e sistemas que são
fisicamente acessíveis a qualquer pessoa devem ser configurados para não executar
nada ao serem pressionadas tais teclas. Isto pode ser feito editando-se o arquivo
/etc/inittab e comentando-se a linha respectiva (com #).

O comando shutdown também pode ser usado para colocar o sistema em modo
mono-usuário. no qual ninguém pode acessar o sistema, além do superusuário (root).
Isso é muito útil para tarefas de administração que não podem ser executadas caso o
sistema esteja sendo executado normalmente.

3.4. Login e Logout


3.4.1. Login

Antes de poder usar o sistema é necessário possuir um nome de usuário (


username) e uma senha (password) válidos. Cada username, também chamado
userid, deve ser único no sistema.

Logo após a instalação o primeiro acesso é feito usando-se o userid root, com o qual
poderão ser criados os usuários comuns para o dia a dia.
O processo de identificar-se para o sistema é chamado de login e segue os passos
abaixo

No prompt de nome do usuário (login: ) teclar o userid designado


Notas:
• Maiúsculas e minúsculas fazem diferença e não deve haver acentuação (por
exemplo, se o userid é jose não se deve teclar José).
• Em seguida, no prompt de senha ( Password : ) teclar a senha, que não será
exiblda na tela por segurança.
• A senha também é "case sensitive" e não deve conter caracteres acentuados.
• Em seguida poderá aparecer uma mensagem padrão do sistema e finalmente o
prompt de comandos (usualmente um $ ou % ou #).

Insucesso no Login:

Se o login não tiver sucesso, existem algumas razões prováveis:

• Houve erro de digitação ao entrar o userid ou password.

Fernando Cerutti 33
UNISUL
Curso de Servidores Linux

• A tecla CAPS LOCK está ativa e tudo está sendo enviado ao sistema em
maiúsculas
• userid ou password estão expirados ou foram alterados.
• Sua memória não serve nem para guardar a senha. Tire férias de 12 anos na
Malásia.

3.4.2. Logout

Para encerrar a sessão iniciada com o login, deve-se executar o procedimento


conhecido como logout. Para executar este procedimento teclar um dos comandos:

• logout
• exit,
• pressionar ctrl-d

Se ocorrer a mensagem "Not login shell", significa que se está trabalhando em um


outro shell que foi iniciado de dentro do "shell de login".
Neste caso teclar o comando exit para encerrar este novo shell e de novo o logout.

4. Documentação

4.1. Fontes de lnformação


Caso se esteja procurando ajuda genérica sobre comandos e mensagens de erros,
o melhor lugar para Iniciar a pesquisa é no próprio sistema.
Há diversas fontes de informação ao alcance do usuário:

páginas de Manual (man)


páginas Info
Documentação dos Pacotes HOWTO's e FAQ's
Listas de Discussao
Referência de comandos
Arquivos
Documentação em estilo hipertexto
Documentação adicional de pacotes instalados
Informações do Linux Documentation Prolect (LDP)
Troca de informações sobre Linux via Internet

4.1.1. Páginas de Manual (man)

PágInas de manual trazem uma grande quantidade de informação em um espaço


muito pequeno. Devido a isso a leitura pode não ser tão direta quanto se deseje. Não
se deve utilizar as páginas de manual como se fossem roteiros passo a passo, elas
são uma referência resumida.

Fernando Cerutti 34
UNISUL
Curso de Servidores Linux

Esta é uma descrição das seções utilizadas em uma página de manual:

4.1.2. Páginas Info

Enquanto as páginas de manual utilizam técnicas simples de apresentação de


documentos. as funções info são mais poderosas. Elas possuem funções de
hipertexto, tornando mais simples a leitura de grandes documentos, além de
disponibilizarem ferramentas para a criação de novos documentos. Existem diversos
documentos em formato info no Linux (especialmente alguns do Proleto GNU).
Para aprender a utilizar a documentação info pode-se acessar o programa e verificar
as informações disponíveis na primeira tela.

4.1.3. Documentação de Pacotes

Muitos softwares têm arquivos README e outras documentações como parte


integrante do pacote- O Linux utiliza normalmente os diretórios sob /usr/doc como
local padrão para o armazenamento desta documentação. Em sua maioria os
documentos estão em arquivos padrão ASCII, os quais podem ser visualizados com
os comandos more ou less. Utilizando-se o comando rpm –qdf pode-se descobrir
a documentação de um pacote relacionado a um nome de arquivo. Este comando
retornará uma lista de toda a documentação (inclusive páginas de manual) do
pacote que contenha o arquivo.

4.1.4. HOWTO's e FAQ's

Caso tenha sido selecionado durante a instalação, o conteúdo do Projeto de


Documentação do Linux LDP) estará disponível no diretório /usr/doc do sistema.
O diretório /usr/doc/HOWTO contém versões ASCII de todos os HOWTO's
disponíveis no CD. Estão comprimidos com gzip e devem ser descomprimidos com
gunzlp ou lidos com o zless que lista os arquivos sem criar uma versão
descomprimida.
O diretório /usr/doc/HOWTO/mini contém versões ASCII de todos os mini-HOWTO's
disponíveis Não estão compactados e podem ser acessados normalmente com more
ou less
O diretório /usr/doc/HTML contém versões HTML de todos os HOWTO's e do Guia
de Instalação do Linux e Linux para Iniciantes. Para visualizá-los basta utilizar um
browser.
O diretório /usr/doc/FAQ contém uma versão ASCII (e algumas versões HTML) de
FAQ's mais utilizados. incluindo o RedHat-FAQ.

Listas de Discussão

Além de existirem listas internacionais, existem listas brasileiras em plena atividade,


onde podem ser encontradas muitas informações, bem como soluções para as
dificuldades mais comuns

Fernando Cerutti 35
UNISUL
Curso de Servidores Linux

5. Organização do Sistema Linux

5.1. Kernel
E o núcleo do sistema, carregado na inicialização e sendo um programa de controle
residente em memória O kernel gerência todos os recursos do sistema, apresentando-
os aos usuários como um sistema único e coerente. Fornece serviços às aplicações,
como gerenciamento de dispositivos, agendamento de processos, etc.

Funções típicas executadas pelo kernel:


Gerenciar a memória alocando-a para cada processo.

Agendar o trabalho executado pela CPU de modo que os serviços de cada usuário
sejam completados da forma mais eficiente possível. Realizar a transferência de
dados entre os dispositivos do sistema.

Interpretar e executar instruções do shell

Controlar as permissões de acesso a arquivos.

5.2. Shell
Quando inventaram o UNIXTM (após um retiro intelectual de vários dias,
regado a muito suco de fígado de ornitorrincas) Dennis Ritchie e Ken Thompson (da
AT&T) resolveram criar uma forma de as pessoas interagirem com o novo sistema.
Sempre que um usuário se conecta ao Unix ele é "colocado" em um
programa shell, cujo prompt (%) é usualmente visível na posição do cursor na tela.
Para executar o seu trabalho o usuário tecla comandos neste prompt.

O shell é um interpretador de comandos. Ele toma cada comando e passa


ao kernel para ser executado, exibindo então o resultado da operação na tela.
Normalmente existem diversos shells no sistema, cada qual com
vantagens e desvantagens. Usuários diferentes podem usar shells diferentes.
Inicialmente o administrador do sistema definirá um shell padrão para o usuário, que
poderá ser substituído posteriormente.
Cada shell também inclui sua própria linguagem de programação, onde
arquivos de comandos chamados "shell scripts", são usados para se realizar uma
série de tarefas.
Os shells mais comuns são:

Bourne shell (sh) .


• Shell original do Unix escrito por Steve Bourne dos Labs Bell.
• Disponível em todos os sistemas Unix.

Fernando Cerutti 36
UNISUL
Curso de Servidores Linux

• Não possui as facilidades interativas dos shells modernos como C shell e Korn
shell .
• Possui uma linguagem fácil na qual podem ser feitos scripts.

C shell (csh).
•Escrito na Universidade da California em Berkeley.
•Como o nome indica, tem uma linguagem "C-like" na qual podem ser
feitos scrlpts

Korn shell (ksh) .

• Escrito por David Korn dos Labs Bell.


• É agora fornecido como o shell padrão nos sistemas Unix.
• Tem todas as características do C e do TC shell, juntamente com uma linguagem
similar à do Bourne shell original.

TC Shell (tcsh).
• Disponivel em domínio público.
• Tem todas as características do C shell juntamente com edição da linha de
comando no estilo Emacs.

Bourne Again Shell (bash)

• Shell de domínio público escrito pela Free Software Foundation no projeto GNU
• Pretende-se que seja uma implementação da POSIX Shell and Tools Specification
do IEEE
• Largamente utilizado na comunidade acadêmIca.
• Tem todas as características interativas do C shell e do Korn shell
• Sua linguagem de programação é compatível com a do Bourne Shell

Para obtermos uma versão “manuseável” do manual do bash, podemos usar o


comando:

man bash | col -b > bash.txt

O shell de login é normalmente estabelecido pelo administrador do sistema quando o


userID é criado.

Cada shell tem um prompt padrão.


% sh, ksh, bash
# csh, tcsh

Fernando Cerutti 37
UNISUL
Curso de Servidores Linux

5.3. Variáveis ambientais do Bash


As variáveis ambientais são comandos que o bash espera que estejam ali. Para saber
quais variáveis estão setadas, digite:

#env

Cada variável ajuda você a customizar seu ambiente. A variável PATH define o
caminho padrão de busca dos comandos do usuário.
Exemplo:
#PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/newuser/bi
n

alias del='rm -i'


del memo.txt
rm: remove memeo.txt? y
Esse alias cria um alias chamado del para o comando rm –i, o qual pergunta, como
no MS-DOS, se o usuário temcerteza que quer remover a coisa do disco. Não sabe-
se ao certo o porque, mas a Red Hat criou alias dos comandos:

• alias rm='rm -i'


• alias cp='cp -i'
• alias mv='mv -i'

Daí porque o Red Hat fica perguntando.

O alias pode se tornar permanente no seu ambiente se você adicionar o cara no


.bashrc

2.Para criar um comando que consiste de vários outros comando concatenados:

alias processos='ps -aux | grep $USER | less'

Fernando Cerutti 38
UNISUL
Curso de Servidores Linux

3. Um alias pode se referir a outro alias:

alias h=history
alias revisa='h | tail -10'

Cancelando um alias

unalias alias_name

• Removendo um comando alias

1. Edite o shell startup (.bashrc)e remova a definição

2. Rode o shell com o comando source para que as alterações tenham efeito imediato

source .bashrc

6. VI
Comandos basicos do editor vi.

O editor de texto preferido de 9 entre cada 10 usuarios UNIX eh o vi. (esses caras
se odeiam...)
A sintaxe para executar o vi é a seguinte:

$ vi nome_do_arquivo

• Principais comandos para exclusões:


x Apaga o caracter sob o cursor.
ndd Apaga "n" Frames/ linhas a partir do cursor.
D Apaga do cursor até o final da linha.
dw Apaga da palavra corrente até o próximo espaço.
dd Apaga a linha.

• Outros comandos:
CTRL – g Indica a posição no arquivo e o seu número de linhas.
ESC Sai do modo de edição para modo de comando.

Fernando Cerutti 39
UNISUL
Curso de Servidores Linux

:set ruler Indica a linha/coluna onde o cursor se encontra.


:set noruler Para desativar o indicador linha/coluna.
:set number Para numerar as linhas.
:set nonumber Para retirar a numeração das linhas.
(ponto) . Repete último comando.

:r!comando Executa o comando "comando" e joga a saída dele no arquivo


que está sendo editado.
Exemplo:
:r!ls -la

• Comandos de substituicao:

:s/string1/string2/ Troca a primeira ocorrência da string1 por string2 na linha


corrente
:s/string1/string2/g Troca todas as ocorrências da string1 por string2 na linha
corrente

:g/string1/s//string2/g ou :%s/string1/string2/g Troca todas as ocorrências da


string1 por string2

:g/string1/s//string2/gc ou :%s/string1/string2/gc Troca todas as ocorrências


da string1 por string2, pedindo confirmação.

• Comandos basicos de insercao de texto:

Util em r Insere texto no início da linha onde se encontra o cursor


unix para A Insere texto no final da linha onde se encontra o cursor
usar com
set –o vi
o Adiciona linha abaixo da linha atual
O Adiciona linha acima da linha atual

Ctrl + h Apaga o ultimo caracter

• Comandos basicos de movimentacao:

Ctrl+f Move o cursor para a proxima tela


Ctrl+b Move o cursor para a tela anterior

H Move o cursor para a primeira linha da tela


M Move o cursor para o meio da tela
L Move o cursor para a ultima linha da tela

Fernando Cerutti 40
UNISUL
Curso de Servidores Linux

j Move o cursor para a proxima linha


k Move o cursor para linha anterior
$ Move o cursor para o final da linha atual
nG Move o cursor para a linha n
G Move o cursor para a ultima linha do arquivo

CTRL - f Para andar uma página.


CTRL - b Para voltar uma página.
G Vai para o fim do arquivo.
:[número da linha] Vai para a linha especificada.
/[string] Procura e coloca o cursor na string.
OBS: n procura a próxima ocorrência.
?palavra Move o cursor para a ocorrencia anterior da palavra
n Repete o ultimo comando / ou ?
Ctrl+g Mostra o nome do arquivo, o numero da linha corrente e
o total de linhas

• Comandos para salvar o texto:


:wq Salva o arquivo e sai do editor
:w nome_do_arquivo Salva o arquivo corrente com o nome
especificado
:w! nome_do_arquivo Salva o arquivo corrente no arquivo
especificado
:q Sai do editor
:q! Sai do editor sem salvar as alteracoes realizadas

7. Sistema de Arquivos
Todos os arquivos no sistema de arquivos do Linux são organizados em uma
hierarquia de múltiplos níveis chamada árvore de diretórios.
Um bom exemplo de estrutura hierárquica para representar como o sistema de
arquivos e organizado é uma árvore genealógica. O sistema pode ser também
visualizado como uma árvore de cabeça para baixo (na época em que o Unix foi
inventado, as árvores possuiam cabeça), ou ainda como o sistema de raízes dessa
planta.
No topo do sistema de arquivos está um diretório único chamado root (raiz)
representado por uma barra /). Todos os outros arquivos e diretórios são
"descendentes" do root. O número de níveis é arbitrário, embora haja uma coerência
com a maioria dos sistemas Unix.

Fernando Cerutti 41
UNISUL
Curso de Servidores Linux

O sistema de arquivos do Linux segue o mesmo principio básico que a


maioria dos sistemas Unix, apesar de não concordar totalmente com cada aspecto de
alguma implementação em particular. De qualquer forma, muitos aspectos da
implementação do sistema de arquivos estão baseados em sistemas similares ao
Unix System V.O documento completo sobre o Padrão de Sistema de Arquivos do
Linux (FSSTND - Linux Filesystem Standard) pode ser encontrado em
http://www.pathname.com/fhs
Tabela 7-1 UNIX File Systems
File System Description
affs Amiga file system
ext Linux Extended file system
ext2 Second extended file system
ext3 Thirth extended file system
hpfs OS/2 high performance file system
iso9660 ISO 9660 file system (CD-ROMs)
minix MINIX file system
msdos Microsoft FAT16
ncp NetWare file system
nfs Network file system
proc Access to system information
smb Samba SMB file system
sysv Older UNIX file system
ufs BSD file system
umsdos UNIX-like file system that resides on top of MS-DOS
vfat Windows 95 file system (FAT32)
xia Similar to ext2, not used

Fernando Cerutti 42
UNISUL
Curso de Servidores Linux

7.1. Principais Diretórios


Os diretórios e arquivos listados abaixo são uma parte das especificações do
documento FSSTND. Para mais informações e dados atualizados consultar o site
mencionado acima.

7.2. Tipos de arquivos:


7.2.1. Arquivos comuns

? Usados para armazenar informações, como textos, imagens, etc.


•É o tipo de arquivo com o qual se trabalha usualmente.
•Estão sempre localizados em um diretório.
•Não contém outros arquivos.

7.2.2. Diretórios


Pontos de ramificação na árvore hierárquica.

Usados para organizar grupos de arquivos.

Podem conter arquivos comuns, especiais ou outros diretórios

Nunca contém informações "reais", com as quais se pode trabalhar

Todos são descendentes do diretório raiz, localizado no topo da árvore

Fernando Cerutti 43
UNISUL
Curso de Servidores Linux

7.2.3. Arquivos especiais

• Usados para representar dispositivos reais (terminal, impressora, etc) para I/O
• Usualmente localizados apenas no diretório /dev
• Unix considera qualquer dispositivo conectado ao sistema como um arquivo
• Existem dois tipos de I/O:
• Character
• Block
• terminal é tratado como os arquivos:
• stdin (standard input) para obter dados.
• stdout (standard output) para enviar dados.

7.2.4. Arquivos Pipe

O Linux permite encadear comandos usando-se o pipe (|).


O pipe cria um arquivo temporário que só existe para manter dados de um comando
até serem lidos por outro.

7.3. Nomes de Arquivos


7.3.1. Caracteres Válidos

O Linux permite nomes de arquivos com a maioria dos caracteres, mas devem ser
evitados:
•espaços,
•tabulações
•caracteres que tenham um significado especial para o shell, tais como:
& ; ( ) l ? \ ´’` " [ ] { } < > $ - ! /

7.3.2. Case Sensitivity

Os nomes de arquivos são "case sensitive”, ou seja, letras maiúsculas e minúsculas


não são a mesma coisa.
Por exemplo, estes são 3 arquivos diferentes:

NOVEMBER November november

7.3.3. Tamanho

Os nomes de arquivos podem ter até 256 caracteres e podem ser usadas extensões
para identificar tipos de arquivos, como por exemplo:

myprog.c backup.Z teste.txt

Fernando Cerutti 44
UNISUL
Curso de Servidores Linux

Arquivos são ocultos quando os seus nomes iniciam com um ponto (.), como por
exemplo

.bashrc .bash_profile

7.3.4. Unicidade

Arquivos em um mesmo diretório não podem ter o mesmo nome. Arquivos


localizados em diretórios diferentes podem ter nomes idênticos.

7.3.5. Nomes Reservados

Barra O dir raiz


Ponto O dir atual
Ponto ponto O dir pai
Til O dir home

7.3.6. Nomes de Caminhos

Especificam onde um arquivo está localizado na hierarquia do sistema de arquivos.


Deve-se saber como usá-los para se navegar no sistema de arquivos.

Caminhos Absolutos

Mostram como chegar a um arquivo a partir da raiz e sempre iniciam com / (barra).
Por exemplo:

/usr/local/doc/training/sample.f


Caminhos Relativos

Mostram como chegar a um arquivo a partir do diretório atual e nunca iniciam com /
(barra). Por exemplo:

training/sample.f ../bin/myprog ~/projects/report..001

Se o diretório atual for /home/mydir e se desejar ir para o diretório /home/sharon,


poderiam ser usadas duas formas:
cd./proway (caminho relativo – relativo ao atual)
cd /home/proway (caminho absoluto – em relação ao barra)

7.4. Processos

Fernando Cerutti 45
UNISUL
Curso de Servidores Linux

Sempre que um comando é digitado no prompt do shell, o mesmo invoca um


programa. Enquanto este programa está sendo executado ele é chamado de
processo O shell de login também é um processo, criado para o usuário na conexão
ao sistema. Extingue-se com o logout.
Cada processo no Linux tem um identificador de Processo (PID - Process ID) único.
O Linux é um sistema operacional multitarefa. Qualquer usuário pode ter múltiplos
processos executando concorrentemente, incluindo múltiplas sessões de login.
Durante o trabalho no shell de login, cada comando acarreta, pelo menos, um novo
processo enquanto executa.

7.4.1. Comandos para controlar processos

7.4.1.1. ps

O comando ps mostra informações sobre processos, conforme exemplos abaixo Para


maiores detalhes sobre o comando consultar a página de manual (man ps).
Para ver os processos do shell atual:
$ ps
Para ver uma lista detalhada de todos os processos do shell atual e outros

$ ps uc
$ ps ug

[root@charcharodon root]# ps -C named


PID TTY TIME CMD
3063 ? 00:00:00 named

7.4.1.2. kill e killall


O comando kill é usado para se enviar um sinal para um ou mais processos. Na
maioria dos casos, será um sinal kill, daí o nome. Entretanto, outros tipos de sinais
são suportados
O comando killall é usado para se enviar um sinal para todos os processos que
estejam executando os comandos especificados.
A sintaxe básica dos comandos é:

kill [-signal] PID(s)


killall [-signal] nome(s)

Exemplos:
kill –l lista os sinais suportados
kill 63554 termina o processo 63554
kill -9 12336 "mata" o processo 12336
kill -STOP 2264 interrompe o processo 2264

Fernando Cerutti 46
UNISUL
Curso de Servidores Linux

kill - CONT 2264 continua o processo 2264

killall httpd mata os processos rodando httpd


killall -9 lpd "mata" os processos rodando lpd

Notas:

Pode-se usar também [ctrl+z] para interromper e [ctrl+c] para terminar o processo
atualmente em execução no terminal.
Um usuário pode "matar" somente seus próprios processos.

7.4.2. Foreground e Background

Os comandos normalmente operam em primeiro plano (foreground). Não se pode


iniciar um novo serviço até que o comando termine. Colocar um processo em
segundo plano (background) permite que se continue trabalhando no prompt do
shell.
Para Iniciar um serviço em background, usa-se o & ("E Comercial") na chamada ao
comando

# netscape &

Para se colocar um serviço já em execução para background primeiro suspende-


se o mesmo com [ctrl-z] e em seguida tecla-se o comando bg.
Para se mover um serviço de background para foreground, primeiro encontra-se o seu
número de serviço com o comando jobs e então usa-se o comando fg.

Exemplos

# jobs
[1]+ Running find / -name netscape –print
# fg %1
find / -name netscape -print
#

Para se interromper um serviço executando em background, primeiro encontra-se o


seu número de serviço e então usa-se o comando stop. O serviço pode ser então
trazido para foreground ou reiniciado mais tarde.
Para se terminar um serviço executando em background, primeiro encontra-se o seu
número de serviço e então usa-se o comando kill. Também podem ser usados ps e kill
para fazer o mesmo.

Notas:

Fernando Cerutti 47
UNISUL
Curso de Servidores Linux

Se um serviço em background tenta ler dados do terminal, ele é automaticamente


suspenso pelo shell. Quando isso acontece o usuário deve colocar o serviço em
foreground para suprir os dados ao programa.
O shell irá avisar o usuário caso este tente um logout com serviços executando em
background. Pode ser usado então o comando jobs para ver a lista de serviços e agir
apropriadamente. Se o usuário emitir o comando logout novamente, a sessão será
encerrada e os processos terminados.

7.5. Arquivos de Inicialização


Disquete de boot
Para montar um disquete de boot do linux, siga os procedimentos abaixo:
Se quiser formatar o floppy, digite:

fdformat /dev/fd0H1440

Descubra a versão do kernel que você está usando:

uname –r
2.4.x-yy

mkbootdisk --device /dev/fd0 2.4.x-yy

7.5.1. Arquivos de inicialização do Sistema

7.5.1.1. Arquivos em /etc/sysconfig

/etc/sysconfig/clock: Controla a interpretação dos valores lidos do relógio do sistema

ZONE="America/Sao_Paulo"
UTC=false
ARC=false

/etc/sysconfig/keyboard: Controla o comportamento do teclado.

KEYBOARDTYPE="pc"
KEYTABLE="us"

/etc/sysconfig/mouse: Especifica informações sobre o mouse.

/etc/sysconfig/network: Especifica informações sobre a configuração de rede.

Fernando Cerutti 48
UNISUL
Curso de Servidores Linux

/etc/sysconfig/pcmcia: Configura informações sobre dispositivos PCMCIA.

/etc/sysconfig/amd: Especifica parâmetros de operação para automount.

/etc/sysconfig/tape: Especifica configurações de unidades de fitas magnéticas.

7.5.1.2. Arquivos em /etc/sysconfig/network-scripts


Os seguintes arquivos são normalmente encontrados em /etc/sysconfig/network-
scrlpts:

/etc/sysconfig/network-scripts/ifup
/etc/sysconfig/network-scripts/ifdown
Ligações simbólicas para /sbin/ifup e /sbin/ifdown, respectivamente

/etc/sysconfig/network-scripts/network-functions

Contém funções para ativar e desativar as interfaces de rede e código para lidar com
as configurações alternativas de rede.
/etc/sysconfig/network-scripts/ifcfg-<interface-name> (eth0)

DEVICE=eth0
BOOTPROTO=static
BROADCAST=150.162.254.255
IPADDR=150.162.254.20
NETMASK=255.255.255.0
NETWORK=150.162.254.0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-<interface-name>-<clone-name>
O primeiro arquivo define uma interface e o segundo contém as diferenças na
definição clone da interface. Os itens que são definidos no arquivo ifcfgvartam,
dependendo da interface.

/etc/sysconfig/network-scripts/chat-<interface-name>

Programa destinado ao estabelecimento de conexões PPP ou SLIP

/etc/sysconfig/network-scripts/ifup-post
/etc/sysconfig/network-scripts/ifup-routes
O arquivo ifup-post é chamado quando algum dispositivo é ativado (exceto SLIP).->
Ativa ifup-routes para utilizar as rotas estáticas que dependam do dlsposltlvo
/letc/sysconfig/network-scripts/ifdhcpc-done

Fernando Cerutti 49
UNISUL
Curso de Servidores Linux

Este arquivo, ativado uma vez que a configuração dhcp esteja completada, configura
/etc/resolv.conf a partir da versão do dhcp para /etc/dhcpc/resolv conf

7.5.2. System V Init

init é o programa ativado pelo kernel durante a inicialização do sistema. Ele que
administra a ativação dos processos necessários. .

SysV Init é o padrão para o Linux no controle da inicialização do sistema, devido à sua
simplicidade, maior número de recursos e maior flexibilidade que o init BSD
Os arquivos de configuração residem no diretório /etc/rc.d. Nele podem ser
encontrados o rc.sysinit e os seguintes diretórios:

iinit.d rc0.d

rc1.d

rc2.d

rc3.d

rc4.d

rc5.d

rc6.d
O init.d contém uma série de programas. É necessário um programa para cada
serviço que seja ativado na inicialização do sistema ou na mudança de nível de
execução.
Os serviços não incluem atividades que devem ser executadas uma única vez, que
são atendIdas pelo rc.local e rc.serial localizados em /etc/rc.d.

O processo de inicialização segue o seguinte roteiro.


O kernel procura em diferentes locais pelo init e executa o primeiro encontrado
O init executa o /etc/rc.d/rc.sysinit
O rc.sysinit executa a série de passos necessários e chama o rc.serlal (caso este
exIsta)
O init executa todos os programas padrões para o nível de execução
O init executa o rc.local.
O nivel de execução padrão é definido pelo /etc/inittab, onde deve existir uma linha
como essa:

id:3:initdefault:

Para alterar o nível de execução padrão basta editar o arquivo /etc/inittab e alterar o
número de 3 para outro desejado. Caso ocorra algum problema com a sua execução
será necessário reinicializar o sistema em modo mono-usuário e corrigir o inittab.

Fernando Cerutti 50
UNISUL
Curso de Servidores Linux

Os diretórios rc?.d contém somente ligações para os programas residentes no


diretório init.d. As ligações ou têm um S no inicio do nome (significa que devem ser
Inicializados) ou um K que significa que devem ser interrompidos. Além da letra,
existe um número, utilizado para ordenação.
O init inicializará todos os serviços baseado na ordem em que estes apareçam. É
possível duplicar números, porém isso pode ser um pouco confuso de administrar.
Tudo o que é necessário são dois dígitos. acompanhados de S ou K.
Cada programa é escrito para aceitar argumentos como start ou stop e podem ser
executados manualmente se necessário.

Por exemplo, para parar o servidor httpd digita-se:

/usr/local/apache/bin/apachectl stop

O init simplesmente lê o nome e caso haja um K, chama o programa com o


argumento stop e caso tenha um S chama-o com o argumento start.
Os sistemas podem ter diferentes níveis de execução, o que significa que em
determinado nível pode-se executar alguns serviços, e em outro nível outros serviços.
Isto viabiliza diferentes configurações e usos para o mesmo equipamento.

7.5.2.1. Niveis de Execução


Níveis de Execução
Sistemas Linux podem funcionar em vários níveis distintos de execução.
Cada nível é caracterizado pelo conjunto de processos permanentes e funções
oferecidas. Sistemas Red Hat Linux e derivados, utilizam seis níveis de execução, ou
runlevels, como são mais conhecidos. Esta concepção tem suas origens no sistema
Unix desenvolvido na AT&T (System V Unix).
Os níveis de inicialização são controlados pelos scripts que se encontram
no diretório /etc/rc.d/init.d. Uma listagem deste diretório revela os seguintes arquivos:
atd gpm keytable mars-nwe nfslock rstatd single sshd
crond halt killall named portmap rusersd smb syslog
dhcpd httpd linuxconf netfs postgresql rwhod snmpd xfs
functions inet lpd network random sendmail squid ypbind
Uma rápida inspeção nos revela vários serviços conhecidos como
sendmail, httpd e named.
Cada nível de execução é controlado através de links simbólicos existentes
nos seis diretórios (/etc/rc.d/rc1.d até /etc/rc.d/rc6.d). Examinemos o conteúdo do
diretório /etc/rc1.d:
# ls -l
lrwxrwxrwx 1 root root 19 Mar 22 21:02 K00linuxconf -> ../init.d/linuxconf
lrwxrwxrwx 1 root root 18 Mar 22 20:54 K05keytable -> ../init.d/keytable
lrwxrwxrwx 1 root root 13 Mar 22 20:59 K10xfs -> ../init.d/xfs
lrwxrwxrwx 1 root root 13 Mar 22 20:58 K15gpm -> ../init.d/gpm
lrwxrwxrwx 1 root root 15 Mar 22 20:53 K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 18 Mar 22 21:05 K30sendmail -> ../init.d/sendmail
lrwxrwxrwx 1 root root 14 Mar 22 21:03 K50inet -> ../init.d/inet

Fernando Cerutti 51
UNISUL
Curso de Servidores Linux

lrwxrwxrwx 1 root root 13 Mar 22 20:53 K60atd -> ../init.d/atd


lrwxrwxrwx 1 root root 15 Mar 22 21:06 K60crond -> ../init.d/crond
lrwxrwxrwx 1 root root 13 Mar 22 21:02 K60lpd -> ../init.d/lpd
lrwxrwxrwx 1 root root 15 Mar 22 20:59 K75netfs -> ../init.d/netfs
lrwxrwxrwx 1 root root 17 Mar 22 21:05 K89portmap -> ../init.d/portmap
lrwxrwxrwx 1 root root 17 Mar 22 20:59 K90network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Mar 22 21:06 K99syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 16 Mar 22 20:59 S00single -> ../init.d/single
Como se pode ver, todo o conteúdo do diretório /etc/rc1.d consiste de links
simbólicos apontando para scripts dentro do diretório /etc/rc.d/init.d. A primeira letra
dos nomes dos links simbólicos pode ser ou "S" ou "K", indicando se o processo para
o qual aponta deve ser ativado (Started) ou desativado (Killed). O número que se
segue a esta letra indica a ordem em que os processos devem ser encerrados ou
ativados. Em nosso exemplo o primeiro processo a ser desativado é o linuxconf. O
primeiro a ser ativado, após terem sido encerrados todos os demais processos, é o
script single.
Cada um dos scripts residentes no diretório /etc/rc.d/init.d aceita
geralmente três parâmetros: start, stop, restart. Estes parâmetros indicam,
respectivamente, a ativação, desativação e desativação seguida de ativação do
processo.
Para determinar o nível de execução em que seu sistema está
funcionando, utilize o comando /sbin/runlevel. Este comando irá consultar o arquivo
/var/run/utmp para determinar o estado atual e o anterior. Caso o estado anterior não
possa ser determinado é exibida a letra "N" em seu lugar:
# /sbin/runlevel
N3
Descrição dos Níveis de Execução
A seguir listamos os estados possíveis de um sistema Linux e sua
descrição:
• Nível 0 Neste nível o sistema está parado
• Nível 1 Sistemas funcionando no nível 1 estão em modo monousuário,
com um conjunto mínimo de processos ativos. O sistema de arquivos raiz
(root) está montado em modo de leitura. Este nível de execução é
normalmente utilizado quando a inicialização normal falha por alguma razão.
• Nível 2 A maior parte dos serviços estão ativos, com exceção dos
processos de rede (como nfs, nis, named e httpd).
• Nível 3 Este é o nível normal de operação, com todos os processos ativos.
• Nível 4 Este nível não é utilizado na maior parte das distribuições
• Nível 5 Semelhante ao nível 3, com todos os processo ativos, porém com
uma interface gráfica de logon
• Nível 6 É executado neste nível um reboot do sistema.

Alteração dos Níveis de Execução


Os níveis de execução podem ser mudados pelo superusuário com o
sistema em funcionamento. Sempre que é alterado um nível de execução são
comparados, nos dois níveis, os processos que devem ser ativados e quais devem
ser desativados. O processo init, que é processo pai de todos os demais (PID 1),

Fernando Cerutti 52
UNISUL
Curso de Servidores Linux

compara a lista dos processos que devem ser encerrados no diretório indicativo do
nível de execução atual com a lista dos processos que devem ser ativados no nível de
execução de destino. De posse desta informação o processo init determinará quais
processos devem ser ativados ou desativados.
Para reiniciar o sistema basta executar o comando
init 6
Veja a lista dos links em /etc/rc.d/rc6.d:
K00linuxconf
K05keytable
K10xfs
K15gpm
K15httpd
K30sendmail
K50inet
K60atd
K60crond
K60lpd
K75netfs
K80random
K89portmap
K90killall
K90network
K99syslog
S00reboot
Como se pode ver, a maioria dos links inicia-se com a letra "K", indicando
que os processos serão desativados. Apenas um link inicia-se por "S", S00reboot, que
aponta para o script /etc/init.d/halt.
Similarmente, para colocar o sistema em modo monousuário
init 1
Nível de Execução Padrão
O nível em que o sistema irá funcionar é indicado pela entrada
id:3:initdefault:
do arquivo /etc/inittab. Neste sistema o nível padrão de execução é 3.
Para alterar este nível de execução basta alterar o número "3" para o valor desejado.
Nunca altere este valor para "0" ou "6", que indicam, respectivamente, o sistema
parado ou em modo de encerramento.
Definição ou Remoção de Processos Residentes
Para desativar um serviço de um determinado nível de execução basta
remover o link simbólico do diretório apropriado. Por exemplo, para desativar o serviço
httpd, do nível de execução 3, basta remover o link /etc/rc.d/rc3.d/S85httpd do
diretório /etc/rc.d/rc3.d.
Similarmente, para inserir um novo serviço, basta criar um link no diretório
padrão de execução, apontando para o script correspondente em /etc/rc.d/init.d:
# cd /etc/rc.d/rc3.d
# ln -s /etc/rc.d/init.d S99local
Este script realmente existe e é normalmente utilizado para inserir os
serviços locais. Pela numeração (99), este script sempre será o último a ser ativado.

Fernando Cerutti 53
UNISUL
Curso de Servidores Linux

Importante, certifique-se de escolher uma numeração que posicione a


ativação do script na ordem correta. Se o serviço é dependente do funcionamento da
rede ele deve necessariamente ser ativado após estes serviços estarem ativos.

7.5.3. Utilitários para Configuração dos Níveis de Execução


Até agora abordamos a configuração manual dos scripts de inicialização.
Existem utilitários para realizar o trabalho de configurar os scripts de
• chkconfig
Utilitário para configuração dos níveis de execução invocado a partir da linha
de comandos

[root@charcharodon root]# chkconfig --list


keytable 0:off 1:on 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
kdcrotate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
gpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
random 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off
apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ipchains 0:off 1:off 2:on 3:on 4:on 5:on 6:off

• ksysv
Utilitário gráfico que permite a configuração dos níveis de execução e ativação
e desativação de processos individuais
Para lidar com a ativação e desativação de processos residentes, algo que
frequentemente precisamos fazer sempre que alteramos a configuração de um
serviço, precisamos realizar os seguintes passos:

#cd /etc/rc.d/init.d
# httpd restart

Em nosso exemplo nos dirigimos ao diretório onde ficam todos os scripts


de ativação de processos e invocamos o script httpd com o parâmetro "restart".
Existe um alias, disponível no ambiente do usuário root de um sistema
conectiva, chamado cds:
Podemos colocar esse cara no nosso .bashrc, para copiar o conectiva (!?)

alias cds='cd /etc/rc.d/init.d && ls'

Fernando Cerutti 54
UNISUL
Curso de Servidores Linux

Normalmente o Linux é inicializado no nível 3 - modo multiusuário.

Caso o sistema tenha problemas no /etc/inittab, pode-se reinicializar o sistema em


modo mono-usuário digitando-se linux 1 ou linux single na linha de comando do
LILO.

Por padrão o /etc/rc.d/rc.local simplesmente cria uma mensagem de acesso ao


sistema com a versão do kernel e o tipo da máquina.

Arquivos de Inicialização de Sessao

1 Arquivos Genéricos (todo o sistema)

Executados para cada usuárlo que se conecta ao sistema (login):

/etc/profile
/etc/bashrc

Fernando Cerutti 55
UNISUL
Curso de Servidores Linux

2 Arquivos Especificos (cada usuário)

• .bash_profile :Executado somente na inicialização do "shell de login".

• .bashrc: Executado sempre na inicialização de um shell qualquer (não


necessariamente de login)

• .bash_logout: Executado no encerramento da sessão (logout)

• .bash_history: Histórico dos comandos lá executados, podendo ser recuperados


e reexecutados

8. Comandos

8.1. Alterando a Senha do Usuário


No seu primeiro login a primeira coisa que o usuário deve fazer é alterar a senha
orlglnalmente criada pelo admInistrador do sistema.
Comando: passwd

Evitar:

• usar informações pessoais


• dizer a senha a qualquer pessoa (alô, aqui é o
administrador, preciso fazer manutenção, dona
Magda. Qual a sua senha?)
• escrever a senha em qualquer lugar (no monitor é um
bom lugar...)
• manter a mesma senha criada inicialmente

Preferir:

• uma senha incomum


• uma senha com no minimo 6 caracteres
• uma senha com pelo menos um caráter numérico
• alterar a senha regularmente

Fernando Cerutti 56
UNISUL
Curso de Servidores Linux

8.2. Comandos Básicos


cal
mostra calendário. Se você quiser um com mulher pelada, digite cal -pelada

cal 7 1001
July 1001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

date
Mostra a data e hora do sistema.

clear
"LImpa" a tela.

who
Mostra quem está conectado ao sistema.

whoami
Quem sou eu

w
Mostra quem está conectado ao sistema e o que está executando.

finger

Mostra Informações sobre usuários, por nome real ou userld


#finger fernando
Login: fernando Name: Fernando Cerutti
Directory: /home/fernando Shell: /bin/bash
Last login Thu Feb 21 17:55 (BRT) on ftp from adsl-fnsbnu-101-c.brt.telesc.net.br
No mail.
No Plan.

su -

Fernando Cerutti 57
UNISUL
Curso de Servidores Linux

Este comando é normalmente usado para se trabalhar temporariamente como


administrador (root)
Alguns magos do norte da Noruega recomendam não efetuar login como root e sim
como usuário comum. por razões de segurança (voce poderia alterar coisas, apagar,
fazer o que não queria). Caso seja necessária alguma função privilegiada, utiliza-se
o comando su retornando-se tão logo possivél ao usuário normal (com logout, exit
ou ctrl-d dependendo do shell).

• Redirecionamento
O redirecionamento consiste em alterar o modo normal do shell tratar os seguintes
arquivos
Entrada Padrão (stdin)
Saida Padrão ( stdout)
Saida de Erros (stderr)

Normalmente estes arquivos estão associados com o terminal (vídeo) do usuário.

Os seguintes simbolos são usados na linha de comandos para se redirecionar stdin,


stdout e/ou stderr para outras localizações, como por exemplo um arquivo ou
dispositivo

< redireciona stdin


> redireciona stdout (write)
>> redireciona stdout (append)
2> redireciona stderr

Exemplos:

Usa o arquivo memo como entrada para o programa mail

mail fernando < memo

Redireciona a saida do comado ls -l para um arquivo chamado meu.diretorio (se o


arquivo já extstir ele será regravado):
ls –l > meu.diretorio

Adiciona o conteúdo de mail/fernando ao arquivo mailvelho (não o regrava)

cat mail/fernando >> mailvelho

Redireciona as mensagens de erro da execução de myprog para um arquivo chamado


runtime.errors:

Fernando Cerutti 58
UNISUL
Curso de Servidores Linux

myprog 2 > runtime. errors

Redireciona a saida da execução de myprog para um arquivo chamado listagem e os


erros para um arquivo chamado erros:
myprog > listagem 2> erros

8.2.1. Pipes (Dutos)

Um pipe é usado pelo shell para conectar a stdout de um comando diretamente à


stdin de outro, sem alterar o conteúdo dos arquivos de entrada originais.
O simbolo para o pipe é a barra vertical ( l ) e a sintaxe do comando fica:

comandol [argumentos ] | comando2 [argumentos ]

Pipes permitem com o uso de um comando o que de outra forma acarretarla múltiplos
comandos e arquivos intermediários.

Por exemplo, as operações 1 e 2 abaixo, são equivalentes:

Operação 1

who > temp sort temp

Operação 2

who | sort

Dois usos muito comuns para um pipe são o more e o grep, como por exemplo

ls -al l more
who l more
who l grep fernando
ps ug l grep fernando

Filtro
É um comando que processa uma sequência de entrada e produz uma sequência de
saída. Linhas de comandos que usam um filtro irão incluir pipes para conectar o filtro
à stdout de um processo e à stdin de outro.
Por exemplo, a lInha abaixo toma a saida de who e a classifica. A sequência
classificada é então passada para o comando lpr para impressão. No caso, sort é um
filtro.

# who | sort | lpr

Fernando Cerutti 59
UNISUL
Curso de Servidores Linux

history
Para visualizar o histórico:

[fernando@charcharodon root]$ history | tail -10


812 alias
813 h
814 vi novo
815 vi novo
816 vi dir
817 set -o vi
818 exit
819 hystory
820 history
821 history | tail -10

Para reexecutar uma das linhas de comando:

!! repete a última linha de comando

!5 repete a linha número 5 da lista


[fernando@charcharodon root]$ !817
set -o vi

!string repete a linha que inicia com string

8.2.2. Teclas de Controle

Algumas combinações de teclas têm significado especial. Estas teclas de controle


são aclonadas pressionando-se a tecla [Ctrl] e ao mesmo tempo uma segunda tecla.
As combinações mais comuns são as seguintes:

Fernando Cerutti 60
UNISUL
Curso de Servidores Linux

[Ctrl-u] Apaga tudo que tenha sido digitado na linha de comando


[Ctrl-h] Backspace (normalmente)
[Ctrl-c] Cancela a execução de um comando
[Ctrl-z] Suspende a execução de um comando
[Ctrl-s] Interrompe a rolagem de tela
[Ctrl-q] Reinicia a rolagem de tela
[Ctrl-d] Sai de um programa interativo (sinaliza fim de dados)

Fernando Cerutti 61
UNISUL
Curso de Servidores Linux

9. DNS - Domain Name System


O Começo, do Início...
"Por onde devemos começar, majestade"? Perguntou o
esquimó Xunga Lunga ao rei Choon Lie. O rei
respondeu: "Pelo início, indo com cuidado até
chegarmos no final. Depois, paramos." 350 micro-
homens aplaudiram, enquanto tentavam dominar suas
focas ainda não domesticadas...
(Tales from greenland, anonymous 134 aC)

Qualquer hacker de Timbó Grande sabe que o endereçamento TCP/IP envolve um


número de 32 bits, que certamente será difícil de relembrar quando tratamos com diversas
máquinas. De qualquer forma, máquinas podem ser conhecidas por um nome em especial,
como canelone ou lasanha.
O DNS1 converte os nomes das máquinas para seus endereços IP. Ele mapeia do
nome para o endereço e do endereço para o nome, e efetua outras funções.
O mapeamento é simplesmente uma associação entre duas coisas.
Nesse caso, uma delas é o nome da máquina, por exemplo ftp.unisul.br e o número
IP da máquina (ou endereço IP) 200.18.12.16.

Desta forma é transferida para a aplicação a tarefa de encontrar o endereço IP


correspondente ao nome informado. Este processo é chamado de resolução de nomes de
máquinas. Uma aplicação que deseje encontrar um endereço IP de uma determinada máquina
não necessita ter as suas próprias rotinas de pesquisa de máquinas e endereços IP. Ao invés
disso ela pode utilizar diversas funções de bibliotecas que fazem isso de forma transparente,
chamadas gethostbyname() e gethostbyaddr(). Tradicionalmente, estas e diversas outras
funções estão agrupadas em uma biblioteca em separado denominada resolver.
O DNS consegue organizar um número absurdamente grande de
máquinas conectadas possibilitando que se enxerguem, umas às outras, em uma
rede.

9.1. História
Durante os anos 70, quando a ARPANet era uma comunidade pequena,
amistosa, composta por uma centena de hosts, um único arquivo, HOSTS.TXT
continha todos os nomes e endereços necessários.
Em uma pequena rede Ethernet ou mesmo em um pequeno conjunto delas, não é muito difícil
manter uma tabela de mapeamento de nomes de máquinas e seus endereços. Esta informação é
normalmente mantida em um arquivo denominado /etc/hosts. Ao adicionar ou remover
máquinas à rede, o arquivo hosts deverá ser atualizado em todas as máquinas da rede.
Obviamente isso se tornará inviável em redes que contenham mais que algumas poucas
máquinas.

A tabela /etc/hosts do Unix foi copiada desse arquivo.

1
Sistema de nomes de domínios

Fernando Cerutti 62
UNISUL
Curso de Servidores Linux

# The format of this file is:


# Internet Address Hostname # Comments
# Items are separated by any number of blanks and/or tabs. A '#'
# indicates the beginning of a comment; characters up to the end of the
# line are not interpreted by routines which search this file. Blank
# lines are allowed.

# Internet Address Hostname # Comments


# 192.9.200.1 net0sample # ethernet name/address
# 128.100.0.1 token0sample # token ring name/address
# 10.2.0.2 x25sample # x.25 name/address
127.0.0.1 loopback localhost # loopback (lo0)
name/address
200.135.0.3 server1 server1.pop-sc.rnp.br
3ffe:2b00:21:2:a00:5aff:fef8:c939 avai.pop-sc.6bone.rnp.br
3ffe:2b00:21:2:4260:8cff:fee8:d50 figuera.pop-sc.6bone.rnp.br
150.162.252.151 switch-atm
Figura 9-1 /etc/hosts de um unix AIX

O arquivo HOSTS.TXT era mantido pelo NIC (Network Information Center) do


SRI (Stanford Research Institute, Ca.) Os administradores dos hosts enviavam suas alterações
através de e-mail para o SRI-NIC e depois ftpezavam o HOSTS.TXT atualizado. Em 82,
quando a ARPANet trocou seus protocolos pela pilha TCP/IP, a população da rede explodiu.
Agora, existiam toneladas de problemas com o HOSTS.TXT:
-Tráfego e Carga:
A distribuição do arquivo gerou um trabalho insustentável nos servidores do SRI-NIC.
-Colisão de Nomes:
O NIC tem o poder de controlar os endereços IP, mas o controle dos nomes não é uma tarefa
centralizada.
-Consistência: Manter a consistência de um arquivo em uma rede com crescimento
exponencial tornou-se tarefa cada vez mais árdua.
(O intervalo de tempo entre a distribuição de uma nova versão pode dar origem a varias
alterações, novos ingressos, maquinas retiradas...)

Os órgãos responsáveis pela ARPA resolveram criar um sucessor para o HOSTS.TXT.A meta
era criar um sistema que resolvesse os problemas inerentes a uma tabela de hosts unificada em
um sistema que estava cada vez mais distribuído. O novo sistema deveria ter administração
local dos dados, e ao mesmo tempo disponibilizar esses dados globalmente. A
descentralização permitiria eliminar o bottleneck gerado pelo uso de um único host
gerente. E também iria diminuir o tráfego.
O responsável pelo projeto foi Paul Mockapetris, que nasceu em uma aldeia eslovaca 12343
mil anos atrás. Em 1984, ele lançou os RFCs 882 e 883, descrevendo o Domain Name
System. Atualmente, tais RFCs foram substituídos pelo 1034 e 1035.

Fernando Cerutti 63
UNISUL
Curso de Servidores Linux

O Domain Name System é um banco de dados distribuído. Isto permite o controle de todos os
segmentos do banco de dados, uma vez que cada segmento esta disponível na rede através de
um sistema client-server. A robustez e a performance ficam garantidas pela utilização da
replicação e caching.

9.2. Formato dos domínios (Espaço de nomes)


Cada unidade de dados do banco distribuído do DNS é indexada por um nome. Este nome é,
basicamente, uma rota em uma árvore invertida, chamada de Espaço de Nomes de Domínios.
No topo desta árvore está o domínio raiz. Como em um sistema de arquivos, cada ramo da
árvore de domínios pode ter um número qualquer de outros ramos

Figura 9-2 A distribuição dos ramos dos nomes de domínio

Fernando Cerutti 64
UNISUL
Curso de Servidores Linux

Figura 9-3 - extensão da árvore do DNS


A árvore do DNS tem grande extensão horizontal
mas pequena vertical (A maioria dos hosts aparece no
5o. Nível)

Figura 9-4 O banco de dados do DNS e um filesystem UNIX


Apesar de terem estruturas semelhantes, a leitura é feita em um processo inverso:

Fernando Cerutti 65
UNISUL
Curso de Servidores Linux

Figura 9-5 - Leitura de nomes no Unix e no DNS

9.3. Conceitos
O programa que controla o DNS é denominado BIND (Berkeley Internet Name Domain).
Programas chamados Nameservers (named) constituem o lado servidor do BIND. Eles contém
as informações de cada segmento da base de dados e tornam esses segmentos disponíveis para
os clientes, chamados resolvers.

9.3.1. Resolvers
Os resolvers são muitas vezes somente bibliotecas que criam queries
e as transmitem através da rede até um servidor de nomes. Os resolvers são programas clientes
acessados por duas funções principais:
• gethostbyname
• gethostbyaddress
O programa resolver não está alojado diretamente no kernel, como a pilha TCP/IP. Veja na
figura abaixo as funções e protocolos envolvidos em uma chamada ftp.
Você digita ftp ftp.unisul.br

Fernando Cerutti 66
UNISUL
Curso de Servidores Linux

hostname
hostname
FTP Resolver
estabelece ip address
conexão com o
endereço ip TCP
Envia datagramas
para um endereço ip
IP

Solicita, em ARP
broadcast, a
resolução do IP Eth driver
para MAC

Figura 9-6 - Rotinas e protocolos


9.3.2. Zona (zone):
Não é um prostíbulo ou uma festa romana. São as informações contidas nos
arquivos do banco de dados do DNS. Na prática, uma zona é um arquivo, definido no
/etc/named.conf do servidor, que contém os registros do DNS.

9.3.3. Domínio (Domain):


Porção de uma hierarquia identificada por um nome (unisul.br). Um domínio
normalmente é organizado em unidades menores, mais gerenciáveis, com poderes delegados,
chamadas zonas. Um domínio nada mais é do que uma sub-árvore do espaço de nomes de
domínio. O nome de um domínio é o nome do ramo que está no topo daquele domínio. Por
exemplo, o topo do domínio maranhao.nafta.com.br é um ramo chamado nafta.com.br, da
mesma forma como você esperaria encontrar o diretório /usr no topo de /usr/local

Fernando Cerutti 67
UNISUL
Curso de Servidores Linux

Sub-arvore do
domínio edu

Deleg
ação da zona
purdue do
Figura 9-7 O domínio edu quebrado em zonas domínio edu

Um sub-domínio, ou domínio filho, não


existe sem que o domínio acima dele, ou pai,
delegue poder para o cara. Esse princípio é
fundamental para o funcionamento do DNS.

Isso é feito acrescentando na zona do pai, um ou mais registros NS para os


servidores do domínio filho:

; dominio filho RR maquina


maranhao.nafta.com.br. NS roseana.maranhao.nafta.com.br.
NS dinastia.maranhao.nafta.com.br.
;glue records
roseana.maranhao.nafta.com.br. IN A 192.168.2.1
dinastia.maranhao.nafta.com.br. IN A 192.168.2.2

No exemplo acima, as máquinas roseana e dinastia estão em um dominio diferente da zona que
está sendo mapeada (nafta.zone) É necessário colocarmos um registro tipo A para
roseana.maranhao e dinastia.maranhao nessa zona, pois as máquinas externas a nafta.com.br

Fernando Cerutti 68
UNISUL
Curso de Servidores Linux

podem obter o nome do servidor do dominio maranhao (NS record) , mas devem obter também
o endereço!!!, através do registro A. Isso é chamado de “Glue record”

Figura 9-8 - Domínio Berkeley quebrado em zonas

Diferenças entre domínio e zonas:

Figura 9-9 O domínio e a zona "ca"

Fernando Cerutti 69
UNISUL
Curso de Servidores Linux

Cada nó da hierarquia do DNS tem um nome de até 63 caracteres.


O início, ou raiz da hierarquia é um nó sem rótulo, conhecido por root, como nos filesystems do
Unix “ “

Figura 9-10 - Nomes únicos


A disposição hierárquica do DNS e dos file-system do Unix impedem a existência de nomes
iguais em um mesmo nível

Os nomes de domínio são apenas índices do banco de dados do DNS; assim, as


máquinas são os nomes de domínio que apontam para informações sobre máquinas individuais.

Os domínios localizados nas pontas dos


ramos da árvore de domínios geralmente
representam máquinas individuais . Os nomes de
domínios podem apontar para um endereço de rede
ou informações de roteamento de correio
eletrônico.

Os domínios internos podem apontar para uma máquina específica e podem


apontar para informações estruturais sobre os subdomínios. Por exemplo, nafta.com.br pode

Fernando Cerutti 70
UNISUL
Curso de Servidores Linux

ser o nome do domínio da Organização nafta e ainda o nome de domínio de uma máquina que
encaminha correio eletrônico entre a Internet e a empresa.
A Universidade de Timbó Grande pode ter um domínio chamado por exemplo
bigtimbo.edu.br, com a rede do Departamento de Matemática definida como
mat.bigtimbo.edu.br. Máquinas em uma rede departamental terão o nome do domínio
adicionado ao seu nome individual. Então arquimedes será conhecida como
arquimedes.mat.bigtimbo.edu.br. Esta denominação é chamada de nome de domínio
totalmente qualificado, ou FQDN, o qual identifica uma única máquina em todo o mundo.

9.4. Hierarquia organizacional do DNS


Top-level Domains

Os domínios do nível superior se dividem em três áreas: Arpa, generic top-level domains, ou
gTLDs e country domains ou geografical domains

Arpa é um domínio especial usado para mapear nomes para endereços.

9.4.1. domínio ARPA:

Fernando Cerutti 71
UNISUL
Curso de Servidores Linux

Os nós no domínio in-addr.arpa são rotulados após os números na notação decimal dos octetos
IP. O domínio in-addr.arpa, por exemplo, pode Ter até 256 sub-domínios, cada um
correspondendo a um valor possível do primeiro octeto do endereço IP (0-255). Cada um
desses sub-domínios, ou domínio filhos, pode Ter até 256 sub-domínios, filhos dos filhos, que
correspondem aos valores possíveis do segundo octeto. Finalmente, no qurto nível da
hierarquia, existe os RR (resource records) anexados ao octeto final, originando o nome
completo do host ou da rede daquele endereço IP. Essa novela global termina em um domínio
medonho de grande, o in-addr.arpa. Esse cara comporta todos os endereços IP válidos na
Internet.

Figura 0-1 addr.arpa domain


Devemos estar atento a disposição inversa dos octetos quando lidos no nome do domínio. Isso
porque o nome é lido da folha para a raíz Por exemplo, se o IP da máquina winnie.corp.hp.com
é 15.16.192.152, o sub-domínio correspondente na árvore do domínio in-addr.arpa é
152.192.16.15.in-addr.arpa, o que irá mapear para o nome do domínio winnie.corp.hp.com.

O endereço Ip está representado de forma oposta quando usado no “espaço de nomes” do DNS,
com o primeiro octeto no chão (final) do domínio in-addr.arpa. Dessa maneira, o endereço IP
será lido de baixo para cima no nome do domínio A maior diferença na hierarquia do IP e do
DNS está na direção da especificidade. O IP fica mais específico da esquerda para direita,
enquanto os domínios são mais específicos da direita para a esquerda.

Fernando Cerutti 72
UNISUL
Curso de Servidores Linux

:
Figura 0-2 – Hierarquia de nomes e endereços IP

Deixando os primeiros octetos do endereço IP aparecerem nos ramos superiores da árvore


permite-se aos administradores delegarem autoridade para os sub-domínios in-addr.arpa ao
longo da sua rede. Por exemplo, o domínio 15.in-addr.arpa que contém o mapeamento reverso
para todos os Ips da rede 15, pode ser delegado para as sub-redes da rede 15.0.0.0. Isso seria
impossível se os octetos aparecessem na ordem contrária, pois nesse caso, o domínio 15.in-
addr.arpa representaria todos os hosts com o ultimo octeto igual a 15, e não um domínio
prático, o qual poderia ser delegado.

9.4.2. Domínios genéricos (generic top-level domains, ou gTLDs)

Os 7 domínios de 3 letras são denominados Generic Domains


Originalmente, a Internet foi dividida em sete domínios genéricos, de maneira a dividir a
Internet por tipo de organização. Os domínios originais são:
• com: Organizações comerciais
• edu: Organizações de ensino
• gov: Organizações governamentais
• mil: Organizações militares
• net: Organizações da rede
• org: Organizações internacionais

Embora os domínios originais devessem continuar a ser respeitados dentro de cada um dos
domínios internacionais, isto acabou não ocorrendo. Cada país definiu suas próprias regras para
divisão. A Inglaterra usa ac.uk para seu domínio acadêmico, ao invés de edu.
No brasil, os domínios são controlados pela FAPESP, através do site http://registro.br

Fernando Cerutti 73
UNISUL
Curso de Servidores Linux

9.4.3. geographical domains

Todos os domínios de duas letras, possuem os nomes baseados nos códigos de países da norma
ISO 3166, menos a Inglaterra. Ela deveria ser gb pela norma, mas usa uk. Segundo o Cricket,
isso não tem importância, pois os caras dirigem no lado errado das estradas, também.

Domain Country or Organization


AD Andorra
AE United Arab Emirates
AF Afghanistan
AG Antigua and Barbuda
AI Anguilla
AL Albania
AM Armenia
AN Netherlands Antilles
AO Angola
AQ Antarctica
AR Argentina
ARPA ARPA Internet
AS American Samoa
AT Austria
AU Australia
AW Aruba
AZ Azerbaijan
Tabela 1 Alguns dos Top level domains

Fernando Cerutti 74
UNISUL
Curso de Servidores Linux

9.5. Dinâmica do serviço


O DNS utiliza a porta 53 dos protocolos UDP e do TCP. Na verdade, o TCP só é usado para
transferencia de zonas entre os servidores e mensagens maiores que 512 bytes. Quando a
pesquisa retorna com uma resposta maior que 512 (bit TC setado – “pacote truncado”), o
resolver envia nova requisição via TCP.

• passos para a felicidade:


Vamos verificar os passos necessários para que um cliente possa acessar um seridor de telnet
ou rlogin:

O cliente chama sua função resolver para converter o nome do host em um endereço IP. Uma
query do tipo A é enviada a um servidor de nomes root (topo dos domínios)

Qual o registro A do
servidor de telnet?

NS do
servidor de
telnet root server
Cliente telnet

Qual o registro A do
servidor de telnet?

Registro A
do servidor
Dell
de telnet Servidor de
nomes do
Cliente telnet servidor de
telnet

Fernando Cerutti 75
UNISUL
Curso de Servidores Linux

Conexão
TCP entre
os caras
Cliente Telnet Servidor de Telnet

O servidor de telnet pode requisitar uma confirmação do IP do cliente através do domínio in-
addr.arpa. Isso gera fluxo adicional de pacotes, mas garante autenticidade a comunicação:

Qual o registro PTR


do cliente de telnet?

O servidor de nomes
do cliente é NS do
domínio

Servidor de telnet Root Server

Qual o registro PTR


do cliente de telnet?

Dell
Servidor de nomes do
Servidor de o registro PTR do cliente de telnet é
telnet cliente de telnet
roseana.maranhao.nafta.com.br

Fernando Cerutti 76
UNISUL
Curso de Servidores Linux

Qual o registro A do
cliente de telnet?

O ip da roseana é x

ServidorDell
de nomes do
cliente de telnet

Servidor de telnet

Agora o servidor de telnet pode confirmar a informação e validar a conexão. Obviamente que
um serviço de caching de nomes diminui bastante a transmissão através da rede.
Resumindo:

Na verdade, o fluxo é bem maior, uma vez que cada servidor de domínio, começando pelo root,
remete a resposta com o nome do servidor do dominínio mediatamente abaixo do seu,
conforme a figura:

Fernando Cerutti 77
UNISUL
Curso de Servidores Linux

Figura 0-3O processo de resolução entre servidores de domínio

Fernando Cerutti 78
UNISUL
Curso de Servidores Linux

Figura 0-1- tipos de registros

Fernando Cerutti 79
UNISUL
Curso de Servidores Linux

10. Instalação e configuração do Bind

Para iniciar, devemos testar a acessibilidade de nossas máquinas na rede. Pode-se começar com
um telnet para o localhost (127.0.0.1).

Faça Cópias dos originais


• Todos os arquivos que forem alterados na
configuração
• devem ser copiados anteriormente.
• Isso evita noites de insônia,
• e mantém a sanidade do administrador

Pode-se conseguir os binários para qualquer distribuição do Linux, mas o melhor sempre são os
fontes. Para buscar a última versão dos fontes visite o site do Internet Software Consortium,
responsável pelo BIND e DHCP:

http://www.isc.org/bind

Fazer o download da ultima versão (fontes!!!)


Aqui se está falando da versão 9.2.0 do bind
Mover para /usr/local
Unzipar
Tar –xvf

./configure
make
make install

10.1. Versão do BIND


Para sabermos qual a versão do bind estamos usando, podemos usar o
comando:

[root@tproxy2 /root]# which named

Fernando Cerutti 80
UNISUL
Curso de Servidores Linux

/usr/local/sbin/named
[root@tproxy2 /root]# named -v
BIND 9.2.0
[root@tproxy2 /root]#

Nas versões mais antigas, pode ser necessário verificar os arquivos citados no man do named:
man named.
Se no final, seção Files, estiver citado o arquivo named.conf=bind 8.x ou maior. Se o arquivo
for named.boot, o bind é versão 4. Nesse caso, mude para a versão mais atual (urgente).

10.2. Tipos de configuração


O software BIND pode ser configurado para atuar de maneiras diferentes:
• Caching-only
• Servidores Primários (masters)
• Servidores Secundários (slaves)
Caching-only servers
Servidores de cache são aqueles que rodam o software named mas não são fontes oficiais de
informação a respeito dos domínios.
Esses servidores obtém a resposta a todas as perguntas que lhe são direcionadas pelos resolvers,
partir de outro servidor, remoto. São importantes para a performance, uma vez que aproximam
a informação dos clientes, evitando também tráfego na rede.

Fernando Cerutti 81
UNISUL
Curso de Servidores Linux

Distribuição de servidores não registrados externamente – caching only.

Servidores Primários (master)


• Os servidores primários são as fontes oficiais de qualquer informação a respeito de um
domínio
• As informações são armazenadas em arquivos locais , mantidos pelo administrador do
domínio.
• Um servidor primário é o mestre, uma vez que pode responder a qualquer pergunta sobre
seu domínio com total autoridade.

Servidores secundários
• São aqueles que transferem um conjunto completo de informações a
partir do servidor primário.
• Os arquivos descrevendo as zonas são transferidos do servidor primário
• E armazenados no servidor secundário como sendo arquivos locais.
• Esse processo é o zone transfer
• O servidor secundário mantém uma cópia completa das informações do
domínio, e responde a perguntas com autoridade.

Fernando Cerutti 82
UNISUL
Curso de Servidores Linux

10.2.1. Um servidor DNS somente de Cache


• Um servidor de nomes somente para cache (caching only name server) irá encontrar os
nomes solicitados
• e lembrar desse mapeamento quando precisarmos dele novamente.
Isso faz com que o tempo de espera para a resposta seja abreviado significativamente,
• especialmente quando estamos conectados a baixas velocidades.

10.2.2. Estrutura de arquivos


BIND

/etc/hosts resolver named


cliente (cliente) (server)
resolve rapidamente

/etc/host.conf /etc/resolv.conf /etc/named.conf


order host,bind domain configura o servidor
configura a sequencia de busca nameserver directory
search arquivos de zonas

named.ca zona1.zone
cache arquivo de zona

16.172.inn-addr.arpa.revzone zona2.bk
arquivo de zona reversa arquivo de zona atuando como slave

10.2.3. /etc/host.conf

order hosts,bind

10.2.4. /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
200.135.0.11 tproxy2.pop-sc.rnp.br
10.2.5. /etc/resolv.conf

search pop-sc.rnp.br
nameserver 150.162.1.3
nameserver 150.162.1.7

10.2.6. /etc/named.conf
• Esse é o primeiro arquivo que precisamos.
• Ele é lido quando o /usr/sbin/named inicializa.

Fernando Cerutti 83
UNISUL
Curso de Servidores Linux

• Inicialmente ele pode conter somente o seguinte:

options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};

//
// a caching only nameserver config
//
zone "." IN {
type hint;
file "named.ca";
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

Fernando Cerutti 84
UNISUL
Curso de Servidores Linux

Directory
• A linha “directory” avisa ao named onde procurar os arquivos.
• Todos os arquivos nomeados subsenquentemente serão pesquisados no diretório relativo a
esse.
• A escolha do /var/named está de acordo com os padrões do sistema de arquivos do Linux.
• diretório pode ser outro, por exemplo:
• /usr/local/named/

10.2.7. /var/named/named.ca
• Este arquivo descreve os servidores de nome root em toda a Internet.
• Ele pode ser alterado a qualquer momento.

Fernando Cerutti 85
UNISUL
Curso de Servidores Linux

10.3. Inicialização dos serviços:


O named já pode ser inicializado. Digite :

# /usr/sbin/named

verificação:
para saber se tudo correu bem podemos analizar o log de mensagens do sistema:

# tail -f /var/log/messages

10.4. Servidor slave


/etc/named.conf

zone "larc.org.br" { type slave; file "secundarios/larc-org.zone";


masters { 150.162.229.1;}; };

10.5. Servidor master


10.5.1. Arquivo /etc/named.conf
Além das opções vistas para o cache-only, devemos acrescentar:

zone "linux.pop-sc.rnp.br" IN {
type master;
file "linux.zone";

// IP dos slaves/caching only que permitimos transferir a zona linux.pop-sc.rnp.br


allow-transfer {
150.162.254.20;
200.135.0.3;
};

};

//zona reversa para linux.pop-sc.rnp.br

//zone "0.135.200.in-addr.arpa" {
// type master;
// file "0.135.200.revzone";

Fernando Cerutti 86
UNISUL
Curso de Servidores Linux

// allow-update { none; };
//};

// configuracao desse servidor como slave de um sub-dominio lab1.linux.pop-sc.rnp.br


zone "lab1.linux.pop-sc.rnp.br" {
type slave;
file "lab1.linux.pop-sc.rnp.br.bk";
// IP address do master para a zona lab1
masters { 150.162.254.20; };
};

key "key" {
algorithm hmac-md5;
secret "zXxCNdOqnwcoIZKzeAGbnencijFrUlxJtabaybVA0OLxpnbgL0gckHXfGkhP";
};

10.5.2. Arquivo /var/named/linux.zone

linux.pop-sc.rnp.br. IN SOA tproxy2.pop-sc.rnp.br. root.tproxy2.pop-s


c.rnp.br. (
2002020801 ; Serial
14400 ; Refresh
3600 ; Retry
864000 ; Expire
86400 ) ; Minimum

NS tproxy2.pop-sc.rnp.br.
NS server1.pop-sc.rnp.br.
;
;
linux.pop-sc.rnp.br. A 200.135.0.51
MX 1 tproxy2.pop-sc.rnp.br.
ns A 200.135.0.51
www CNAME linux.pop-sc.rnp.br.

Fernando Cerutti 87
UNISUL
Curso de Servidores Linux

10.5.3. Arquivo /var/named/linux.revzone

; linux.revzone
;
$TTL 1d
@ IN SOA lab1.linux.unisul.br.root.ns.lab1.linux.unisul.br. (
2000062101 ; Serial
21600 ; Refresh (6 hours)
3600 ; Retry (1 hour)
32000 ; Expire (5 days)
86400 ; Minimum (1 day)) ;

;
IN NS ns.lab1.linux.unisul.br.
IN NS ns2.lab1.linux.unisul.br.
1 IN PTR jacare.lab1.linux.br.
2 IN PTR hell.lab1.linux.unisul.br.
3 IN PTR aldeia.lab1.linux.unisul.br.
;4 IN PTR divida.lab1.linux.unisul.br.
;5 IN PTR matriz.lab1.linux.unisul.br.
7 IN PTR grana.lab1.linux.unisul.br.
8 IN PTR gnssrv.lab1.linux.unisul.br.
;9 IN PTR arcturus.lab1.linux.unisul.br.
11 IN PTR porta01.lab1.linux.unisul.br.
12 IN PTR porta02.lab1.linux.unisul.br.
13 IN PTR porta03.lab1.linux.unisul.br.
14 IN PTR porta04.lab1.linux.unisul.br.
15 IN PTR porta05.lab1.linux.unisul.br.
16 IN PTR porta06.lab1.linux.unisul.br.
17 IN PTR porta07.lab1.linux.unisul.br.
18 IN PTR porta08.lab1.linux.unisul.br.
19 IN PTR porta09.lab1.linux.unisul.br.
20 IN PTR porta10.lab1.linux.unisul.br.

10.6. Erros e problemas

Fernando Cerutti 88
UNISUL
Curso de Servidores Linux

Se houver algum erro,


named tentará determinar o arquivo que ocasionou o erro
named.conf , etc
Apague o named.conf e volte a editar o arquivo.

10.7. Ferramentas de verificação


• host
• whois (http://registro.br)
• dig
• nslookup

10.7.1. host

host –v [hostname]
[root@tproxy2 /root]# host -v charcharodon.atm.ufsc.br
Trying "charcharodon.atm.ufsc.br."
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43871
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;charcharodon.atm.ufsc.br. IN A

Fernando Cerutti 89
UNISUL
Curso de Servidores Linux

;; ANSWER SECTION:
charcharodon.atm.ufsc.br. 3600 IN A 150.162.254.20

Received 58 bytes from 150.162.1.7#53 in 8 ms


[root@tproxy2 /root]#

host –v
Trying "3.0.135.200.in-addr.arpa."
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62457
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 3, ADDITIONAL: 2

;; QUESTION SECTION:
;3.0.135.200.in-addr.arpa. IN PTR

;; ANSWER SECTION:
3.0.135.200.in-addr.arpa. 21544 IN PTR server1.pop-sc.rnp.br.
3.0.135.200.in-addr.arpa. 21544 IN PTR ns.pop-sc.rnp.br.
3.0.135.200.in-addr.arpa. 21544 IN PTR pop-sc.rnp.br.

;; AUTHORITY SECTION:
0.135.200.in-addr.arpa. 16828 IN NS server1.pop-sc.rnp.br.
0.135.200.in-addr.arpa. 16828 IN NS SERVER2.pop-sc.rnp.br.
0.135.200.in-addr.arpa. 16828 IN NS SERVER1.CR-DF.rnp.br.

;; ADDITIONAL SECTION:
server1.pop-sc.rnp.br. 52840 IN A 200.135.0.3
SERVER2.pop-sc.rnp.br. 38369 IN A 200.135.0.5

Received 204 bytes from 150.162.1.3#53 in 26 ms

host –a

10.7.2. NSLOOKUP
A ferramenta nslookup é poderosa para detectar erros de configuração em real-time. Digite:

# nslookup
Default Server: localhost
Address: 127.0.0.1

Fernando Cerutti 90
UNISUL
Curso de Servidores Linux

set type=mx
lab1.linux.unisul.br

> www.microsoft.com.br
Server: 150.162.1.3
Address: 150.162.1.3#53

Non-authoritative answer:
www.microsoft.com.br canonical name = ss1.terraempresas.com.br.

Authoritative answers can be found from:


terraempresas.com.br
origin = adpoa02.terraempresas.com.br.
mail addr = sysadm.sao.terraempresas.com.br.
serial = 2002021801
refresh = 120
retry = 300
expire = 604800
minimum = 300

set all
Default server: 150.162.1.3
Address: 150.162.1.3#53
Default server: 150.162.1.7
Address: 150.162.1.7#53
Default server: 200.135.0.3
Address: 200.135.0.3#53

Set options:
novc nodebug nod2
defname search recurse
timeout = 0 retry = 2 port = 53
querytype = mx class = IN
domain = atm.ufsc.br

mudando o servidor
mudar o servidor pode dar uma ideia de como o resto do planeta está vendo nosso domínio

server 200.135.0.3

set query=any
procura qualquer registro

Fernando Cerutti 91
UNISUL
Curso de Servidores Linux

10.7.3. WHOIS

[root@tproxy2 /root]# whois -h whois.arin.net net 150.162


[whois.arin.net]
Universidade Federal De Snata Catarina (NET-UFSC-ANSC)
Nucleo de Processamento de Dados
Campus Universitario Trindade - CP 88049
Santa Catarina
BR

Netname: UFSC-ANSC
Netblock: 150.162.0.0 - 150.162.255.255

Coordinator:
Vieira, Elvis Melo (EMV-ARIN) elvis@UFSC.BR
048 231 9222 ext. 219 048 231 9436 (FAX) 048 231 9766

Domain System inverse mapping provided by:

NS.UFSC.BR 150.162.1.3
SERVER1.POP-SC.RNP.BR 200.135.0.3
SERVER07.NPD.UFSC.BR 150.162.1.7

Record last updated on 13-Feb-1997.


Database last updated on 12-Feb-2002 19:56:22 EDT.

The ARIN Registration Services Host contains ONLY Internet


Network Information: Networks, ASN's, and related POC's.
Please use the whois server at rs.internic.net for DOMAIN related
Information and whois.nic.mil for NIPRNET Information.

Ferramentas whois externas:


Registro.br (fapesp)
Internic.net (inteNIC)

Fernando Cerutti 92
UNISUL
Curso de Servidores Linux

http://www.internic.net/whois:

named-checkconf
verifica a sintaxe do named.conf file.
named-checkconf [-t directory] [filename]

named-checkzone
verifica a sintaxe e consistência de um arquivo master
named-checkzone [-dq] [-c class] zone [filename]

rndc
No BIND 9.2, rndc suporta todos os comandos do BIND 8 ndc, menos ndc start.
Um arquivo de configuração é necessário, uma vez que toda comunicação como servidor é
autenticada com assinaturas digitais.
O arquivo padrão de configuração rndc é /etc/rndc.conf, que pode ser copiado de
/usr/local/bind-9.2.0/bin/rndc

* Sample rndc configuration file.


*/
options {
default-server localhost;
default-key "rndc-key";
};

Fernando Cerutti 93
UNISUL
Curso de Servidores Linux

server localhost {
key "rndc-key";
};

key "rndc-key" {
algorithm hmac-md5;
secret "qgNpeX+nujwRRrYiK7IHqA==";
};

Se o arquivo de configuração não for encontrado, o rndc irá procurar no /etc/rndc.key O


rndc.key é gerado com o comando rndc-confgen -a

key "rndc-key" {
algorithm hmac-md5;
secret "qgNpeX+nujwRRrYiK7IHqA==";
};
O formato do arquivo de configuração é similar ao named.conf

1) copiamos o rndc.conf para /etc


2) geramos a chave com rndc-confgen –a
3) copiamos a chave para o final do /etc/named.conf
4) copiamos a chave para /etc/rndc.conf

Usage: rndc [-c config] [-s server] [-p port] [-y key] [-V] command

command is one of the following:

reload Reload configuration file and zones.


reload zone [class [view]]
Reload a single zone.
refresh zone [class [view]]
Schedule immediate maintenance for a zone.
reconfig Reload configuration file and new zones only.
stats Write server statistics to the statistics file.
querylog Toggle query logging.
dumpdb Dump cache(s) to the dump file (named_dump.db).
stop Save pending updates to master files and stop the server.
halt Stop the server without saving pending updates.
trace Increment debugging level by one.
trace level Change the debugging level.
notrace Set debugging level to 0.
flush Flushes all of the server's caches.
flush [view] Flushes the server's cache for a view.
status Display status of the server.
*restart Restart the server.

* == not yet implemented


O remote name daemon control (rndc) permite ao administrador controlar a operação do
servidor de nomes

Fernando Cerutti 94
UNISUL
Curso de Servidores Linux

rndc [-c config] [-s server] [-p port] [-y key] command [command...]

reload
Recarrega os arquivos de configuração e as zonas.
reload zone [class [view]]
Recarrega uma zona.
reconfig
Recarrega a configuração e as novas zonas, mas não as já existentes, mesmo que tenham sido
alteradas.
stats
Grava statísticas em um arquivo.
Estrutura de arquivos do DNS
BIND

/etc/hosts resolver named


cliente (cliente) (server)
resolve rapidamente

/etc/host.conf /etc/resolv.conf /etc/named.conf


order host,bind domain configura o servidor
configura a sequencia de busca nameserver directory
search arquivos de zonas

named.ca zona1.zone
cache arquivo de zona

16.172.inn-addr.arpa.revzone zona2.bk
arquivo de zona reversa arquivo de zona atuando como slave

Para obtermos a configuração inicial do Bind:


1)Abaixo do /etc devemos criar os arquivos, conforme descrito nas páginas anteriores:
• resolv.conf
• named.conf

2) Criar o diretório contido na diretiva “Directory” das opções gerais do named.conf:

#mkdir /var/named

O /var/named vai conter nossos arquivos genéricos


• named.local
• localhost.zone
• named.ca
Além disso, nossos arquivos de zonas especificas:
• minha_zona.zone
• 0.168.192.in-addr.arpa.revzone

named.local

Fernando Cerutti 95
UNISUL
Curso de Servidores Linux

Atenção para o parâmetrol $ TTL 86400 -> 1 dia. Ele passou a ser obrigatório nos arquivos de
zona da versão 9.x
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.

1 IN PTR localhost.

Localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

1D IN NS @
1D IN A 127.0.0.1

named.ca
O named.ca, ou named.root, é o arquivo que informa ao BIND onde
encontrar os servidores “roo”, no topo dos domínios. Ele deve sofre
atualizações, para que não fique sucateado.
Podemos fazer isso com um ftp para rs.internic.net
Abaixo, um script que efetua isso sozinho:

#!/bin/bash
ftp –ni rs.internic.net <<EOF
user anonymous usuario@unisul.br
cd /domain
hash
bin
get named.root
EOF
cp named.root /var/named/named.ca
#mudar para o diretorio do named
#cuidado: na versao 8.x ele fica em /usr/bin
#podemos usar também o /etc/rc.d/init.d

cd /usr/local/sbin

Fernando Cerutti 96
UNISUL
Curso de Servidores Linux

rndc reload

;
; There might be opening comments here if you already have this file.
; If not don't worry.
;
; About any leading spaces in front of the lines here: remove them!
; Lines should start in a ;, . or character, not blanks.
;
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 6D IN A 198.41.0.4
B.ROOT-SERVERS.NET. 6D IN A 128.9.0.107
C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12
D.ROOT-SERVERS.NET. 6D IN A 128.8.10.90
E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10
F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241
G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4
H.ROOT-SERVERS.NET. 6D IN A 128.63.2.53
I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17
J.ROOT-SERVERS.NET. 6D IN A 198.41.0.10
K.ROOT-SERVERS.NET. 6D IN A 193.0.14.129
L.ROOT-SERVERS.NET. 6D IN A 198.32.64.12
M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33

Compartilhamento de carga:
Um compartilhamento “primitivo” de carga (uma vez que não se calculam nenhum tipo de
parâmetros em relação as máquinas – cpu, memoria, etc...) pode ser feito através de um
mecanismo simples do DNS. Adicione registros A para as máquinas que irão responder pelo
mesmo nome, mas com diferentes números ip.
Conforme forem requisitadas pelos resolvers dos clientes, o named responde com um ip
diferente, começando pelo primeiro da lista para a primeira requisição, o segundo para a
Segunda, e assim por diante, através de um algoritmo round-robin.

Fernando Cerutti 97
UNISUL
Curso de Servidores Linux

Fernando Cerutti 98
UNISUL
Curso de Servidores Linux

11. HTTP Server


O servidor mais utilizado atualmente é o Apache (www.apache.org)
Podemos fazer download dos binarios e seguir o estilo da compilação em 5 etapas:
descompacta, etc

Explicar as entradas em destaque


e as opçoes de cada uma (flags,etc)
Arquivo README.configure

[root@charcharodon apache_1.3.22]# ./configure --prefix="/usr/local/apache"


Configuring for Apache, Version 1.3.22
+ using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Creating Makefile in src
+ configured for Linux platform
+ setting C compiler to gcc
+ setting C pre-processor to gcc -E
+ checking for system header files
+ adding selected modules

Fernando Cerutti 99
UNISUL
Curso de Servidores Linux

+ using system Expat


+ checking sizeof various data types
+ doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/regex
Creating Makefile in src/os/unix
Creating Makefile in src/ap
Creating Makefile in src/main
Creating Makefile in src/modules/standard

11.1. Comando 2
[root@charcharodon apache_1.3.22]#make
final da saida do make:
...
gcc -DLINUX=22 -DUSE_HSREGEX -DNO_DL_NEEDED `../apaci` -o ab -L../os/unix -
L../ap ab.o -lm -lap -los -lm -lcrypt -lexpat
sed <apxs.pl >apxs \
-e 's%@TARGET@%httpd%g' \
-e 's%@CC@%gcc%g' \
-e 's%@CFLAGS@% -DLINUX=22 -DUSE_HSREGEX -DNO_DL_NEEDED
`../apaci`%g' \
-e 's%@CFLAGS_SHLIB@%%g' \
-e 's%@LD_SHLIB@%%g' \
-e 's%@LDFLAGS_MOD_SHLIB@%%g' \
-e 's%@LIBS_SHLIB@%%g' && chmod a+x apxs
make[2]: Leaving directory `/usr/local/apache_1.3.22/src/support'
<=== src/support
make[1]: Leaving directory `/usr/local/apache_1.3.22'
<=== src

11.2. Comando 3
[root@charcharodon apache_1.3.22]#make install

make[1]: Leaving directory `/usr/local/apache_1.3.22'


+----------------------------------------------------------------------------------------+
| You now have successfully built and installed the |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the |
| (initially created or preserved) configuration files |
| /usr/local/apache/conf/httpd.conf |
| and then you should be able to immediately fire up |
| Apache the first time by running: |

Fernando Cerutti 100


UNISUL
Curso de Servidores Linux

| |
| /usr/local/apache/bin/apachectl start |
| |
| Thanks for using Apache. The Apache Group |
| http://www.apache.org/ |
+----------------------------------------------------------------------------------------+
[root@charcharodon apache_1.3.22]#

11.3. passo 4
verificando o arquivo principal de configuração:
/usr/local/apache/conf/httpd.conf

### Section 1: Global Environment


#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# ServerType is either inetd, or standalone. Inetd mode is only supported on
# Unix platforms.
#

ServerType standalone

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation
# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
# you will save yourself a lot of trouble.
#

ServerRoot "/usr/local/apache"

#
# The LockFile directive sets the path to the lockfile used when Apache
# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
# its default value. The main reason for changing it is if the logs

Fernando Cerutti 101


UNISUL
Curso de Servidores Linux

# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL


# DISK. The PID of the main server process is automatically appended to
# the filename.
#
#LockFile /usr/local/apache/logs/httpd.lock

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#

PidFile /usr/local/apache/logs/httpd.pid

#
# ScoreBoardFile: File used to store internal server process information.
# Not all architectures require this. But if yours does (you'll know because
# this file will be created when you run Apache) then you *must* ensure that
# no two invocations of Apache share the same scoreboard file.
#
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard

# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)


# when the value of (unsigned)Group is above 60000;
# don't use Group "#-1" on these systems!
#
User nobody
Group "#-1"

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents.
#

ServerAdmin root@charcharodon.atm.ufsc.br

#
# ServerName allows you to set a host name which is sent back to clients for
# your server if it's different than the one the program would get (i.e., use
# "www" instead of the host's real name).
#
# Note: You cannot just invent host names and hope they work. The name you
# define here must be a valid DNS name for your host. If you don't understand
# this, ask your network administrator.
# If your host doesn't have a registered DNS name, enter its IP address here.

Fernando Cerutti 102


UNISUL
Curso de Servidores Linux

# You will have to access it by its address (e.g., http://123.45.67.89/)


# anyway, and this will make redirections work in a sensible way.
#
# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
# machine always knows itself by this address. If you use Apache strictly for
# local testing and development, you may use 127.0.0.1 as the server name.
#

ServerName charcharodon.atm.ufsc.br

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#

DocumentRoot "/usr/local/apache/htdocs"

#
# Each directory to which Apache has access, can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# permissions.
#
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

11.4. Passo 5
Verificando o Documento principal (DocumentRoot)

[root@charcharodon conf]# cd ..

Fernando Cerutti 103


UNISUL
Curso de Servidores Linux

[root@charcharodon apache]# ls
bin cgi-bin conf htdocs icons include libexec logs man proxy

[root@charcharodon apache]# pwd


/usr/local/apache
[root@charcharodon apache]# cd htdocs
[root@charcharodon htdocs]# ls
apache_pb.gif index.html.es index.html.nn index.html.ru.koi8-r

11.5. Passo 6

Inicializando o apache

[root@charcharodon bin]#

[root@charcharodon bin]# ./apachectl start


./apachectl start: httpd started
[root@charcharodon bin]#

11.6. Diretórios virtuais


Os diretórios virtuais podem ser conseguidos simplesmente colocando-se uma
entrada alias no httpd.conf
Alias /mrtg/ "/var/www/mrtg/"

<Directory "/var/www/mrtg">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

11.7. Virtual Hosts


Segundo a documentação do Apache (http://www.apache.org/docs/vhosts) , “o termo
Virtual Host refere-se a prática de manter mais de um servidor em uma máquina, que
podem ser diferenciados pelo seu nome aparente”. Como exemplo, podemos citar
uma empresa de comércio de Naftalina que deseje criar dois servidores, um para a
filial de Constantina, no interior do RS e outro para a filial de Faltandópolis, no
Maranhão. Para isso, a empresa vai utilizar uma única máquina, com dois domínios:
www.faltandopolis.nafta.com e www.constantina.nafta.com. Dessa forma, os dois
servidores web ficam acessíveis aos usuários sem que seja necessária nenhuma

Fernando Cerutti 104


UNISUL
Curso de Servidores Linux

informação de diretórios ou das estruturas do servidor (como seria o caso antigo de


criarmos o dominio nafta e acrescentarmos os diretorios de cada filial:
www.nafta.com/filiais/faltandopolis .
O recurso de servidores virtuais permite que um mesmo servidor responda por mais
de um domínio. Antigamente, por volta de 3432 a.C., utilizava-se a técnica de numerar
várias interfaces na mesma placa de rede (sub-interfaces), por exemplo:

Ifconfig eth0:0 192.168.0.1


Ifconfig eth0:1 192.168.0.3

Quando a versão 1.1 do protocolo HTTP foi lançada, tornou-se possível criar os hosts
virtuais somente através de nomes, deixando para o DNS resolver a questão do
números IP (isso é bem mais civilizado, pois cada ferramenta faz o seu trabalho).
No formato Hosts Virtuais Baseados em Nomes, o servidor DNS dos nossos domínios
deve estar configurado para apontar todos os hosts virtuais do apache para o IP do
servidor httpd. O Apache se encarrega de selecionar a página inicial <DocumentRoot>
do domínio virtual.
Existem vários motivos para se optar pelo host virtual baseado em nomes:
•É mais fácil de configurar e manter
•faz uso do DNS.
•Ajuda no problema da exaustão de endereços IP.

Alguns motivos podem levar a consideração de não usar o host virtual baseado em
nomes, preferindo-se a técnica baseada em números IP:


A principal razão é o protocolo SSL (Secure Sockets Layer) que não
funciona com os hosts virtuais baseados em nomes.

Ainda devemos considerar alguns sistemas operacionais e equipamentos
de rede que implementam tecnicas de controle de largura de banda.
Esses caras podem não diferenciar os hosts se eles não tiverem IPs
diferentes.

Depois, deve-se considerar a possibilidade de alguns clientes antigos não
serem compativeis com o http versão 1.1.

Exemplo de hosts virtuais:


Configuração 1: O servidor tem um endereço IP (111.22.33.44) que resolve o nome
de server.nafta.com.br. Existem, nas tabelas do servidor DNS, dois registros aliases
(CNAMEs) para essa máquina: www.nafta.com.br e www.maranhao.nafta.com.br,
ambos apontando para a máquina 111.22.33.44.
Configuração do servidor:
...
Port 80
ServerName server.nafta.com.br

NameVirtualHost *

Fernando Cerutti 105


UNISUL
Curso de Servidores Linux

#Em um caso normal, onde todos os Ips de um servidor podem ser usados
#por um host virtual, podemos usar um asterisco <*> como argumento para #a
entrada NameVirtualHost. (NameVirtualHost * somente funciona para as
#versões 1.3.13 e posteriores.)

<VirtualHost *>
DocumentRoot /www/nafta
ServerName www.nafta.com.br
</VirtualHost>

<VirtualHost *>
DocumentRoot /www/maranhao
ServerName www.maranhao.nafta.com.br
</VirtualHost>

Configuração 2: O servidor tem dois endereços: (192.168.1.1 e 111.22.33.55). A


máquina está localizada entre a rede interna (intranet) e a externa (internet). Na parte
externa, o nome maranhao.nafta.com.br resolve o endereço externo (111.22.33.55),
mas dentro da rede, o mesmo nome aponta para o endereço interno (privado -
192.168.1.1).
O servidor pode ser configurado para responder às requisições externas e internas
apenas com uma entrada de host virtual, uma vez que as paginas serão as mesmas:
Configuração do Servidor:
...
NameVirtualHost 192.168.1.1
NameVirtualHost 111.22.33.55

<VirtualHost 192.168.1.1 111.22.33.55>


DocumentRoot /www/maranhao
ServerName maranhao.nafta.com.br
ServerAlias maranhao
...
</VirtualHost>

Assim, as requisições de ambas as redes serão respondidas pelo mesmo host virtual.

11.8.Autenticação, Autorização e controle de


acesso
Os servidores Apache controlam as requisições de três maneiras:
• Autenticação
• Autorização

Fernando Cerutti 106


UNISUL
Curso de Servidores Linux

• Controle de Acesso

Autenticação é o processo de provar que alguém é realmente quem diz ser, como
mostrar sua carteira de identidade, fazer leitura optica da retina ou impressao digital.
Normalmente, usamos o nome do usuario e a senha.

Autorização é encontrar os recursos aos quais a pessoa pode ter acesso, uma vez
autenticada. É o equivalente a uma lista de convidados para um luau nas Filipinas.
Teu nome está no cracha, tua foto também e tu consta da lista. Aproveite a festa.

O controle de acesso é uma forma mais generica, pois pode garantir ou negar o
acesso com base em uma variedade de critérios:

Endereço de rede do cliente


A hora do dia
A fase da lua
A altura da maré

Enfim, é um controle arbitrário. Se a usuária tiver um sorriso maroto como o da Mel


Lisboa, pode acessar.

• Autenticação básica
Ë o método mais simples, e por muito tempo foi o único usado. Atualmente, existem
métodos mais eficientes, baseados em bancos de dados (se é que uma tabela
indexada pode ser chamada de banco de dados...).

Como funciona a autenticação básica

Quando um recurso está protegido com esse método, o Apache envia um cabeçalho
401 - Authentication Required com a resposta para a requisicao.
O usuário preenche uma caixa de diálogo com o nome e a senha, e envia de volta ao
servidor. Se os dados forem aprovados pela lista de autenticação, o recurso
requisitado é enviado ao cliente.

Configuração da autenticação básica.

1.Crie um arquivo de senhas


2.Altere o httpd.conf para usar o arquivo de senhas
3.Opcionalmente, crie um arquivo de grupos.

Arquivo de senhas

Fernando Cerutti 107


UNISUL
Curso de Servidores Linux

Devido ao fato de ser um arquivo crítico, deve ser armazenado fora do diretório dos
documentos. Apesar de ser um arquivo criptografado, qualquer cracker de 1,99 pode
quebrar uma senha.
Para criar o arquivo de senhas, devemos usar o utilitário htpasswd que vem com o
Apache, e deve estar abaixo /bin do Apache (/usr/local/apache/bin/htpasswd)

Para criar o arquivo, digite:

O flag –c é usado somente para criar o arquivo. Na Segunda adição de usuários, o


flag não é usado. Se você usar o flag novamente, queima o arquivo de senhas. Bom,
isso é um problema.

htpasswd /usr/local/apache/passwords/passwords mel_lisboa

O arquivo de senhas deve Ter permissões mínimas, apesar de criptografado.

chown nobody.nobody /usr/local/apache/passwords/passwords


chmod 640 /usr/local/apache/passwords/passwords

(os grupos ficam em /etc/groups)

Agora, precisamos avisar o Apache que estamos controlando os acessos.


Podemos colocar as diretivas em um arquivo .htaccess dentro do diretório a ser
protegido, ou no escopo do Main Server, dentro de um container <Directory>:

AuthType Basic
AuthName "Somente para convidados”
AuthUserFile /usr/local/apache/passwords/passwords
Require user pupilos

Exemplo:
<Directory "/var/www">
AuthType Basic
AuthName "Somente para convidados"

Fernando Cerutti 108


UNISUL
Curso de Servidores Linux

AuthUserFile /usr/local/apache/passwords/passwords
Require user luana sharon julia
</Directory>

Require:
Essa entrada significa os requerimentos que devem ser satisfeitos para garantir a
admissão.

AuthName:
A frase "Somente para convidados” será mostrada na caixa de diálogo do cliente.
È necessário re-estartar o Apache, se usamos o httpd.conf. Se as diretivas forem
colocadas em .htaccess, não é necessário, porque esse arquivo é conferido em cada
requisição.

O controle de manipulação da senha deve ser feito no cliente, para que a senha não
fique armazenada. Como a maioria dos browsers não implementa essa feature, se
você precisa controle mais rígido de acesso, use outros métodos. Embora a senha
trafegue criptografada, o conteudo das páginas não tem proteção.

Para permitir acesso somente de um host ou de sua rede interna, acrescente:

Allow from maranhao.nafta.com.br

Somente os hosts pertencentes a maranhao.naft.com.br terão aceso ao


diretório.

Fernando Cerutti 109


UNISUL
Curso de Servidores Linux

11.9. O Apache e o PHP

O PHP é uma linguagem que permite dinamizar o conteúdo das páginas web. Permite
integração com bancos de dados (veja a seção

Devemos então reinicializar o apache:

/usr/local/apache/bin/apachectl restart

Vamos testar o funcionamento. Copie o super código php abaixo para o diretorio root
do httpd server, (obviamente, voce colocou o root em /usr/local/apache/htdocs) em um
arquivo chamado, por exemplo, hello.php

<html><head><title>PHP Test</title></head>
<body>
<?php echo "Hello World<p>"; ?>
<?php phpinfo(); ?>
</body></html>

Acesse agora seu web server:


http://localhost/hello.php

O Apache e o MySQL, mais adiante). Outras linguagens se propõe a dinamizar o


conteúdo paradão do HTML: Java, Javascript, Perl, ASP...
Vamos verificar como instalar o PHP e fazer a inegração com o servidor HTTP. Os
fontes do PHP podem ser encontrados em http://www.php.net/

Fernando Cerutti 110


UNISUL
Curso de Servidores Linux

A versão da época desse rascunho era 4.1.1, com 3,3 MB.


Faça o download.
Copie para /usr/local

gunzip php-4.1.1.tar.gz
tar –xvf php-4.1.1.tar
cd php-4.1.1
Atenção para os três passos clássicos:
./configure -> vamos compilar com suporte ao apache e MySQLl!!!
make
make install

$ ./configure --with-mysql --with-apxs

O nosso ./configure foi informado onde estão os fontes do apache, e vai jogar para lá
os módulos do PHP para serem carregados com o Apache (passo que será efetuado
a seguir: reconfiguração do htpd.conf.)

Vamos aos 2 faltantes:

make
make install

Agora, precisamos copiar o arquivo php.ini-dist para /usr/local/lib/php.ini:

Fernando Cerutti 111


UNISUL
Curso de Servidores Linux

cp ./php.ini-dist /usr/local/lib/php.ini

Se tudo deu certo, vamos reconfigurar o httpd.conf do apache para integrar


os tipos de arquivos do PHP (php 4 MIME TYPE). Basta retirar os comentários da
seção:

Devemos então reinicializar o apache:

/usr/local/apache/bin/apachectl restart

Vamos testar o funcionamento. Copie o super código php abaixo para o diretorio root
do httpd server, (obviamente, voce colocou o root em /usr/local/apache/htdocs) em um
arquivo chamado, por exemplo, hello.php

<html><head><title>PHP Test</title></head>
<body>
<?php echo "Hello World<p>"; ?>
<?php phpinfo(); ?>
</body></html>

Acesse agora seu web server:


http://localhost/hello.php

Fernando Cerutti 112


UNISUL
Curso de Servidores Linux

11.10. O Apache e o MySQL

http://www.mysql.com

Devemos conseguir nesse endereço os fontes. Não opte pelos binários. Compilar é a
melhor solução, voce fica no comando.
Os servidores trabalham dessa forma:

Após o download, siga esses passos:


shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/var/mysql
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &

Se algo deu errado, e pode ser que sim, devemos remover os arquivos
abaixo antes de rodar o configure novamente:

shell> rm config.cache
shell> make clean

Fernando Cerutti 113


UNISUL
Curso de Servidores Linux

SE TUDO DEU CERTO, PODEMOS TESTAR:

[root@charcharodon var]# mysqladmin version

mysqladmin Ver 8.23 Distrib 3.23.47, for pc-linux-gnu on i686


Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Server version 3.23.47-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 11 min 26 sec

Threads: 1 Questions: 1 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 0 Queries per
second avg: 0.001

Podemos testar como derrubar o banco:

/mysqladmin -u root shutdown

Agora, vamos colocar o comando de inicialização no rc.local

/bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld --user=mysql &'

Para usar o mysql:

mysql –p

mysql> SHOW DATABASES;


+----------+
| Database |
+----------+
| mysql |
| test |
| tmp |
+----------+

mysql> use test

mysql> CREATE TABLE TestTable (ID TINYINT (3) DEFAULT '0' NOT NULL
AUTO_INCREMENT, NAME VARCHAR (13) DEFAULT '0', PRIMARY KEY(ID)) TYPE
= MyISAM;

mysql>INSERT INTO TestTable VALUES("1","visual basic");

Fernando Cerutti 114


UNISUL
Curso de Servidores Linux

mysql>INSERT INTO TestTable VALUES("2","C/C++");


mysql>INSERT INTO TestTable VALUES("3","ASP/VBScript");
mysql>INSERT INTO TestTable VALUES("4","PHP");
mysql>INSERT INTO TestTable VALUES("5","JAVA/JavaScript");
mysql>INSERT INTO TestTable VALUES("6","Delphi");
mysql>INSERT INTO TestTable VALUES("7","Perl");

Copie o código de cerutti.atm.ufsc.br/select.php e cole vo DocumentRoot do seu servidor.

11.11. A monitoração do Apache


A configuração do apache é tranquila, e exige poucos passos no momento da instalação. A
preucupação começa depois, com o serviço rodando. Você deve ficar atento à segurança e à
monitoração do uso e desmpenho do servidor.
O apache “original de fábrica” fornece algumas ferramentas de monitoração, que podem não
estar presentes se voce teimou em instalar a versão da sua distribuidora Linux.
Vamos verificar o monitor server-status

11.11.1. SERVER-STATUS
Para usar esse monitor, ele deve estar compilado no httpd ou então configurado para carga
dinâmica como módulo.
Para verificar se o servidor httpd foi compilado com o módulo de status, digite o seguinte
comando:

/usr/local/apache/bin/httpd –l

Se o módulo aparecer na lista, passe para a configuração da seção <Location> no httpd.conf,


descrita a seguir. Senão, prossiga na seção LoadModules como abaixo:

Para carregar dinamicamente:

• Edite o httpd.conf
• Procure a seção:
• Dynamic Shared Object (DSO)
• Verifique a seção LoadModule
• Entre com as linhas abaixo:

LoadModule status_module /usr/lib/apache/mod_status.so


#a localização pode variar cfe. o Sistema Operacional!!!
AddModule mod_status.c

• Disponibilize o monitor na seção Location, retirando os comentários e setando


seu domínio na seção Allow from

Fernando Cerutti 115


UNISUL
Curso de Servidores Linux

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from maranhao.nafta.com.br
</Location>

A configuração sempre poderá ser testada com:

/usr/local/apache/bin/apachectl configtest

Para acessar as estatisticas, digite a url do seu servidor mais /server-status


http://maranhao.nafta.com.br/server-status/?refresh=20

A opção ?refresh=20 atualiza as informações a cada 20 segundos

11.12. Os arquivos de log do apache


Com o comando tail –l 1 –f /usr/local/apache/error_log podemos monitorar os erros. (-l 1
mostra a ultima linha e –f deixa permanente o comando).
Para verificar os acessos, podemos uar o tail –f no arquivo /usr/local/apache/access_log

Fernando Cerutti 116


UNISUL
Curso de Servidores Linux

Algumas ferramentas disponibilizam estatísticas para os logs.


O wwwstat, está disponível em http://www-old.ics.uci.edu/pub/websoft/wwwstat/
Você pode Ter informações do tipo:

Fernando Cerutti 117


UNISUL
Curso de Servidores Linux

12. Servidor de Correio Eletrônico

12.1. Introdução
O correio eletrônico certamente é a aplicaçao mais usada na internet, embora não
seja a maior geradora de tráfego. A comunicaçao interpessoal é primordial, e um sistema
operacional servidor de rede deve necessariamente implementar um serviço de correio via
TCP/IP.
Imagine você escrevendo uma carta em papel, como em 1365. Você
termina, assina, pensa bem no que vai mandar para o destinatário (será que ela vai
entender ‘teus cabelos são mais fascinantes que uma fila de pacotes processada no
roteador...’ ). Bom, você fecha o envelope põe o endereço do remetente, do
destinatário, chama seu cão para lamber o selo, cola o selo e envia pela caixa
coletora.
Mandar um e-mail é bem parecido. Você apenas troca a caneta e o papel
pelo computador. O correio convencional transporta envelopes reais, enquanto o
sendmail transporta mensagens eletrônicas em envelopes eletrônicos.

Quando a destinatária é sua vizinha (ela estaria na mesma máquina) somente um


posto de correio está envolvido (ou, no caso eletrônico, somente um sendmail rodando
localmente). Se a sua amiga mora em Koala Lampur, a mensagem será repassada pelo correio
local do seu bairro (sendmail da sua máquina) para um posto distante (sendmail rodando
remotamente), que se responsabiliza pela entrega.

Existem algumas vantagens na versão eletrônica dessa história:


•Sua letra sempre sai bonita.
•A entrega tipicamente demora alguns segundos ao invés de alguns dias.
• O re-envio da mensagem é imediato, e ela pode mandar cópias para todas as
suas namoradas.
• Se você troca de endereço, basta deixar um arquivo .forward em sua caixa
antiga.
• Os endereços são independentes das máquinas, (o sendmail busca por eles de
forma dinâmica, sem Ter uma tabela estática) que podem ser alteradas a qualquer momento,
quebradas, bombardeadas, etc.

12.2. MUA - Mail User Agent


• MUAs são quaisquer dos programas utilizados para ler, responder, compor e dispor de
mensagens eletrônicas.
• Exemplos
• mush

Fernando Cerutti 118


UNISUL
Curso de Servidores Linux

• pine
• mail

Um MUA é um dos muitos programas clientes, que o usuário roda para ler
e escrever suas mensagens. Muitos MUAs podem co-existir em uma única máquina.
Normalmente um MUA não pode transportar mensagens, embora alguns sistemas
mais atrevidos possam tentar fazer isso

12.3. MTA - Mail Transport Agent


MTAs são programas que se encarregam de entregar mensagens a vários usuários e
redirecionar mensagens entre computadores como por exemplo o programa sendmail.
Um MTA é um programa altamente especializado que entrega e
transporta mensagens entre as máquinas. (Como os correios) Usualmente, somente
um MTA é instalado em uma máquina. Outros MTAs:
• Qmail
• MMDF
• Smail 3.x
• Zmailer

Alguns programas estão disponíveis para os sistemas Unix implementarem o


transporte de mensagens. Sem dúvida, o mais popular é o Sendmail
(www.sendmail.org). Estima-se que seja o responsável pelo
encaminhamento de bilhões de mensagens diariamente e que rode em
70% dos servidores de mail da Internet.
Ultimamente, a partir do ano 360 a.C. outros programas tem aparecido com
destaque no mundo Linux: O qmail (http://www.qmail.org/), que nasceu com um projeto mais
arrojado e preoucupado com as questões de segurança. Ainda temos smail, e a mais
recente delas, Postfix, desenvolvida por Wietse Winema, o mesmo
desenvolvedor de pacotes de segurança amplamente utilizados como o
TCPWrapper.
Neste curso, vamos apreender as configurações básicas do Sendmail, porque é o
sistema mais difundido.
Figura 12-1 O fluxo da mensagem

Fernando Cerutti 119


UNISUL
Curso de Servidores Linux

Na verdade, devemos imaginar o sendmail como um "roteador"de


mensagens, recolhendo as mensagens dos diversos clientes (muitas vezes um
mesmo usuário possui mais de um software cliente de e-mail) e encaminhando essas
mensagens para os sistemas de distribuição, devidamente formatada para esse fim.

Protocolos:

O protocolo encarregado desse serviço na pilha TCP/IP é o SMTP (Simple Mail Transfer
Protocol, cujo deamon fica ouvindo a porta 25 do tcp e do udp.

12.4. Partes importantes do Sendmail


O sendmail é composto por programas, arquivos, diretórios e serviços. A porção mais
destacada é o arquivo de configuração, sendmail.cf

Fernando Cerutti 120


UNISUL
Curso de Servidores Linux

Esse arquivo define a localização e o comportamento dessas outras porções, e se constitui no


fundamento da arquitetura.
Além disso, determina diretórios para as filas de espera, listas de nomes e grupos e apelidos
para os usuários.

O sendmail é executado de duas formas diferentes: envio e recepção

Quando o usuário envia uma mensagem, um processo sendmail é iniciado, a mensagem é


entregue e o processo então é finalizado.
A parte da recepçao não é tão trivial. Um deamon fica rodando, por definicao ouvindo a porta
TCP 25 do servidor. Para ativar o sendmail como deamon,devemos passar o flag -bd para o
comando de execução do sendmail. Se o deamon não estiver ativo, o sendmail não recolhe a
mensagem que chega.

12.5. FILA de ENTREGA:


É possível que um processo sendmail iniciado para entregar uma
mensagem não tenha sucesso. Nesse caso, a mensagem é escrita em uma fila, e
espera que o deamon entregue mensagem posteriormente. (o vagabundo do
processo encerra seu trabalho e deixa o deamon na obrigacao de arrumar a casa...
Na epoca em que os visigodos inventaram o chip de barro neolítico isso era
conhecido como "processo com efeito bunda de chumbo".)
Além de escutar a mensagem que está para chegar, o deamon sendmail
verifica periodicamente se existe alguma mensagem na fila de entrega. Para ativar a
verificacao, passamos o flag -q<tempo>. O parametro tempo pode ser em horas ou
minutos (-q 20m faz com que o deamom verifique a fila a cada 20 minutos. -q 1h força
o processamento da fila a cada hora). Uma hora é um tempo razoavel para o
processamento da fila. não devemos usar tempos muito reduzidos, pois o
processamento de uma fila com muita frequencia pode causar um problema caso a
fila cresça muito (quando por exemplo, um estagiário cai por cima do roteador e a
rede pára.)

12.6. Inicialização
O Red Hat inicia o sendmail no script
/etc/rc.d/init.d/sendmail. O processo lê um arquivo de configuraçao
(/etc/sysconfig/sendmail), que contém os parâmetros:

DEAMON =yes
QUEUE= 1h

Fernando Cerutti 121


UNISUL
Curso de Servidores Linux

Dessa forma, não precisamos passar os


parâmetros quando invocamos o comando. Se a variavel DEAMON for = yes, o
sendmail é iniciado com a opçao -bd.

Entao, para que o sendmail não rode como deamon (seu sistema não precisa
receber mensagens e repassá-las. Ele pode ser apenas um cliente de e-mail), edite o arquivo
/etc/sysconfig/sendmail ou use a ferramente de interface grafica (um primor de desenho)
tksysv onde voce pode escolher uma lista de deamons disparados em tempo de inicializacao...)
O sendmail envia as mensagens normalmente sem ser executado como deamon.

12.7. Modos de Execução


Argumentos da linha de comandos
Flag Descrição
-b Define o modo de operação
-v Execução em modo verboso
-d Executar em modo debug
Modos de operação
Flag Descrição
-bd Executar como daemon
-bD Executar como daemon, mas não realizar fork
-bi Inicializar o banco de dados de aliases
-bH Remover informações persistentes sobre condições de hosts
-bh Imprimir informações persistentes sobre condições de hosts
-bm Enviar mail
-bp Imprimir a fila
-bs Executar SMTP na saída padrão
-bt Modo de teste: apenas resolução de endereços
-bv Verificação: não aceita nem entrega mensagens
Outros nomes para o Sendmail
Nome Formato
hoststat -bh
mailq -bp
newaliases -bi
purgestat -bH
smtpd -bd

Fernando Cerutti 122


UNISUL
Curso de Servidores Linux

12.8. arquivo de configuração


Dizem, na baixa mesopotâmia, que nenhum sujeito pode ser administrador de redes
se nunca editou o arquivo de configuração do sendmail, o sendmail.cf. Dizem também, que os
caras editam o arquivo só para sofrer, porque o sendmail funciona bem, para pequenas redes,
sem que se precise alterar os padrões, e o sendmail.cf não é um exemplo de clareza.

O sendmail.cf define a configuração


para a execução do sendmail. É um cara grande, complexo e grotesco (parecido com
alguns professores de computação). não queira passear por ai com um deles.

Sendmail.cf
• Lido toda vez que o programa sendmail é inicializado
• Contém informações necessárias á execução do programa sendmail:
• localização de arquivos importantes e suas permissões de acesso default
• Regras
• Conjunto de regras para reescrita de endereços
• Comandos de configuração
• Linhas iniciadas por "#" são consideradas comentários e são ignoradas
• Linhas iniciadas por tabs ou brancos são consideradas como continuação da linha
anterior

Raramente você precisará editar o sendmail.cf. Mas é bom saber o que tem lá dentro.
O arquivo tem sete seções:
Local Info
Options
Trusted Users
Format of Headers
Rewriting Rules
Mailer Definitions

Vários tipos de comandos podem ser executados no sendmail.cf:

COMANDO DESCRIÇÃO
V Versão do arquivo de configuração (V8)
M Definição de um MTA
D Definição de macro
R Definição de regra de reescrita
S Definição do início de um conjunto de regras de reescrita
C Definição de uma macro de classe
Definição de uma macro de classe a partir de um arquivo ou
F
pipe
O Definição de uma opção

Fernando Cerutti 123


UNISUL
Curso de Servidores Linux

H Definição de um cabeçalho
P Definição de prioridades de entrega
T Definição de usuários confiáveis
K Declaração de um banco de dados com chaves (V8)
E Definição de uma variável de ambiente

Tabela 12-1 Definiçoes do comandos do arquivo sendmail.cf

Local Info:
Define informações especificas do host:
Nome do host,
Nome de quaisquer outros hosts roteadores de mensagens
Domínio da mensagem
Nome que o sendmail usa para se identificar quando retorna mensagens de erro
Numero da versão do sendmail.cf

Sao quatro os tipos de comandos encontrados na seção Local Info:


Comandos D -> definem macros
Comandos C-> definem valores de classe
Comandos F-> carregam os valores de classe a partir dos arquivos
Comandos K-> definem bancos de dados de informaçao.

Exemplo:
# comentarios começam com o sustenido.
#o nome do usuario que ira aparecer como remetente das mensagens de erro:
DnMAILER-DEAMON
# a linha acima define o usuario MAILER-DEAMON atraves de uma macro (D) de nome n
# operadores que não poderao ser usados como nome de usuarios:
CO @ % !
# esses tres operadores confundem o sendmail.
#um comando de classe (C) designa os valores para a classe (O).

#arquivo que contém os hosts para os quais nosso servidor receberá os e-mails:
Fw/etc/sendmail.cw
#aqui um comando de arquivo (F) carrega os valores de /etc/sendmail.cw na variável w.
#nosso servidor aceitara como dele as mensagens que sao enviadas para os hosts da #variavel
w.

#a linha abaixo define um banco de dados para acesso (protegendo contra spam)
Kaccess hash -o /etc/mail/access
#o banco de dados access (que não é o da microsoft), é usado para controlar a redistribuiçao de
mensagens. o formato hash é um padrao do Unix.

Fernando Cerutti 124


UNISUL
Curso de Servidores Linux

SECAO OPTIONS
Dificilmente voce vai alterar algo por aqui, mas essa secao possui alguns comandos
interessantes. sao os comandos o:
#localizacao do arquivo de aliases (apelidos dos usuarios)
o AliasFile=/etc/aliases
#tempos para retorno:
o Timeout.queuereturn=5d
#retorna mensagem de erro se a mensagem ficar na fila por 5 dias sem ser entregue.

o Timeout.queuewarn=4h
#retorna mensagem de aviso, se a mensagem não foi entregue apos 4 horas.

#se voce esta tentado a mudar isso, não mude, a não ser que a tentação seja irresistível. (Como
Orson Wells, profeta que habitou algum covil de orgias medievais, você pode resistir a tudo,
menos a uma tentacao...)

Fernando Cerutti 125


UNISUL
Curso de Servidores Linux

12.9. Instalação e Configuração

PRÉ-REQUISITOS

A maioria dos sistemas Unix abertos (FreeBSD, Linux, OpenBSD e outros), por definição
possuem todos os softwares necessários à instalação do sendmail. O próprio sendmail, na maior
parte dos casos, não precisa ser compilado, bastando obter a versão pré-compilada para o seu
sistema e instalá-la. Claro que nós, da elite da administração de redes, não vamos pegar algo
pré compilado e jogar no santuário que é nosso servidor de e-mail. Não esqueça: O servidor é o
cara que garante teu emprego!!!

A compilação do sendmail se dá sem maiores problemas nestes sistemas, visto que todos os
softwares necessários, listados a seguir, se encontram disponíveis no sistema.
Para a instalação do Sendmail são necessários os seguintes softwares:
• Compilador C
• Processador de macros M4
O processador M4 pode ser entendido
como um tradutor onde a partir de um arquivo simples de configuração é gerado o
arquivo na linguagem nativa do sendmail (sendmail.cf).
Recomenda-se a instalação do M4 distribuído pela Free Software Foundation (GNU),
de nome. Este software possui um outro pré-requisito, o pacote texinfo.
• Rotinas de acesso a banco de dados
O sendmail pode trabalhar com dois tipos de software para acesso a seus
bancos de dados (/etc/aliases, UserDB, etc). São eles newdb e ndbm. A
implementação do formato NEWDB se dá através da instalação do pacote db,
distribuído por Berkeley e o NDBM já vem instalado em algumas versões do Unix.
Apenas a nova versão (NEWDB) é necessária. O suporte ao formato NDBM foi
incluído apenas para suporte a bancos de dados antigos. Todos os bancos de dados
que sejam reconstruídos assumirão o novo formato (desde que o sendmail tenha sido
compilado com suporte ao formato NEWDB). Estes softwares não são estritamente
necessários, porém não se recomenda em absoluto que se instale o programa
sendmail sem incluir o suporte a um destes dois tipos de acesso a bancos de dados.
As versões do programa Sendmail de número 8.8.x, suportam apenas a versão 1.85
do programa DB. Da versão 8.9 em diante, pode ser instaladas as versões superiores a 2.0 do
programa DB.

12.9.1. Instalação dos Programas


Nos procedimentos de instalação de softwares que se seguem foram adotadas as seguintes
convenções:

Fernando Cerutti 126


UNISUL
Curso de Servidores Linux

• Todos os softwares serão expandidos e compilados sob o diretório /usr/local/src


• Para expandir os softwares foram utilizados os seguintes comandos:
• Extensão .Z (compress)
# cat pacote.tar.Z| tar xvf -
• Extensão .gz (compactação com gzip)
# gzip -dc pacote.tar.gz | tar xvf -

Instalação M4 (Processador de Macros)


O pacote de processamento de macros M4, na versão contida no servidor ftp anônimo da
Unicamp, m4-1.4.tar.gz , ao ser expandido, criará o diretório m4-1.4.
Este software é facilmente portável para a maioria dos sistemas operacionais existentes e sua
instalação consiste dos seguintes passos:
Verificar se o programa makeinfo está disponível. Caso não esteja instalar o programa texinfo.
Seguir então, como root, os seguintes passos:
# cd /usr/local/src/m4-1.4
# ./configure
# make
# make install

12.10. Instalação Suporte ao formato NEWDB


Verificar primeiramente se este software já se encontra instalado em seu
sistema:
# find / -name libdb.a -print
• Caso esta biblioteca não esteja instalada, obter o software e proceder
à sua instalação seguindo os seguintes passos:
# cd /usr/local/src
# ftp ftp.unicamp.br
Connected to obelix.unicamp.br.
Name (ftp.unicamp.br:root): anonymous
331 Guest login ok, send your complete e-mail address as
password.
Password:
ftp> cd /pub/mail/db
250 "/pub/mail/db" is new cwd.
ftp> bin
ftp> get db-2.7.5.tar.gz
150 Opening BINARY mode data connection for db-
2.7.5.tar.gz (1087904 bytes).
226 Transfer completed.
local: db-2.5.9.tar.gz remote: db-2.7.5.tar.gz

Fernando Cerutti 127


UNISUL
Curso de Servidores Linux

ftp> quit
# gzip -dc db-2.7.5.tar.gz | tar xvf -
# cd /usr/local/src/db-2.7.5
# cd build_unix
# ../dist/configure
# make
# make install

Compilação Sendmail
Baixe o sendmail em www.sendmail.org ou
ftp://ftp.unicamp.br/pub/mail/sendmail/sendmail.8.11.5.tar.gz

Expanda o software em /usr/local/src:


# cd /usr/local/src
# gzip -dc sendmail-8.9.3.tar.gz | tar xvf -
# cd sendmail-8.9.3/src
# ./Build
Build é um shell script que realiza todas as tarefas necessárias à compilação do
programa Sendmail. É possível, a partir de um mesmo diretório, realizar a compilação do
sendmail para várias arquiteturas diferentes. Os binários de cada arquitetura são gravados em
um arquivo iniciado por obj.* . Em sistemas Linux, este diretório chama-se
obj.Linux.2.0.36.i486. O nome, como pode se ver, reflete, além do nome do sistema(Linux), a
versão do kernel (2.0.36) e arquitetura de hardware (i486).
O processo de instalação do sendmail identifica automaticamente, através do
comando uname, o tipo de sistema operacional para fazer a seleção adequada do arquivo
makefile. Antes de realizar a instalação no sistema, recomenda-se efetuar um backup dos
binários e arquivos de configuração originais. A localização destes arquivos irá depender da
plataforma. Os comandos listados abaixo servem apenas como referência dos procedimentos a
serem seguidos:
# mv /etc/sendmail.cf /etc/sendmail.cf.salva.vida
# mv /usr/sbin/sendmail /usr/sbin/sendmail.salva.vida
Após encerrada a compilação, a instalação definitiva é feita, a partir do mesmo diretório,
digitando-se:
# ./Build install

Serão então instalados os binários em /usr/sbin e serão também criados os links


/usr/sbin/newaliases e /usr/sbin/mailq apontando para /usr/sbin/sendmail. Serão também
formatadas e instaladas as man pages.
Para as man pages
mkdir /usr/man
mkdir /usr/man/man1
mkdir /usr/man/man8

Fernando Cerutti 128


UNISUL
Curso de Servidores Linux

12.11. Criação Arquivo sendmail.cf


As versões recente do programa sendmail oferecem a possibilidade de se gerar o arquivo de
configuração (/etc/sendmail.cf) atráves do pacote m4. Esta possibilidade de se gerar o arquivo
de configuração a partir do m4, tornou viável o aparecimento de vários sites na Web que
oferecem o serviço de criação do arquivo de configuração automaticamente, após responder a
algumas perguntas.
O arquivo de configuração é criado a partir da expansão das macros contidas em um arquivo de
configuração mestre, cuja terminação é mc (master configuration). Este arquivo possui a
seguinte estrutura:

VERSIONID
OSTYPE
DOMAIN
FEATURE
LOCAL MACRO DEFINITIONS
MAILER
LOCAL_RULESET_*

VERSIONID
É uma macro que grava informação sobre a versão do arquivo de configuração gerado. Este
valor pode ser gerado pelo RCS ou SCCS.
OSTYPE
Define o tipo de sistema operacional para que o sendmail crie as definições apropriadas
para a localização de diversos arquivos. Os valores possíveis para OSTYPE podem ser
encontrados no diretório /usr/local/src/sendmail-8.9.3/cf/ostype. Neste diretório existem
vários arquivos terminados em m4. Para sistemas Linux, existe um arquivo chamado
linux.m4. O valor correto para é OSTYPE(linux). Sempre remover a terminação m4.
DOMAIN
Indica um diretório onde se encontram todas as modificações necessárias para uma
instalação. DOMAIN(linux.unisul.br) indica que o sendmail levará em conta, durante a
criação do arquivo sendmail.cf, os valores definidos no arquivo linux.unisul.br.m4 contido
em /usr/local/src/sendmail-8.9.3/cf/domain/. Na distribuição do sendmail temos o seguinte
exemplo (arquivo Berkeley.EDU.m4):
divert(0)
VERSIONID(`@(#)Berkeley.EDU.m4 8.14 (Berkeley) 5/19/1998')
DOMAIN(berkeley-only)dnl
define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
define(`confCW_FILE', `-o /etc/sendmail.cw')dnl
define(`confDONT_INIT_GROUPS', True)dnl
FEATURE(redirect)dnl

Fernando Cerutti 129


UNISUL
Curso de Servidores Linux

FEATURE(use_cw_file)dnl
FEATURE(stickyhost)dnl
FEATURE

As features podem ser listadas em../features

Representa opções especiais que podem ser configuradas. A seguir são listadas algumas
opções de maior interesse:
FEATURE(`allmasquerade')
FEATURE(`access_db')
FEATURE(`always_add_domain')
FEATURE(`blacklist_recipients')
FEATURE(`local_procmail')
FEATURE(`masquerade_entire_domain')
FEATURE(`masquerade_envelope')
FEATURE(`nullclient´,`servidor smtp')
FEATURE(`relay_entire_domain')
FEATURE(`relay_local_from´)
FEATURE(`redirect')
FEATURE(`smrsh')
FEATURE(`use_cw_file')
FEATURE(`virtusertable')

DEFINIÇÃO DE MACROS
Algumas das macros podem ser definidas por meio da diretiva "define" do m4. A seguir
listamos algumas opções mais utilizadas:
define(`confDELIVERY_MODE',`[background][queueonly][deferred][interac
tive]´)
define(`confHOST_STATUS_DIRECTORY',`/var/spool/mqueue/hoststatus')
define(`confMAX_DAEMON_CHILDREN',`10')
define(`confMAX_MESSAGE_SIZE',`1024')
define(`confTO_QUEUERETURN',`5d')
define(`confTO_QUEUEWARN',`4h')
define(`MAIL_HUB',`mailhub.unisul.br')
define(`confUSERDBSPEC',`/etc/userdb.db')
EXPOSED_USER(usuario)
LOCAL_CONFIG
CE usuario
ou ainda
LOCAL_CONFIG
FE/etc/mail/visible.users
LOCAL_CONFIG
LOCAL_RULE_1
LOCAL_RULE_2
LOCAL_RULE_3

Fernando Cerutti 130


UNISUL
Curso de Servidores Linux

LOCAL_RULESETS
LOCAL_NET_CONFIG
MASQUERADE_AS(`nome do domínio')
MAILER
Define os agentes de entrega de mensagens que o seu sistema irá utilizar:

MAILER(`smtp')
MAILER(`uucp')
MAILER(`procmail')

Continuando a Instalação
Recomenda-se a criação de um diretório separado para abrigar todos os arquivos do
diretório cf (/usr/local/sendmail-8.12.1/cf), como por exemplo, /etc/mail. O diretório
/etc/mail, a partir da versão 8.8 do sendmail é utilizado como um diretório padrão para
o armazenamento de arquivos de configuração.

# mkdir /etc/mail (ele pode já estar lá)


# cd /usr/local/src/sendmail-8.12.2
# cp -r cf /etc/mail

Desta forma, sempre que se quiser alterar os arquivos de configuração basta digitar
# cd /etc/mail/cf

Finalmente, copiar a configuracao generic-linux.mc de unisul.mc. A terminação .mc


significa Master Configuration. :

#cp generic-linux.mc unisul.mc

O processo de criação do arquivo do sendmail.cf pode ser automatizado utilizando-se


makefiles. O arquivo Makefile pode ser utilizado para automatizar as tarefas
necessárias a criação do arquivo sendmail.cf (edição arquivos de configuração,
encerramento e inicialização do sendmail, controle de versões, etc.) ao mesmo tempo
em que reinicializa o programa sendmail para que as alterações entrem imediatamente
em vigor.

O passo seguinte é editar o configuração mestre (.mc) em


/etc/mail/cf/unisul.mc. contendo as seguintes linhas:

Fernando Cerutti 131


UNISUL
Curso de Servidores Linux

divert(0)dnl
VERSIONID(`$Id: unisul.mc,v 8.1.2 2002/02/12 22:48:05 [postmaster@unisul.br]
Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
FEATURE('redirect')
FEATURE('virtusertable')
FEATURE('access_db')
FEATURE('use_cw_file')

-------------------------------------------------------------------
Opção mais completa:
divert(0)dnl
include(../m4/cf.m4)
VERSIONID(`$Header$')
OSTYPE(linux)
FEATURE(nouucp)
FEATURE(use_cw_file)
FEATURE(`local_procmail',`/usr/bin/procmail')
MASQUERADE_AS(unisul.br)
MAILER(local)
MAILER(smtp)

Foram feitas as seguintes mudanças:



A diretiva include foi adicionada para inserir o arquivo de configuração
do m4 que é necessário para a criação de um arquivo sendmail.cf

A diretiva VERSIONID foi alterada para acomodar o caminho até o
arquivo fonte do RCS juntamente com o número de sua versão, que
é atualizada todas vezes que o arquivo é salvo dentro do RCS

A diretiva OSTYPE foi alterada para informar ao m4 qual arquivo fonte
utilizar de modo a refletir as peculiaridades do sistema operacional.
Estes arquivos de configuração se encontram em /etc/mail/cf/ostype.
Escolha o seu sistema operacional a partir dos arquivos que lá se
encontram. Não inclua a terminação .m4.

A diretiva MASQUERADE_AS(unisul.br) serve para indicar que todas as
mensagens que sairem deste computador receberão a identificação
username@unisul.br, não importa o nome que tenha na realidade.

A diretiva FEATURE(use_cw_file) é muito importante e não deve
ser esquecida. Quando especificada ela indica que a máquina
irá aceitar mensagens para os domínios especificados no
arquivo /etc/sendmail.cw. Caso o seu servidor DNS aponte o

Fernando Cerutti 132


UNISUL
Curso de Servidores Linux

seu mailhost como servidor de vários domínios e estes


domínios não estiverem especificados neste arquivo, as
mensagens serão devolvidas para o remetente com o erro:
config error: mail loops back to myself
Para resolver este problema basta editar o arquivo /etc/sendmail.cw
e incluir o nome do domínio em questão.


Uma das maiores vantagens de se incluir o programa procmail como
mailer local é a facilidade oferecida a usuários e administradores de
filtrar as mensagens. O administrador pode filtrar as mensagens em
nível de sistema e o usuário pode criar filtros para suas mensagens.
Bastante útil para filtrar mensagens não solicitadas (junk email ou
spam).

Fernando Cerutti 133


UNISUL
Curso de Servidores Linux

Continuando a instalação
Digitar a partir do diretorio /etc/mail/cf:

#m4 ../m4/cfm4 unisul.mc sendmail.cf

Isso vai gerar um arquivo sendmail.cf, com uma saida genial na tela:

# relay mailer header masquerading recipient rewriting


#
SMasqRelay
R$+ $: $>MasqSMTP $1
R$+ $: $>MasqHdr $1

Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,


E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h
Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,
E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h
Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,
E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h
Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP,
E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h
Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP,
E=\r\n, L=2040,
T=DNS/RFC822/SMTP,
A=TCP $h

A configuração do sendmail
Edite o arquivo /etc/mail/local-host-names e coloque a lista (um por linha) dos
domínios do o sendmail.

Exemplo:

# vi /etc/mail/local-host-names

Fernando Cerutti 134


UNISUL
Curso de Servidores Linux

# local-host-names - include all aliases for your machine here.


lab1.unisul.br
mailbox.lab1.linux.unisul.br
meudominio.com.br

Iremos configurar as nossas "aliases" para isto edite o arquivo "aliases".

O aliases fica abaixo do /etc

# vi /etc/mail/aliases
##linhas acrescentadas:
MAILER-DAEMON: root
postmaster: root
webmaster: mel_lisboa
linke: linke@bol.com.br
facerutti: cerutti@unisul.br

#pessoal que deve receber os e-mails do root:


root: suporte
#lista de e-mails:
suporte: mel_lisboa, julia@oscar.org, cerutti
#owner-suporte recebe mensagens de erro na lista suporte
owner-suporte: cerutti

clientes: :include:/etc/mail/clientex.txt

OBS: Quando alterar este arquivo digite sempre


"newaliases" para atualizar as databases.
Perceba que todos os e-mail que chegarem para os usuários:

• MAILER-DAEMON, eles serão redirecionados para o usuário root,


• webmaster - mel_lisboa
• linke para linke@bol.com.br
• foi criada uma lista para suporte, e o irresponsavel é o cerutti

• e o clientes para
todos os e-mail (um por linha) presentes
no arquivo /usr/local/clientes.txt

Fernando Cerutti 135


UNISUL
Curso de Servidores Linux

12.12. configuração do virtusertable.


Ele serve para você ter no mesmo servidor os e-mails (gamk@gamk.com.br e
gamk@linuxsecurity.com.br).

Bem vamos a um exemplo prático:

# cat /etc/mail/virtusertable
gamk@gamk.com.br gamk
@gamk.com.br diego
gamk@linuxsecurity.com.br renato
@meu_dominio.com %1@bol.com.br

Explicando:
Todos os e-mails que chegarem para o domínio
gamk.com.br irão para o usuário (local na máquina) chamado "diego" com
excessão do e-mail
gamk@gamk.com.br que irá para o usuário "gamk".
Os e-mails que chegarem para gamk@linuxsecurity.com.br
irão para o usuário local na máquina "renato".
Qualquer e-mail que chegar no domínio, meu_dominio.com,
será redirecionado para o domínio bol.com.br mantendo o nome do usuário.

Feito isso digite:

# makemap hash virtusertable < virtusertable

para criar o virtusertable.db

Agora iremos configurar o controle de acesso.

# cat /etc/mail/access
200.150.59 RELAY
hackers.lab 550 não permetimos Hackers
gamk.com.br REJECT
diego.gamk.com.br OK

Nesta configuração foi permetido o RELAY da rede


200.150.59.0/24, foi também rejeitado e-mails de gamk.com.br menos os
vindo da
máquina diego.gamk.com.br.
Foi também rejeitado (550 = REJECT) e-mails vindo de
hackers.lab enviando a mensagem de erro como "Nao permtimos Hackers".

Fernando Cerutti 136


UNISUL
Curso de Servidores Linux

Depois de fazer a sua configuração basta digitar:

# makemap hash access < access

Pronto o seu sendmail está configurado e já pode ser br> usado normalmente...

# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.virtualnet.net ESMTP Sendmail 8.11.2/8.11.2;
Sat, 10 Mar 2001 20:23:04 -0300
expn gamk
250 2.1.5 GAMK
vrfy diegolinke
250 2.1.5 Diego Linke

Perceberam que o SendMail acabou de entregar através


dos comandos "expn" e "vrfy" dois usuário válidos na máquina ?

Vamos desabilitar esta função para que isto não


aconteça.
Edite o arquivo sendmail.cf e procure pela linha:

O PrivacyOptions=authwarnings

Substitua por esta:

O PrivacyOptions=authwarnings,noexpn,novrfy

Restart e sendmail e pronto!!!


# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.virtualnet.net ESMTP Sendmail 8.11.2/8.11.2; Sat, 10 Mar 2001 20:23:04 -
0300
expn gamk
502 5.7.0 Sorry, we do not allow this operation
vrfy diegolinke
252 2.5.2 Cannot VRFY user; try RCPT to attempt delivery (or try finger)

Que tal não revelarmos o número da versão do nosso


sendmail ?

Fernando Cerutti 137


UNISUL
Curso de Servidores Linux

Vamos lá, edite o arquivo sendmail.cf e procure pela


linha:

O SmtpGreetingMessage=$j Sendmail $v/$Z; $b

Substitua por:

O SmtpGreetingMessage= GAMK Mail Server [smtp.gamk.com.br]

Pronto, agora você acaba de mudar a mensagem de


Welcome!

# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 GAMK ESMTP Mail Server [smtp.gamk.com.br]

Se você quiser, pode mudar o conteúdo do help (comando help), basta alterar o arquivo
/etc/mail/helpfile.

# cat /etc/mail/helpfile
smtp ********************************************************
smtp * Sys/Admin: Diego Linke *
smtp ********************************************************

Pronto, restart o sendmail.


Agora quando o usuário digitar "help" ao invés de
aparecer o help do sendmail irá aparecer esta mensagem:

********************************************************

* Sys/Admin: Diego Linke *

********************************************************

OBS: para startar o sendmail use: "sendmail -bd -q15m"

Man Pages:
man sendmail
man m4
man aliases
man mail.local

Fernando Cerutti 138


UNISUL
Curso de Servidores Linux

12.13. Interação DNS x Sendmail

O programa Sendmail utiliza os serviços do DNS para ajudá-lo a realizar a


entrega de mensagens. Uma implementação correta de gerenciamento de
mensagens requer uma coordenação precisa e coordenada entre o DNS e o
sendmail. Para processar uma mensagem o Sendmail envia uma pergunta ao servidor
DNS local e solicita os registros MX (Mail Exchanger) para aquele domínio. Por
exemplo, para enviar uma mensagem para dicas-l@netway.unisul.br, o Sendmail irá
procurar registros MX para o domínio netway.unisul.br. O servidor DNS irá responder
com todos os registros MX que encontrar para aquele domínio, frequentemente mais
de um e em média dois. Caso o recipiente não possua registros MX o Sendmail
solicitará então registros do tipo CNAME ou A de maneira a, uma vez de posse desta
informação, poder conectar-se à máquina destino. Podem ser definidos vários
registros MX para um domínio. Um registro MX contém um campo que indica, dentre
os mail exchangers disponíveis, a preferência que deve ser obedecida para a entrega
de mensagens.
Tomemos o exemplo da Unisul. O meu endereço particular é
cerutti@unisul.br. Não existe entretanto um computador denominado "unisul.br" (nada
impede, entretanto, que exista). Para se realizar entrega de mensagens para
endereços como o meu é necessário que o programa sendmail interaja com o DNS
para obter nomes de computadores reais que façam a entrega destas mensagens.
Vejamos como isto ocorre no DNS:
% nslookup
Default Server: ns.unisul.br
Address: 10.1.2.123

> set type=mx


O comando acima indica que quero obter do servidor DNS apenas registros
do tipo MX.
> unisul.br
Server: ns.unisul.br
Address: 10.1.2.123
unisul.br mail exchanger = 10 unisul.br.
A seguir especifique o domínio a respeito do qual desejo informações, no
caso o domínio "unisul.br".
> unisul.br
Server: ns.unisul.br
Address: 10.1.2.123
unisul.br mail exchanger = 0 unisul.br.
linux.unisul.br mail exchanger = 10 unisul.br.

Fernando Cerutti 139


UNISUL
Curso de Servidores Linux

ati.unisul.br mail exchanger = 15 unisul.br.

Desta forma, mensagens enviadas para o domínio unisul.br devem ser


entregues primeiramente a maquina unisul.br (valor 0). Caso esta máquina
esteja fora do ar, as mensagens devem então ser entregues à máquina
linux.unisul.br (valor 10). E em último caso, as mensagens devem ser
entregues à máquina ati.unisul.br (valor 15).

Todas as mensagens enviadas para determinado domínio


possuem uma ordem de precedência quanto ao computador que irá recebe-
las.
O fato de que três servidores possam receber mensagens
endereçadas a um domínio como "unisul.br" não implica no fato de
que os usuários tenham contas nas três máquinas.
1) Quando alguém manda uma mensagem para cerutti@unisul.br, o
programa sendmail que irá fazer a entrega da mensagem primeiramente faz uma
consulta ao DNS pedindo os registros MX associados ao domínio "unisul.br".
2) De posse das respostas, ele tentará entrar em contato com o servidor
especificado no registro MX de mais alta prioridade.
3) Este servidor, o de prioridade mais alta, normalmente é o servidor onde
as pessoas tem suas contas. Ou seja, se este servidor estiver no ar e funcionando
perfeitamente, o programa sendmail deste servidor irá aceitar a conexão, receber
a mensagem, e gravá-la na mailbox do usuário cerutti.
4) Caso ele não esteja funcionando, o programa sendmail tentará então
entrar em contato com o servidor especificado no registro MX seguinte.
5) O usuário cerutti não possui conta neste segundo servidor. O que ocorre
então? A mensagem é recebida e ao invés de ser gravada na mailbox do usuário
(que não existe neste equipamento), é mantida na área de spool de mensagens.
6) Esta mensagem ficará então na fila e de tempos em tempos o sendmail
tentará conectar com a máquina destino, para enviar a mensagem.

É claro que, caso a máquina cujo registro MX tenha a prioridade mais alta
demore mais que cinco dias para voltar a funcionar, existe o risco das mensagens
retornarem a quem as enviou dizendo que o destino está inacessível.

Alguns pontos importantes a serem lembrados. Os servidores MX de


determinado domínio devem residir em redes diferentes, o mais afastadas possível.
Caso residam em redes diferentes mas compartilhem a mesma linha de
comunicação para acesso à Internet não adianta muita coisa. Se a linha cair as duas
ou mais máquinas ficam inacessíveis e a mensagem não será entregue.
Se possível, coloque os servidores MX de seu domínio em redes
diferentes, como por exemplo, uma delas no tronco RNP da Internet Brasil e outra no
tronco Embratel.
Desta forma você garante que mensagens enviadas para o seu domínio
sempre cheguem.

Fernando Cerutti 140


UNISUL
Curso de Servidores Linux

E se a sua máquina demorar muito para ser consertada? Contacte o


administrador do seu servidor MX secundário e peça a ele para ir salvando as
mensagens destinadas ao seu domínio em uma área alternativa. Desta forma não se
perdem mensagens e você economiza tempo de processamento do servidor
secundário visto que ele não ficará tentando entregar, a intervalos normalmente
definidos em uma hora, mensagens que não podem ser entregues.
Nunca se esqueça de avisar o administrador do servidor MX secundário
quando houverem problemas com o servidor primário. Especialmente se o seu
domínio recebe muitas mensagens. Se o servidor secundário for uma máquina com
poucos recursos de armazenamento, problemas sérios poderão ocorrer. Se o
filesystem ficar cheio mensagens para o domínio que o servidor secundário atende
também serão devolvidas. E como estas coisas de um ser servidor secundário de
outro geralmente funcionam no favor, não é bom complicar a vida de quem está te
ajudando.
Uma vez que a sua máquina voltar a funcionar, o administrador do servidor
MX secundário poderá invocar o sendmail para processar especificamente a fila de
mensagens para o seu domínio.
Suponhamos que isto tenha sido feito movendo-se as mensagens para o diretório
/var/spool/unisul.back. Para invocar o sendmail fazendo com que ele utilize este
diretório basta invocá-lo com as seguintes opções abaixo:

# /usr/sbin/sendmail -OQueueDirectory=/var/spool/unisul.back -q -v

Uma consideração final, todas as precauções que sugeri para os servidores


MX secundários se aplicam também aos servidores DNS secundários. Para
ficar garantido, coloque o seu servidor primário no Brasil e um secundário
em Koala Lampur, para dormir tranquilo

12.14. Segurança precaria


Não é surpresa que muitos usuários de sistemas utilizam senhas fáceis de
serem adivinhadas, tais como o username, username invertido, etc.
O sendmail possui dois comandos, que podem ser acessados a partir da
porta 25, chamados expn e vrfy que fornecem informações sobre seus
usuários. Veja o exemplo:
$ telnet acme.com 25
[No write since last change]
Trying...
Connected to acme.com.
Escape character is '^]'.
220 acme.com ESMTP Sendmail 8.8.7/8.8.7; Wed, 12 Nov 1997 17:00:56 -02)
vrfy suporte
250
expn suporte
250-
250-

Fernando Cerutti 141


UNISUL
Curso de Servidores Linux

O comando vrfy verificou a existência do usuário suporte, que na verdade é um alias. Já o


comando expn fez a expansão do alias e mostrou todos os usuários incluídos na definição do
alias suporte.
Para evitar isto, inclua no arquivo sendmail.cf a diretiva

O PrivacyOptions=goaway
Isto feito, veja o que acontece quando se tenta novamente utilizar os
comandos vrfy ou expn:
% telnet acme.com 25
Trying...
Connected to acme.com
Escape character is '^]'.
220 acme.com ESMTP Sendmail 8.8.5/8.8.5; Wed, 12 Nov 1997 15:53:14 -020
vrfy cerutti
252 Cannot VRFY user; try RCPT to attempt delivery (or try finger)
expn suporte
502 Sorry, we do not allow this operation

12.15. POP Post Office Protocol

Protocolo para transferência de mensagens entre servidores e clientes


As mensagens são entregues a um servidor compartilhado. Computadores pessoais
se conectam periodicamente a este servidor e descarregam as mensagens para a
máquina cliente.
Ideal para uso doméstico, móvel, e para equipamentos sem conexão permanente à
Internet.
Servidores disponíveis para várias plataformas (Unix, WinNT, Win95, OpenVMS,
Macintosh). No ambiente Unix, o mais popular é o servidor mantido pela empresa Qualcomm,
fabricante do software Eudora e disponibilizado em http://www.eudora.com/free. Nesta página,
além dos produtos comercializados pela Qualcomm, encontram-se também links para os
produtos freeware.

Clientes
Eudora
Pegasus
Netscape
e muitos outros(...)

Fernando Cerutti 142


UNISUL
Curso de Servidores Linux

12.16. Instalação


Download software
ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper2.53.ta
r.Z

Instalar
# cd /usr/local/src
# zcat qpopper2.53.tar.Z | tar xvf -
# cd qpopper2.53
# ./configure
# make
# cp popper /usr/local/lib

Editar arquivo /etc/inetd.conf e inserir a seguinte linha:

pop3 stream tcp nowait root /usr/local/lib/popper popper -s

ou, caso se esteja usando tcpwrapper:

pop3 stream tcp nowait root /usr/sbin/tcpd


/usr/local/lib/popper -s


Certificar-se de que no arquivo /etc/services existam as entradas para
o serviço POP:

pop-3 110/tcp # PostOffice V.3


pop 110/tcp # PostOffice V.3


Testar a instalação:
# telnet popmail.unisul.br 110
Trying 143.106.20.20...
Connected to popmail.unisul.br
Escape character is '^]'.
+OK QPOP (version 2.53) at popmail.unisul.br starting.
user cerutti
+OK Password required for cerutti.
pass xxxxxxx
+OK cerutti has 0 messages (0 octets).

Problemas: Ler arquivo de instalação em
/usr/local/src/qpopper2.53/INSTALL

Fernando Cerutti 143


UNISUL
Curso de Servidores Linux

12.17. IMAP - Internet Messsage Access Protocol

Protocolo para transferência de mensagens entre servidores e clientes, bastante


poderoso e funcional.
Projetado de maneira a permitir que caixas postais remotas fossem manipuladas
como se fossem locais. O cliente IMAP pode solicitar apenas os cabeçalhos das
mensagens ou procurar apenas por mensagens que se enquadrem em
determinado critério. Mensagens podem ser marcadas como deletadas e
subsequentemente eliminadas, mas permanecem no repositório até que o usuário
decida eliminá-las em definitivo
A diferença fundamental em relação ao POP consiste na maneira em que os
clientes recuperam as mensagens
Oferece três modos de acesso:
Offline - todas as mensagens são transferidas para o cliente
Online - as mensagens permanecem no servidor e são manipuladas pelo
cliente
Desconectado - mensagens selecionadas são armazenadas no cliente
IMAP x POP
Erro! Argumento de opção desconhecido.
Característica POP IMAP
Processamento offline J J
Processamento online J
Buscas no servidor J
Caixas postais compartilhadas J
SMTP J J
Implementação simples J
Manipulação de flags de status de mensagens J
Flags customizadas J
Caixas postais multiplas no servidor J
Arquivamento de mensagens no servidor J
Recuperação seletiva de mensagens J
Acesso a mensagens processadas no servidor J
Uso mínimo de conexão J
Uso mínimo de recursos do servidor J

Fernando Cerutti 144


UNISUL
Curso de Servidores Linux

12.18. Aliases

• Aliases convertem o nome de um recipiente em outro


• OA/etc/aliases
O AliasFile=/etc/aliases
• # - comentários
• Linhas em branco são ignoradas
• Verificação recursiva de nomes
• Cinco tipos possíveis

# Aliases obrigatorios
postmaster: root
MAILER-DAEMON: postmaster
# Aliases para o uso do listserv#
listserv: "|/usr/server/catmail -r -f"
consult: :include:/usr/sys/consult
owner-consult: suporte
owner-owner: suporte
cursos: joao,maria,jose,antonio
nobody:/dev/null
Fernando_Cerutti: cerutti

12.19. Fila de Mensagens


• O QueueDirectory=/var/spool/mqueue
Localização do diretório onde as mensagens são enfileiradas e
processadas
• O DeliveryMode=[background][defer][queueonly]
Esta opção define a forma como as mensagens da fila serão
processadas, continuamente, em background ou apenas enfileiradas
para processamento posterior
• O QueueLA=8
Este valor define a carga da máquina a partir da qual as mensagens
não mais são entregues e são apenas enfileiradas para
processamento posterior
• Mensagens enfileiradas são divididas em dois arquivos:
• Arquivo qf - Arquivo de controle (cabeçalhos)
• Arquivo df - Arquivo de dados (contém a mensagem)
• Outros arquivos de controle:

Fernando Cerutti 145


UNISUL
Curso de Servidores Linux

tf - o sendmail, ao processar uma mensagem, frequentemente


precisa reescrever o conteúdo do arquivo qf. Para impedir que o
arquivo qf original seja danificado, todas as modificações são
feitas em um arquivo iniciado por tf. Quando as modificações são
concluídas, o arquivo qf original é substituído pelo arquivo
temporário (tf)
• xf - Arquivo de transcrição. Uma mensagem pode ser
destinada a vários destinatários, requerendo diferentes agentes
de entrega. Durante o processo de entrega das mensagens,
mensagens de erro (como "User Unknown" e "Permission
Denied") podem ser geradas pelo sendmail. Estas mensagens
são salvas temporariamente em um arquivo, iniciado pelas
letras xf. Após todos os agentes de entrega terem sido
invocados, as mensagens de erro são passadas ao remetente e
o arquivo temporário é apagado.

Listagem das Mensagens Enfileiradas


(mailq)
KAA18003 1824 Tue Jun 8 10:34 <shirlei@obelix.unisul.br>
(host map: lookup (ibb.unesp.br): deferred)
<gtrocha@ibb.unesp.br>
KAA23052* 2395 Tue Jun 8 10:12 <warley@fee.unisul.br>
8BITMIME (Deferred: Connection timed out with pfl-
gw.unisul.br.)
rosangel@pfl.unisul.br

12.20. Regras de Relaying Deny - Sendmail 8.8.x

1° PASSO:
Logue Como root na maquina.

2° PASSO:
Crie um diretório e copie seu SENDMAIL.CF (arquivo de configuracao do
sendmail) para ele.
$~# mkdir /anti-spam
$~# cd /anti-spam
$~# cp /etc/sendmail.cf /anti-spam

3° PASSO:

Fernando Cerutti 146


UNISUL
Curso de Servidores Linux

Apos ter criado o diretório e copiado o SENDMAIL.CF, pegue as regras anti-


spam disponiveis nesta mesma pagina (regras.tar.gz) e descompacte-as no
diretório /anti-spam.
$~# gunzip regras.tar.gz
$~# tar -vxf regras.tar
Esta ação vai gerar dois arquivos:
regras1.txt
regras2.txt

4° PASSO:
Edite o SENDMAIL.CF que está no diretório anti-spam e adicione as regras.
$~# pico /anti-spam/sendmail.cf
Ok, uma vez dentro do 'PICO' você deve ir para a linha abaixo de 'localhost'.
Para adicionar as regras, use o seguinte comando do PICO:
^R (CTRL + R) e lá procure pelo primeiro arquivo (regras1.txt).
Se tudo der certo, ficará mais ou menos assim:

##################
# local info #
##################

Cwlocalhost

# Regras Anti Relay hosts


F{LocalIP} /etc/mail/LocalIP
F{RelayTo} /etc/mail/relayto
F{DeniedIP} -o /etc/mail/DeniedIP
F{DeniedNames} -o /etc/mail/DeniedNames
Kjunk hash -a@JUNK /etc/mail/junk

Ok, agora salve o seu arquivo. Vamos para o próximo passo.

5° PASSO:
Agora vamos adicionar o arquivo (regras2.txt)
$~# pico /anti-spam/sendmail.cf
Com o arquivo editado, procure por RULESET 98. (lembre-se que para
procurar com o pico use o comando):
^W (CTRL + W)

Após ter achado a linha, insira a proxima regra (regras2.txt) usando o ^R


(CTRL + R).
Se tudo der certo vai ficar +- assim:

###############################################################
####

Fernando Cerutti 147


UNISUL
Curso de Servidores Linux

### Ruleset 98 -- local part of ruleset zero (can be null) ###


###############################################################
####
Scheck_rcpt
# make sure you have TABs here, not BLANKs! sendmail will complain
otherwise...
# first: get client addr
R$+ $: $(dequote "" $&{client_addr} $) $| $13
R0 $| $* $@ ok no client addr: directly
invoked
R$={LocalIP}$* $| $* $@ ok from here
# not local, check rcpt
R$* $| $* $: $>3 $2
# remove local part, maybe repeatedly
R$*<@$=w.>$* $>3 $1 $3
# alternatively (or even both):
# if you use RelayTo, uncomment the next line!
# R$*<@$*$={RelayTo}.>$* $>3 $1 $4
# still something left?
# R$*<@$+>$* $#error $@ 5.7.1 $: 551 we do not relay
R$*<@$+>$* $#error $@ 5.7.1 $: 551 Relay Negado - Contate o
Administrador de seu sistema.
Scheck_relay
R$+ $| $={DeniedIP}$* $#error $@ 5.7.1 $: "no access from your
IP address"
R$*$={DeniedNames} $| $* $#error $@ 5.7.1 $: "no access from your
host"
# check for junk domain/spammers
Sjunk
# lookup domain in database
R$*<@$+> $:$1<@$(junk $2$)>
# exists? return
R$*<@JUNK@JUNK> $@$1<@ "551 mail from your spam domain not
accepted." @JUNK>
R$*<@$*@JUNK> $@$1<@$2@JUNK>
# lookup address in database
R$*<@$+> $:$1<@$(junk $1@$2 $:$2$)>
# exists? return
R$*<@SPAMMER@JUNK> $@$1<@ "551 mail from your spam address not
accepted." @JUNK>
R$*<@$*@JUNK> $@$1<@$2@JUNK>
# remove one subdomain, try again
R$*<@$-.$-.$+> $: $>junk $1<@$3.$4>
Scheck_mail
# don't check these

Fernando Cerutti 148


UNISUL
Curso de Servidores Linux

R<$*@$=w> $@ ok shortcut
# idea from Steven Schultz
R<> $: <$n @ $(dequote "" $&{client_name} $) >
# mark address
#R$* $:<@>$1
# is the syntax ok (uses <> and no dot at the end?)
#R<@><$*@$*$~.> $:<$1@$2$3>
# mark still there: error...
#R<@>$* $#error $@ 5.1.8 $: 551 illegal MAIL FROM $1,
# if we don't to the above: remove at least the dot...
R<$*@$*.> <$1@$2>
R$* $: $>3 $1 canonify
R$- $@ ok local host
# no host without a . in the FQHN ?
# if you get local e-mail from hosts without full domains,
# put a hash in front of the next rule
R$*<@$->$* $#error $@ 5.1.8 $: 551 invalid host name $2, check your
configuration.
# lookup IP address (reverse mapping available?)
# R$*<@[$-.$-.$-.$-]>$* $: $1 < @ $[ [ $2.$3.$4.$5 ] $] > $6
# copy the result of the lookup
R$* $:$1 $| $1
# now remove the dot
R$* $| $*<@$*.>$* $: $1 $| $2<@$3>$4
# and check the database
R$* $| $*<@$*>$* $: $1 $| $>junk $2<@$3>
# match: return given error code (rhs of map)
R$* $| $*<@$*@JUNK>$* $#error $@ 5.7.1 $: $3
# restore original value (after canonicalization by ruleset 3)
# this is only required if you want to enable the last rule
# R$* $| $* $: $1
# this is dangerous! no real name
# R$*<@$*$~P>$* $#error $@ 4.1.8 $: 451 unresolvable host name $2$3,
check your setup.
S98

Salve seu SENDMAIL.CF.

6° PASSO:
Crie um diretório chamado mail dentro do diretório /ETC
$~# mkdir /etc/mail
Em seguida crie os seguintes arquivos:
$~# cd /etc/mail
$~# echo > LocalIP
$~# echo > relayto

Fernando Cerutti 149


UNISUL
Curso de Servidores Linux

$~# echo > DeniedIP


$~# echo > DeniedNames
$~# echo > junk

LocalIP -> Deve conter o ip de suas maquinas


ex:
127.0.0.1
2.34.56.78
2.34.56.78.
2.34.56

relayto -> Deve conter o IP e HOSTS das maquinas que podem fazer 'RELAY'
pelo seu servidor
ex:
www.minha-maquina.com
www.xyz.org
222.54.22.09
2.34.56.78

DeniedIP -> Deve conter o IP das maquinas que estao banidas por você
ex:
2.34.56.78
222.234.244.555

DeniedNames -> Deve conter o DOMINIO das maquinas banidas por você
ex:
www.happens.org
www.disneylandia.com
pornografia.net

junk -> Deve conter hosts e nomes de usuarios banidos


ex:
mickey@disneylandia.com "551 ISSO AQUI não E A DISNEYLANDIA !!"
@xyz.com "551 Bloqueado"
so.what.com "você esta banido"
so.what.com "551 oi spammers"

Determinando seus IPs banidos e IPs habilitados você tem de gerar


um pequeno banco de dados:
$~# makemap -v hash LocalIP.db < LocalIP (opcional)
$~# makemap -v hash relayto.db < relayto (opcional)
$~# makemap -v hash DeniedNames.db < DeniedNames
$~# makemap -v hash DeniedIP.db < DeniedIP
$~# makemap -v hash junk.db < junk

Fernando Cerutti 150


UNISUL
Curso de Servidores Linux

Obs: Alguns Sistemas Operacionais (OS) não aceitam 'HASH' você


pode usar 'DBM', 'BTREE', não se esqueca somente de alterar as PRIMEIRAS
REGRAS. Trocando a o comando 'HASH' por qualquer um dos descritos
acima.

7° PASSO:
Crie um diretório chamado 'SEND-ORIG'
$~# mkdir /etc/send-orig
$~# cp /etc/sendmail.cf /etc/send-orig

Chegamos no CLIMAX da instalação. Agora você deve derrubar seu sendmail


e por seu novo .CF para funcionar.
$~# killall sendmail
$~# rm /etc/sendmail.cf
$~# cp /anti-spam/sendmail.cf /etc/
$~# /usr/sbin/sendmail -bd -q 15m
Se tudo der certo seu sendmail com regras anti-spam estarao no ar, para
certifica-se disso de um telnet para sua porta 25.
$~# telnet localhost 25
220 sua.makina.com.br xxxxxxxxxxxxxx

Caso não de certo, derrube seu sendmail mais uma vez e volte as
configuracoes antigas, e envie-nos um e-mail. (askion@antispam.org.br)
$~# rm /etc/sendmail.cf
$~# cp /etc/send-orig/sendmail.cf /etc
$~# /usr/sbin/sendmail -bd -q 15m

Providências de Anti-Spam no Sendmail 8.8


Os seguintes exemplos mostram tentativas para a prevenção do Spam e eles
podem ser úteis às pessoas que estão tendo problemas com os spammers.
Não é garantido que estas providências estão completas, extensivamente
testadas ou bem documentadas atualmente.

Será esperado que estas providências sejam incluídas na versão 8.9.


Enquanto isso, este conjunto de regras podem ser adicionadas ao seu arquivo
de configuração (sugestão: se estiver usando o método M4, utilize
LOCAL_RULESETS; se estiver editando diretamente um arquivo .cf, adicione-
os no fim do arquivo) para adquirir o efeito desejado.
Outras referências de anti-spam

* O grande papa dos locais de anti-spam, por Scott Hazen Mueller.


* O Processo contra spammers por Zilker Internet Parque.
* Um filtro de anti-spam por Graham Toal (requer mudanças no código do
sendmail).
* Usando check_ * no sendmail 8.8 por Claus Aßmann.

Fernando Cerutti 151


UNISUL
Curso de Servidores Linux

* Notificações de como Parar U.C.E. por Marty Lyons.


* Colocando um Fim no Spam por Glenn Fleishman.
* Os arquivo de SPAM de Fifis.

Prevenindo a Retransmissão através de sua Porta SMTP


Problema: Outras pessoas podem conectar-se a sua porta SMTP e enviar mail
através de você.

Solução: O mail tem que ser originado ou finalizado localmente (neste host),
com exceções feitas a hosts listados, um por linha, em. /etc/sendmail.cR
(Nestas condições, este conjunto de regras não permite retransmitir dentro de
seu domínio, com exceção dos hosts listados em. /etc/sendmail.cR. Note
cuidadosamente que você tem que listar os nomes de hosts completamente
qualificados para cada host que você deseja permitir a retransmissão. Listar o
nome de um domínio não é o suficiente. Idealmente, isso restringirá somente a
retransmissão para fora do seu domínio. Isto é particularmente útil se você
estiver usando os clientes de mail como o MH ou o Eudora que gostam de
procurar uma retransmissão SMTP na rede local para fazer a entrega de mail.)

Código: (Versão para Download)

FR-o /etc/sendmail.cR

Scheck_rcpt
#qualquer coisa terminada localmente está ok
R<$+ @ $=w > $@ OK
R<$+ @ $=R > $@ OK

#qualquer coisa originada localmente está ok


R$* $: $(dequote "" $&{client_name} $)
R$=w $@ OK
R$=R $@ OK
R$@ $@ OK

#qualquer outra coisa é falso


R$* $#error $: "550 Relaying Denied"

Notas:

* Se você preferir listar os domínios em sendmail.cR, você pode substituir


todas as ocorrências $=R$* $=R no conjunto de regras acima.

* Esta regra não bloqueia user%other.domain.com@your.domain.com. Se


você quiser bloquear este tipo de endereçamento, você precisará da versão do

Fernando Cerutti 152


UNISUL
Curso de Servidores Linux

sendmail 8.8.6 ou superior e esta alteração no conjunto de regras. (Versão


para Download) Substitua a primeira seção:

#qualquer coisa terminando localmente está ok


R<$+ @ $=w > $@ OK
R<$+ @ $=R > $@ OK

por

#qualquer coisa terminando localmente está ok


R$* $: $>Parse0 $>3 $1
R$+ < @ $* . > $* $: $1 < @ $2 >
R$+ < @ $=w > $@ OK
R$+ < @ $=R > $@ OK

* Se o seu "site" é um servidor de backup de mail de outro local (você é um


registro de MX altamente numerado para eles), esteja seguro de adicionar os
nomes do domínio daquele local no seu novo arquivo sendmail.cR.

Recuse o Mail de Retransmissores Selecionados

Problema: Spam -- mails persistentes e ofensivos de vários locais.

Solução: Recuse as conexões dos locais de spamming. Isto envolve manter


um banco de dados desses locais; a chave será o nome do host deste local e o
valor será o que você quer dizer para eles.

Código: (Versão para Download)

Kspammers hash /etc/spammers

Scheck_relay
R$+ $| $+ $: $(spammers $1 $: OK $)
ROK $@ OK
R$+ $#error $: 521 $1

Nota: a mensagem de erro (parte do valor da entrada do banco de dados) não


é usada de fato; ao contrário, todos os comandos são rejeitados com ``550
Access denied''.

/etc/spammers é um mapa do banco de dados e deve ser criado com:


makemap hash /etc/spammers < /etc/spammers

Fernando Cerutti 153


UNISUL
Curso de Servidores Linux

Insistir que o Campo MAIL FROM Tenha Nomes de Hosts Válidos

Problema: Você quer rejeitar mails que tenham falsos nomes de hosts no
campo MAIL FROM do SMTP. (Também inclui a correção do problema
anterior, mas modificada de forma que ela enviará uma mensagem de insulto
de volta aos perpetrators.)

Solução: Confira a validade no campo MAIL. Neste caso, você tem que permitir
as pessoas que estão no banco de dados de spammers terem mais acesso ao
seu servidor (por exemplo, eles poderão usar VRFY e EXPN), mas você ainda
pode previnir que eles enviem mails.

Advertência: Este conjunto de regras é incompatível com a opção


DeliveryMode=defer, pois ela requer que uma consulta de DNS seja feita
imediatamente no recebimento do mail.

Código: (Versão para Download)

Kspammers hash /etc/spammers

Scheck_mail
# verifica um nome de domínio válido
R$* $: <?> $>3 $1
R<?> $* < @ $+ . > $: <OK>
R<?> $* < @ $+ > $#error $: 451 Domain must resolve

# verifica a retransmissão contra o banco de dados de spammers


R$* $: $(spammers $&{client_name} $: OK $)
ROK $@ OK
R$+ $#error $: 551 $1

Nota: VRFY, EXPN, etc. ainda irão funcionar. Sabendo-se que esta regra
desabilita o valor de MAIL FROM, o qual pode ser facilmente forjado, constitui
uma solução, porém menos eficiente que a anterior.

/etc/spammers é um mapa do banco de dados e deve ser criado com:


makemap hash /etc/spammers < /etc/spammers
Restrinja a Aceitação de Mail

Problema: Algum engraçadinho está me enviando mails bomba.

Solução: Mantenha um banco de dados para estes sujeitos ruins. Neste caso a
chave do banco de dados é `` user@host '' e o valor é a mensagem de erro
que você quer devolver.

Fernando Cerutti 154


UNISUL
Curso de Servidores Linux

Código: (Versão para Download)

Kbozos hash /etc/bozos


C{Protected}eric

Scheck_compat
# se o recipiente não está protegido, ele recebe o mail
R$+ $: <OK> $1
R<OK> $+ $| < $={Protected} @ $=w >
$: <PROT> $1
R<OK> $+ $@ OK

# verifique para ver se quem envia é um engraçadinho


R<PROT> $+ $| $+ $: $(bozos $1 $: OK $)
ROK $@ OK
R$+ $#error $: 551 $1

Nota: A regra acima realmente não funciona bem, porque não consegue
manipular adequadamente os símbolos gráficos de maior/menor "< >".
Outros Locais que tratam sobre o Anti-Spam

* http://spam.abuse.net/spam/
* http://www.mids.org/nospam/

12.21. Evitando comandos para porta 25


# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.virtualnet.net ESMTP Sendmail 8.11.2/8.11.2;
Sat, 10 Mar 2001 20:23:04 -0300
expn gamk
250 2.1.5 GAMK
vrfy diegolinke
250 2.1.5 Diego Linke

Perceberam que o SendMail acabou de entregar através


dos comandos "expn" e "vrfy" dois usuário válidos na máquina ?

Vamos desabilitar esta função para que isto não


aconteça.

Fernando Cerutti 155


UNISUL
Curso de Servidores Linux

Edite o arquivo sendmail.cf e procure pela linha:

O PrivacyOptions=authwarnings

Substitua por esta:

O PrivacyOptions=authwarnings,noexpn,novrfy

Restart e sendmail e pronto!!!


# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.virtualnet.net ESMTP Sendmail 8.11.2/8.11.2; Sat, 10 Mar 2001
20:23:04 -0300
expn gamk
502 5.7.0 Sorry, we do not allow this operation
vrfy diegolinke
252 2.5.2 Cannot VRFY user; try RCPT to attempt delivery (or try finger)

Que tal não revelarmos o número da versão do nosso


sendmail ?

Vamos lá, edite o arquivo sendmail.cf e procure pela


linha:

O SmtpGreetingMessage=$j Sendmail $v/$Z; $b

Substitua por:

O SmtpGreetingMessage= GAMK Mail Server [smtp.gamk.com.br]

Pronto, agora você acaba de mudar a mensagem de


Welcome!

# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 GAMK ESMTP Mail Server [smtp.gamk.com.br]

Se você quiser, pode mudar o conteúdo do help (comando help), basta alterar
o arquivo /etc/mail/helpfile.

Fernando Cerutti 156


UNISUL
Curso de Servidores Linux

# cat /etc/mail/helpfile
smtp ********************************************************
smtp * Sys/Admin: Zé do Boné *
smtp ********************************************************

Pronto, restart o sendmail.


Agora quando o usuário digitar "help" ao invés de
aparecer o help do sendmail irá aparecer esta mensagem:

********************************************************

* Sys/Admin: Zé do Boné *

********************************************************

OBS: para startar o sendmail use: "sendmail -bd -q15m"

Man Pages:
man sendmail
man m4
man aliases
man mail.local

12.22. SPAM

O que é SPAM ?
Etimologicamente, o termo SPAM origina-se de um programa de série inglesa
de comédia Monty Pyton. onde Vikings desajeitados, num bar, pediram
repetida e exageradamente o termo SPAM, marca de um presunto enlatado
americano.

Sua definição a nível prático refere-se ao envio abusivo de correio eletrônico


não solicitado em grande quantidade distribuindo propaganda, correntes e
esquemas de "ganhe dinheiro fácil". É o envio de correio tentando forçar a
leitura pela pessoa que recebe que outroura sequer optou por este
recebimento. Um desperdício de recursos da rede pago por quem recebe.
Observando de modo restrito, que mal faz enviar algumas centenas de
correios em mala-direta para outrem? De modo mais amplo, quanto não se
gasta levando em consideração o absurdo volume anual de correio
eletrônico enviado?

Fernando Cerutti 157


UNISUL
Curso de Servidores Linux

No ambiente internet, "spam" significa enviar uma mensagem qualquer para


uma grande quantidade de usuários, sem primeiro verificar a utilidade do
conteúdo da mensagem para aqueles destinatários. Este procedimento,
propiciado pelo baixo custo de envio de mensagem eletrônica, causa
inconveniência e custo para o destinatário. O "spammer" (o autor do "spam")
só está olhando para os seus interesses egoistas e imediatos. Por eles, ele é
capaz de passar por cima de qualquer regra mínima de convivência. Às
mensagens enviadas pelo "spammer" nos referimos como "Mensagens Não
Solicitadas". Este não é o termo próprio, pois é um contrasenso admitir-se que
alguém precisa de uma autorização especial para nos enviar uma
correspondência. Na verdade, o que se quer é ter mecanismos que reduzam
a níveis mínimos o volume de "junk emails" (mensagens "lixo") em nossas
caixas postais eletrônicas.

2 - Por que não enviar SPAM, mailbombs, etc. ?


Primeiramente, cada um não deve e não pode ter sua privacidade invadida
recebendo algo pelo qual não solicitou. Malas-diretas, correntes, esquemas de
ganhe dinheiro-facil exemplificam este tipo de situação. Situação esta que
quem sai no prejuío é quem recebe. Um exemplo notório e clássico americano
foi o SPAM enviado pela CyberPromotions a AOL. 1,8 milhõs de correios
eletrõnicos diários até o início de um processo judicial. Considerando que um
usuário típico da AOL leve 5 segundos para identificar e descartar a
mensagem, já se foram 5000 horas por dia de conexão por dia
desperdiçados com SPAM, apenas neste caso. Em contraste, o SPAM não
deve ter gasto R$100,00/ dia para o envio de sua publicidade.

Outro prejuízo que se tem é o gasto desnecessário dos recursos da rede. Se


fosse bem devido este tipo de prática, provavelmente a Internet pararia, em
muitos lugares, apenas para entregar as mensagens com
propagandas/correntes/esquema de fico-rico-num-dia.

Outra peculiaridade do SPAM é a falsidade que trazem os conteúdos das


mensagens. A maioria das pessoas, por exemplo, que assinam as correntes e
esquemas de fiquei-rico-num-dia, sequer existem.

Qualquer formulário que requisitar seu correio eletrônico numa página da


Internet poderá usar seu email para tais malas-diretas indesejadas e mais,
divulgar para bancos de correios eletrônicos cujo único fim é entregá-los a
outras empresas de marketing e propaganda.

Muitos desses correios também são ilegais em muitos países. Pornografia


infantil, por exemplo, é crime passivo de prisão em muitos países.

Negue qualquer tipo de lixo enviado a sua caixa-postal que não tenha
solicitado e que não tenha te agradado.

Fernando Cerutti 158


UNISUL
Curso de Servidores Linux

3 - Bloqueando, Filtrando....(DENY)
As técnicas de bloqueio utilizadas por nossos sistemas são todas destinadas a
sistema Unix praticamente. Admistradores de Sistema em NT, poderão remeter
email a abuse@magiclink.com.br com suas contribuições.

Estamos apresentando a técnica para bloqueio de sites utilizando-se regras no


programa sendmail, nos roteadores CISCO e Cyclades.

4 - Regras de Bloqueio - Sendmail 8.8.x


Regras de Relaying Deny - Sendmail 8.8.x

-[Adicionando as regras anti-relay e anti-spam]-[Rev 1.1 - Sat Nov 22 10:46:02


1997]

1o PASSO:

Logue Como root na maquina.

2o PASSO:

Crie um diretorio e copie seu SENDMAIL.CF (arquivo de configuracao do


sendmail) para ele.

$~# mkdir /anti-spam


$~# cd /anti-spam
$~# cp /etc/sendmail.cf /anti-spam

3o PASSO:

Edite o SENDMAIL.CF que esta no diretorio anti-spam e adicione as regras .

$~# pico /anti-spam/sendmail.cf

Ok, uma vez dentro do 'PICO' voce deve ir para a linha abaixo de 'localhost'.
Para adicionar as regras use o seguinte comando do PICO:

^R (CTRL + R) e la procure pelo primeiro arquivo (REGRAS1.TXT). Se tudo


der certo ficara +- assim:

##################
# local info #
##################

Fernando Cerutti 159


UNISUL
Curso de Servidores Linux

Cwlocalhost

# Regras Anti Relay hosts


F{LocalIP} /etc/mail/LocalIP
F{RelayTo} /etc/mail/relayto
F{DeniedIP} -o /etc/mail/DeniedIP
F{DeniedNames} -o /etc/mail/DeniedNames
Kjunk hash -a@JUNK /etc/mail/junk

Ok, Salve o seu arquivo. Respire, beba uma coca-cola e vamos para o proximo
passo.

4o PASSO:

Agora vamos adicionar o arquivo (REGRAS2.TXT)

$~# pico /anti-spam/sendmail.cf

Com o arquivo editado procure por RULESET 98. (lembre-se que para procurar
com o pico use o comando):

^W (CTRL + W)

Apos ter achado a linha, insira a proxima regra (REGRAS2.TXT) usando o ^R


(CTRL + R).
Se tudo der certo vai ficar +- assim:

###############################################################
####
### Ruleset 98 -- local part of ruleset zero (can be null) ###
###############################################################
####

Scheck_rcpt
# make sure you have TABs here, not BLANKs! sendmail will complain
otherwise...
# first: get client addr
R$+ $: $(dequote "" $&{client_addr} $) $| $13
R0 $| $* $@ ok no client addr: directly invoked
R$={LocalIP}$* $| $* $@ ok from here
# not local, check rcpt
R$* $| $* $: $>3 $2
# remove local part, maybe repeatedly

Fernando Cerutti 160


UNISUL
Curso de Servidores Linux

R$*<@$=w.>$* $>3 $1 $3
# alternatively (or even both):
# if you use RelayTo, uncomment the next line!
# R$*<@$*$={RelayTo}.>$* $>3 $1 $4
# still something left?
# R$*<@$+>$* $#error $@ 5.7.1 $: 551 we do not relay
R$*<@$+>$* $#error $@ 5.7.1 $: 551 Relay Negado - Contate o Administrador
de seu sistema.

Scheck_relay
R$+ $| $={DeniedIP}$* $#error $@ 5.7.1 $: "no access from your IP address"
R$*$={DeniedNames} $| $* $#error $@ 5.7.1 $: "no access from your host"

# check for junk domain/spammers Sjunk


# lookup domain in database
R$*<@$+> $:$1<@$(junk $2$)>
# exists? return
R$*<@JUNK@JUNK> $@$1<@ "551 mail from your spam domain not
accepted." @JUNK>
R$*<@$*@JUNK> $@$1<@$2@JUNK>
# lookup address in database
R$*<@$+> $:$1<@$(junk $1@$2 $:$2$)>
# exists? return
R$*<@SPAMMER@JUNK> $@$1<@ "551 mail from your spam address not
accepted." @JUNK>
R$*<@$*@JUNK> $@$1<@$2@JUNK>
# remove one subdomain, try again
R$*<@$-.$-.$+> $: $>junk $1<@$3.$4>

Scheck_mail
# don't check these
R<$*@$=w> $@ ok shortcut
# idea from Steven Schultz
R<> $: <$n @ $(dequote "" $&{client_name} $) >
# mark address
#R$* $:<@>$1
# is the syntax ok (uses <> and no dot at the end?)
#R<@><$*@$*$~.> $:<$1@$2$3>
# mark still there: error...
#R<@>$* $#error $@ 5.1.8 $: 551 illegal MAIL FROM $1,
# if we don't to the above: remove at least the dot...
R<$*@$*.> <$1@$2>
R$* $: $>3 $1 canonify
R$- $@ ok local host
# no host without a . in the FQHN ?

Fernando Cerutti 161


UNISUL
Curso de Servidores Linux

# if you get local e-mail from hosts without full domains,


# put a hash in front of the next rule
R$*<@$->$* $#error $@ 5.1.8 $: 551 invalid host name $2, check your
configuration.
# lookup IP address (reverse mapping available?)
# R$*<@[$-.$-.$-.$-]>$* $: $1 < @ $[ [ $2.$3.$4.$5 ] $] > $6
# copy the result of the lookup
R$* $:$1 $| $1
# now remove the dot
R$* $| $*<@$*.>$* $: $1 $| $2<@$3>$4
# and check the database
R$* $| $*<@$*>$* $: $1 $| $>junk $2<@$3>
# match: return given error code (rhs of map)
R$* $| $*<@$*@JUNK>$* $#error $@ 5.7.1 $: $3
# restore original value (after canonicalization by ruleset 3)
# this is only required if you want to enable the last rule
# R$* $| $* $: $1
# this is dangerous! no real name
# R$*<@$*$~P>$* $#error $@ 4.1.8 $: 451 unresolvable host name $2$3,
check your setup.

S98

Salve seu SENDMAIL.CF.

5o PASSO:

Crie um diretorio chamado mail dentro do diretorio /ETC

$~# mkdir /etc/mail

Em seguida crie os seguintes arquivos:

$~# cd /etc/mail
$~# echo > LocalIP
$~# echo > relayto
$~# echo > DeniedIP
$~# echo > DeniedNames
$~# echo > junk

LocalIP -> Deve conter o ip de suas maquinas

ex:

Fernando Cerutti 162


UNISUL
Curso de Servidores Linux

127.0.0.1
2.34.56.78
2.34.56.78.
2.34.56

relayto -> Deve conter o IP e HOSTS das maquinas que podem fazer 'RELAY'
pelo seu servidor

ex:

chica-da-silva-muito-boa.org
debora.rodrigues.e.gostosa.com
www.minha-maquina.com
www.maquina.dominio.org
222.54.22.09
2.34.56.78

DeniedIP -> Deve conter o IP das maquinas que estao banidas por voce

ex:

2.34.56.78
222.234.244.555

DeniedNames -> Deve conter o DOMINIO das maquinas banidas por voce

ex:

www.maquina.dominio.org
www.disneylandia.com
pornografia.net

junk -> Deve conter hosts e nomes de usuarios banidos

ex:

mickey@disneylandia.com "551 ISSO AQUI não E A DISNEYLANDIA !!"


@louraburra.com "551 DiE DiE DiE BUNGHOLE"
so.what.com "Voce esta banido"
so.what.com "551 oi spammers"

Determinando seus IPs banidos e IPs habilitados voce tem de gerar um


pequeno banco de dados:

Fernando Cerutti 163


UNISUL
Curso de Servidores Linux

$~# makemap -v hash LocalIP.db < LocalIP (opcional)


$~# makemap -v hash relayto.db < relayto (opcional)
$~# makemap -v hash DeniedNames.db < DeniedNames
$~# makemap -v hash DeniedIP.db < DeniedIP
$~# makemap -v hash junk.db < junk

Obs: Alguns Sistemas Operacionais (OS) não aceitam 'HASH' voce pode usar
'DBM', 'BTREE', não se esqueca somente de alterar as PRIMEIRAS REGRAS.
Trocando a o comando 'HASH' por qualquer um dos descritos acima.

6o PASSO:

Crie um diretorio chamado 'SEND-ORIG'

$~# mkdir /etc/send-orig


$~# cp /etc/sendmail.cf /etc/send-orig

Chegamos no CLIMAX da instalacao, agora voce deve derrubar seu sendmail


e por seu novo .CF para funcionar.

$~# killall sendmail


$~# rm /etc/sendmail.cf
$~# cp /anti-spam/sendmail.cf /etc/
$~# /usr/sbin/sendmail -bd -q 15m

Se tudo der certo seu sendmail com regras anti-spam estarao no ar, para
certifica-se disso de um telnet para sua porta 25.

$~# telnet localhost 25

220 sua.makina.com.br xxxxxxxxxxxxxx

Caso não de certo, derrube seu sendmail mais uma vez e volte as
configuracoes antigas e nos mande um email. (askion@rio.com.br)

$~# rm /etc/sendmail.cf
$~# cp /etc/send-orig/sendmail.cf /etc
$~# /usr/sbin/sendmail -bd -q 15m

5 - Regras de Bloqueio - Roteador CISCO


Estamos apresentando a seguir a técnica para bloqueio de sites utilizando-se
dos ACCESS-LIST no Roteador CISCO.

Fernando Cerutti 164


UNISUL
Curso de Servidores Linux

-[Deny pelo CISCO 2500 - 250*]-[Versao 1.0b - Thu Nov 27 16:58:18 EDT
1997]

# HABILITANDO A 'LISTA 101'

1- de telnet para seu cisco


2- entre com ENABLE e depois o password
3- Siga os comandos abaixo atenciosamente:

Router# conf t
Router(config)# int ser0
Router(config-if)# ip access-group 101 in
Router(config-if)# exit

4- Com os comandos acima, voce habilitou a lista numero 101 (as listas com
poder de selecao de pacotes sao de 100 a 199)

# CONSTRUINDO A 'LISTA 101'

Obs: Toda a linha da access-list eh algo assim:

Router# access-list numero acao protocolo origem destino modificadores

Numero = Eh o numero da acess-list


ex: access-list 101

Acao = Eh o que voce vai fazer com o PACOTE. (DENY - PERMIT)


ex: access-list 101 deny

Protocolo = Os protocolos (IP - TCP - UDP - ICMP)


ex: access-list 101 deny icmp

Origem = Da onde vem o pacote (o IP origem com o endereco e NETMASK


invertido)

Destino = E para onde vai o pacote (O IP destino, com endereco e netmask


invertidos)

Modificadores = Sao opcoes de selecao de portas e flags de pacotes. (EQ,


ESTABLISHED, entre outros)

Como exemplo vamos pegar uma acess-list do UOL-deny:

Router(config)# no access-list 101

Fernando Cerutti 165


UNISUL
Curso de Servidores Linux

Router(config)# access-list 101 permit tcp 200.246.5.87 0.0.0.0 any eq 25


established
Router(config)# access-list 101 deny tcp 200.246.5.87 0.0.0.0 any eq 25
Router(config)# access-list 101 permit ip any any
Router(config)# exit
Router(config)# write mem

Assim esta feito o seu 'DENY'. Vale ressaltar que DENY pelo cisco não é
aconselhavel uma vez que o servidor deles sem conexao ao seu acusara não
ENVIO de correio, enquanto voce usando as REGRAS DO SENDMAIL, o
correio não sera enviado e voltara com o motivo do BANIMENTO.

Fernando Cerutti 166

Anda mungkin juga menyukai