Anda di halaman 1dari 222

Administrao

de Sistemas
Linux

Rio de Janeiro
Escola Superior de Redes
2014

Administrao
de Sistemas
Linux
Ari Frazo Jr.
Marcelo Braga

Rio de Janeiro
Escola Superior de Redes
2014
Administrao de Sistemas Linux
i

Copyright 2013 Rede Nacional de Ensino e Pesquisa RNP


Rua Lauro Mller, 116 sala 1103
22290-906 Rio de Janeiro, RJ
Diretor Geral
Nelson Simes
Diretor de Servios e Solues
Jos Luiz Ribeiro Filho

Escola Superior de Redes


Coordenao
Luiz Coelho
Edio
Pedro Sangirardi
Reviso Tcnica
Wendel Matias Soares
Coordenao Acadmica de Administrao de Sistemas
Sergio Alves de Souza
Equipe ESR (em ordem alfabtica)
Adriana Pierro, Celia Maciel, Cristiane Oliveira, Derlina Miranda, Edson Kowask, Elimria
Barbosa, Evellyn Feitosa, Felipe Nascimento, Lourdes Soncin, Luciana Batista, Luiz Carlos
Lobato, Renato Duarte e Yve Marcial
Capa, projeto visual e diagramao
Tecnodesign
Verso
2.0.0-b
Este material didtico foi elaborado com fins educacionais. Solicitamos que qualquer erro
encontrado ou dvida com relao ao material ou seu uso seja enviado para a equipe de elaborao
de contedo da Escola Superior de Redes, no e-mail info@esr.rnp.br. A Rede Nacional de Ensino e
Pesquisa e os autores no assumem qualquer responsabilidade por eventuais danos ou perdas, a
pessoas ou bens, originados do uso deste material.
As marcas registradas mencionadas neste material pertencem aos respectivos titulares.
Distribuio
Escola Superior de Redes
Rua Lauro Mller, 116 sala 1103
22290-906 Rio de Janeiro, RJ
http://esr.rnp.br
info@esr.rnp.br

Administrao de Sistemas Linux


ii

Escola Superior de Redes


A Escola Superior de Redes (ESR) a unidade da Rede Nacional de Ensino e Pesquisa
(RNP) responsvel pela disseminao do conhecimento em Tecnologias da Informao e
Comunicao (TIC). A ESR nasce com a proposta de ser a formadora e disseminadora de
competncias em TIC para o corpo tcnico-administrativo das universidades federais,
escolas tcnicas e unidades federais de pesquisa. Sua misso fundamental realizar a
capacitao tcnica do corpo funcional das organizaes usurias da RNP, para o
exerccio de competncias aplicveis ao uso eficaz e eficiente das TIC.
A ESR oferece dezenas de cursos distribudos nas reas temticas: Administrao e
Projeto de Redes, Administrao de Sistemas, Segurana, Mdias de Suporte
Colaborao Digital e Governana de TI.
A ESR tambm participa de diversos projetos de interesse pblico, como a elaborao e
execuo de planos de capacitao para formao de multiplicadores para projetos
educacionais como: formao no uso da conferncia web para a Universidade Aberta do
Brasil (UAB), formao do suporte tcnico de laboratrios do Proinfo e criao de um
conjunto de cartilhas sobre redes sem fio para o programa Um Computador por Aluno
(UCA).

A metodologia da ESR
A filosofia pedaggica e a metodologia que orientam os cursos da ESR so baseadas na
aprendizagem como construo do conhecimento por meio da resoluo de problemas
tpicos da realidade do profissional em formao. Os resultados obtidos nos cursos de
natureza terico-prtica so otimizados, pois o instrutor, auxiliado pelo material didtico,
atua no apenas como expositor de conceitos e informaes, mas principalmente como
orientador do aluno na execuo de atividades contextualizadas nas situaes do
cotidiano profissional.
A aprendizagem entendida como a resposta do aluno ao desafio de situaes-problema
semelhantes s encontradas na prtica profissional, que so superadas por meio de
anlise, sntese, julgamento, pensamento crtico e construo de hipteses para a
resoluo do problema, em abordagem orientada ao desenvolvimento de competncias.
Dessa forma, o instrutor tem participao ativa e dialgica como orientador do aluno para
as atividades em laboratrio. At mesmo a apresentao da teoria no incio da sesso de
aprendizagem no considerada uma simples exposio de conceitos e informaes. O
instrutor busca incentivar a participao dos alunos continuamente.
As sesses de aprendizagem onde se do a apresentao dos contedos e a realizao das
atividades prticas tm formato presencial e essencialmente prtico, utilizando tcnicas
de estudo dirigido individual, trabalho em equipe e prticas orientadas para o contexto
de atuao do futuro especialista que se pretende formar.

Administrao de Sistemas Linux


iii

As sesses de aprendizagem desenvolvem-se em trs etapas, com predominncia de


tempo para as atividades prticas, conforme descrio a seguir:
Primeira etapa: apresentao da teoria e esclarecimento de dvidas (de 60 a 90 minutos).
O instrutor apresenta, de maneira sinttica, os conceitos tericos correspondentes ao
tema da sesso de aprendizagem, com auxlio de slides em formato PowerPoint. O
instrutor levanta questes sobre o contedo dos slides em vez de apenas apresent-los,
convidando a turma reflexo e participao. Isso evita que as apresentaes sejam
montonas e que o aluno se coloque em posio de passividade, o que reduziria a
aprendizagem.
Segunda etapa: atividades prticas de aprendizagem (de 120 a 150 minutos).
Esta etapa a essncia dos cursos da ESR. A maioria das atividades dos cursos
assncrona e realizada em duplas de alunos, que acompanham o ritmo do roteiro de
atividades proposto no livro de apoio. Instrutor e monitor circulam entre as duplas para
solucionar dvidas e oferecer explicaes complementares.
Terceira etapa: discusso das atividades realizadas (30 minutos).
O instrutor comenta cada atividade, apresentando uma das solues possveis para
resolv-la, devendo ater-se quelas que geram maior dificuldade e polmica. Os alunos
so convidados a comentar as solues encontradas e o instrutor retoma tpicos que
tenham gerado dvidas, estimulando a participao dos alunos. O instrutor sempre
estimula os alunos a encontrarem solues alternativas s sugeridas por ele e pelos
colegas e, caso existam, a coment-las.

Sobre o curso
Seu objetivo apresentar os conceitos bsicos, histria e arquitetura do sistema
operacional Linux, com prticas de instalao, configurao e administrao do sistema
de parmetros, senhas e contas de usurios, backup, servio de impresso, registro de
eventos -- syslog, monitoramento de usurios, contabilidade de processos, configurao
do ncleo do sistema operacional, aplicao de noes bsicas de segurana, entre outras
atividades relacionadas maior comunidade de software livre do mercado
O curso composto de 10 captulos de embasamento terico e atividades correlatas para
aprendizado e fixao do conhecimento. O curso tem como objetivo apresentar as
facilidades de administrao e gerenciamento, que sero exploradas com maior
profundidade nos demais cursos da rea de Administrao de Sistemas da Escola
Superior de Redes da RNP.

A quem se destina
Profissionais da rea de informtica que sero responsveis por administrar ambientes
que utilizam as infraestrutura com sistemas operacionais Linux. Podem tambm
participar outros profissionais de TI, programadores e analistas de suporte de sistemas.

Administrao de Sistemas Linux


iv

Convenes utilizadas
As seguintes convenes tipogrficas so usadas neste livro:
Itlico
Indica nomes de arquivos e referncias bibliogrficas relacionadas ao longo do texto.
Largura constante
Indica comandos e suas opes, variveis e atributos, contedo de arquivos e resultado
da sada de comandos. Comandos que sero digitados pelo usurio so grifados em
negrito e possuem o prefixo do ambiente em uso (no Linux normalmente # ou $,
enquanto no Windows C:\).
Smbolo
Indica referncia complementar disponvel em site ou pgina na internet.
Smbolo
Indica um documento como referncia complementar.
Smbolo
Indica um vdeo como referncia complementar.
Smbolo
Indica um arquivo de udio como referncia complementar.
Smbolo
Indica um aviso ou precauo a ser considerada.
Smbolo
Indica questionamentos que estimulam a reflexo ou apresenta contedo de apoio ao
entendimento do tema em questo.
Smbolo
Indica notas e informaes complementares como dicas, sugestes de leitura adicional ou
mesmo uma observao.

Permisses de uso
Todos os direitos reservados RNP.
Agradecemos sempre citar esta fonte quando incluir parte deste livro em outra obra.
Exemplo de citao: PEIXOTO, Arthur Mendes; BONFANTE, Andreia Gentil. Introduo ao
Linux. Rio de Janeiro: Escola Superior de Redes, 2014.

Administrao de Sistemas Linux


v

Comentrios e perguntas
Para enviar comentrios e perguntas sobre esta publicao:
Escola Superior de Redes RNP
Endereo: Av. Lauro Mller 116 sala 1103 Botafogo
Rio de Janeiro RJ 22290-906
E-mail: info@esr.rnp.br

Sobre os autores
Ari Frazo Jr. bacharel em Cincia da Computao pela Universidade Federal da
Paraba (UFPB) e mestre em Cincia da Computao, na rea de redes de computadores,
pela Universidade Federal de Pernambuco (UFPE). Atualmente responsvel pelas reas
de engenharia e operaes da Rede Nacional de Ensino e Pesquisa (RNP), onde atua
desde 1993.
Marcelo Castellan Braga possui graduao em Engenharia Eletrnica pelo CEFET-RJ,
ps-graduao em Anlise, Projeto e Gerncia de Sistemas pela PUC-RJ e mestrado em
informtica pela UNIRIO. Atualmente scio diretor da MCB Tech, empresa que presta
consultoria em redes de computadores, servios de internet, segurana de dados e
desenvolvimento de software. Atuou durante mais de 10 anos na rea de TI em empresas
como Rede Nacional de Ensino e Pesquisa (RNP) e Embratel.
Wendel Soares Formado em Segurana da informao pela Faculdade Rogacionista de
Braslia, e Pos-Graduado em Redes de Computadores pelo Centro Universitrio IESB. com
mais de 15 Anos de experincia em segurana de redes. Administrador de Redes do
Ministrio da Defesa Exrcito Brasileiro e Consultor em Segurana de TI. Contedista e
Instrutor da Escola Superior de Redes desde 2008, tendo lecionado cursos de
Administrao de sistemas Linux e Segurana de Redes.

Administrao de Sistemas Linux


vi

Sumrio
Escola Superior de Redes

iii

A metodologia da ESR

iii

Sobre o curso

iv

A quem se destina

iv

Convenes utilizadas

Permisses de uso

Comentrios e perguntas

vi

Sobre os autores

vi

Introduo ao sistema operacional Linux

Sumrio

Introduo
Atribuies de um administrador de sistemas

1
2

Histrico
Slackware
Red Hat Enterprise Linux
Debian
Suse
Mandriva
Fedora
CentOS
Ubuntu

3
5
5
5
5
6
6
6
6

Arquitetura
Kernel
Deteco de hardware
Gerenciamento de entrada e sada
Manuteno do sistema de arquivos
Gerenciamento de memria e swapping
Gerenciamento de processos
Biblioteca de funes padro
Shell
Aplicaes

7
7
8
8
9
9
10
10
10
11

Sistema de arquivos
Inode

12
13

Tipos de arquivos
Arquivo regular

14
14

Administrao de Sistemas Linux


vii

Diretrio
Arquivo de Dispositivo
Dispositivos orientados a caractere
Dispositivos orientados a bloco
Socket
Named pipe
Link
Hard link
Symbolic link
Comando ls
Permisses de arquivos
Bits de permisso
Bits especiais
Sticky Bit
Setgid (SGID)
Setuid (SUID)
Mudando permisses
Mscara de usurio
Usurios e grupos

21
22
22
23
24
24
24
26
27

Sumrio

27

Introduo

27

Grupos
Arquivo /etc/gshadow

28
30

Usurios
Problemas de segurana
Shadow passwords
Tipos de contas de usurios

30
31
32
33

Senhas
O risco das senhas provveis

33
34

Criando contas de usurios


Criar entrada nos arquivos /etc/group e /etc/gshadow
Criar entrada nos arquivos /etc/passwd e /etc/shadow
Definir senha inicial
Criar diretrio de trabalho
Copiar arquivos de inicializao
Criar cota de uso de disco
Testar nova conta

34
35
35
37
37
38
38
39

Administrando grupos
Criando grupos
Modificando grupos
Removendo grupos

39
39
40
40

Administrao de Sistemas Linux


viii

14
15
15
15
16
16
17
17
18
20

Administrando contas de usurios


Criando contas de usurios
Modificando contas de usurios
Desabilitando contas de usurios
Removendo contas de usurios
Monitorando usurios

41
41
42
42
43
44

Processos

47

Sumrio

47

Processos
Tipos de processos
Componentes de um processo
PID e PPID
RUID, EUID, RGID e EGID
Prioridade
Terminal de controle
Ciclo de vida de um processo
Multiprocessamento
Daemon
Alternando execues
Estados de um processo
Prioridades e escalonamento de processos
Algoritmo de escalonamento
Uso de sinais
SIGSTOP
SIGCONT
SIGHUP
SIGTERM
SIGKILL
Monitoramento de processos

47
48
49
50
50
51
52
52
54
55
56
57
58
60
61
62
62
62
62
62
63

Execuo peridica de tarefas


Cron
Exemplos de uso do crontab
Formato do crontab
Anacron
Fcron

65
65
66
66
67
67

Sistema de arquivos

69

Sumrio

69

Estrutura dos discos


Tipos de partio

69
72

Sistema de arquivos

72

Administrao de Sistemas Linux


ix

Comandos
mkfs
fsck
mount
umount
du e df
Tipos de sistemas de arquivos suportados
Sistema de quotas
Preparando o sistema
Habilitando
Inicializando
Editando quotas
Verificao e gerenciamento
Backup

78
79
79
80
81
83
85

Sumrio

85

Introduo

85

Tipos de backup

86

Mdias de backup
Fitas magnticas
LTO (Linear Tape Open)
DLT (Digital Linear Tape)
Mdias pticas
CD
DVD
Blu-Ray
Storage

87
88
88
88
89
89
89
89
90

Comandos do sistema
Comando tar
Comando cpio
Comando dump
Comando rsync
Comandos gzip/gunzip e bzip2/bunzip2

92
92
93
94
94
95

Softwares de backup
Pacotes gratuitos
Amanda
Bacula
Pacotes Comerciais

95
96
96
103
117

Polticas de backup
Cuidados no armazenamento das mdias

118
119

Servio de impresso
Administrao de Sistemas Linux
x

74
74
75
76
76
76
77

121

Sumrio

121

Introduo
Histrico
POSIX
IPP

121
122
122
122

Arquitetura do sistema de impresso

123

Softwares gerenciadores de impresso


LPD (Line Printer Daemon)
Componentes do LPD
Protocolo LPD
LPRng
CUPS
Arquitetura
Interface web do CUPS
Gerenciamento de impressoras
Comandos
Gerenciamento de clientes

124
124
124
126
126
126
127
130
131
131
133

Registro de eventos

137

Sumrio

137

Introduo

137

Sysklogd
Syslogd
Arquivo de configurao do syslog
Arquivos de log especiais
Klogd

138
138
139
142
143

Rsyslog
Arquivo de configurao do rsyslog

144
145

Syslog-ng
Arquivo de configurao do syslog-ng

146
147

Rotacionamento de arquivos de log


Arquivo de configurao do logrotate

149
149

O comando logger

150

Servidor de logs
Configurando os servidores clientes

151
151

Aplicativos para anlise de arquivos de log


Logwatch
Arquivo de configurao do logwatch
Swatch

152
153
153
154

Administrao de Sistemas Linux


xi

Arquivo de configurao do Swatch


Logcheck
Arquivo de configurao do logcheck
Recomendaes bsicas de segurana
Boot & Shutdown e Kernel

157
159

Sumrio

159

Inicializao do sistema
Basic Input/Output System (BIOS)
Carregadores de boot (boot loaders)
LILO
GRUB
Iniciando o kernel
Processo init
Arquivo /etc/inittab

159
160
161
161
162
164
165
165

Shutdown

168

Arquitetura do kernel
Kernel Monoltico
Kernel Modular ou Hbrido
Mdulos do kernel

169
170
170
171

Configurando e compilando o kernel


Configurando os componentes do kernel
Compilando o kernel
Componentes modulares
Instalando o kernel
Habilitando o kernel
Testando o kernel

172
172
174
175
175
176
178

Segurana bsica e procedimentos operacionais

179

Sumrio

179

Segurana bsica
Analisadores de senhas
Dicionrios
Contas compartilhadas
SUID e SGID
Atualizao de software
RPM
YUM
APT

179
182
183
183
183
184
184
186
186

Procedimentos operacionais
Poltica de utilizao de recursos
Informaes sobre os novos usurios

187
188
190

Administrao de Sistemas Linux


xii

154
155
156

Atendimento aos usurios


Controle de recursos computacionais
Cadastro de hardware
Diagnstico de falhas
Registro de ocorrncias
Rotina de backup
Webmin

190
192
192
193
194
195
197

Sumrio

197

Caractersticas gerais

197

Instalao
Perl
OpenSSL
Net_SSLeay.pm
Webmin

199
199
200
200
201

Interface de administrao

202

Mdulos

203

Usermin

205

Administrao de Sistemas Linux


xiii

Administrao de Sistemas Linux


xiv

1
Introduo ao sistema operacional Linux
Sumrio
Conhecer o histrico do Unix e do Linux;
Conhecer a arquitetura do Linux;
Conhecer o conceito de sistema de arquivos;
Conhecer os tipos de arquivos do Linux;
Entender o conceito de permisso de arquivos.

Introduo ao sistema operacional Linux:


Introduo;
Histrico;
Arquitetura;
Sistema de arquivos;
Tipos de arquivos;
Permisses de arquivos.

Introduo
Uma das caractersticas mais marcantes do ser humano a capacidade de se organizar para
tirar o melhor proveito de seus trabalhos e garantir que tudo funcione de maneira correta.
Isso pode ser observado em empresas, escritrios, lojas, cinemas e at mesmo nos lares. Da
mesma forma que um administrador de empresas administra e gerencia uma empresa, um
administrador de sistemas responsvel por administrar e gerenciar os recursos
computacionais de uma organizao.
A informatizao crescente nas instituies pblicas e privadas, a disseminao de diversas
tecnologias de redes e o uso cada vez maior de sistemas integrados de gesto fazem da
administrao de sistemas uma atividade complexa e de importncia estratgica para as
organizaes. Portanto, para atuar nessa rea, o administrador de sistemas deve possuir o
conhecimento e a experincia necessrios para assegurar que os sistemas de uma
organizao estejam sempre disponveis, seguros e com desempenho adequado para
executar as operaes de que a organizao necessita para atingir seus objetivos. Um bom
administrador de sistemas deve aliar conhecimento tcnico e do negcio da empresa para
Administrao de Sistemas Linux
1

conseguir tirar o melhor proveito possvel dos recursos computacionais sob sua
responsabilidade.
Apesar de existir desde a poca dos mainframes, a rea de administrao de sistemas sofreu
um grande impacto com o advento da microinformtica, das redes de computadores e das
tecnologias associadas Internet. Este mdulo, de carter essencialmente prtico, foi criado
pela Escola Superior de Redes para explorar os conceitos e prticas mais importantes da
administrao de sistemas Linux. Ele representa a primeira etapa na formao de um
administrador de sistemas.

Atribuies de um administrador de sistemas


Um administrador de sistemas deve ser capaz de instalar, configurar e manter operacional
toda a infraestrutura de TI (servidores, estaes de trabalho, impressoras, dispositivos de
armazenamento, equipamentos de conectividade, etc.); instalar, configurar, manter
atualizado e seguro todo o software necessrio para o funcionamento correto dos sistemas
(sistemas operacionais e aplicativos); interligar os recursos computacionais que funcionam
em rede, configurando os equipamentos de modo adequado; elaborar e executar uma
poltica de backup adequada; elaborar polticas de uso dos recursos de TI; executar e
controlar as operaes de gerenciamento de contas de usurios nos sistemas corporativos,
bem como suas permisses de acesso aos recursos destes sistemas; controlar e
supervisionar o uso dos recursos computacionais para assegurar que sejam utilizados de
forma segura e adequada; diagnosticar e solucionar as situaes de falha no funcionamento e
na operao dos recursos computacionais que compem os sistemas; auxiliar os usurios,
esclarecendo dvidas e orientando-os na busca de solues mais adequadas s suas
necessidades.
claro que existem sistemas computacionais de portes e fins muito diferentes, variando
desde uma pequena rede local para uso administrativo em uma microempresa at uma rede
de computadores abrangendo diversos pases, em uma empresa multinacional.
Naturalmente, o porte e o conhecimento da equipe de administrao de sistemas devero
estar adaptados a essas diferentes situaes, embora suas atribuies sejam basicamente as
descritas acima.
Entre as diversas caractersticas desejveis em um administrador de sistemas podemos
destacar: conhecimento tcnico aprofundado e abrangente da rea, o que requer constante
atualizao; entendimento dos objetivos e metas da instituio; conhecimento das
necessidades dos usurios; capacidade de diagnosticar e resolver problemas, o que depende
de sua experincia prtica; capacidade de trabalhar em equipe e de se relacionar com
pessoas, para proporcionar um bom atendimento aos usurios; capacidade de organizao;
pr-atividade e senso de responsabilidade, para assegurar que todas as tarefas programadas
sejam adequadamente priorizadas e executadas. Sem isso, a carreira profissional de um
administrador de sistemas estar seriamente comprometida.
Requisitos do administrador de sistemas:
Responsabilidade pelos recursos computacionais;
Conhecimento tcnico;
Administrao de Sistemas Linux
2

Experincia;
Aperfeioamento constante;
Entendimento dos objetivos e metas da empresa;
Conhecimento das necessidades dos usurios.

Atribuies de um administrador:
Instalar, configurar e manter o hardware dos equipamentos;
Instalar, configurar e manter atualizado e seguro os softwares utilizados pela empresa;
Interligar de maneira eficaz os recursos computacionais que funcionam em rede;
Administrar contas de usurios (cadastro, atualizao e remoo);
Fazer e restaurar backup;

Atribuies de um administrador (continuao):


Monitorar atividades do sistema, ajustando-as para o mximo desempenho;
Solucionar problemas de software e hardware;
Manter documentao atualizada sobre os sistemas;
Desenvolver scripts para automao de tarefas;
Garantir a segurana de rede de um modo geral;
Prestar atendimento aos usurios dos sistemas.

Histrico
Em meados dos anos 60, mais precisamente em 1964, o Bell Labs da AT&T, a GE e o MIT
formaram um grupo de pesquisadores para desenvolver um sistema operacional para o
mainframe GE-645 que foi batizado de Multics. Este projeto, no entanto, no foi muito bem
sucedido e devido a interesses divergentes o Bell Labs o abandonou em 1969. Neste mesmo
ano, Ken Thompson, um de seus pesquisadores envolvido no projeto de criao do Multics,
iniciou o projeto de um novo sistema operacional baseado no Multics e escrito em linguagem
assembly. Este sistema foi inicialmente batizado de Unics e mais tarde teve seu nome alterado
para Unix.
Em 1973, com a ajuda de Dennis Ritchie, outro pesquisador do Bell Labs, Thompson
reescreveu o Unix em uma linguagem de programao de alto nvel, chamada C, que foi
desenvolvida pelo prprio Ritchie. Como a AT&T no atuava comercialmente na rea de
computao, o Bell Labs fornecia a licena de uso do Unix para as universidades interessadas,
juntamente com o cdigo-fonte. Isso gerou verses diferentes do sistema, medida que as
modificaes no cdigo eram feitas nas universidades e no prprio Bell Labs. Essa falta de
padronizao foi to grande que, no final dos anos 80, havia vrias verses de Unix
totalmente incompatveis, baseadas em duas distribuies principais: o System V (da AT&T) e
o BSD, da Universidade da Califrnia em Berkeley. A distribuio BSD contribuiu para a
Administrao de Sistemas Linux
3

disseminao da internet por ter desenvolvido e implementado a pilha de protocolos TCP/IP


em seu sistema.
1964
AT&T, GE e MIT - Projeto para criao de um novo sistema operacional (Multics).
1969
Incio do Unix na Bell Labs da AT&T (Thompson).
1973
Unix reescrito na linguagem C;
Novo cdigo-fonte.
1977
Incio da distribuio BSD.
Embora a necessidade de padronizao fosse muito grande, as tentativas feitas nesse sentido
falharam. Em 1988 o IEEE (Institute of Electrical and Electronics Engineers), elaborou a
proposta do POSIX (Portable Operating System Interface), que permitiu uma padronizao
bsica das muitas verses existentes. No entanto, diferenas continuaram existindo devido
aos interesses comerciais dos grandes fabricantes de computadores, originando diversas
verses comerciais do Unix como: AIX da IBM, HP-UX da HP, XENIX da Microsoft e IRIX da
Silicon Graphics, todas baseadas na distribuio System V e SunOS da Sun e Tru64 da Digital
Equipment Corporation, baseadas na distribuio BSD. Alm disso, surgiram verses livres de
Unix como FreeBSD, NetBSD e OpenBSD, todas baseadas na distribuio BSD.
Nesse contexto, em 1984, Richard Stallman comeou um projeto para criar um sistema
operacional compatvel com o Unix, batizado de GNU. Stallman junto com um grupo de
programadores comearam a desenvolver os principais componentes do sistema, como
compiladores, editores de texto, etc.
Dcada de 80:
System V (AT&T);
Incorporao do protocolo TCP/IP distribuio BSD (Berkeley);
Diferentes verses geradas pela distribuio do cdigo;
Padronizao bsica POSIX (Portable Operating System Interface) nos padres IEEE;
Disputa comercial gerou: AIX, HP-UX, XENIX, IRIX, SunOS, entre outros;
Incio do projeto GNU de Richard Stallman.
Em 1991 o GNU j possua diversos componentes, mas ainda no tinha um kernel funcional.
Em paralelo a isso, em 1990 o ento estudante de cincia da computao, o finlands Linus
Torvalds comeou a desenvolver um sistema prprio, baseado no MINIX, um sistema
operacional desenvolvido por Andrew Tanenbaum, baseado no Unix e utilizado em cursos de
computao nas universidades. Linus estava insatisfeito com o MINIX e comeou seu projeto
inicialmente para rodar somente em seu computador, um 80386. Em pouco tempo Linus j
tinha uma verso de kernel funcional e em 1991 resolveu divulgar comunidade seu projeto,
que foi batizado de Linux. O Linux era basicamente um kernel e o GNU, um conjunto de

Administrao de Sistemas Linux


4

aplicaes. Em pouco tempo os dois projetos se juntaram formando o sistema operacional


GNU/Linux (muitas vezes referenciado somente por Linux).
Dcada de 90:
Linus Torvalds desenvolve o kernel do Linux;
Criao do Sistema operacional GNU/LinuxI;
Verses livres baseadas na distribuio BSD: FreeBSD, OpenBSD e NetBSD;
Primeiras distribuies do Linux (Slackware, Red Hat, Debian, SUSE, etc.).
Hoje o Linux possui diversas distribuies comerciais e gratuitas, cada uma com suas
caractersticas. Entre elas podemos destacar: Slackware, Red Hat Enterprise Linux, Debian,
SUSE, Mandriva, Fedora, CentOS e Ubuntu. As distines entre as principais distribuies so
resumidas a seguir.

Slackware
a distribuio mais antiga ainda em desenvolvimento, tendo sua primeira verso lanada
em 1993. O slackware uma distribuio gratuita que tem como principais caractersticas:
estabilidade, segurana, uso da interface texto para configurao do sistema, ampla
documentao, etc. Possui uma verso de produo que s inclui pacotes estveis e uma
verso current em desenvolvimento que no disponibilizada para download.

Red Hat Enterprise Linux


Desenvolvida pela Red Hat Software, essa uma distribuio voltada para uso em servidores
de pequeno a grande porte, com verses que suportam de dois a um ilimitado nmero de
processadores. A Red Hat vende esta distribuio juntamente com uma assinatura de suporte
tcnico, que varia em funo dos dias de atendimento, vias de atendimento (web ou telefone)
e nmero de incidentes por ano.

Debian
A distribuio Debian desenvolvida e mantida por uma equipe de desenvolvedores
voluntrios. O Debian possui um ciclo de desenvolvimento onde suas verses passam por
trs fases: stable (que a verso de produo), testing (contm verses mais atuais dos
pacotes que ainda no foram homologadas para entrar em produo) e unstable (utilizada
geralmente por desenvolvedores). O Debian conhecido por sua excelente ferramenta de
gerenciamento de pacotes, o APT.

Suse
uma das distribuies comerciais mais antigas (teve sua primeira verso lanada em 1994
na Alemanha). A distribuio SUSE possui uma excelente ferramenta grfica de instalao e
configurao do sistema operacional, chamada YaST. Em 2003 a Novell comprou a SUSE e
decidiu em 2005 compartilhar o desenvolvimento de uma verso gratuita de seu sistema
Administrao de Sistemas Linux
5

operacional com a comunidade de desenvolvedores, criando a distribuio openSUSE. Em


2011, a Novell e a SUSE foram compradas pela empresa Attachmate.

Mandriva
Essa distribuio surgiu da fuso realizada entre as distribuies Conectiva (que, na verdade,
era uma verso em portugus do Red Hat Linux), comercializada pela empresa brasileira
Conectiva Informtica e a distribuio Mandrake, comercializada pela empresa francesa
Mandrake Software. O Mandriva uma distribuio voltada para uso em desktop, com um
ambiente grfico muito avanado, alm de muitas facilidades que o tornam agradvel para o
usurio domstico.

Fedora
uma distribuio gratuita patrocinada pela Red Hat e mantida por uma comunidade aberta
de usurios e desenvolvedores. Essa distribuio teve sua primeira verso lanada em 2003,
quando a distribuio gratuita Red Hat Linux foi descontinuada. A partir da, a Red Hat
Software resolveu focar no mercado corporativo e lanou a distribuio paga Red Hat
Enterprise Linux. Em paralelo a isso, foi lanado o projeto Fedora, uma distribuio gratuita
baseada no Red Hat Linux.

CentOS
Essa distribuio deriva diretamente do Red Hat Enterprise Linux atravs dos seus arquivos
fonte originais. A Red Hat permite o uso dos fontes na condio de que se retire todas as
referncias comerciais sua marca. A principal vantagem que o CentOS uma slida e
poderosa distribuio Linux com o mesmo potencial do Red Hat e com a vantagem de ser
gratuita.

Ubuntu
O Ubuntu uma distribuio baseada na distribuio Debian, patrocinada pela empresa
Canonical. Uma das principais propostas do Ubuntu a popularizao do Linux, oferecendo
um sistema com interface mais amigvel, focado em acessibilidade e internacionalizao.
Segurana, confiabilidade, versatilidade, estabilidade e gratuidade so as caractersticas do
Linux que fazem com que ele desponte como a principal alternativa ao Microsoft Windows.
Linux (System V) uma alternativa aos sistemas comerciais.
Caractersticas:
Segurana;
Confiabilidade;
Versatilidade;
Estabilidade;
Licena gratuita.

Administrao de Sistemas Linux


6

Arquitetura
O GNU/Linux ou Linux (como mais conhecido) um sistema operacional multi-tarefa,
multi-usurio e multi-plataforma. Seu cdigo-fonte aberto e disponibilizado gratuitamente,
podendo ser alterado por qualquer pessoa, o que o torna um sistema extremamente flexvel.
O Linux distribudo pela licena GPL (General Public License), que permite executar, alterar
e distribuir qualquer software regido por ela. Sua arquitetura como mostra figura 1.1, pode
ser representada por uma pirmide dividida em camadas. O papel de cada uma dessas
camadas descrito a seguir.

Figura 1.1 - Arquitetura

Kernel
O kernel o ncleo do sistema operacional e se encarrega de executar todas as funes
bsicas e necessrias ao funcionamento correto do sistema. Uma de suas principais funes
prover uma interface entre o hardware e as aplicaes. O kernel possui uma arquitetura
monoltica, ou seja, composto por um grande e nico bloco de cdigo com milhes de
linhas. H algum tempo o conceito de mdulos, foi introduzido no Linux. Esses mdulos so
geralmente drivers de dispositivos e podem ser carregados em memria dinamicamente.
importante ressaltar que os mdulos no fazem parte do kernel.
Uma das grandes vantagens que o Linux oferece a possibilidade de o usurio poder fazer
alteraes em seu kernel, habilitando somente as funcionalidades necessrias para cada
sistema. Com isso, possvel ganhar em performance, pois o kernel se torna muito mais
enxuto, gerando uma imagem com um tamanho consideravelmente menor. As principais
funes do kernel so:
Deteco de hardware;
Gerenciamento de entrada e sada;
Manuteno do sistema de arquivos;
Gerenciamento de memria e swapping;
Gerenciamento de processos.

Administrao de Sistemas Linux


7

Hoje, todas as distribuies de Linux disponveis usam basicamente o mesmo kernel, com
pequenas alteraes. So as aplicaes incorporadas a essas distribuies que as
diferenciam.
Kernel:
Ncleo do sistema operacional;
Principais funes:
Deteco de hardware;
Gerenciamento de entrada e sada;
Manuteno do sistema de arquivos;
Gerenciamento de memria e swapping;
Controle da fila de processos.

Deteco de hardware
Todo sistema operacional para funcionar, depende de um determinado hardware, composto
por processador, memria, disco, controladores de vdeo etc. Devido existncia de diversos
fabricantes de hardware no mercado, as caractersticas dos componentes variam muito entre
si. Quando um novo dispositivo, como por exemplo uma placa de rede, instalado no
sistema, o kernel responsvel pela deteco e interao bsica com esse dispositivo.
Embora o kernel possa reconhecer e controlar uma grande quantidade de dispositivos
disponveis no mercado, existem alguns que no so reconhecidos, em geral os lanados aps
a data de lanamento da verso do kernel utilizado. Para evitar este tipo de problema,
importante utilizar sempre a ltima verso estvel do kernel. Vale ressaltar que drivers
desenvolvidos como mdulos podem ser instalados no sistema sem a necessidade de
recompilar o kernel. Os mdulos podem ser carregados em memria dinamicamente
medida que seu uso se torna necessrio.
Deteco de Hardware:
Identificao de dispositivos (memria, discos, processadores, impressora, etc.);
Interao com esses dispositivos (drivers).

Gerenciamento de entrada e sada


Todos os computadores possuem dispositivos de entrada e sada conectados, como teclado,
monitor, impressora, placa de rede, disco, etc. Esses dispositivos so controlados pelo kernel,
que envia requisies para solicitar a execuo de operaes especficas ou recebe sinais
para indicar que os dispositivos esto demandando determinadas operaes. A comunicao
entre o kernel e os dispositivos realizada por meio de sinais de interrupo. Nesse contexto,
o kernel funciona como um controlador de sinais de interrupo, atendendo a todas essas
requisies.

Administrao de Sistemas Linux


8

Gerenciamento de entrada e sada:


Controle dos dispositivos de entrada e sada;
Envio de requisies solicitando execues de operaes;
Controle de sinais de interrupo.

Manuteno do sistema de arquivos


O sistema de arquivos tem por objetivo organizar os arquivos do sistema e dos usurios,
assegurando que eles possam ser manipulados adequadamente por seus proprietrios. No
Linux, o sistema de arquivos visualizado como uma rvore invertida: a raiz est no topo e
os ramos, embaixo. Para ser lido ou escrito, o arquivo precisa ser aberto. Ao abri-lo, uma
srie de cuidados devem ser tomados, principalmente se esse arquivo j estiver sendo
utilizado por outro usurio ou programa. Todos esses cuidados com o sistema de arquivos,
bem como a forma como ele implementado, so definidos e gerenciados pelo kernel. A
figura 1.2 mostra um exemplo de organizao do sistema de arquivos do Linux.

Figura 1.2 - Sistema de arquivos do Linux


Manuteno do sistema de arquivos:
Sistema de arquivos o organizador dos arquivos do sistema e dos usurios;
Forma de implementao definida e gerenciada pelo kernel.

Gerenciamento de memria e swapping


Ao longo do tempo, foram criadas vrias tcnicas, como paginao e swapping, para otimizar
o uso da memria pelos programas em execuo. O kernel responsvel pela alocao de
memria aos processos em execuo. Ele suporta o conceito de memria virtual, permitindo
que processos ocupem mais espao em memria que aquela disponvel na mquina. A
memria virtual pode ser muito maior que a memria fsica. Cada processo tem seu prprio
espao de endereamento virtual. Esses espaos de endereamento so completamente
separados, de modo que um processo no pode interferir no cdigo e nos dados de outro
processo. Alm disso, o kernel permite que processos compartilhem reas de memria,
reduzindo assim o consumo desse recurso ou viabilizando um mecanismo de comunicao
entre processos. O swapping o processo em que o sistema operacional transfere dados que
Administrao de Sistemas Linux
9

esto na memria principal (programa em execuo e os seus dados associados) para uma
rea em disco (memria virtual) e vice-versa, dando a impresso de que o sistema possui
uma rea de memria maior que a real. Esta rea em disco utilizada como memria virtual
faz parte da partio de swap do Linux. A paginao uma tcnica utilizada por sistemas
operacionais que fazem uso do conceito de memria virtual que divide a rea de memria
em pginas de forma a permitir o swapping.
Gerenciamento de memria e swapping:
Responsvel pela alocao de memria aos processos em execuo;
Suporta o conceito de memria virtual;
Permite que os processos compartilhem reas de memria.

Gerenciamento de processos
O Linux um sistema operacional que suporta a execuo simultnea de vrios processos
que compartilham os recursos do sistema. O compartilhamento desses recursos deve ser
organizado de forma a atender s necessidades de todos os processos. Nesse contexto, o
kernel funciona como um supervisor e autoriza o uso desses recursos para um determinado
processo, quando necessrio. Mais frente, veremos que h um parmetro especial chamado
de prioridade, observado pelo kernel na alocao de um recurso a um processo.
Gerenciamento de processos:
Suporta a execuo simultnea de vrios processos;
Funciona como um supervisor, autorizando o uso dos recursos entre os processos.

Biblioteca de funes padro


Quando o usurio executa um comando atravs do shell, normalmente iniciado um ou mais
processos. Muitas vezes, esses processos realizam chamadas ao sistema operacional para
acessar recursos gerenciados pelo kernel. Tais chamadas so feitas por meio de funes
padro suportadas pelo kernel. Esses acessos, no entanto, no podem ser feitos de forma
desorganizada, pois comprometeriam a prpria segurana do sistema. Para isso existe uma
srie de funes (open, close, read, write, fork etc) que realizam, de forma segura, a
comunicao entre as aplicaes e o kernel, constituindo a biblioteca de funes padro.
Biblioteca de funes padro:
Chamadas feitas por processos ao sistema operacional para acessar recursos;
Uso de funes padro (open, close, read, write etc.);
Comunicao entre as aplicaes e o ncleo do sistema operacional, constituindo a
biblioteca de funes padro.

Shell
O shell ou interpretador de comandos nada mais do que um processo responsvel por ler
os comandos de entrada de um terminal, interpret-los e criar novos processos medida que
vo sendo requisitados. Baseado na configurao do ambiente do usurio, o interpretador de
Administrao de Sistemas Linux
10

comandos iniciado logo aps o processo de login. Veremos, mais adiante, que cada usurio
pode utilizar seu prprio interpretador de comandos. Da mesma forma que o MS-DOS, que
apresenta a sequncia de caracteres c:> (tambm conhecida como prompt), o interpretador
de comandos tambm exibe uma mensagem indicando que est pronto para executar
comandos. Vale ressaltar que essa mensagem pode ser configurada pelo prprio usurio.
O Linux tambm suporta um ambiente grfico baseado em janelas, denominado X-Window.
Esse ambiente possui diversas aplicaes grficas, entre elas o xterm, que emula um
interpretador de comandos. Quando o usurio inicia o xterm, este executa um interpretador
de comandos que ser responsvel por interpretar os comandos digitados pelo usurio na
janela do xterm. Para definir qual interpretador de comando ser executado, o xterm verifica
inicialmente a varivel de ambiente SHELL. Caso esta no tenha sido definida, o xterm
verifica no arquivo passwd qual interpretador de comandos est definido para o usurio. Se
no for definido nenhum interpretador vlido, o xterm utiliza o shell sh.
Quando o usurio digita um comando, o interpretador identifica o programa pela primeira
palavra informada na linha de comando. O interpretador procura ento por um arquivo com
o nome do programa e caso encontre, inicia sua execuo. Os demais termos da linha de
comando so passados como parmetros para o programa. No universo Linux, h vrios
interpretadores disponveis (como: sh, csh, bash, ksh, ash, zsh, etc.). Cada usurio pode
escolher e trabalhar com o interpretador mais adequado s suas necessidades. O
interpretador de comandos padro, definido para cada usurio mantido em um arquivo
que a base de usurios do sistema. Esse arquivo consultado durante o processo de login.
importante ressaltar que o usurio pode trocar de interpretador durante sua sesso de
trabalho. Para isso, basta digitar na linha de comando o nome do interpretador que deseja
utilizar.
Shell:
L e interpreta comandos de entrada de um terminal;
Cria novos processos medida que so requisitados;
Permite ao usurio trocar de interpretador durante sesso;
Exemplos: sh, csh, bash, ksh, tcsh, etc.

Aplicaes
So os programas com os quais o usurio interage diretamente, como compiladores, editores
de texto, planilhas, navegadores, gerenciadores de arquivos, etc. Um sistema operacional sem
aplicaes ficaria sem utilidade, j que estas fazem parte da nica camada da arquitetura que
acessada pelos usurios. As aplicaes so desenvolvidas geralmente para automatizar e
facilitar a realizao de tarefas que precisam ser realizadas pelos usurios diariamente. Elas
tambm facilitam a comunicao entre pessoas, alm de reduzir custos, como o caso das
aplicaes de voz sobre IP.
Aplicaes:
Programas com os quais os usurios interagem:

Administrao de Sistemas Linux


11

Compiladores;
Editores de texto;
Planilhas;
Jogos, etc.

Sistema de arquivos
Em qualquer sistema operacional, necessrio armazenar dados em arquivos e organiz-los
em diretrios. Os arquivos so gerenciados por um componente do sistema operacional
conhecido como sistema de arquivos, que define como os arquivos so estruturados,
identificados, acessados, modificados e protegidos. A figura 1.3 mostra como esto dispostos
os blocos em uma partio do Linux. O bloco de boot o primeiro bloco do disco e no
gerenciado pelo sistema de arquivos, sendo utilizado somente para dar incio ao processo de
boot do sistema operacional. O segundo bloco chamado superbloco e contm informaes
essenciais sobre o sistema de arquivos, como seu tamanho, nmero de inodes, nmero de
blocos de dados, etc. Em seguida, vem a tabela de blocos, que permite identificar os blocos de
dados livres e ocupados no disco. Logo aps, encontra-se a tabela de inodes (index-nodes),
que so estruturas de dados que armazenam informaes sobre os arquivos. Por fim, temos
os blocos de dados, nos quais o contedo dos arquivos efetivamente armazenado.

Figura 1.3 Sistemas de Arquivos Linux


Bloco de boot :
Tem a funo de carregar o kernel do sistema operacional;
Toda partio contm um bloco de boot.
Superbloco:
Contm informaes essenciais sobre o sistema de arquivos.
Tabela de blocos:
Identifica os blocos de dados livres no disco.
Tabela de inodes:
Contm as informaes de cada inode do sistema de arquivos.
Blocos de dados:
So os blocos do disco destinados a armazenar o contedo dos arquivos.

Administrao de Sistemas Linux


12

Inode
uma estrutura de dados de 64 bytes de tamanho que armazena informaes sobre um
arquivo como: tipo, permisses associadas, proprietrio e grupo, tamanho, ltima vez em
que foi modificado, localizao dos blocos onde o contedo do arquivo est armazenado, etc.
Todo sistema de arquivos possui uma tabela de inodes e cada arquivo possui um inode
associado que identificado por um nmero inteiro, conhecido como i-number ou ino. O
nmero de inodes funo do tamanho do sistema de arquivos e por padro, criado um
inode para cada 2 KB do tamanho total do sistema de arquivos. Parte das informaes
presentes nos inodes pode ser visualizada por meio do comando ls, utilizando a opo -l,
como mostra a figura 1.4.

Figura 1.4 - Informaes contidas nos inodes


Inodes:
Estrutura de dados mantida pelo kernel;
Possui informaes sobre arquivos:
Tipo, dono, grupo e permisses;
Datas de criao ou da ltima modificao;
Nmero de links para o arquivo;
Tamanho;
Endereo no disco rgido.
O comando stat tambm pode ser utilizado para visualizarmos informaes contidas nos
inodes, como mostra o exemplo abaixo.
# stat /etc/hosts
File: `/etc/hosts'
Size: 250
Blocks: 8
IO Block: 4096
regular file
Device: 801h/2049d
Inode: 523277
Links: 1
Access: (0644/-rw-r--r--) Uid: (0/
root)
Gid: (0/
root)
Access: 2012-01-15 12:18:33.056920612 -0200
Modify: 2011-11-21 16:51:49.228547005 -0200
Change: 2011-11-21 16:51:49.228547005 -0200
O nmero de inodes tambm pode ser definido pelo usurio durante a criao de um sistema
de arquivos. Existem aplicaes que criam grandes quantidades de arquivos pequenos, o que
pode resultar na utilizao de todos os inodes disponveis em um sistema de arquivos.
Administrao de Sistemas Linux
13

Quando isso acontece, mesmo que ainda haja espao suficiente em disco, no mais possvel
a criao de novos arquivos neste sistema de arquivos. Por isso, necessrio que o
administrador de sistemas faa uma anlise das aplicaes que sero instaladas em um
servidor, para que possa dimensionar corretamente o nmero de inodes que ser criado em
um sistema de arquivos. Para verificarmos o nmero de inodes livres em um sistema de
arquivos podemos utilizar o comando df com a opo -i.
# df -i
Filesystem
/dev/sda1

Inodes IUsed IFree


IUse%
Mounted on
2559088
48963 2510125
2%
/

Tipos de arquivos
No Linux qualquer objeto que gerenciado pelo sistema operacional tratado como arquivo,
desde um arquivo texto convencional a um dispositivo de hardware. Para identificar o tipo
do arquivo, o sistema operacional consulta as informaes contidas em seu inode. A seguir
veremos os diversos tipos de arquivos existentes no Linux.
Tipos de arquivos:
Arquivos regulares;
Diretrios;
Arquivos de dispositivo (bloco e caractere);
Sockets;
Named pipes;
Symbolic link.

Arquivo regular
Trata-se do tipo de arquivo mais comum que podemos encontrar em um sistema Linux. Pode
ser um relatrio feito no OpenOffice, um banco de dados do MySQL, um programa executvel
(como o Firefox), uma imagem (arquivo JPG), o cdigo-fonte de um programa em C, etc.
Arquivos desse tipo podem ser criados por meio de editores de texto, de aplicativos para
tratamento de imagem, de comandos do Linux (ex.: touch), etc. A sua remoo pode ser feita
com o comando rm.
Arquivo regular:
Conjunto de bytes;
Programa executvel, arquivo texto, imagem, etc.;
Criados por editores de texto, comandos etc.

Diretrio
Um diretrio nada mais do que um arquivo cujo contedo o nome dos arquivos nele
contidos e os nmeros de seus respectivos inodes. Um diretrio pode conter arquivos de
quaisquer tipos, inclusive diretrios. As entradas especiais . e .., que encontramos nos
diretrios de um sistema Linux, referem-se ao prprio diretrio e ao seu diretrio pai,
Administrao de Sistemas Linux
14

respectivamente. Diretrios podem ser criados com o comando mkdir e removidos com o
comando rmdir, se estiverem vazios, ou rm -r, independente de estarem vazios ou no.
Diretrio:
Podem conter qualquer tipo de arquivo;
Criados com o comando mkdir;
Removidos com o comando rmdir (se no tiverem nenhum contedo) ou rm -r (caso
contrrio).

Arquivo de Dispositivo
Arquivos de dispositivos permitem aos usurios estabelecer comunicao com o hardware
do sistema e seus perifricos, sem se preocupar com os detalhes necessrios a esse tipo de
comunicao. Essa forma do Linux interagir com os dispositivos tambm facilita muito o
trabalho dos programadores. Assim, drivers de dispositivos representam uma interface de
comunicao padro que se parece com um arquivo normal. Quando o kernel recebe um
pedido referente a um arquivo de dispositivo, ele simplesmente passa o pedido para o driver
apropriado. Arquivos de dispositivo podem ser criados via comando mknod e removidos com
o comando rm. Existem dois tipos de arquivos de dispositivos que sero vistos a seguir.
Arquivo de dispositivo:
Mecanismo utilizado para operaes de entrada e sada;
Tipos de arquivos de dispositivo:
Caractere - As operaes de entrada e sada so realizadas byte a byte de modo
sequencial.
Bloco - As operaes de entrada e sada so realizadas em blocos de modo
aleatrio.
Encontram-se, geralmente, no diretrio /dev;
So criados com mknod e removidos com rm.

Dispositivos orientados a caractere


Os dispositivos orientados a caractere realizam suas transferncias de dados byte a byte e de
modo sequencial. As portas seriais so exemplos de dispositivos orientados a caractere.
Geralmente, esses dispositivos no utilizam buffers (espao em memria) em suas operaes
de entrada e sada, ou seja, os dados so lidos e escritos diretamente no dispositivo.

Dispositivos orientados a bloco


Os dispositivos orientados a bloco realizam suas transferncias de dados em blocos de
tamanho que pode variar entre 512 bytes e 32 Kbytes, sendo o acesso feito de modo aleatrio.
Os discos rgidos e as unidades de fita so exemplos de dispositivos orientados a bloco. As
operaes de entrada e sada destes dispositivos so feitas utilizando buffers intermedirios.
Administrao de Sistemas Linux
15

Socket
O socket um tipo de arquivo utilizado para a comunicao bidirecional entre dois
processos. Existem basicamente dois tipos de sockets: o primeiro deles, conhecido como Unix
domain socket ou IPC socket (Inter Process Communication socket) utilizado para a
comunicao entre processos executados em um mesmo sistema operacional. O outro tipo
o socket de rede, que utilizado para a comunicao entre processos executados em
computadores diferentes, interligados por uma rede. Entre os sockets de rede podemos
destacar o datagram socket, que um tipo de socket no orientado conexo, utilizado pelo
protocolo UDP; o stream socket que um tipo de socket orientado conexo, utilizado pelo
protocolo TCP e o raw socket, utilizado por protocolos de gerenciamento e monitoramento de
redes como o protocolo ICMP. Um socket criado pela chamada de sistema socket e pode ser
removido com o comando rm ou por meio da chamada de sistema close, quando o socket no
estiver mais sendo utilizado. A maioria das aplicaes em um sistema Linux faz uso de
sockets.
Socket:
Utilizado para comunicao bidirecional entre processos;
Unix Domain Sockets;
Sockets de rede;
So criados com a chamada de sistema socket e removidos atravs do comando rm ou
da chamada de sistema close.

Named pipe
O named pipe, tambm conhecido como FIFO, permite a comunicao bidirecional entre dois
processos executados no mesmo sistema operacional. Um named pipe referenciado pelos
processos que conecta atravs de seu nome e faz parte do sistema de arquivos. Ele criado
atravs dos comandos mkfifo ou mknod e removido com o comando rm ou por meio da
chamada de sistema unlink. Um named pipe permite a comunicao entre processos que no
possuam relao entre si. Existe tambm o pipe convencional, representado pelo caractere
|, que utilizado em comunicaes unidirecionais, conectando a sada de um processo
entrada de outro. A diferena entre eles que no pipe convencional, os processos conectados
devem possuir uma relao pai para filho ou serem irmos. Ao contrrio do named pipe,
que precisa ser explicitamente encerrado aps seu uso, o pipe convencional encerrado
automaticamente aps a execuo dos processos que ele conecta.
Named Pipe:
Permite a comunicao bidirecional entre dois processos rodando numa mesma
mquina;
Faz parte do sistema de arquivos;
criado com o comando mknod ou mkfifo;
removido com o comando rm;
Interligam processos que no possuem relao entre si.

Administrao de Sistemas Linux


16

Link
O Linux suporta dois tipos de links: hard link e symbolic link. Para explicar as diferenas
entre eles, vamos tomar como exemplo uma situao em que dois usurios (Maria e Joo)
compartilham um arquivo denominado relatorio.txt, cujo tamanho 200 bytes (figura 1.5).
Link:
Hard link:
Dois arquivos apontando para o mesmo inode.
Symbolic link:
Ponteiro para um arquivo existente;
associado a outro inode number.

Figura 1.5 - Hard link para arquivo


Exemplos:
# ls la ~maria/relatorio.txt
-rw-r--r-- 1 maria maria 200 Feb 01 18:00 relatorio.txt
# ln ~joao/relatorio.txt ~maria/relatorio.txt
# ls la ~maria/relatorio.txt ~joao/relatorio.txt
-rw-r--r-- 2 maria maria 200 Feb 01 18:00 relatorio.txt
-rw-r--r-- 2 joao joao 200 Feb 05 11:30 relatorio.txt

Hard link
Como mencionado anteriormente, as informaes sobre um arquivo so armazenadas em
seu inode. No hard link, existe uma nica cpia do arquivo armazenada nos blocos de dados.
Essa cpia referenciada por um nico inode, que, por sua vez, referenciado pelos arquivos
nos diretrios dos usurios. Dessa forma, sempre que um dos usurios modificar o contedo
do seu arquivo, as mudanas sero automaticamente percebidas pelos outros, uma vez que
seus arquivos apontam para a mesma rea em disco. No exemplo descrito, o espao de 200
bytes do arquivo relatorio.txt alocado uma nica vez nos blocos do disco, mas o inode que
Administrao de Sistemas Linux
17

aponta para esses blocos referenciado pelos arquivos nos diretrios dos usurios Maria e
Joo, como mostra a figura 1.6. Um hard link criado com o comando ln e s pode apontar
para arquivos regulares ou symbolic links. A existncia deste tipo de link no to simples de
ser verificada. Ele pode ser identificado pelo nmero que aparece aps as permisses
associadas a um arquivo, como pode ser visto no exemplo abaixo. O nmero 2 identifica que
alm do arquivo original, existe um hard link apontando para ele.

Figura 1.6 - Hard link


Hard link:
Associa dois ou mais nomes de arquivos ao mesmo inode;
Compartilha a mesma rea de dados;
No pode ser criado para diretrios;
Criado com o comando ln;
Removido com o comando rm.

Symbolic link
representado por um arquivo cujo contedo o nome do arquivo original para o qual o
symbolic link est apontando. Neste caso, existem dois arquivos com contedos diferentes,
cada um deles com seu inode associado. Quando um symbolic link acessado, o sistema
verifica atravs das informaes contidas em seu inode que ele do tipo symbolic link. Aps
isso, recupera a identificao do arquivo original e realiza as operaes solicitadas
diretamente sobre ele.
Symbolic link:
Arquivos que so ponteiros para outros arquivos;
Fornecem referncia por nome;
Ocupam um espao mnimo;
Podem apontar para qualquer rea do disco, inclusive em outras parties;
Criados com o comando ln -s;
Removidos com o comando rm.
Um symbolic link criado com o comando ln, utilizando a opo -s e pode apontar para
qualquer tipo de arquivo. Um symbolic link identificado pela letra l, que o primeiro
Administrao de Sistemas Linux
18

caractere em uma lista de arquivos gerada pelo comando ls, utilizando a opo -l. possvel
tambm ver o nome do arquivo apontado no final da linha, como mostra o exemplo abaixo.
Exemplos:
# ls la ~maria/relatorio.txt
-rw-r--r-- 1 maria maria 200 Feb 01 18:00 relatorio.txt
# ln s ~maria/relatorio.txt ~joao/relatorio.txt
# ls la ~maria/relatorio.txt ~joao/relatorio.txt
-rw-r--r-- 1 maria maria 200 Feb 01 18:00 relatorio.txt
lrwxrwxrwx 1 joao joao 20 Feb 05 11:30 relatorio.txt -> ~maria/relatorio.txt
No exemplo acima, o espao de 200 bytes ocupado pelo arquivo relatorio.txt alocado uma
nica vez nos blocos do disco. Apenas o arquivo no diretrio da usuria Maria referencia essa
rea de dados. No diretrio do usurio Joo, existe outro arquivo, do tipo symbolic link, cujo
contedo o nome do arquivo no diretrio da usuria Maria, como mostra a figura 1.7.

Figura 1.7 - Symbolic link para arquivo


O arquivo de Joo est armazenado em outro local do disco sendo referenciado por outro
inode e seu tamanho menor do que o tamanho do arquivo origina, como pode ser visto na
figura 1.8, j que seu contedo somente o nome do arquivo original para o qual est
apontando.

Figura 1.8 - Symbolic link


Administrao de Sistemas Linux
19

Vantagens e desvantagens
Cada um dos tipos de link vistos tem suas vantagens e desvantagens. Utilizando hard links,
independentemente do nmero de links existentes, apenas um inode ser utilizado. Porm,
como esse inode guarda informaes sobre o proprietrio do arquivo, em determinadas
situaes isto pode gerar problemas. Vamos retornar ao exemplo anterior para visualizar
essa situao. Supondo que Maria seja a proprietria do arquivo relatorio.txt e um hard link
seja criado para que Joo tenha acesso ao arquivo. O inode mantm um atributo (nmero de
links) indicando que dois arquivos apontam para esse mesmo inode. Quando Maria remove o
arquivo de seu diretrio, o sistema apenas decrementa esse atributo do inode do arquivo.
Assim, Maria no ter mais acesso ao arquivo, mas Joo ainda poder utiliz-lo. Entretanto,
uma vez que Maria a proprietria do arquivo, esse contabilizado no sistema como recurso
alocado para Maria, at que Joo decida remov-lo, se tiver permisso. Com o symbolic link
isso no acontece, pois apenas o proprietrio do arquivo pode remov-lo. No exemplo, Maria
seria a proprietria do arquivo e Joo teria apenas um symbolic link para ele. Se Joo
apagasse o symbolic link, o arquivo original no seria apagado. Porm, se Maria apagasse o
arquivo, Joo no poderia mais utiliz-lo, j que o symbolic link apenas um ponteiro para o
arquivo original. Neste caso o symbolic link ficaria sem referncia. Note que o symbolic link
muito parecido com os atalhos do MS Windows. A utilizao de symbolic links obrigatria
quando se quer criar um link para um diretrio, ou entre arquivos localizados em diferentes
parties. Em ambos os casos, no possvel definir um hard link.

Comando ls
Para trabalhar com arquivos fundamental que o usurio conhea suas caractersticas. Essas
informaes podem ser visualizadas com o comando ls. Com ele, o usurio pode visualizar
vrias informaes sobre arquivos, desde o nome dos arquivos existentes em um diretrio
at o nmero de hard links que apontam para esses arquivos. As informaes mostradas pelo
comando ls dependem das opes passadas na linha de comando. Por exemplo, quando
informada a opo -l, o comando ls lista as informaes guardadas no inode do arquivo,
como: permisses, nmero de hard links que apontam para o arquivo, proprietrio do
arquivo, grupo do arquivo, tamanho e data de criao e modificao. Para ver todas as
funcionalidades do comando ls, consulte sua pgina de manual com o comando man ls.

Administrao de Sistemas Linux


20

Comando

Funo

ls

Listar informaes sobre arquivos

Tipo do arquivo

Smbolo

Arquivo regular

Diretrio

Arquivo de dispositivo orientado a


caractere

Arquivo de dispositivo orientado a bloco

Socket

Named pipe

Symbolic link

Tabela 1.1 - Comando ls (Tipos de arquivos)

Permisses de arquivos
No Linux, todo arquivo possui um conjunto de permisses de acesso associadas. Essas
permisses so definidas por nove bits que determinam quem pode ler, escrever e executar
um arquivo. Alm dos bits de permisso, existem trs bits especiais que afetam o modo de
execuo dos arquivos e o comportamento dos diretrios. Por fim, o conjunto formado por
esses doze bits armazenado, juntamente com outros quatro bits, que indicam o tipo do
arquivo, numa palavra de 16 bits. Os quatro bits que indicam o tipo do arquivo so definidos
no momento da sua criao e no podem ser alterados. Como j vimos, o comando ls pode ser
utilizado para verificar o valor desses bits. O campo que, no exemplo abaixo, apresenta o
valor -rwxr-xr-x representa as permisses associadas ao arquivo, bem como seu tipo. A
seguir veremos em detalhes os bits de permisso.
#ls -l /bin/sh
-rwxr-xr-x 1 root root 85924 01 Dec 2002 /bin/sh
Permisses de arquivos:
Nove bits controlam quem pode ler, escrever ou executar um arquivo;
Trs outros afetam a operao de arquivos executveis e o comportamento de
diretrios;
Quatro bits guardam a informao do tipo do arquivo (no podem ser modificados).

Administrao de Sistemas Linux


21

Bits de permisso
So nove os bits de permisso, utilizados para determinar as operaes que podem ser
executadas em um arquivo, e quem pode execut-las. O Linux define conjuntos de permisses
para o dono do arquivo, para o grupo ao qual o arquivo pertence e para os outros usurios do
sistema. Cada conjunto possui trs bits: um bit de leitura (r), um bit de escrita (w) e um bit de
execuo (x), chamado bit de pesquisa, quando se trata de um diretrio. Assim, os trs
primeiros bits controlam o acesso do dono, os trs do meio controlam o acesso do grupo e os
ltimos trs controlam o acesso para os demais usurios do sistema (outros). Em cada trio,
o bit mais alto o que controla a leitura, o bit do meio controla a escrita e o ltimo bit
controla a execuo do arquivo. Cada usurio de um sistema Linux enquadra-se em, pelo
menos, uma das trs categorias descritas. Caso ele no seja o dono do arquivo, nem pertena
ao mesmo grupo ao qual o arquivo pertence, as permisses dadas aos outros sero levadas
em considerao. O bit de leitura permite a abertura e a leitura de um arquivo normal. O bit
de escrita, por sua vez, permite que o contedo do arquivo seja modificado. A possibilidade
de renomear ou remover um arquivo, contudo, controlada pelas permisses do diretrio ao
qual ele pertence. O bit de execuo, como o nome j sugere, permite que o arquivo seja
executado, por isso, este tipo de permisso s faz sentido em arquivos executveis. Para um
diretrio, o bit de execuo tem um significado um tanto diferente. Ele permite a entrada em
um diretrio, mas no necessariamente que o seu contedo seja listado. A listagem do
contedo de um diretrio s pode ser realizada se os bits de leitura e execuo forem
definidos. J a combinao dos bits de escrita e execuo permite que arquivos sejam criados,
removidos e renomeados dentro de um diretrio. Quando um bit de permisso no
definido, o caractere - inserido em seu lugar.

Figura 1.9 - Bits de permisso

Bits especiais
Dissemos anteriormente que, alm dos nove bits de permisso, outros trs afetam a execuo
de programas executveis e diretrios, e que juntos eles formam os 12 bits de modo. Esses
outros trs bits, setuid (SUID), setgid (SGID) e sticky bit so descritos a seguir.
Administrao de Sistemas Linux
22

Sticky bit:
Evita mecanismo de swap-on/swap-off em arquivos executveis (em desuso);
Controla a escrita em diretrios de uso geral;
Representado pela letra t.
Setgid:
Utilizados em arquivos executveis e diretrios;
Representado pela letra s.
Setuid:
Utilizados em arquivos executveis;
Representado pela letra s.

Sticky Bit
O estabelecimento desse bit remonta aos tempos em que memria era um recurso caro e
escasso em sistemas Linux, e acessos a unidades de disco eram lentas. Sistemas com pouca
memria necessitavam de que alguns programas se mantivessem na memria
continuamente. O sticky bit era importante nesse contexto. Ele garantia que um determinado
processo permaneceria na memria principal, no tendo sua performance prejudicada por
conta do esquema de swapping. Hoje em dia, com o relativo baixo custo de memria e as
unidades de disco cada vez mais velozes, o estabelecimento desse bit em arquivos
executveis caiu em desuso.
Atualmente, o sticky bit definido somente em diretrios e utilizado para impedir que um
usurio apague ou renomeie um arquivo, a menos que seja dono do diretrio ou do arquivo.
Deste modo, ter permisso de escrita e pesquisa em um diretrio com sticky bit definido no
suficiente para remover ou renomear arquivos e diretrios de outros usurios. dessa
forma que o Linux evita que, em diretrios de uso pblico, como o /tmp, os usurios
removam ou renomeiem arquivos de outros usurios. Esta regra s no vlida para o
usurio root. O sticky bit quando definido substitui a letra x da permisso de execuo dos
outros pela letra t caso a permisso de execuo tenha sido definida. Caso contrrio, a
letra T inserida no lugar do caractere -.

Administrao de Sistemas Linux


23

Setgid (SGID)
O bit SGID pode ser definido em arquivos executveis e diretrios. Ele permite que um
arquivo seja executado com as permisses do grupo dono do arquivo, independente do
usurio que o tenha executado. Embora qualquer tipo de arquivo possa ter esse bit definido,
muitas verses do Linux s o leva em conta quando so definidos em programas executveis
ou em diretrios. Quando o bit SGID definido em um diretrio, todos os arquivos criados
neste diretrio pertencero ao grupo que dono do diretrio, independente do grupo
primrio do usurio que os tenha criado. O SGID quando definido substitui a letra x da
permisso de execuo do grupo pela letra s caso a permisso de execuo tenha sido
definida. Caso contrrio, a letra S inserida no lugar do caractere -.

Setuid (SUID)
O bit SUID s possui efeito em arquivos executveis. Ele permite que um arquivo seja
executado como se estivesse sendo executado pelo dono do arquivo, independente do
usurio que o tenha executado. O arquivo executvel passwd, utilizado para troca de senha
um exemplo de arquivo que tem o bit SUID definido. Isto necessrio para que usurios
comuns possam alterar suas senhas, j que somente o usurio root tem permisso de escrita
no arquivo /etc/passwd que armazena as senhas dos usurios do sistema. Embora qualquer
tipo de arquivo possa ter esse bit definido, muitas verses do Linux s o leva em conta
quando so definidos em programas executveis. O SUID quando definido substitui a letra x
da permisso de execuo do dono do arquivo pela letra s caso a permisso de execuo
tenha sido definida. Caso contrrio, a letra S inserida no lugar do caractere -.

Mudando permisses
Os doze bits de permisso, referenciados anteriormente, podem ser modificados pelo dono
do arquivo ou pelo administrador do sistema, atravs do comando chmod. Os primeiros
sistemas Unix exigiam que os usurios entendessem de notao binria ou octal para utilizar
esse comando. As verses mais recentes do sistema, entretanto, aceitam tanto a notao
octal quanto uma sintaxe mais mnemnica. Entretanto, preferimos trabalhar com a notao
octal, por ser mais conveniente para administradores de sistema. O comando chmod recebe
dois blocos de argumentos. O primeiro deles um nmero octal, que representa as
permisses a serem atribudas e o segundo bloco composto de um ou mais nomes de
arquivos, separados por espao em branco, cujas permisses devem ser alteradas. Na forma
normal, o primeiro dgito octal refere-se s permisses do dono do arquivo; o segundo, s do
grupo dono do arquivo; e o terceiro, s dos outros usurios. Para estabelecer as permisses
associadas aos bits setuid, setgid e sticky bit, preciso utilizar quatro dgitos octais no lugar
de trs. Nesse caso, os trs bits especiais so definidos pelo primeiro dgito. A tabela 1.2
ilustra as oito possveis combinaes para cada um dos trs bits, em que r, w e x
correspondem s permisses de leitura (Read), de escrita (Write) e de execuo (eXecute)
respectivamente.

Administrao de Sistemas Linux


24

Comando

Funo

chmod

Modificar a permisso de arquivos e diretrios

Octal

Binria

Permisses

000

---

001

--x

010

-w-

011

-wx

100

r--

101

r-x

110

rw-

111

rwx

Tabela 1.2 - Mudando permisses de arquivos


A tabela 1.3 ilustra as oito possveis combinaes utilizadas para definir ou no os bits
especiais SUID, SGID e sticky bit.
Comando

Funo

chmod

Modificar a permisso de arquivos e diretrios

Octal

Binria

Descrio

000

SUID, SGID e sticky bit no


definidos

001

Sticky bit definido

010

SGID definido

011

Sticky bit e SGID definidos

100

SUID definido

101

Sticky bit e SUID definidos

110

SGID e SUID definidos

111

Sticky bit, SGID e SUID


definidos

Tabela 1.3 - Mudando permisses especiais


Administrao de Sistemas Linux
25

A seguir podemos ver um exemplo de execuo do comando chmod.


# chmod 0751 /home/aluno1/arquivo.txt
O comando acima atribui todas as permisses para o dono, ou seja, ele pode ler, escrever e
executar o arquivo; atribui ao grupo permisso para apenas ler e executar o arquivo e atribui
aos outros somente permisso para execut-lo. O primeiro nmero octal passado como
parmetro para o comando chmod referente s permisses especiais o segundo, terceiro e
quarto so relativos s permisses aplicadas ao dono do arquivo, ao grupo e aos outros,
respectivamente. importante ressaltar que o primeiro nmero octal opcional e se no for
definido, ser considerado como tendo o valor 0.

Mscara de usurio
O comando umask (user mask) pode ser utilizado para estabelecer as permisses padres para
os arquivos criados no sistema. Para esse comando, passado um parmetro na forma de um
valor octal de trs dgitos, os quais representam as permisses que devem ser atribudas aos
arquivos no momento da sua criao. Os dgitos estabelecem as permisses mostradas na
tabela 1.4. A relao entre os valores passados para o comando umask e as permisses
resultantes diferem bastante da relao aplicada para o comando chmod. O valor padro da
umask para a maioria das distribuies Linux 022. Para verificarmos o valor da mscara atual
devemos executar o comando umask sem parmetros. A tabela 1.4 mostra que o valor da
umask resulta em diferentes permisses para arquivos binrios, arquivos texto e diretrios.
Comando

Funo

umask

Estabelecer permisses padres para arquivos criados.


Permisses

Octal

Binria

Arquivo
Binrio

Texto

000

r-x

rw-

rwx

001

r--

rw-

rw-

010

r-x

r--

r-x

011

r--

r--

r--

100

--x

-w-

-wx

101

---

-w-

-w-

110

--x

---

--x

111

---

---

---

Tabela 1.4 - Comando umask

Administrao de Sistemas Linux


26

Diretrio

2
Usurios e grupos
Sumrio
Conhecer os parmetros associados a grupos.
Conhecer os parmetros associados conta de um usurio.
Saber quais so os comandos para modificar os parmetros de uma conta.
Entender o mecanismo de shadow passwords.
Conscientizar-se da importncia das senhas para a segurana do sistema.
Saber como manipular grupos: criar, alterar e excluir.
Saber como manipular contas de usurios: criar, alterar, desabilitar e excluir.
Saber como monitorar as atividades dos usurios logados no sistema.
Usurios e grupos:
Introduo;
Grupos;
Usurios;
Senhas;
Criando contas de usurios;
Administrando grupos;
Administrando contas de usurios.

Introduo
Quando o sistema operacional Unix foi criado, era comum a criao de contas de usurios e
estes utilizavam o sistema conectados diretamente atravs de sua console ou atravs de
acesso remoto, trabalhando em aplicativos que eram executados no prprio servidor. Nessa
poca, a maioria dos usurios eram pesquisadores ou estudantes de computao e reas
relacionadas. Com a adoo em massa dos computadores pessoais, a partir da dcada de
1980, este modelo comeou a cair em desuso.
Com a popularizao da Internet, os sistemas comearam e se tornar alvos de atacantes que
exploravam vulnerabilidades em softwares e realizavam tentativas de acesso utilizando
contas de terceiros. Com isso, os administradores passaram a adotar prticas mais seguras,
restringindo ao mximo a criao de contas de usurios. Com o passar do tempo, a
Administrao de Sistemas Linux
27

ocorrncia de incidentes de segurana se tornou cada vez mais constante e outra prtica que
passou a ser adotada, foi a criao de contas sem shell, no permitindo que os usurios
fizessem login no sistema. Assim, os usurios acessam somente os servios que so
executados nos servidores, como e-mail e compartilhamento de arquivos, por exemplo, j
que no tm necessidade nenhuma de fazerem login no servidor.
A criao de usurios e grupos em sistemas Unix-like importante para definir que recursos
podem ser acessados por quais usurios e/ou grupos e permite ao sistema operacional,
gerenciar a execuo dos processos de cada usurio de forma adequada. Atualmente cada
vez mais comum o uso de bases de usurios centralizadas e gerenciadas por programas
como o LDAP que acabam com a necessidade de se criar contas de usurios em cada um dos
diversos sistemas de uma instituio. No entanto, o modelo de criao de usurios e grupos
tradicional dos sistemas Unix-like ainda bastante utilizado e ser o objeto de estudo desta
sesso de aprendizagem.

Grupos
A criao de grupos de usurios geralmente feita para controlar o acesso a arquivos ou
servios. Cada grupo no sistema possui um nome e um identificador numrico nico,
denominado GID (Group ID). As informaes sobre os grupos do sistema esto contidas nos
arquivos /etc/group e /etc/gshadow. Cada linha desses arquivos possui informaes
relativas a um determinado grupo. Suponhamos que o setor financeiro de uma empresa, que
controla o salrio dos funcionrios, deseja disponibilizar as estatsticas consolidadas desses
salrios no sistema de informaes da empresa, para que seus colaboradores possam utilizlas para clculos. Porm, essas informaes no podem ser vistas por todos os funcionrios
da empresa. Assim, a criao do grupo financeiro e a disponibilizao desses arquivos
somente para os usurios desse grupo resolveria o problema. A linha referente ao grupo
financeiro no arquivo /etc/group poderia ser semelhante a do exemplo abaixo:
financeiro::1002:funcionario3,funcionario4,funcionario5
Os campos presentes nas linhas do arquivo /etc/group so separados pelo caractere : e so
os seguintes: nome do grupo; senha do grupo; GID e lista de usurios pertencentes ao grupo,
separados por vrgulas. importante ressaltar que no uma prtica comum atribuir senhas
aos grupos, ficando este campo em branco. Para incluir novos usurios em um grupo,
preciso editar os arquivos /etc/group e /etc/gshadow e acrescentar ao final da linha referente
ao grupo o nome desses usurios. Um usurio pertence obrigatoriamente a um grupo
primrio e pode fazer parte de vrios grupos secundrios, tendo assim diversos tipos de
permisses. Nesta sesso sero vistos comandos que podem automatizar tarefas de
manipulao de grupos, eliminando a necessidade de edio dos arquivos /etc/group e
/etc/gshadow.
Arquivo /etc/group:
grupo:senha:GID:lista_de_usurios
grupo: nome do grupo;
senha: senha do grupo (em desuso);
GID: nmero de identificao do grupo;
Administrao de Sistemas Linux
28

lista_de_usurios: relao dos usurios que pertencem ao grupo, separados por


vrgula;
Exemplo:

logistica::1001:funcionario1,funcionario2

Alguns cuidados adicionais devem ser tomados para evitar problemas na utilizao de
grupos. Por exemplo, suponhamos que foi criado o diretrio /home/financeiro para que os
usurios do grupo financeiro possam compartilhar arquivos. Nesse caso, as permisses do
grupo proprietrio nesse diretrio e em seus arquivos seriam rwx e rw-, respectivamente, o
que possibilita acesso irrestrito aos usurios do grupo financeiro. Nesse contexto, se o
usurio funcionario3, cujo grupo primrio funcionario3, criar um arquivo nesse diretrio,
esse arquivo ter como grupo proprietrio o seu grupo primrio. Assim, apenas os usurios
pertencentes ao grupo funcionario3 poderiam ter acesso ao arquivo, e no os usurios do
grupo financeiro, como era pretendido. H duas alternativas para resolver esse problema. A
primeira pouco prtica e consiste em utilizar o comando chgrp para mudar o grupo ao qual
o arquivo pertence, lembrando de utilizar esse comando sempre que um novo arquivo for
criado. A outra soluo utilizar o bit especial SGID, visto na sesso de aprendizagem 1, para
que todos os arquivos criados no diretrio /home/financeiro pertenam automaticamente ao
grupo proprietrio deste diretrio.
Um usurio pode fazer parte de vrios grupos:
Grupo primrio - GID do usurio (presente no arquivo /etc/passwd);
Grupos secundrios - Relacionados nos arquivos /etc/group e /etc/gshadow.
Comando chgrp:
Modifica o grupo ao qual um arquivo ou diretrio pertence.
Bit SGID:
Todos os arquivos criados em um diretrio com o bit SGID definido pertencero
automaticamente ao grupo proprietrio desse diretrio.

Exemplos:
# ls -la tabelas.doc
-rw-r--r-- 1 aluno1 aluno1 23 Abr 9 15:23 tabelas.doc
# chgrp -c users tabelas.doc
changed group of tabelas.doc to users
# ls -la tabelas.doc
-rw-r--r 1 aluno users 23 Abr 9 15:23 tabelas.doc
# chmod 664 tabelas.doc
# ls -la tabelas.doc
-rw-rw-r-- 1 aluno users 23 Abr 9 15:23 tabelas.doc

Administrao de Sistemas Linux


29

Arquivo /etc/gshadow
O arquivo /etc/gshadow, criado pelo comando pwconv, que habilita o esquema de shadow
passwords no Linux, que ser apresentado mais frente. Cada linha desse arquivo possui
informaes relativas a um determinado grupo. O exemplo a seguir mostra uma linha tpica
do arquivo /etc/gshadow.
financeiro:!!:funcionario3:funcionario3,funcionario4,funcionario5
Os campos presentes nas linhas do arquivo /etc/gshadow so separados pelo caractere : e
so os seguintes: nome do grupo; senha do grupo; administradores_do_grupo (relao de
usurios que podem inserir ou remover usurios neste grupo utilizando o comando
gpasswd) e lista_de_usurios (relao de usurios que pertencem ao grupo).
Arquivo /etc/gshadow:
grupo:senha:administradores_do_grupo:lista_de_usurios
grupo: nome do grupo;
senha: senha do grupo (em desuso);
administradores_do_grupo: relao dos usurios que podem inserir ou remover
usurios no grupo;
lista_de_usurios: relao dos usurios que pertencem ao grupo, separados por
vrgula.
Exemplo:

logistica::510:marcio,marcelo,joel

Usurios
No Linux, apenas os usurios cadastrados podem acessar o sistema. Eles so identificados
por um nome de usurio e uma senha, possuem um diretrio de trabalho (home directory) e
um interpretador de comandos (shell) associado. Internamente, o sistema reconhece um
usurio atravs de um nmero inteiro que o identifica de forma nica. Esse nmero o User
ID (UID). Todo usurio pertence a pelo menos um grupo, denominado grupo primrio, que
representado pelo seu GID. As informaes sobre os usurios cadastrados esto
armazenadas nos arquivos /etc/passwd e /etc/shadow. Cada linha desses arquivos possui
informaes relativas a um nico usurio. O exemplo a seguir mostra uma linha tpica do
arquivo /etc/passwd:
aluno1:Owei3945ai/qio:503:200:Aluno 1:/home/aluno1:/bin/bash
Os campos presentes nas linhas do arquivo /etc/passwd so separados pelo caractere : e
so os seguintes: nome de usurio; senha criptografada; UID (User ID); GID (Group ID);
GECOS (campo utilizado para armazenar informaes sobre o usurio, como nome completo
e telefone de contato); diretrio de trabalho e interpretador de comandos. O diretrio de
trabalho ou homedir o espao em disco reservado ao usurio na hora de sua incluso. Por
questes de segurana, alguns administradores definem contas de usurios, mas no
atribuem a elas um diretrio de trabalho ou um shell vlido. Desta forma, estes usurios no
Administrao de Sistemas Linux
30

conseguem se logar no sistema e apenas utilizam algum servio como o correio eletrnico ou
o compartilhamento de arquivos e impressoras.
Os usurios possuem diferentes permisses de acesso aos recursos do sistema. O usurio
root conhecido como superusurio e tem permisso para acessar qualquer recurso do
sistema e executar qualquer tipo de tarefa. Esse usurio, que possui UID 0, utilizado pelo
administrador do sistema, que deve utilizar esta conta com bastante cautela, j que pode
cometer algum erro grave e danificar todo o sistema. A senha do usurio root geralmente
definida durante a instalao do Linux. Durante a instalao do sistema, alm do usurio root,
so criados diversos usurios de sistema, com propsitos especficos. Os usurios bin,
daemon e sys so exemplos de usurios de sistema. Alguns deles no podem fazer login e so
utilizados apenas para controlar os recursos acessados por processos. Cada processo em
execuo no sistema possui um usurio proprietrio, que determina os recursos que podem
ser acessados pelo processo. Por exemplo, o usurio nobody pode acessar pouqussimos
recursos do sistema e bastante utilizado para executar processos que disponibilizam seus
servios atravs da rede. Em caso de ataques ao sistema explorando falhas de um processo
em execuo pelo usurio nobody, o invasor ganhar acesso ao sistema com os privilgios
desse usurio e, a princpio, pouco poder fazer. Caso esse processo atacado estivesse sendo
executado pelo usurio root, o invasor teria acesso imediato a qualquer recurso do sistema.
/etc/passwd:
username:password:UID:GID:GECOS:homedir:shell
username: nome do usurio;
password: senha criptografada;
UID e GID: user e group identification;
GECOS: dados do usurio (nome, telefone comercial, etc.);
homedir: diretrio de trabalho (home directory);
shell: interpretador de comandos.

Problemas de segurana
Para fazer login, o usurio digita sua senha que criptografada e comparada com a senha
armazenada no sistema. Caso ambas sejam iguais, seu acesso autorizado. Esse mtodo de
controle de acesso parece seguro, mas tem seus problemas. Por exemplo, para a
memorizao ficar mais fcil, os usurios escolhem senhas baseadas em seus nomes, datas
de nascimento, nomes de filhos, animais de estimao, etc. Essas senhas so fceis de serem
lembradas, mas tambm so muito fceis de serem descobertas por pessoas mal
intencionadas, constituindo um dos pontos mais vulnerveis da segurana dos sistemas. Para
tentar minimizar esse problema, a maioria das distribuies Linux requer que as senhas
possuam letras maisculas e minsculas, alm de um dgito ou caractere especial.
Problemas de segurana:
Limitaes de /etc/passwd:
Qualquer usurio tem acesso de leitura ao arquivo;
Administrao de Sistemas Linux
31

Contm as senhas criptografadas (vulnervel ao uso de crackers);


Utiliza o caractere x no lugar da senha quando utilizado o esquema de shadow
passwords.
/etc/shadow:
Somente o administrador pode ler este arquivo.

Shadow passwords
H ainda outro problema que compromete a segurana dos sistemas Linux. Qualquer usurio
tem acesso de leitura ao arquivo /etc/passwd, que contm as senhas criptografadas. Assim,
possvel utilizar programas chamados crackers, que geram senhas aleatoriamente ou
utilizam palavras de dicionrios e as comparam com as senhas armazenadas, possivelmente
quebrando algumas delas. Para resolver esse problema, foi implementado o conceito de
shadow passwords, no qual as senhas criptografadas so armazenadas no arquivo
/etc/shadow. A grande vantagem deste mtodo que o arquivo /etc/shadow s pode ser lido
pelo administrador, ficando inacessvel para um usurio comum. Quando se utiliza shadow
passwords, o arquivo /etc/passwd possui apenas o caractere x no campo que armazena as
senhas. No entanto, havia um srio problema relacionado ao uso de shadow passwords:
alguns programas utilizados no Linux assumiam que as senhas estavam armazenadas no
arquivo /etc/passwd, gerando algumas complicaes. Limitaes como essas, no entanto, so
cada vez mais raras, e o uso de shadow passwords utilizado por padro no Linux.
O arquivo /etc/shadow alm de armazenar os nomes de usurio e suas senhas criptografadas,
tambm possui informaes que definem propriedades sobre as senhas e as contas dos usurios.
Cada linha desse arquivo possui informaes relativas a um nico usurio. O exemplo a
seguir mostra uma linha tpica do arquivo /etc/shadow:
aluno1:Owei3945ai/qio:15360:0:99999:7:5::
Os campos presentes nas linhas do arquivo /etc/shadow so separados pelo caractere : e
so os seguintes: nome de usurio; senha criptografada; last_changed, que representa o
nmero de dias desde o dia 1/1/1970 que a senha foi trocada pela ltima vez; minimum, que
representa o nmero de dias que o usurio deve aguardar para poder alterar sua senha;
maximum, que representa o nmero de dias que a senha ser vlida (aps isso o usurio
obrigado a alter-la); warn, que representa o nmero de dias antes de a senha expirar em
que o usurio ser avisado de que deve alter-la; inactive, que representa o nmero de dias
aps a senha ter sido expirada em que a conta ser desabilitada e expire, que representa o
nmero de dias desde o dia 1/1/1970 em que a conta ser desabilitada.
O arquivo /etc/shadow, gerado a partir do arquivo /etc/passwd e de informaes contidas
no arquivo /etc/login.defs. Para habilitar o esquema de shadow passwords e gerar o arquivo
/etc/shadow, basta executar o comando pwconv. Este comando cria os arquivos /etc/shadow
e /etc/gshadow. Para desabilitar o esquema de shadow passwords, basta executar o comando
pwunconv. Este comando remove os arquivos /etc/shadow e /etc/gshadow e armazena
novamente as senhas criptografadas dos usurios no arquivo /etc/passwd.
Shadow passwords:
Administrao de Sistemas Linux
32

username:password:last_changed:minimum:maximum:warn:inactive:expire
username: nome do usurio;
password: senha criptografada;
last_changed: nmero de dias desde o dia 1/1/1970 que a senha foi trocada pela
ltima vez;
minimum: nmero de dias que o usurio deve aguardar para poder alterar sua
senha;
maximum: nmero de dias que a senha ser vlida;
warn: nmero de dias antes de a senha expirar em que o usurio ser avisado de
que deve alter-la;
inactive: nmero de dias aps a senha ter sido expirada em que a conta ser
desabilitada;
expire: nmero de dias desde o dia 1/1/1970 em que a conta ser desabilitada.

Tipos de contas de usurios


Em um sistema Linux, existem basicamente trs tipos de contas de usurios: a conta root, que
utilizada pelo administrador e possui acesso irrestrito a todos os recursos do sistema; as contas
de sistema, que so utilizadas por servios para gerenciar seus processos e as contas de usurio.
A tabela 2.1 mostra os tipos de contas com seus respectivos nveis de permisso e exemplos de
usurios.
Tipos de usurios

Permisses

Usurios

Administrador

Total

root

Padro

Parcial

aluno

Sistema

Especfica

sys, bin, ftp

Tabela 2.1 - Tipos de contas de usurios

Senhas
Senhas simples so mais fceis de memorizar, porm tambm so muito mais fceis de
serem quebradas. Para ajudar a manter a segurana do sistema, o administrador deve
recomendar aos usurios que tomem alguns cuidados como:
Escolher senhas complexas.
Nunca escrever senhas em papel ou armazen-las em arquivos de computador.
Evitar digitar a senha na presena de pessoas.
Nunca fornecer a senha para outros, mesmo que sejam pessoas de confiana.
Administrao de Sistemas Linux
33

Modificar a senha com frequncia.


claro que escolher senhas complexas tambm torna a memorizao mais difcil. O mais
indicado escolher uma senha que lembre alguma coisa para o usurio, mas s para ele. Um
exemplo de senha difcil de ser quebrada aquela composta pelas letras iniciais das palavras
de uma frase do tipo: Meu nome Jos, nasci em 47. A senha, nesse caso, ser MneJne47.
Senhas:
Escolher senhas complexas;
Somente grav-las em sua memria;
Digit-las sem a presena de terceiros;
As senhas devem ser pessoais e intransferveis.

O risco das senhas provveis


Em 1978, Robert Morris e Ken Thompson compilaram uma lista de senhas provveis, como
primeiros nomes, ltimos nomes, datas de nascimento, endereos, etc, incluindo as
sequncias invertidas dos caracteres dessas mesmas informaes. Eles criptografaram esse
conjunto de senhas possveis e compararam com um arquivo de senhas /etc/passwd. O
resultado foi assustador: 86% de acertos. Atualmente, os algoritmos de criptografia so mais
complexos e difceis de serem quebrados. Porm, senhas fceis continuam contribuindo para
aumentar a falta de segurana dos sistemas.

Criando contas de usurios


O processo de criao de um novo usurio consiste na execuo dos seguintes passos:
1. Editar os arquivos /etc/group e /etc/gshadow para criar o grupo primrio do usurio e adicionar
o usurio aos grupos secundrios necessrios. Este passo s necessrio caso o grupo primrio
ainda no exista e se for necessrio incluir o usurio em outros grupos.
2. Editar os arquivos /etc/passwd e /etc/shadow e inserir uma nova linha com os parmetros
relativos conta do novo usurio.
3. Definir uma senha temporria para a conta, utilizando o comando passwd.
4. Criar o diretrio de trabalho (home) do usurio.
5. Copiar os arquivos de inicializao contidos no diretrio /etc/skell para o diretrio home do
usurio.
6. Configurar a quota de disco para o usurio. Este passo s necessrio se o sistema utilizar
quotas.
7. Testar se a conta foi criada corretamente.
Mais adiante, veremos que existem comandos no Linux, e mesmo ferramentas grficas como
o Webmin, que automatizam a administrao de usurios e grupos. Optamos, no entanto, por
descrever cada uma das etapas como forma de registrar os passos envolvidos no processo de
criao de uma conta no Linux. Assim, voc, como administrador, saber de que maneira agir
Administrao de Sistemas Linux
34

quando tiver que criar um novo usurio no sistema, independente da ferramenta disponvel.
Antes de criar uma conta, recomenda-se que o administrador obtenha do seu dono no
apenas as informaes necessrias criao dessa conta, mas outras que facilitaro o
contato com o usurio. Na sesso de aprendizagem 9, ao falarmos de procedimentos
administrativos, iremos sugerir um formulrio que deve ser adotado no atendimento a
usurios. Os passos descritos a seguir devem ser executados pelo administrador do sistema
utilizando a conta root.
Criando contas de usurios:
Criar entrada nos arquivos /etc/group e /etc/gshadow;
Criar entrada nos arquivos /etc/passwd e /etc/shadowI;
Definir senha inicial;
Criar diretrio de trabalho;
Copiar arquivos de inicializao;
Criar quota de uso de disco (opcional);
Testar nova conta.

Criar entrada nos arquivos /etc/group e /etc/gshadow


S ser necessrio executar este passo caso o grupo primrio do usurio ainda no existir ou
mesmo se for preciso incluir o usurio em algum grupo alm do seu grupo primrio.
Arquivo /etc/group:
Criar grupo primrio para o novo usurio;
Inserir o usurio em grupo(s) secundrio(s).
Arquivo /etc/gshadow:
Criar grupo primrio para o novo usurio;
Inserir o usurio em grupo(s) secundrio(s).

Criar entrada nos arquivos /etc/passwd e /etc/shadow


Conforme vimos no incio desta sesso, o arquivo /etc/passwd composto de uma srie de
campos que descrevem desde o nome do usurio at o interpretador de comandos utilizado
por ele. Em um ambiente composto por vrios servidores Linux, as contas de usurios so
frequentemente, gerenciadas por uma base global, como o NIS ou o LDAP, de forma que ao se
criar um usurio, ele passa a ser reconhecido em qualquer um dos servidores.
Trabalharemos, no entanto, com a criao de usurios em um nico servidor. Um sistema
Linux pode ter mais de um administrador e nesse caso possvel acontecer a situao em
que um deles esteja criando a conta de um usurio enquanto outro esteja removendo a conta
de um ex-usurio. Ao criar um novo usurio no sistema, o administrador deve preencher
cada um dos campos do arquivo /etc/passwd, tomando alguns cuidados especiais. O nome do
usurio, por exemplo, deve ser nico e pode conter at 32 caracteres na maioria das
distribuies Linux. Ele pode incluir letras minsculas, nmeros, e alguns caracteres
Administrao de Sistemas Linux
35

especiais como ., -, _ e $, este ltimo para manter compatibilidade com o samba, que
utiliza o caractere $ no final do nome das contas de computadores da rede. importante
ressaltar que o primeiro caractere deve ser por padro, uma letra minscula ou o caractere
_". Os caracteres permitidos para uso em nomes de usurios so definidos pela varivel
NAME_REGEX, mas as regras definidas por essa varivel s valem quando se utiliza o
comando useradd para criar as contas de usurio. O comando useradd pode ser utilizado com
a opo --force-badname para ignorar as regras definidas na varivel NAME_REGEX. Por fim,
importante definir uma poltica para a criao dos nomes dos usurios. Em servidores de email deve-se evitar o uso de apelidos, j que os nomes de usurios so utilizados nos e-mails,
que tm associado o nome de domnio da instituio. Um exemplo de poltica criar o nome
do usurio utilizando o seu nome e o ltimo sobrenome (ex: nome.sobrenome).
Ao editar o arquivo /etc/passwd, o administrador deve colocar o caractere * no campo
referente senha criptografada. Assim, ele evita o uso no autorizado dessa conta at que
tenha estabelecido uma senha para ela. Se o sistema utilizar o esquema de shadow passwords,
o administrador tambm deve editar o arquivo /etc/shadow para criar a entrada para a nova
conta. Na maioria das distribuies Linux, o campo correspondente identificao do
usurio, o UID, representado por um nmero de 16 bits, variando entre 0 e 65.535. Em
sistemas mais novos, o UID representado por um nmero de 32 bits, resultando em mais de
4 bilhes de UIDs possveis. Em um ambiente de rede utilizando NFS (Network File System),
os UIDs devem ser nicos em toda a rede, isto , um UID precisa se referir sempre ao mesmo
nome de usurio. Usurios de sistema geralmente possuem UID entre 1 e 100. Dessa forma,
recomendvel atribuir para os usurios criados, valores maiores que 100. Tambm
aconselhvel evitar reutilizar UIDs, mesmo de contas que j tenham sido removidas. O
administrador pode utilizar qualquer editor de texto para fazer essas alteraes, mas quando
disponvel, o comando vipw deve ser utilizado para editar os arquivos /etc/passwd e
/etc/shadow, pois previne uma possvel corrupo nos arquivos por conta de acessos
simultneos.
Arquivo /etc/passwd
nome:senha:UID:GID:GECOS:home_dir:shell
Uso do caractere x no campo da senha (shadow passwords).
Arquivo /etc/shadow:
nome:senha:last_changed:minimum:maximum:warn:inactive:expire
Definir senha temporria.
Assim como o UID, o GID tambm representado por um nmero de 16 ou 32 bits, que deve
ser atribudo de acordo com o grupo primrio ao qual o usurio pertence. O GID de nmero 0
reservado ao grupo chamado root ou wheel. Grupos de sistema geralmente possuem GIDs
entre 1 e 999. O campo GECOS, utilizado para identificar o usurio. Dessa forma, costumase colocar informaes como seu nome completo, nmero de telefone do trabalho, ramal, etc.
O diretrio de trabalho do usurio o local do sistema de arquivos para onde este
direcionado quando faz login no sistema e corresponde rea do sistema onde ele tem
permisso para armazenar seus arquivos. Os diretrios de trabalho dos usurios de um
sistema, de maneira geral, tm o mesmo nome do usurio e se localizam abaixo de um
mesmo diretrio, chamado /home. Existem alguns interpretadores de comandos disponveis
Administrao de Sistemas Linux
36

no sistema. Exemplos de shells utilizados so o /bin/sh, o /bin/tcsh e o /bin/bash. A maioria


das distribuies Linux permite que o usurio defina o interpretador de comandos com o
qual quer trabalhar.

Definir senha inicial


O comando utilizado para mudar a senha de um usurio o passwd. Quando o usurio root
deseja mudar a senha de algum usurio, deve passar o nome deste como parmetro para o
comando passwd. Nesse caso, o comando passwd pedir que seja informada a nova senha e
que esta seja repetida. O administrador deve criar uma senha de fcil memorizao pelo
usurio, de forma que ele no ceda tentao de anot-la. No entanto, bom incentivar a
troca por uma senha prpria, to logo tenha acesso ao sistema. Para no ficar dependendo de
o usurio trocar a senha, o administrador pode utilizar o comando chage para for-lo a
trocar sua senha antes deste realizar o primeiro login. Neste caso, o administrador pode
definir uma senha temporria mais complexa e no precisa inform-la ao usurio. Segue
abaixo a sintaxe utilizada pelo comando chage para forar a alterao de senha.
# chage -d 0 aluno1
Assim, quando o usurio aluno1 se logar pela primeira vez no sistema, ele ser forado a
trocar de senha. A troca de senha feita antes do processo de login. O comando chage
tambm pode ser utilizado para definir parmetros relativos s senhas dos usurios. Para
consultar maiores informaes a respeito deste comando, sua pgina de manual pode ser
visualizada atravs do comando man chage.
Definio da senha inicial:
Comando passwd
Exemplo:
# passwd aluno
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Criar diretrio de trabalho


Tenha em mente que qualquer diretrio que voc criar pertence, inicialmente, ao usurio
root. Assim, voc deve mudar o dono e o grupo desse diretrio por meio dos comandos
chown e chgrp. A sequncia de comandos a seguir deve criar, de forma apropriada, o
diretrio de trabalho do usurio gerente1 no sistema:
#
#
#
#

mkdir
chown
chgrp
chmod

/home/gerente1
gerente1 /home/gerente1
gerencia /home/gerente1
750 /home/gerente1

Administrao de Sistemas Linux


37

O grupo dono de um arquivo ou diretrio tambm pode ser definido por meio do comando
chown. Assim, na sequncia de comandos anterior, poderamos ter os dois passos
intermedirios resumidos numa nica linha:
# chown gerente1:gerencia /home/gerente1
Criao do diretrio de trabalho:
Exemplo:
# mkdir /home/gerente1
# chown marcos /home/gerente1
# chgrp gerencia /home/gerente1
# chmod 750 /home/gerente1

Copiar arquivos de inicializao


Os arquivos de inicializao so arquivos que so copiados para o diretrio de trabalho dos
usurios e utilizados para a configurao e definio de parmetros de comandos e
aplicativos. Exemplos desses comandos com os seus respectivos arquivos de inicializao so
os prprios interpretadores de comando (bash: .bash_profile), os editores de texto (vi: .exrc),
o comando mail (.mailrc), etc. Os nomes desses arquivos, em geral, comeam com um ponto e
finalizam com as letras rc (run command). Os arquivos que tem seu nome comeando por
um ponto, so classificados como arquivos ocultos e s so listados pelo comando ls se a
opo -a for passada como parmetro. Na maioria das distribuies Linux, os arquivos de
inicializao modelo ficam localizados no diretrio /etc/skel. O administrador tambm pode
criar arquivos de inicializao e armazen-los no diretrio /etc/skel, para que sejam
copiados para os diretrios dos usurios no momento de sua criao.
Copiar arquivos de inicializao:
Configurao de comandos e utilitrios;
Geralmente, comeam com . (ponto) e finalizam com rc;
Exemplo para o shell bash:
# cp /etc/skel/.bash* /home/aluno
# chmod 644 /home/aluno/.bash*
# chown aluno:aluno /home/aluno/.bash*

Criar cota de uso de disco


Se o sistema trabalha com quotas de disco, necessrio definir a quota de cada nova conta
criada. Veremos, mais frente, como trabalhar com quotas em um sistema. Por enquanto,
basta saber que esse passo envolve apenas o uso do comando edquota. Como os usurios so
divididos por grupos no sistema, natural que o sistema de quotas se baseie nessa diviso.
Assim, possvel definir a quota de um usurio baseado na quota de outro que pertena ao
mesmo grupo. Nesse caso, o comando edquota pode ser utilizado da seguinte forma:
# edquota -p gerente2 gerente1
Administrao de Sistemas Linux
38

Esse comando estabelece que a quota do usurio gerente1 seja igual que foi estabelecida
para o usurio gerente2.

Testar nova conta


Para verificar se a nova conta foi criada corretamente, importante fazer login no sistema e
executar a seguinte sequncia de comandos:
# pwd
# ls -la
O primeiro comando serve para checar se o diretrio de trabalho do usurio est correto. O
segundo serve para verificar se os arquivos de configurao foram devidamente copiados e
se os parmetros referentes a dono, grupo e permisses esto corretos. Nesse ponto, o
administrador deve informar ao usurio seu nome de usurio e sua senha inicial. Essa
tambm a hora de fornecer alguma documentao sobre as regras de utilizao dos
recursos de TI da instituio. Se for exigido que o usurio assine um termo de compromisso
para ter acesso ao sistema, importante obt-lo antes de liberar o acesso conta.
Criando quota de uso de disco:
Uso do comando edquota;
As quotas podem ser copiadas de outro usurio.
Testando a nova conta:
Login como usurio;
# pwd
# ls -la

Administrando grupos
A administrao de grupos no Linux pode ser totalmente automatizada por alguns comandos
que permitem criar, alterar e remover grupos. Isto simplifica bastante o trabalho do
administrador, j que estes comandos eliminam a necessidade de se editar os arquivos
/etc/group e /etc/gshadow, operao que requer muita ateno e apresenta o risco de
provocar alguma modificao indesejada. Alm disso, o administrador tambm pode utilizar
o comando groups para verificar os grupos aos quais um usurio pertence.
Administrando grupos:
Criando grupos;
Modificando grupos;
Removendo grupos.

Criando grupos
Um grupo pode ser criado atravs dos comandos addgroup e groupadd, que criam o novo
grupo, utilizando os parmetros passados na linha de comando. Se o esquema de shadow
Administrao de Sistemas Linux
39

passwords estiver habilitado, a entrada referente ao novo grupo criada automaticamente no


arquivo /etc/gshadow. Para consultar maiores informaes a respeito destes comandos, suas
pginas de manual podem ser consultadas.

Criando grupos:
groupadd:
Cria um novo grupo.
addgroup:
Cria um novo grupo.
Criam entrada no arquivo /etc/gshadow automaticamente (shadow passwords);
Podem ser utilizados para criar grupos de sistema.

Modificando grupos
O comando groupmod modifica informaes referentes a um determinado grupo. Para
consultar maiores informaes a respeito deste comando, sua pgina de manual pode ser
consultada.
Modificando grupos:
groupmod:
Modifica informaes de grupos no arquivo /etc/group;
nome, GID e senha (desuso).
gpasswd:
Modifica informaes de grupos no arquivo /etc/gshadow;
Insere ou remove administradores e usurios;
Tambm permite alterar a senha do grupo. (em desuso).

Removendo grupos
Um grupo pode ser removido atravs dos comandos groupdel e delgroup. Se o esquema de
shadow passwords estiver habilitado, a entrada referente ao grupo removida
automaticamente do arquivo /etc/gshadow. Para consultar maiores informaes a respeito
destes comandos, suas pginas de manual podem ser consultadas. Alm desses comandos,
ainda podemos utilizar o comando deluser com a opo --group para remover um grupo.
Removendo grupos:
groupdel:
Remove um grupo.
delgroup:
Remove um grupo.
Remove entrada no arquivo /etc/gshadow automaticamente (shadow passwords);

Administrao de Sistemas Linux


40

O comando deluser tambm pode ser utilizado com a opo --group para remover um
grupo.

Administrando contas de usurios


A manipulao de contas de usurios no Linux pode ser totalmente automatizada por alguns
comandos, o que simplifica bastante o trabalho do administrador. H outras formas de
administrar contas de usurios utilizando ferramentas grficas do Linux ou at mesmo o
Webmin, que uma interface web para administrao de diversas funcionalidades do
sistema e ser vista em detalhes na sesso de aprendizagem 10. Nesta sesso abordaremos
apenas as ferramentas utilizadas atravs da linha de comando.
Administrando contas de usurios:
Criando contas de usurios;
Modificando contas de usurios;
Desabilitando contas de usurios;
Removendo contas de usurios;
Monitorando usurios.

Criando contas de usurios


Os comandos adduser ou useradd permitem criar contas sem a necessidade de editar os
arquivos /etc/passwd e /etc/shadow, operao que requer muita ateno e apresenta o risco
de provocar alguma modificao indesejada. Todos os parmetros da conta podem ser
passados ao comando adduser, caso se queira modificar algum valor padro, como mostra o
exemplo abaixo.
# useradd -c Aluno 1 -d /home/aluno1 -g users -s /bin/tcsh aluno1
Esses valores padro podem ser listados utilizando a opo -D do comando. Para consultar
maiores informaes a respeito deste comando, sua pgina de manual pode ser visualizada
atravs do comando man adduser.
O comando newusers tambm pode ser utilizado para automatizar o processo de criao ou
mesmo alterao de parmetros em contas de usurios. Os dados relativos aos usurios
devem ser inseridos em um arquivo que ser passado como parmetro para o comando. Este
arquivo deve possuir o formato abaixo:
name:passwd:uid:gid:GECOS:dir:shell
Os campos devem ser separados pelo caractere : e so os seguintes: nome do usurio;
senha (no criptografada); uid; gid; GECOS (as informaes como nome e telefone devem ser
separadas por vrgulas); diretrio de trabalho e interpretador de comandos. Como este
arquivo possui as senhas dos usurios sem criptografia, ele deve ter permisso somente de
leitura e s para o usurio root. Por questes de segurana, assim que os usurios forem
criados, o arquivo deve ser removido.
Administrao de Sistemas Linux
41

Criando contas de usurios:


Modo manual:
Apresentado no tpico Criando contas de usurios.
Modo automatizado:
Comandos useradd e adduser - Criam usurios ou modificam valores e atributos
para novos usurios;
Comando newusers - Cria ou atualiza contas de usurio de forma automatizada.

Modificando contas de usurios


O comando usermod permite alterar vrios parmetros da conta de um usurio, como seu
diretrio home e shell, alm de permitir a insero do usurio em grupos secundrios. Ele
tambm permite que se defina uma data para expirao da conta, alm de bloqueio e
desbloqueio da mesma.
O comando passwd pode ser utilizado para alteraes de senha por qualquer usurio, desde
que seja para alterar somente sua senha. Ele tambm pode ser utilizado pelo usurio root
para realizar alteraes de senha de qualquer usurio, bloqueio e desbloqueio de contas, etc.
Modificando contas de usurios:
Modo manual:
Edio dos arquivos /etc/passwd, /etc/shadow, /etc/group e /etc/gshadow.
Modo automatizado:
Comandos usermod, passwd, chfn, chsh.
Alm dos comandos mencionados acima, temos o comando chfn que permite aos usurios
alterarem suas informaes do campo GECOS (com exceo do nome completo) e o comando
chsh, que permite aos usurios alterarem seus interpretadores de comando. O usurio root
pode utilizar estes comandos para alterar informaes de qualquer conta.
Exemplos
# grep aluno /etc/passwd
aluno:x:500:500:Aluno ESR:/home/aluno:/bin/bash
# chfn -f Aluno RNP/ESR aluno
# usermod -c Aluno 1 do curso ADS2 aluno1

Desabilitando contas de usurios


Para desabilitar uma conta de usurio, impedindo-o de entrar no sistema, basta editar o
arquivo /etc/passwd ou /etc/shadow, caso seja utilizado os esquema de shadow passwords e
colocar o caractere * no incio da senha criptografada. A rigor, bastaria inserir qualquer
caractere ou mesmo remover algum existente em qualquer posio da senha do usurio.
Deve-se utilizar sempre o mesmo caractere na mesma posio, como uma forma que
possibilita voltar atrs a qualquer instante sem ter que redefinir a senha do usurio. Outra
forma mais segura substituir o shell do usurio por um programa que imprime uma
Administrao de Sistemas Linux
42

mensagem na tela, explicando a causa da suspenso de sua conta e as providncias


necessrias para remediar a situao. Tambm possvel desabilitar uma conta utilizando o
comando usermod com a opo -L. Para habilitar novamente a conta, basta utilizar a opo -U
do comando usermod. O comando passwd tambm pode ser utilizado com a opo -l para
travar uma senha. Para destravar a senha, basta utilizar a opo -u. Alm disso, o comando
chage tambm pode ser utilizado para bloquear uma conta, como mostra o exemplo abaixo:
# chage -E 2015-12-31 aluno1
O comando acima far com que a conta do usurio aluno1 seja bloqueada no dia
31/12/2015.
Desabilitando contas de usurios:
Impedir acesso do usurio por algum tempo;
Colocar qualquer caractere no incio da senha criptografada;
Trocar o shell por mensagem explicativa;
Comandos: usermod, passwd e chage.

Removendo contas de usurios


Quando um funcionrio sai da empresa em que trabalha, necessrio remover sua conta e
seus arquivos do sistema. preciso, ento, retirar as entradas criadas nos arquivos
/etc/passwd /etc/shadow, /etc/group e /etc/gshadow relativas ao usurio em questo. Por
fim, deve-se realocar os arquivos que tm utilidade para outros usurios, fazer um backup do
diretrio de trabalho do usurio, para s depois remov-lo do sistema. Os comandos deluser
e userdel, removem a conta de um usurio, sem a necessidade de seguir todos os passos
necessrios para remover uma conta manualmente. O comando abaixo remove o usurio
aluno1 e seu diretrio de trabalho.
# userdel r aluno1
Se o sistema utilizar quotas de disco, tambm devem ser removidas as referncias a quotas
criadas, utilizando o comando edquota.
Removendo contas de usurios:
Modo manual:
Remover entradas dos arquivos /etc/passwd, /etc/shadow, /etc/group e
/etc/gshadow;
Fazer backup dos arquivos do usurio;
Realocar arquivos de uso comum;
Remover diretrio de trabalho;
Remover as referncias quota do usurio;
Evitar a reutilizao do UID.
Modo automatizado:

Administrao de Sistemas Linux


43

Comandos userdel e deluser.

Monitorando usurios
Uma condio importante para manter a segurana de um sistema saber quem o est
utilizando e para quais finalidades. No Linux, h vrias ferramentas que permitem visualizar
estas informaes, vitais para o diagnstico de eventuais ocorrncias de violao. No arquivo
/var/log/wtmp, ficam guardadas informaes sobre os logins que ocorreram no sistema. Em
caso de violao, basta verificar o contedo desse arquivo, utilizando o comando last. H
tambm dois comandos que servem para informar os usurios que esto utilizando o sistema
em um dado momento. Esses comandos so o who, que exibe informaes baseadas no
arquivo /var/log/wtmp e o w, que exibe informaes baseadas no arquivo /var/run/utmp. Os
arquivos utilizados pelos comandos last, who e w, armazenam informaes em um formato
no legvel. Sendo assim, suas informaes s so teis quando exibidas atravs dos
respectivos comandos. A seguir, so apresentados exemplos de execuo dos comandos who,
w e last.
#who
root
root
aluno1

pts/0 Feb 16 12:29 (172.16.3.191)


pts/1 Feb 16 13:18 (:0.0)
pts/2 Feb 16 18:48
(172.16.3.191)

# w
18:49:37 up 13
USER
TTY
root
pts/0
root
pts/1
aluno1 pts/2

days, 10:39, 3 users, load average: 0.03, 0.01, 0.00


FROM
LOGIN@
IDLE JCPU PCPU WHAT
172.16.3.191
12:29pm
2:21 0.84s 0.84s -bash
:0.0
1:18pm
5:26m 0.44s 0.44s bash
172.16.3.191
6:48pm
0.00s 0.07s 0.01s w

# last
root
pts/1
:0.0
Mon Feb 16 13:18
in
root
pts/0
172.16.3.189
Mon Feb 16 12:29
in
aluno1 pts/2
172.16.3.191
Fri Feb 16 18:48
in
wtmp begins Tue Feb 10 18:11:33 2004

still logged
still logged
still logged

Existem outras formas mais eficazes de se monitorar as atividades dos usurios no sistema.
Isto pode ser feito visualizando os arquivos de log, geralmente localizados no diretrio
/var/log. O programa syslog, responsvel por gerenciar o registro de eventos do Linux e seu
arquivo de configurao, /etc/syslog.conf, contm as informaes sobre o local onde ficam
armazenados os diversos arquivos de logs do sistema e das aplicaes. O syslog ser visto em
detalhes na sesso de aprendizagem 7.

Administrao de Sistemas Linux


44

Monitorao de usurios:
who - Mostra os usurios conectados ao sistema;
w - Mostra os usurios conectados e os comandos executados;
last - Mostra as ltimas vezes em que o usurio entrou no sistema;
Logs do sistema e das aplicaes.

Administrao de Sistemas Linux


45

Administrao de Sistemas Linux


46

3
Processos
Sumrio
Entender o que um processo;
Conhecer os tipos de processos existentes;
Conhecer os componentes de um processo;
Conhecer o ciclo de vida de um processo;
Conhecer os princpios de um sistema multiprocessado;
Saber o que um programa rodando em background e foreground;
Conhecer os estados de um processo;
Entender como funciona o esquema de escalonamento de processos no Linux;
Saber os sinais que podem ser enviados a um processo e como utiliz-los;
Saber como executar tarefas periodicamente.
Processos:
Tipos de processos;
Componentes de um processo;
Ciclo de vida de um processo;
Multiprocessamento;
Estados de um processo;
Prioridades e escalonamento de processos;
Uso de sinais;
Monitoramento de processos;
Execuo peridica de tarefas.
Cron, Anacron e Fcron.

Processos
Certamente um dos conceitos mais importantes no estudo de sistemas operacionais. Os
sistemas Linux, utilizam uma forma muito simples e poderosa de gerenciar processos. Um
processo pode ser definido como uma abstrao que representa um programa em execuo e
composto pelo cdigo do programa, seus dados e valores armazenados nos registradores
Administrao de Sistemas Linux
47

do processador. Um processo tambm aloca recursos do sistema como arquivos e


dispositivos e possui atributos que, baseados no usurio que o executou, definem que
recursos este processo pode utilizar. Os sistemas operacionais modernos permitem a
execuo simultnea de vrios processos, alocando o processador a cada um deles durante
pequenas unidades de tempo. Isso possibilita que um programa seja utilizado enquanto, por
exemplo, dados so lidos do disco e um documento impresso. difcil notar a diferena
entre processo e programa, mas seu entendimento fundamental. Enquanto o programa
apenas o cdigo executvel armazenado em disco, um processo o cdigo em execuo,
juntamente com seus dados e valores dos registradores do processador. Processos so as
nicas entidades ativas no Linux, ou seja, tudo que executado no sistema possui um ou mais
processos associados.
Processo:
Programa em execuo;
Composio:
Cdigo do programa armazenado em memria;
Dados utilizados pelo programa;
Valores armazenados nos registradores do processador;
Recursos alocados ao processo;
Atributos de segurana.
Programa:
Cdigo executvel armazenado em disco.

Tipos de processos
Os processos podem ser classificados basicamente em trs tipos:
Processos interativos - So caracterizados por interagirem constantemente com o
usurio e geralmente realizam diversas operaes de entrada e sada. Aplicativos
utilizados pelo usurio, como editores de texto, navegadores, etc. so exemplos de
programas que geram processos interativos. O tempo de reposta dos processos
interativos deve se o mais rpido possvel, visando garantir um nvel de interatividade
satisfatrio aos usurios do sistema.
Processos em batch - So caracterizados por no interagirem com o usurio. Este tipo de
processo possui baixa prioridade e geralmente executado em background, tipo de
execuo que ser visto mais a frente. Aplicativos como compiladores e programas de
backup, so tipos de programas que so executados por processos em batch. Esse tipo de
processo o mais penalizado pelo sistema operacional.
Processos em tempo real - So caracterizados por necessitarem de tempos de respostas
previsveis. Aplicaes crticas que controlam processos industriais e aplicaes de
controle de trfego areo, por exemplo, so associadas a processos em tempo real. Este
tipo de processo tem prioridade mxima no sistema e no pode ter sua execuo
interrompida.

Administrao de Sistemas Linux


48

Tipos de processos:
Processos interativos:
Interagem constantemente com o usurio;
Devem ter prioridade no uso do processador, visando oferecer ao usurio um
tempo de resposta adequado.
Processos em batch:
No interagem com o usurio;
Possuem baixa prioridade.
Processos em tempo real:
Possuem prioridade sobre os interativos e em batch;
Utilizados em aplicaes crticas onde o tempo de resposta crucial.
Alm disso, os processos podem ser classificados de acordo com a porcentagem de tempo em
que utilizam o processador ou realizam operaes de entrada e sada. Processos que utilizam
o processador na maior parte do tempo so classificados como CPU bound. Processos que
realizam operaes de entrada e sada na maior parte do tempo so classificados como I/O
bound. O sistema operacional sempre privilegia processos do tipo I/O bound de modo que
possa oferecer melhores tempos de resposta s aplicaes interativas.
Tipos de processos:
Processos CPU bound:
Utilizam o processador na maior parte do tempo.
Processos I/O bound:
Realizam operaes de entrada e sada na maior parte do tempo.

Componentes de um processo
Um processo tpico consiste de duas entidades: um espao de endereamento e um conjunto
de estruturas de dados internas do kernel. O primeiro diz respeito a um conjunto de pginas
de memria marcadas pelo kernel para o uso do processo, contendo:
Os segmentos para o cdigo do programa que o processo est executando;
As variveis usadas pelo processo;
A pilha do processo;
Outras informaes de que o kernel necessita.
Componentes de um processo:
Espao de endereamento:
Conjunto de pginas de memria;
Contm segmentos para cdigo do programa em execuo, variveis, pilhas e
outras informaes.
Administrao de Sistemas Linux
49

As estruturas de dados internas do kernel registram vrios tipos de informao sobre cada
processo, onde as mais importantes so:
Mapa do espao de endereamento;
Status atual;
Prioridade de execuo;
Recursos utilizados;
Mscara de sinalizao;
Dono.
Estruturas de dados do kernel:
Armazenam informaes a respeito dos processos em execuo:
Mapa do espao de endereamento;
Status atual do processo;
Prioridade de execuo;
Recursos utilizados;
Mscara de sinalizao do processo;
Usurio proprietrio.
Muitos parmetros associados a um processo afetam diretamente a sua execuo. A seguir,
veremos o significado e a importncia dos parmetros mais interessantes do ponto de vista
de um administrador de sistemas.

PID e PPID
No Linux, os processos esto organizados hierarquicamente. Cada processo criado pelo
kernel identificado no sistema, de forma nica, por um nmero inteiro atribudo a ele no
momento de sua criao. Este nmero denominado identificador de processo, mas
conhecido pela sigla PID (Process ID) e pode variar de 1 a 65536. Quando o kernel atinge o
valor mximo que um PID pode assumir, ele reinicia do zero, saltando os nmeros que ainda
esto em uso. Como veremos a seguir, o Linux no possui uma chamada de sistema que cria
um novo processo. No entanto, h um mtodo onde um processo existente cria um clone de
si mesmo para dar origem a um novo processo. O processo original, nesse caso, chamado
de processo pai, e o clone chamado de processo filho. O atributo PPID (Parent PID) de um
processo o PID do seu processo pai.

RUID, EUID, RGID e EGID


O RUID (Real User Identification) o UID do usurio que criou o processo. J o EUID (Effective
User Identification) o UID efetivo do processo, que utilizado para determinar os recursos e
arquivos que o processo tem permisso de acessar. Na maioria dos processos, o RUID e o
EUID so iguais. A exceo ocorre quando o programa em execuo tem o bit SUID ativo.
Nestes casos o RUID est relacionado ao usurio executor do programa e o EUID ao usurio
Administrao de Sistemas Linux
50

dono do programa. Um exemplo de programa com o bit SUID ativado o comando passwd.
Quando este comando executado por um usurio comum, o RUID do processo igual ao
UID do usurio executor e o EUID do processo igual ao UID do usurio dono do programa,
neste caso, o root.
Real and Effective User ID (RUID, EUID):
RUID:
UID do usurio que criou o processo.
EUID:
Utilizado para determinar o direito de acesso do processo aos recursos do sistema
(SUID);
Geralmente, o mesmo que o RUID.
O RGID (Real Group Identification) o GID do usurio que criou o processo. J o EGID
(Effective Group Identification), o GID efetivo de um processo, que utilizado para
determinar os recursos e arquivos que o processo tem permisso de acessar. Na maioria dos
processos, o RGID e o EGID so iguais. A exceo ocorre quando o programa em execuo tem
o bit SGID ativo. Nestes casos o RGID est relacionado ao grupo primrio do usurio que est
executando o programa e o EGID ao grupo proprietrio do programa em si. Quando um
processo iniciado, seu RGID estabelecido a partir do RGID do processo pai. Se este
processo tenta acessar um arquivo para o qual no tem permisso, o kernel ir
automaticamente verificar se a permisso pode ser garantida por intermdio do EGID.
Real and Effective Group ID (RGID, EGID):
Mapeados no arquivo /etc/group;
Quando um processo inicializado, o RGID o mesmo do processo pai.
EGID:
Anlogo ao EUID em relao ao UID;
Se um processo no tem permisso para acessar um arquivo, o kernel checa se
possvel, com base no EGID.

Prioridade
A prioridade de um processo determina quanto tempo de CPU ele receber. Assim, no
momento em que o kernel vai selecionar um processo para ser executado, ele seleciona
aquele com a maior prioridade interna. A quantidade de tempo de CPU que o processo j
consumiu e o tempo que ele est esperando para rodar so fatores que influenciam a
prioridade interna. Como veremos de forma detalhada mais frente, no possvel
determinar a prioridade interna diretamente. Essa uma prerrogativa do kernel. Contudo,
possvel influenciar esse valor por meio de um comando que altera o nice value (um nmero
inteiro que influencia a prioridade de um processo no sistema) de um processo.

Administrao de Sistemas Linux


51

Terminal de controle
O terminal de controle determina os canais que devem ser utilizados pelo processo, como
entrada (recepo de dados), sada (sada do processamento) e sada de erros (informaes
sobre erros no processamento). Muitos processos, mas no obrigatoriamente todos, tm um
terminal de controle associado a eles. Assim, quando digitamos um comando a partir do shell,
o seu terminal se torna o terminal de controle do processo. O conceito de terminal de
controle est intimamente associado ao envio de sinais, tpico que ser visto mais a frente.
Process ID (PID):
Associado pelo kernel;
nico no sistema.
Parent Process ID (PPID);
Prioridade (Nice Number);
Terminal de controle (TTY).

Ciclo de vida de um processo


No Linux, processos no so gerados de forma espontnea, ou mesmo criados aleatoriamente
pelo kernel. Na verdade, novos processos so criados unicamente a partir de outros
processos, por intermdio da chamada de sistema fork, que cria uma cpia exatamente igual
do processo que a executou. As principais diferenas ficam por conta do PID e do PPID. Aps
a execuo da chamada fork, os processos pai (o criador) e filho (o criado) so tratados de
maneira independente, como mostra a figura 3.1, podendo criar novos processos e dar
origem a uma rvore hierrquica de processos.

Figura 3.1 - Processos pai e filho


Um processo filho herda uma cpia de todos os descritores de arquivos mantidos pelo
processo pai, compartilhando os respectivos arquivos. O Linux permite que os processos
identifiquem-se como pai ou como filho e sigam linhas de execuo diferentes, aps o
retorno da chamada fork. Para tal, no retorno da chamada fork, o sistema operacional retorna
para o processo pai o PID do processo filho. Este, por sua vez, recebe do sistema operacional
apenas o valor 0.
Ciclo de vida de um processo:
Chamada de sistema fork:
Cria uma cpia idntica ao processo pai, mas com outros PID e PPID;
Cdigos de retorno:

Se ok Retorna o PID do filho, no contexto do processo pai e 0 no contexto do


filho.

Administrao de Sistemas Linux


52

Se no Retorna -1 no contexto do processo pai, no cria o filho e envia o cdigo


de erro.

Aps um fork, o novo processo dever fazer uso da chamada de sistema exec, para comear a
execuo de um novo programa. Existe, na realidade, uma famlia de chamadas de sistema do
tipo exec. Todas as chamadas da famlia exec, no entanto, executam basicamente a mesma
funo: mudam o cdigo que o processo est executando e reiniciam os segmentos de dados
e a pilha para um estado inicial pr-definido. Quando uma das rotinas exec chamada, ela
sobrescreve o espao de endereamento do processo pai com o contedo do novo programa
e retoma a execuo do processo filho j com o novo cdigo a ser executado. A figura 3.2
ilustra uma chamada exec.
Ciclo de vida de um processo:
Chamada de sistema exec:
Altera o programa fonte que est em execuo;
Inicializa os segmentos de dados e pilha para um estado inicial pr-definido;
Inicializa os registradores do processador;
Algumas informaes do processo so mantidas como a lista de arquivos abertos;
Os vrios tipos de chamadas exec permitem que os programas sejam iniciados com
diferentes opes.

Figura 3.2 - Chamada de sistema exec


Na inicializao do Linux, o primeiro processo (PID = 1) a ser executado o init. Esse
processo cria diversos processos filhos, que controlam a inicializao do sistema. Portanto,
todos os processos em execuo no sistema, com exceo de uns poucos criados diretamente
pelo kernel, so descendentes do processo init. Ao final da inicializao do sistema, o init
identifica os terminais conectados a este e por meio das chamadas fork e exec cria um
processo associado a cada terminal para controlar o acesso ao sistema. O processo que
controla os terminais o getty que quando recebe um pedido de conexo, ativa o programa
login para fazer a verificao do nome do usurio e sua respectiva senha, armazenados no o
arquivo /etc/shadow ou /etc/passwd, caso o esquema de shadow passwords no esteja
habilitado. Se as informaes fornecidas pelo usurio estiverem corretas, um novo processo

Administrao de Sistemas Linux


53

ser criado para executar o interpretador de comandos do usurio, que fica aguardando por
um comando. O esquema descrito acima mostrado na figura 3.3.

Figura 3.3 - Criao de processos

Multiprocessamento
Por ser um ambiente multiusurio e multitarefa, o Linux permite que vrios usurios
executem, simultaneamente, diversos processos independentes. Cada usurio pode ter
vrios processos ativos. Em um sistema de grande porte, podem existir milhares de
processos em execuo. Os processos com que o usurio interage diretamente esto
associados a um terminal, sendo possvel para este processo ler ou escrever dados. Diz-se
que esses processos esto sendo executados em primeiro plano, ou em foreground. No
entanto, existem processos que, apesar de poderem estar associados a terminais, no
conseguem ler nem escrever dados. Diz-se que esses processos esto sendo executados em
segundo plano, ou em background. Muitos processos so executados em segundo plano,
controlando alguma atividade ou fornecendo algum servio. Geralmente, processos em
segundo plano realizam operaes de entrada e de sada em arquivo. No entanto, pode
existir apenas um processo executado em primeiro plano associado a um determinado
terminal. Existe um tipo especial de processo que executado em segundo plano,
denominado daemon, que geralmente ativado na inicializao do sistema e no possui um
terminal associado. Daemons realizam operaes de entrada e de sada em arquivo ou por
meio da rede. O interpretador de comandos permite ao usurio executar processos em
primeiro ou em segundo plano e tambm iniciar ou parar um determinado daemon a
Administrao de Sistemas Linux
54

qualquer momento. Quando o usurio executa um processo em primeiro plano, o


interpretador de comandos somente libera o prompt aps o trmino da execuo do
comando solicitado, uma vez que o processo poder realizar operaes de entrada e de sada
no terminal. Porm, quando o usurio executa um processo em segundo plano, o
interpretador de comandos imediatamente libera a linha de comando, permitindo que o
usurio fornea novos comandos para serem executados. Para executar um processo em
segundo plano, o usurio precisa apenas acrescentar ao final do comando o caractere &.
Por exemplo, para executar o navegador Firefox em segundo plano, deve ser digitado o
seguinte comando:
# firefox &
Nesse caso, o Firefox ser executado em segundo plano, e o interpretador de comandos ainda
permitir ao usurio fornecer novos comandos e execut-los de forma independente. A
noo de processos executados em background e em foreground est diretamente
relacionada aos terminais. Em ambientes grficos de janelas, como o X-Window, os conceitos
de processos em background e foreground ainda so vlidos, porm seu entendimento no
to simples. Para um processo trabalhar com janelas, ele se comunica diretamente com um
processo gerenciador do ambiente grfico, enviando mensagens de um protocolo de
aplicao suportado pelo gerenciador. No X-Window, o usurio pode executar uma janela
emuladora de terminal utilizando o comando xterm, que, por sua vez, executa um
interpretador de comandos. O gerenciador do ambiente grfico define um terminal virtual
para cada janela xterm. Assim, cada janela xterm comporta-se como um terminal, no qual
podem ser executados processos em background ou em foreground, da mesma forma como
foi explicado anteriormente.
Multiprocessamento:
Um usurio pode ter vrios processos ativos:
Foreground:
# ps aux

Background:
# firefox & (associado a um terminal)

Daemon:

Squid (no associado a terminal)

Daemon
Daemons (Disk and execution monitor) so programas que gerenciam servios que so
executados em segundo plano. Os daemons no esto associados a nenhum terminal e
geralmente so iniciados durante o processo de inicializao do sistema. Por padro, os
nomes dos daemons terminam com a letra d. Por exemplo, o daemon que gerencia o servio
http chamado de httpd. A maioria dos servios de rede gerenciada por daemons que ficam
permanentemente em execuo, aguardando por conexes. Os servios podem ser
gerenciados por um daemon, modo conhecido como standalone ou atravs do inetd ou xinetd,
que so daemons que gerenciam diversos servios simultaneamente. Quando o inetd e o
Administrao de Sistemas Linux
55

xinetd recebem uma requisio, eles a repassam para o daemon correspondente ao servio
solicitado. Desta forma, os daemons responsveis por cada servio gerenciado pelo inetd ou
pelo xinetd, s so executados quando recebem alguma requisio. Isso otimiza o uso de
recursos do sistema e simplifica a implementao desses daemons, j que no precisam mais
gerenciar os servios correspondentes, deixando esta tarefa a cargo do inetd ou do xinetd.

Alternando execues
Um determinado processo executando em foreground pode ser chaveado para execuo em
background e vice-versa. Vejamos como isso acontece no exemplo a seguir. Suponhamos a
situao em que o usurio acaba de iniciar um processo em foreground, via linha de
comando, e recebe um telefonema urgente requisitando uma informao que est
armazenada no arquivo ~aluno1/texto.txt. Para executar essa nova tarefa, ele pode cancelar o
processo que havia sido iniciado (com o uso das teclas Ctrl+C). No entanto, como ele um
usurio experiente e no quer perder o trabalho que estava sendo realizado, decide colocar o
processo anterior em background e executar o editor de textos vi em foreground. Para isso,
inicialmente, o usurio precisa suspender a execuo do processo e, em seguida, retomar sua
execuo em background. Para proceder suspenso, o usurio deve pressionar as teclas
Ctrl+Z, liberando, assim, a linha de comando do interpretador. Em seguida, digita o comando
bg para retomar a execuo em background. Nesse ponto, a linha de comando do
interpretador fica liberada, e o usurio pode executar o vi para visualizar o arquivo
~aluno1/texto.txt. Aps a utilizao do vi, o usurio pode colocar o processo para ser
executado novamente em foreground, utilizando o comando fg. O chaveamento de primeiro
para segundo plano somente funciona se o processo chaveado no fizer uso do terminal para
interagir com o usurio. O comando jobs utilizado para mostrar os processos que esto
suspensos ou rodando em segundo plano.
Alternando execues:
Comando bg:
Sua funo colocar um processo para rodar em background.
Comando fg:
Sua funo colocar um processo para rodar em foreground.
Comando jobs:
Sua funo exibir os processos do sistema que esto suspensos ou rodando em
segundo plano.

Exemplo:
# man ls (durante a leitura, digitar Ctrl+Z)
[1]+ Stopped man ls
# bg
[1]+ man ls &
# vi ~aluno1/texto.txt (terminada a edio)

Administrao de Sistemas Linux


56

# fg (continua a leitura do manual do comando ls a partir do ponto em que parou)

Estados de um processo
Um processo pode assumir basicamente, trs estados possveis: executando, bloqueado e
pronto. Durante seu ciclo de vida, um processo pode passar diversas vezes por esses estados,
dependendo das operaes que precisa executar. Quando um processo criado, ele vai
automaticamente para o estado pronto e fica aguardando que o sistema operacional aloque o
processador a ele. Um processo tambm pode se encontrar diversas vezes no estado pronto
durante sua execuo, aguardando a alocao do processador para continuar sua execuo.
Quando o processador alocado ao processo este passa para o estado executando. Um
processo que esteja executando alguma operao de entrada e sada encontra-se no estado
bloqueado. A figura 3.4 mostra o diagrama de estados de um processo. A transio nmero 1
representa o momento em que um processo sai da fila e passa a ser processado. A transio
nmero 2 representa o momento em que um processo deixa de ser processado e volta para a
fila, enquanto o processador alocado a outro processo. A transio nmero 3 representa o
momento em que um processo deixa de ser processado para realizar alguma operao de
entrada e sada. A transio nmero 4 representa o momento em que um processo termina
uma operao de entrada e sada e volta para fila para aguardar sua vez de ser processado.

Figura 3.4 - Diagrama de estados de um processo


Estados de um processo:
Executando;
Bloqueado;
Pronto;
Parado.
Apesar de os processos serem independentes, muitas vezes necessrio que se
comuniquem. Um exemplo de comunicao entre processos atravs de pipes,
representados pelo caractere |. O pipe redireciona a sada de um processo para a entrada
de outro processo. Veja o exemplo a seguir, que concatena os arquivos file1 e file2 por
intermdio do comando cat e procura por linhas que contenham a palavra word utilizando o
comando grep:
# cat file1 file2 | grep word
Nesse caso, o processo relativo execuo do comando grep tem que esperar pela sada
gerada pelo processo cat. Enquanto um processo aguarda algum recurso ou o trmino de
Administrao de Sistemas Linux
57

uma operao de entrada e sada, diz-se que ele se encontra no estado bloqueado ou
dormindo (sleeping). O bloqueio de um processo causado pela falta de condies que o
tornem apto execuo, como o caso do exemplo visto. Um processo bloqueado retorna ao
estado pronto quando o recurso liberado ou quando a operao de entrada e sada
concluda. No exemplo, o processo relativo ao comando grep volta para o estado de pronto
quando o processo relativo ao comando cat termina de escrever os dados na sua entrada.
H outros dois estados de processos listados na literatura: suspenso e zumbi. Em alguns
casos, o usurio ou o prprio sistema operacional decidem interromper a execuo de um
processo. Um processo suspenso ou parado (stopped) est proibido de executar. O exemplo
do usurio que necessita consultar o arquivo ~aluno1/texto.txt, apresentado anteriormente,
mostra o caso em que o prprio usurio decide interromper a execuo do processo,
pressionando as teclas Ctrl+Z.
Um processo finalizado atravs da chamada de sistema exit. Neste momento, o processo pai
notificado do trmino do processo filho atravs do sinal SIGCHLD. A partir da, o processo
filho assume o estado zumbi. Nesse estado o processo terminou sua execuo, mas ainda
consome recursos do sistema. O processo pai ento invoca a chamada de sistema wait que
libera o descritor de processos do processo filho, que ento finalizado.
Exemplo:
# cat /etc/passwd /etc/group | grep patricia
Bloqueado: pela falta de condies que o tornem apto execuo.
O comando grep espera pelo processamento do comando cat.
Pronto: quando o recurso liberado ou a operao de entrada/sada concluda.
O comando grep recebe a sada do comando cat.
Parado: quando o processo encontra-se proibido de executar (Ctrl+z).

Prioridades e escalonamento de processos


Em sistemas operacionais multitarefa como o Linux, vrios processos so executados
simultaneamente. Na verdade, os processos dividem o uso do processador gerando o
chamado paralelismo aparente, ou seja, o chaveamento rpido dos recursos do sistema entre
os processos produz a falsa impresso de que eles esto sendo executados simultaneamente.
Quando diversos processos esto prontos para serem executados, o sistema operacional
deve decidir a qual deles alocar o processador. O mdulo do sistema operacional que se
encarrega de realizar esta alocao chamado escalonador de processos, e toma suas
decises baseado em um algoritmo de escalonamento. Os processos que esto no estado
pronto so colocados na fila de escalonamento e ficam aguardando at que o processador se
torne livre para eles.
Em muitos casos, fatores externos ao ambiente do sistema operacional fazem com que alguns
processos tenham prioridade sobre outros. Por exemplo, em um computador de uso geral de
uma empresa, os processos gerados pela equipe de produo podem ter prioridade sobre os
processos gerados pela equipe de desenvolvimento. Para atender casos nos quais a
prioridade deve ser levada em considerao, o Linux suporta um esquema de prioridade de
Administrao de Sistemas Linux
58

processos. A prioridade de um processo determina a quantidade de tempo de processador


que ele utilizar quando estiver no estado executando. Vale ressaltar que, no Linux, quanto
maior o valor do atributo de prioridade (PRI) de um processo, menor a prioridade de
escalonamento, como ilustra a figura 3.5. Dessa forma, o escalonador aloca o processador ao
processo de menor PRI que est na fila de escalonamento. Assim, processos com prioridade
baixa (maior PRI) somente tm a chance de serem executados quando no existirem
processos de alta prioridade sendo executados ou, se existirem, mas estiverem bloqueados
ou suspensos.
Para evitar que um processo de alta prioridade monopolize o processador, a prioridade de
um processo calculada levando-se em considerao o tempo de CPU recentemente
consumido e o tempo de espera na fila de escalonamento. A prioridade de um processo no
pode ser definida ou alterada diretamente. No entanto, cada processo possui um atributo
adicional, denominado nice value, que influencia substancialmente o clculo da sua
prioridade e que pode ser modificado diretamente pelo usurio proprietrio ou pelo
administrador do sistema. No Linux, o nice value varia entre -20 e 19 e quanto maior for seu
valor, maior o valor da prioridade (PRI) do processo. Entretanto, como foi descrito
anteriormente, quanto maior o valor da prioridade (PRI), menor a prioridade de
escalonamento efetiva do processo, ou seja, menos chance o processo tem de ser alocado ao
processador.

Figura 3.5 - Algoritmo de escalonamento baseado em prioridade


O Linux possui dois comandos que servem para manipular o nice value de processos. Esses
comandos so o nice e o renice. O nice utilizado para ativar um processo com o nice value
corrente incrementado pelo valor fornecido. Por exemplo, para executar o comando cat com
nice value corrente incrementado de 10, o usurio deve fornecer o seguinte comando:
# nice -n -10 cat /etc/hosts
O comando nice tambm permite identificar o nice value corrente. Para isso, basta digitar o
comando sem parmetros. O renice, por sua vez, utilizado para modificar o nice value de um
processo que j se encontra em execuo. Por exemplo, supondo que o processo cujo PID
1502 possui nice value igual a 0, o seguinte comando modifica o nice value para 10:
# renice 10 1502
O usurio root pode atribuir qualquer valor entre -20 e 19 ao nice value de qualquer processo.
Por outro lado, usurios normais podem somente incrementar o valor do nice value de seus

Administrao de Sistemas Linux


59

prprios processos. Para mais informaes, leia as pginas de manual referentes a esses
comandos.
Escalonamento de processos:
Paralelismo aparente (concorrncia);
Algoritmo de escalonamento:
Poltica de escalonamento:

Round-robin;

FIFO (First In, First Out);

Escalonamento baseado em prioridades.


Garantir que todos os processos possam ser processados;
Utilizar a capacidade mxima do processador.

Fila de escalonamento.

Algoritmo de escalonamento
Define uma poltica que permite ao escalonador decidir a qual processo alocar o
processador. Vrios fatores tornam um algoritmo de escalonamento mais ou menos eficiente.
A lista abaixo apresenta algumas caractersticas desejveis para um algoritmo de
escalonamento:
Garantir que cada processo ter a oportunidade de ser alocado ao processador;
Explorar ao mximo a capacidade do processador;
Balancear o uso dos recursos do sistema
Existem vrios algoritmos de escalonamento, como escalonamento round-robin, FIFO (First
In, First Out), filas mltiplas, entre outros. Como o objetivo deste curso no o estudo dos
algoritmos de escalonamento, ser apresentado apenas o algoritmo de escalonamento
preemptivo, utilizado no Linux. Nesse tipo de algoritmo, o escalonador aloca a cada processo,
pequenas fatias de tempo de uso do processador, denominadas quantum. O tempo de
durao de cada quantum definido pelo escalonador, baseado na prioridade de cada
processo. Quando um processo entra no estado executando, o algoritmo de escalonamento
verifica se existe algum processo com prioridade maior do que a prioridade do processo em
execuo. Caso encontre algum, o processo em execuo interrompido e o de prioridade
maior passa a ser executado.
O escalonador trabalha com dois tipos de prioridade. A prioridade dinmica, que alterada
constantemente pelo escalonador, de modo que processos que esto h mais tempo sem
utilizar o processador, tem sua prioridade aumentada automaticamente. Por outro lado,
processos que utilizaram o processador recentemente tm sua prioridade automaticamente
diminuda. A prioridade dinmica utilizada somente em processos interativos e processos
em batch.
Alm da prioridade dinmica, existe a prioridade esttica, que utilizada exclusivamente por
processos em tempo real. O valor da prioridade esttica pode variar de 1 a 99 e definido
Administrao de Sistemas Linux
60

pelo usurio, no podendo ser alterada pelo escalonador. Processos em tempo real possuem
sempre maior prioridade com relao aos processos interativos ou em batch e s podem ser
criados por usurios com privilgios especiais. O escalonador s executa processos
interativos ou em batch, se no houver nenhum processo em tempo real sendo executado.
Vale ressaltar que as polticas utilizadas pelo escalonador para tratar processos em tempo
real so diferentes da poltica baseada em prioridades, utilizada para os processos
interativos e em batch. Essas polticas utilizadas no gerenciamento de processos em tempo
real no sero vistas neste curso por no fazerem parte de seu escopo.
Algoritmo de escalonamento:
Baseado em prioridade:
Prioridade dinmica:
A prioridade dos processos alterada constantemente;
Tenta equalizar o uso do processador;
Definida somente pelo escalonador.
Prioridade esttica:
Utilizada somente em processos de tempo real;
Definida pelo usurio.

Escalonamento baseado em prioridade:


Como o sistema evita o monoplio do processador por um processo de alta
prioridade?
A prioridade calculada levando em considerao o tempo de CPU recentemente
consumido e o tempo de espera na fila de escalonamento.
Comando nice:
Exibe o nice value atual ou executa um processo alterando seu nice value.
Comando renice:
Modifica o nice value de um processo em execuo.

Uso de sinais
O Linux permite que eventos externos sejam comunicados a processos por meio do envio de
sinais. Uma vez que um processo pode enviar sinais a outros processos, eles podem ser
vistos como uma forma de comunicao entre processos. Quando um processo recebe um
sinal, ele interrompe a sua execuo. Em seguida, o processo executa um procedimento de
tratamento do sinal, ou o prprio kernel executa uma ao padro, diferente para cada tipo
de sinal. Aps o tratamento do sinal, o processo retoma sua execuo ou encerrado. Como
pode ser visto, o tratamento de sinais bastante semelhante ao tratamento de interrupes
no sistema de entrada e sada. Um processo pode ser configurado para tratar o sinal (o
procedimento de tratamento executado) ou para ignor-lo (a execuo do processo no
afetada). O usurio pode enviar sinais para processos utilizando o comando kill. Nesse
Administrao de Sistemas Linux
61

comando, o tipo de sinal informado como parmetro, juntamente com o identificador do


processo (PID). O comando pkill tambm pode ser utilizado para enviar sinais a um processo,
sem a necessidade de conhecermos seu PID. O pkill passa o nome do processo como
parmetro, no lugar de seu PID. Outro comando que referencia processos pelo nome o
killall, que pode ser utilizado para matar todos os processos de um determinado programa.
Uso de sinais:
Forma de comunicao entre processos.
Modo de ocorrncia:
Ao receber um sinal, o processo interrompe sua execuo;
Trata o sinal, ou o kernel atua com uma ao padro (diferente para cada sinal);
Aps o tratamento do sinal, o processo retoma sua execuo ou finalizado.
A seguir, so apresentados os principais sinais utilizados para manipulao de processos:

SIGSTOP
Interrompe a execuo do processo. O processo passa para o estado de bloqueado (stopped).
O interpretador de comandos envia esse sinal ao processo executado em foreground quando
o usurio pressiona as teclas Ctrl+Z.

SIGCONT
Retoma a execuo de um processo bloqueado. O processo retorna para o estado de pronto
(runnable).

SIGHUP
geralmente utilizado para fazer o processo reler um arquivo de configurao. Esse sinal
permite a reconfigurao de servios sem a necessidade de reinici-los.

SIGTERM
Pode ser tratado ou ignorado. O processo programado para tratar este sinal termina
voluntariamente, salvando dados relevantes mantidos em memria.

SIGKILL
No pode ser tratado nem ignorado pelo processo. O kernel termina o processo de forma
abrupta, e por isso os dados do processo mantidos na memria so perdidos.
O Linux possui 63 tipos de sinais que podem ser enviados para os processos. Os
apresentados na tabela 3.1 so os mais utilizados. Para obter maiores detalhes sobre sinais, o
administrador pode acessar a pgina de manual do comando kill.

Administrao de Sistemas Linux


62

Sinal

Numerao

SIGHUP

SIGKILL

SIGTERM

15

SIGCONT

18

SIGSTOP

19

Tabela 3.1 - Principais sinais utilizados na comunicao entre processos


Uso de sinais:
Comando kill:
Envia sinais para processos utilizando seu PID como parmetro.
Comando pkill:
Envia sinais para processos utilizando seu nome como parmetro.

Monitoramento de processos
O comando ps pode ser utilizado para identificar os processos que esto sendo executados no
sistema em um determinado momento e uma das principais ferramentas que um
administrador de sistemas possui para monitorar processos no Linux. Ele pode ser utilizado
para mostrar diversas informaes a respeito dos processos em execuo como PID, UID
associado, prioridade, terminal de controle, percentual de memria e de CPU utilizados,
status atual, etc. Entender a sada do comando ps uma habilidade importante que o
administrador precisa desenvolver. Olhando para a sada desse comando, voc pode
determinar, entre outras coisas, os processos que esto rodando no seu sistema, o percentual
de CPU e de memria que eles esto utilizando e a qual usurio cada processo pertence.
O comando ps possui diversas opes de uso, cada uma delas exibindo suas informaes
correspondentes a respeito dos processos em execuo. Este comando pode ser uma
importante ferramenta para diagnosticar problemas no sistema. Suponha, por exemplo, que
voc percebe que o sistema est lento e ao rodar o comando ps, ele mostra que dezenas de
processos sshd esto rodando, mas voc verifica que no h ningum logado neste servidor
via SSH. Nesse caso, possvel deduzir que o daemon do SSH no est funcionando
corretamente, portanto, recomendvel que tais processos sejam encerrados. A figura 3.6
exibe a sada do comando ps, utilizado com as opes aux, que possuem as seguintes
funcionalidades: a opo a exibe todos os processos, com exceo dos processos no
associados a um terminal; a opo u exibe o nome do usurio que iniciou os processos e a
opo x exibe todos os processos que no so controlados por um terminal.

Administrao de Sistemas Linux


63

Figura 3.6 - Sada do comando ps


Comando ps:
Lista os processos que esto sendo executados no sistema:
PID, UID, prioridade, terminal de controle, tempo de CPU, memria utilizada, etc.
Apresenta uma fotografia dos processos que esto rodando no sistema em um
determinado momento.
Programa top:
Apresenta um relatrio atualizado dinamicamente dos processos em execuo no
sistema;
Exibe uma lista dos processos ativos e dos recursos utilizados;
Taxa de amostragem - Por padro, a cada cinco segundos.
Programa pstree:
Exibe os processos em execuo em forma de rvore hierrquica.
O comando ps apresenta uma fotografia dos processos que esto rodando no sistema em um
determinado momento e isso pode dificultar o diagnstico de uma situao de mau
funcionamento do sistema, causado por um processo que esteja, por exemplo,
monopolizando o uso da CPU. Um programa que pode ser utilizado nesses casos o top, que
apresenta um resumo atualizado regularmente, dos processos ativos e dos recursos
utilizados por estes. Inicialmente, o top era disponibilizado como um pacote parte. No

Administrao de Sistemas Linux


64

entanto, mostrou-se uma ferramenta to eficaz que passou a ser incorporado s distribuies
Linux. Veja maiores detalhes sobre esses comandos, consultando suas pginas de manual.
Outro comando utilizado para visualizar e monitorar processos o pstree. Este comando
exibe os processos que esto sendo executados em um determinado momento, utilizando um
formato de rvore hierrquica.

Execuo peridica de tarefas


Existem algumas atividades que o administrador do sistema ou um usurio convencional
realizam periodicamente. Por exemplo, considere uma escola em que os alunos fazem
atividades escolares dirias nos computadores. O administrador de sistemas precisa,
frequentemente, remover arquivos desnecessrios criados pelos alunos. No entanto, cumprir
essa tarefa diariamente em diversos computadores bastante cansativo. Utilizando a
execuo peridica de tarefas, o administrador pode configurar os sistemas para,
automaticamente, executarem uma determinada tarefa todos os dias noite, que remova os
arquivos desnecessrios. Assim, o sistema de execuo peridica de tarefas uma poderosa
ferramenta utilizada para automatizar diversas atividades administrativas, como remoo de
arquivos em disco, verificao de e-mails, realizao de backup, testes de conectividade, etc.

Cron
O Linux implementa um servio de execuo peridica de processos suportado pelo daemon
cron. Esse daemon, geralmente, iniciado no boot do sistema e permanece rodando enquanto
o sistema estiver no ar. O cron l um ou mais arquivos, denominados crontabs, que contm
uma ou mais linhas de comando e os tempos nos quais eles devem ser executados, no caso
dos crontabs de usurios. Nos crontabs do sistema os nomes dos usurios sob os quais esses
comandos devem ser executados tambm devem ser especificados. As linhas de comando so
executadas pelo interpretador de comandos sh. Desse modo, qualquer coisa que feita na
linha de comandos tambm pode ser efetuada atravs do cron.
Utilizando o comando crontab o usurio pode criar, modificar ou remover a lista de
comandos que sero periodicamente ativados pelo daemon cron. Cada usurio pode ter seu
prprio arquivo de crontab. A cada minuto, o daemon cron avalia esses arquivos no diretrio
/var/spool/cron/crontabs, para identificar tarefas dos usurios a serem executadas. Alm
disso, tambm verifica o arquivo /etc/crontab e os arquivos do diretrio /etc/cron.d, que
possuem tarefas do sistema e das aplicaes. Os arquivos de crontab dos usurios somente
devem ser manipulados por intermdio do comando crontab. Em alguns sistemas, o
administrador pode controlar os usurios que tm permisso para criar atividades
peridicas utilizando o crontab. Para isso, basta inserir, nos arquivos /etc/cron.allow e
/etc/cron.deny os usurios permitidos e os proibidos de utilizarem o crontab,
respectivamente. Caso esses arquivos no existam, qualquer usurio poder utilizar o cron
para agendar tarefas.

Administrao de Sistemas Linux


65

Comando crontab:
Executa tarefas de modo automtico em horrios pr-determinados;
Pode ser utilizado por todos os usurios.
Automao de tarefas:
Remoo de arquivos temporrios em discos;
Realizao de backups;
Ativao de servios.

Exemplos de uso do crontab


O crontab tem um formato caracterstico que deve ser utilizado em todas as suas linhas. Esse
formato apresentado a seguir.
minuto hora dia ms dia_da_semana usurio comando
A seguinte especificao de tempo: 15,45 14 * * 1-5, significa s 2:15 e s 2:45 da tarde, de
segunda a sexta-feira. Veja, a seguir, o exemplo de um arquivo de crontab que informa ao
usurio, todas as sextas-feiras, s 17:00 horas, que chegou o fim de semana:
00 17 * * 5 echo Enviado em `date` | mail -s E-mail enviado pelo
cron aluno1@localhost
Note que, neste arquivo existe apenas uma tarefa a ser executada. Os campos preenchidos
com o caractere * representam todos os valores vlidos.
Muitos programas criam arquivos temporrios nos diretrios /tmp ou /var/tmp, que no so
apagados por alguma razo e alguns programas, especialmente os editores de texto,
costumam fazer cpias de backup de cada arquivo trabalhado nesses diretrios. A soluo
criar uma entrada no crontab para remover, todos os dias uma hora da manh, por
exemplo, todos os arquivos desses diretrios que no tenham sido modificados h mais de
72 horas. A entrada ficaria da seguinte forma:
00 01 * * * find /tmp /var/tmp ! name . mtime +3 exec /bin/rm rf
{} ;

Formato do crontab
A tabela 3.2 mostra a sintaxe utilizada nos campos do crontab. No campo dia da semana os
valores 0 e 7 representam domingo, o valor 1 representa segunda-feira, e assim por diante,
at sbado, que representado pelo valor 6.
Campo

Descrio

Faixa

Minuto

Minuto da hora

0 a 59

Hora

Hora do dia

0 a 23

Dia

Dia do ms

1 a 31

Administrao de Sistemas Linux


66

Campo

Descrio

Faixa

Ms

Ms do ano

1 a 12

Dia da semana

Dia da semana

0a7

Tabela 3.2 - Sintaxe do crontab


Crontab:
Formato:
minuto hora dia ms dia_da_semana usurio comando

Anacron
Em situaes onde um servidor fique desligado por um perodo de tempo, seja por falta de
energia ou por qualquer outro motivo, as tarefas agendadas pelo cron para serem executadas
durante este perodo, no sero executadas quando o servidor for ligado. Para solucionar
este problema, foi criado o programa anacron, que verifica quais tarefas no foram
executadas pelo cron durante o perodo de tempo em que o servidor ficou desligado e em
seguida as executa.
Ao contrrio do cron, que executado como um daemon, o anacron executado como um
processo comum e aps sua execuo, encerrado. Portanto, interessante automatizar sua
execuo atravs de um script a ser executado durante a inicializao do sistema ou atravs
de uma tarefa do cron. O anacron tambm pode ser utilizado para executar tarefas, mas em
servidores esta funo deve ser feita pelo cron, que mais completo e oferece mais opes de
configurao. A execuo de tarefas pelo anacron no ser abordada por no fazer parte do
escopo deste curso.

Fcron
O fcron tambm um daemon que foi criado para executar tarefas de modo automtico e
peridico, com a vantagem de unir as caractersticas do cron e do anacron e um s programa.
Alm disso, suas opes de configurao so mais flexveis e resolvem alguns problemas e
limitaes do cron. A seguir, so listadas algumas opes que podem ser utilizadas somente
com o fcron, no estando disponveis no cron.
Permite definir um valor mximo de carga do sistema como critrio para executar uma
tarefa;
Permite definir o nice value de uma tarefa que ser executada;
Executa tarefas que no foram executadas enquanto o sistema esteve desligado;
Possibilita o envio de e-mail aos usurios, informando o motivo de uma tarefa no ter
sido executada.

Administrao de Sistemas Linux


67

Existem diversas opes alm dessas apresentadas, que tornam o fcron uma alternativa
bastante interessante ao cron. O fcron no vem instalado por padro nas distribuies Linux
e seu uso, configuraes e funcionamento no sero abordados neste curso. O administrador
pode consultar suas pginas de manual se optar por utiliz-lo no lugar do cron.

Anacron:
Permite executar tarefas que no foram executadas pelo cron durante o tempo em que
um servidor ficou desligado;
Pode ser iniciado no boot ou atravs do cron;
No executado como um daemon e sim como um processo normal.
Fcron:
Possui as funcionalidades do cron e do anacron, resolvendo problemas de
indisponibilidade dos servidores;
Possui opes de configuraes mais flexveis, resolvendo algumas limitaes do cron.

Administrao de Sistemas Linux


68

4
Sistema de arquivos
Sumrio
Diferenciar os conceitos de diretrio, discos e parties.
Conhecer a estrutura de diretrios tpica do Linux.
Saber particionar um disco e conhecer as vantagens do particionamento.
Entender o conceito de sistema de arquivos no Linux.
Conhecer a estrutura do arquivo /etc/fstab e sua importncia para o sistema.
Saber utilizar comandos de criao de sistemas de arquivos
Saber utilizar os comandos de montagem e desmontagem de parties.
Saber quais so os principais tipos de sistemas de arquivos reconhecidos pelo Linux.
Entender a importncia e saber como utilizar os comandos mkfs, fsck, mount, umount, du e
df.
Saber como habilitar e configurar o esquema de quotas.
Editar os limites de quotas para os usurios.
Sistema de arquivos:
Estrutura dos discos;
Sistema de arquivos;
Sistema de quotas.

Estrutura dos discos


Todos os diretrios no Linux aparecem abaixo do diretrio raiz, representado pelo caractere
/, que o nvel mais alto da rvore de diretrios. O diretrio raiz possui arquivos e
subdiretrios, que, por sua vez, possuem seus arquivos e subdiretrios, e assim
sucessivamente. Por exemplo, o caminho /usr/bin/man indica que o arquivo man est
localizado dentro do diretrio bin, que est localizado dentro do diretrio usr, que est
localizado no diretrio /. Assim como no Windows, a estrutura de arquivos e diretrios no
Linux pode ser representada por uma rvore hierrquica. Porm, enquanto as parties de
disco no Windows so visualizadas como unidades de disco independentes, com rvores de
diretrios distintas, as parties de disco no Linux so logicamente integradas para compor
uma rvore de diretrios nica. Nessa rvore, cada partio compe uma subrvore, cuja raiz
Administrao de Sistemas Linux
69

o seu ponto de montagem (mount point), que definido pelo administrador. Assim, o
conjunto de subrvores contidas nas parties compe a rvore de diretrios do Linux.
necessrio ter, no mnimo, uma partio montada e esta deve obrigatoriamente apontar para
o diretrio raiz. Tambm possvel criar outras parties e mont-las como for mais
conveniente. Assim, se o administrador definir que o ponto de montagem de uma
determinada partio o diretrio /home, ento toda a subrvore armazenada nessa
partio ser acessada a partir do diretrio /home. A figura 4.1 mostra um esquema
hipottico de organizao de diretrios. Os retngulos representam diretrios e as reas
sombreadas representam as diferentes parties dos discos. Note que a estrutura faz uso de
dois discos e trs parties. Os pontos de montagem so /usr/src para a partio 2 do disco 1
e /home para a partio 1 do disco 2. O segundo disco pode estar instalado no mesmo
servidor ou em algum servidor da rede, que prov o acesso partio remota utilizando o
protocolo NFS (Network File System).

Figura 4.1 - Estrutura de diretrios do Linux


Estrutura dos discos:
No Linux, cada disco dividido em uma ou mais parties;
Uma partio deve ser formatada com algum sistema de arquivos;
Parties so logicamente integradas para compor uma s rvore de diretrios;
Cada partio compe uma subrvore cuja raiz o seu ponto de montagem;
A estrutura de diretrios e arquivos uma rvore hierrquica;
O diretrio de mais alto nvel a raiz (/).
Os recursos do sistema de arquivos do Linux permitem que o administrador escolha a
implementao fsica e lgica mais adequada para a estrutura de arquivos, de forma
totalmente transparente para o usurio. O administrador tambm pode montar qualquer
partio diretamente sob o diretrio raiz, atribuindo-lhe o nome que melhor represente seu
contedo, como por exemplo /dados. O particionamento de discos extremamente
vantajoso. Em caso de falha em uma determinada partio, as demais parties no so
afetadas. Assim, caso acontea um problema fsico na partio que armazena os arquivos dos
Administrao de Sistemas Linux
70

usurios (/home), basta o administrador recuperar esta partio especfica e em seguida, se


necessrio, recuperar os arquivos do backup para restaurar o contedo dessa partio. Por
outro lado, caso o sistema possua uma nica partio, provavelmente o administrador ter
que reinstalar o sistema e recuperar todos os arquivos do backup. No Linux, um dos
comandos utilizados para o particionamento de um disco o fdisk. A tabela 4.1 mostra os
principais diretrios padro do Linux.
/boot

Arquivos de inicializao do sistema e imagem do kernel

/bin

Utilitrios do sistema

/sbin

Ferramentas de administrao

/usr

Utilitrios e ferramentas de administrao adicionais

/etc

Arquivos de configurao de servios

/dev

Arquivos de dispositivos do sistema

/lib

Bibliotecas de funes compartilhadas

/home

Diretrio de trabalho dos usurios

/var

Logs do sistema, e-mails dos usurios, etc.

/tmp

Arquivos temporrios

/root

Diretrio de trabalho do usurio root

/proc

Diretrio virtual que representa as estruturas de dados do kernel

Tabela 4.1 - Diretrios padro do sistema

Particionamento:
O particionamento e a estrutura de diretrios so definidos durante a instalao do
sistema;
Vantagens do particionamento de disco:
Isolamento de falhas;
Maior facilidade para execuo de backups;
Ganho de performance no acesso aos dados.
Comando fdisk:
Utilizado para particionar um disco.

Administrao de Sistemas Linux


71

Tipos de partio
Existem trs tipos de partio que sero vistos a seguir:
Partio primria - o principal tipo de partio e contm algum tipo de sistema de
arquivos associado. Em um disco deve haver no mnimo uma e no mximo quatro
parties primrias. Caso existam quatro parties primrias em um disco, este no
poder conter mais nenhum outro tipo de partio. Uma das parties primrias deve ser
marcada como inicializvel para que o sistema operacional possa ser carregado. No Linux
as parties primrias so identificadas em um disco IDE, por exemplo, como hda1, hda2,
hda3 e hda4.
Partio estendida - um tipo especial de partio que no pode conter sistemas de
arquivos, mas contm at doze parties lgicas. Um disco pode conter somente uma
partio estendida. importante ressaltar que em um disco que contenha uma partio
estendida, s podero existir trs parties primrias. Ou seja, este tipo de partio ocupa
o lugar de uma partio primria no disco. No Linux a partio estendida pode ser
identificada em um disco IDE, por exemplo, como hda1, hda2, hda3 ou hda4.
Partio lgica - Tambm conhecidas como unidades lgicas, este tipo de partio fica
localizado dentro da partio estendida e deve conter algum sistema de arquivos. No
Linux as parties lgicas so identificadas em um disco IDE, por exemplo, de hda5 at
hda16.

Sistema de arquivos
O sistema de arquivos ou filesystem representa a organizao lgica de uma partio, que
define como os arquivos so armazenados e acessados nos blocos de disco. Assim, para
manipular os dados de um determinado tipo de sistema de arquivos, o sistema operacional
deve suportar a organizao lgica desse sistema de arquivos.
Uma das principais caractersticas do Linux o suporte a diferentes tipos de sistemas de
arquivos o que permite ao administrador configur-lo para acessar dados em servidores
executando outros tipos de sistemas operacionais. Complementado pelo servio NFS
(Network File System), o Linux suporta a montagem de diretrios disponveis remotamente
em outros servidores Linux atravs da rede.
Sistema de arquivos:
Abstrao utilizada pelo kernel para representar e organizar os recursos de
armazenamento do sistema (discos, unidades de CD-ROM, pen drives, etc.);
Composto por uma rvore hierarquia de diretrios, que tem como seu nvel mais alto
o diretrio / (raiz).
Para suportar os vrios tipos de sistemas de arquivos, o Linux agrega a cada tipo um mdulo
de software responsvel por traduzir seus formatos para um formato nico denominado VFS
(Virtual File System). Assim, o administrador pode utilizar o comando mount para montar
diversos tipos de sistemas de arquivos simultaneamente, criando a rvore de diretrios
nica do Linux. As informaes que descrevem as parties, seus tipos de sistemas de
Administrao de Sistemas Linux
72

arquivos e seus pontos de montagem, so armazenadas no arquivo /etc/fstab. Nesse arquivo,


cada partio descrita em uma linha que possui o seguinte formato:
Filesystem

Mountpoint

Type

Options

Dump Fsck

Os campos acima so descritos a seguir:


Filesystem Partio a ser montada. Em alguns sistemas, tambm chamado de device,
porque diz respeito a algum dispositivo referenciado por meio de um arquivo presente no
diretrio /dev;
Mountpoint Ponto de montagem;
Type Tipo do sistema de arquivos a ser montado;
Options Lista de atributos funcionais (por exemplo: o atributo rw, significa que o
sistema de arquivos deve ser montado para leitura e escrita);
Dump Define se o comando dump deve considerar (valor 1) ou no (valor 0) a partio
para a realizao de backups;
Fsck Indica a ordem de prioridade na qual a partio ser verificada pelo comando fsck
a partir da inicializao do sistema. O nmero 1 representa a maior prioridade e medida
que este nmero aumenta de valor, a prioridade diminui. O nmero 0 indica que a
partio no deve ser verificada.
Na inicializao do sistema, cada linha desse arquivo processada para montar as parties,
compondo assim a estrutura de diretrios do sistema. Cada dispositivo no Linux
reconhecido por um nome. Discos IDE por exemplo, so nomeados da seguinte maneira:
/dev/hda Unidade de disco master da primeira controladora IDE
/dev/hdb Unidade de disco slave da primeira controladora IDE
/dev/hdc Unidade de disco master da segunda controladora IDE
/dev/hdd Unidade de disco slave da segunda controladora IDE
Dispositivos SCSI (Small Computer System Interface), SATA (Serial Attachment Technology
Advanced) e pen drives so denominados sda, sdb, sdc etc. As unidades de disco flexvel e CDROM so denominadas /dev/fd0 e /dev/cdrom, respectivamente. As parties dos discos so
tambm identificadas por um nome de partio, formado pelo nome do disco seguido de um
nmero inteiro. Por exemplo, as parties do disco IDE master conectado na primeira
controladora so denominadas /dev/hda1, /dev/hda2, etc. Veja a seguir um exemplo de
arquivo fstab.
#Filesystem
/dev/hda1
/dev/hda2
/dev/hdc
/dev/hdb
/dev/sda1

Mountpoint
/
/usr
none
/home
/dosc

Type
ext2
ext2
swap
ext2
msdos

Options
rw
rw
rw
rw
defaults

Dump
1
1
0
1

Fsck
1
2
0
1

Administrao de Sistemas Linux


73

Algumas distribuies mais recentes do Linux, como o CentOS e o Ubuntu, apresentam uma
ligeira mudana no arquivo /etc/fstab. No campo Filesystem, o nome de dispositivo que
referencia a partio substitudo por um label ou pelo UUID (Universally Unique Identifier)
do hardware. Esse novo padro foi adotado por conta de mdias de armazenamento
removveis, que podem ser associados a diferentes nomes de dispositivos quando so
conectadas ao sistema. Sendo assim, no temos como referenciar no arquivo /etc/fstab um
pen drive, por exemplo, pelo mesmo nome de dispositivo sempre, o que impossibilita sua
montagem automtica. Para evitar esse tipo de problema, algumas distribuies utilizam a
notao de labels ou UUIDs. Para verificarmos o label (quando disponvel) e o UUID de um
dispositivo, devemos conect-lo ao computador e em seguida verificar a qual dispositivo ele
foi associado. Basta ento executar o comando blkid como mostra o exemplo abaixo.
# blkid /dev/sdb1
/dev/sdb1: UUID=FABC69BDBC697553 TYPE=nrfs
Manteremos a nomenclatura que referencia as parties por seus nomes de dispositivo, por
ser didaticamente mais interessante. Para obter mais informaes sobre labels, consulte a
pgina de manual do comando e2label. A figura a 4.2 mostra um exemplo de arquivo
/etc/fstab que utiliza labels para identificar as parties.

Figura 4.2 - Arquivo /etc/fstab

Comandos
H uma srie de comandos que so utilizados para trabalhar com sistemas de arquivos. Entre
eles podemos destacar os seguintes:

mkfs
O comando mkfs cria em uma partio de um disco, a estrutura lgica correspondente ao
sistema de arquivos especificado na linha de comando. O nome da partio tambm deve ser
especificado como parmetro para o comando mkfs.

Administrao de Sistemas Linux


74

fsck
Uma vez que, para aumento de desempenho, o kernel costuma armazenar blocos de dados
que deveriam ser salvos em disco, na memria do sistema, a imagem mais recente do sistema
de arquivos encontra-se dividida entre o disco e a memria. Assim, caso haja falha de
energia, pequenas inconsistncias podem ser introduzidas no sistema de arquivos, uma vez
que informaes armazenadas na memria no puderam ser salvas no disco.
O comando fsck (file system consistency check) analisa um filesystem procura de erros e caso
encontre algum, tenta corrigi-lo. O nome da partio deve ser informado como parmetro
para o comando fsck. Na inicializao do sistema, as parties marcadas para serem
verificadas no arquivo /etc/fstab, podem ser checadas automaticamente pelo comando fsck,
que examina e corrige eventuais erros. Os sistemas de arquivos so verificados obedecendo
ordem numrica crescente indicada no campo Fsck do arquivo /etc/fstab. Se dois sistemas de
arquivos esto localizados em diferentes discos, pode ser fornecido a eles um mesmo
nmero de sequncia, que far com que o fsck verifique os dois simultaneamente. A partio
raiz deve sempre ser checada antes de qualquer outra. Os erros mais comuns encontrados
em sistema de arquivos corrompidos so:
Inodes no referenciados;
Link counts inexplicavelmente grandes;
Blocos de dados no utilizados no registrados nos mapas de blocos;
Blocos de dados registrados como livres, mas que esto sendo utilizados por algum
arquivo;
Informao de resumo incorreta no superbloco.
Erros que no se enquadram em uma das cinco categorias listadas acima so potencialmente
perigosos. Na sua deteco, o fsck entra no modo interativo e solicita ao administrador que
confirme cada um dos reparos que ele executa. Nesse caso, so grandes as chances de perda
de dados importantes do sistema. Alguns erros graves so listados abaixo:
Blocos reclamados por mais de um arquivo;
Blocos reclamados por um arquivo, mas que esto fora do sistema de arquivos;
Link counts muito pequenos;
Blocos no contabilizados;
Diretrios referentes a inodes no alocados;
Vrios erros de formato.
Infelizmente, impossvel reparar um disco sem ter o conhecimento profundo do modo
como o sistema de arquivos implementado. No h, portanto, muito a fazer a no ser
aceitar os reparos sugeridos pelo fsck. possvel tentar minimizar os problemas, registrando
as mensagens exibidas pelo comando, uma vez que elas costumam indicar os arquivos
problemticos detectados. Se o fsck pede permisso para remover um arquivo, preciso
Administrao de Sistemas Linux
75

tentar copi-lo para outra partio, antes de permitir a sua remoo. Deve-se estar atento
para o fato de que, ao tentar acessar um arquivo danificado, corre-se o risco de travar o
sistema.
Comando mkfs:
Cria, em uma partio de um disco, a estrutura lgica correspondente ao sistema de
arquivos a ser utilizado.
Comando fsck:
Verifica a consistncia e repara possveis erros em um sistema de arquivos;
Pode ser rodado automaticamente na inicializao do sistema.

mount
O comando mount utilizado para montar uma partio, que pode conter qualquer tipo de
sistema de arquivos suportado pelo Linux. A princpio, a partio pode ser montada em
qualquer ponto da rvore de diretrios, desde que no utilize nenhum nome de diretrio
existente e respeite o esquema de permisses de arquivos e diretrios do Linux.

umount
O comando umount, utilizado para desmontar uma partio que tenha sido anteriormente
montada. Quando uma partio desmontada, sua subrvore de diretrios passa a no mais
fazer parte da rvore de diretrios principal. importante ressaltar que uma partio s
pode ser desmontada se no possuir nenhum recurso sendo utilizado pelo sistema. Para
obter maiores informaes sobre esses comandos, suas pginas de manual podem ser
consultadas.
Comando mount:
Monta uma partio.
Comando umount:
Desmonta uma partio.

du e df
Para verificar a taxa de ocupao dos diretrios e parties, o administrador pode utilizar os
comandos du e df. O primeiro percorre a rvore do diretrio especificado e identifica o
espao ocupado pelos seus arquivos e subdiretrios. O segundo fornece informaes sobre o
espao livre e o espao utilizado nas parties. O comando df tambm pode mostrar a taxa de
utilizao de inodes por partio. Para obter maiores informaes sobre esses comandos,
suas pginas de manual podem ser consultadas. Os exemplos a seguir mostram as sadas dos
comandos df e du, respectivamente.
# df -h
Filesystem
/dev/sda1

Size
32G

Administrao de Sistemas Linux


76

Used Avail Use% Mounted on


9.4G
21G 32% /

# df -i
Filesystem
/dev/sda1

Inodes
2039808

IUsed
IFree IUse% Mounted on
181908 1857900
9% /

# du -hcs /var/*
4.0K
/var/backups
48M
/var/cache
4.0K
/var/crash
81M
/var/lib
4.0K
/var/local
0
/var/lock
3.9M
/var/log
4.0K
/var/mail
4.0K
/var/opt
36K
/var/run
28K
/var/spool
4.0K
/var/tmp
132M
total
Comando du:
Mostra o tamanho de arquivos e diretrios;
til para verificao dos maiores utilizadores de espao em disco.
Comando df :
Lista o uso de espao em disco de cada partio;
Exemplo:
# df -k

Tipos de sistemas de arquivos suportados


A tabela 4.2 mostra os principais tipos de sistemas de arquivos suportados pelo Linux.
Sistema de Arquivos

Descrio

ext2, ext3 e ext4

Sistemas de arquivos padro utilizados no Linux, sendo a verso


atual o ext4. A partir da verso ext3, j possui suporte a
journaling. O journaling mantm um registro de todas as
alteraes realizadas no sistema de arquivos, o que facilita a
recuperao deste em situaes onde o mesmo no foi
desmontado corretamente, causando inconsistncias de dados.

Minix

Primeiro sistema de arquivos do Linux. Foi desenvolvido por


Andrew Tanenbaum.

Administrao de Sistemas Linux


77

Sistema de Arquivos

Descrio

msdos, vfat e ntfs

Sistemas de arquivos que permitem integrao com MS-DOS e


Windows. Atualmente disponvel apenas para leitura.

ISO 9660

Sistema de arquivos padro utilizado em CDs e DVDs.

proc

Sistema virtual de arquivos do Linux. No ocupa espao no


disco, pois os arquivos so criados instantaneamente quando
acessados. Serve para prover informaes sobre a configurao
do kernel, ou at mesmo sobre o estado dos dispositivos.

nfs

Sistema de arquivos utilizado para acessar arquivos


armazenados remotamente em redes baseadas em sistemas
Unix.

ufs

Sistema de arquivos utilizado para acessar arquivos


armazenados em sistemas BSD.

smbfs

Sistema de arquivos utilizado para montar compartilhamentos


do Windows.

ReiserFS

Primeiro sistema de arquivos com suporte a journaling utilizado


no Linux.

xfs

Sistema de arquivos com suporte a journaling desenvolvido pela


Silicon Graphics.

swap

Sistema de arquivos utilizado para troca e dados entre a


memria e o disco.

Tabela 4.2 - Tipos de sistemas de arquivos suportados

Sistema de quotas
O sistema de quotas empregado para limitar o consumo de espao em disco pelos usurios.
Este recurso especialmente til em sistemas multiusurios, nos quais necessrio
administrar a ocupao do espao em disco por cada um dos usurios, para evitar que eles
utilizem todo o espao existente, prejudicando o funcionamento geral do sistema. Existem
dois tipos de limitaes que podem ser impostas: nmero mximo de arquivos (inodes) e
espao mximo utilizado em disco (blocos de disco). A seguir, so listadas as quatro verses
de quotas que podem ser habilitadas em um sistema Linux.
Verso 1 ou vfsold - Esta foi a primeira verso do sistema de quotas do Linux. Esta verso
mais utilizada em kernels da srie 2.4 ou anteriores.
Verso 2 ou vfsv0 - Este a verso atual do sistema de quotas do Linux. Esta verso possui
melhor desempenho, especialmente em parties de grande tamanho. O contedo dessa
sesso ser baseado na verso 2 ou vfsv0.
Administrao de Sistemas Linux
78

RPC - Este tipo de verso utilizado somente em parties que possuem


compartilhamento de arquivos atravs da rede, utilizando o protocolo NFS (Network File
System).
XFS - Este tipo de verso utilizado somente em sistemas de arquivos XFS.
Sistema de quotas:
Administra o uso de espao em disco pelos usurios;
Como preparar o sistema;
Como habilitar o uso de quotas;
Como editar as quotas dos usurios;
Como checar as quotas dos usurios.
A configurao do sistema de quotas pode ser realizada utilizando comandos especficos do
Linux ou alguma ferramenta grfica como o Webmin, que ser visto na sesso de
aprendizagem 10. Nessa sesso, veremos como configurar o sistema de quotas utilizando a
linha de comandos.

Preparando o sistema
As verses 2.4 e 2.6 do kernel j suportam nativamente o sistema de quota, mas nas verses
mais antigas o kernel deve estar configurado corretamente para suportar o sistema de
quotas. Na sesso de aprendizagem 8 sero apresentados os mtodos para configurar e
recompilar o kernel caso seja necessrio. Levando em conta que ser utilizada uma verso de
sistema com kernel 2.6, no ser necessria a sua recompilao. Alm do suporte no kernel, o
pacote quota deve estar instalado no sistema operacional.
Preparando o sistema:
O kernel deve estar configurado.
Padro nas verses 2.4 e 2.6.
O pacote quota deve estar instalado.

Habilitando
No Linux, a habilitao do sistema de quotas deve ser realizada durante a inicializao do
sistema e pode ser includa no script /etc/rc.local. Esse script ativa os comandos que
habilitam o sistema de quotas. Dessa forma, sempre que o sistema for inicializado, as quotas
sero habilitadas. importante ressaltar que o sistema de quotas deve ser habilitado aps a
montagem das parties definidas no arquivo /etc/fstab. recomendvel habilitar o sistema
de quotas ao final do arquivo /etc/rc.local, ou imediatamente aps a montagem de todas as
parties.
Uma vez configurada a habilitao do sistema de quotas, preciso informar em quais
parties ele deve ser ativado. Essas parties so indicadas no arquivo /etc/fstab, que
Administrao de Sistemas Linux
79

tambm guarda informaes sobre a montagem das parties. Alm de indicar que o
controle de quotas est ativo na partio, igualmente necessrio informar se o controle
ser realizado por usurio, por grupo, ou por ambos. Deve ser ressaltado que o controle de
quotas feito por partio, e no por diretrio. Como visto anteriormente, o arquivo
/etc/fstab semelhante a uma tabela, em que cada linha descreve uma partio e cada coluna
representa um campo com caractersticas da partio. A configurao do sistema de quotas
realizada no campo Options. Para cada partio em que o sistema de quotas for ativado, o
administrador deve criar, na raiz dessas parties, arquivos vazios com os seguintes nomes:
aquota.user e aquota.group. Esses arquivos so utilizados pelo sistema de quotas para
manter os limites de quotas dos usurios e dos grupos na partio e para garantir a
utilizao corrente da partio por esses usurios e grupos. Esses arquivos devem ter
permisso de leitura e escrita apenas para o usurio root. Para estabelecer um sistema de
quotas na partio / do sistema, por exemplo, o administrador deve fazer as alteraes
necessrias no arquivo /etc/fstab e executar a sequncia de comandos abaixo:
#
#
#
#

touch
touch
chmod
chmod

/aquota.user
/aquota.group
600 /aquota.user
600 /aquota.group

Esses comandos criam arquivos de quotas vazios.


Habilitando:
/etc/rc.local;
/etc/fstab;
Informar se o controle ser por usurios (usrquota), por grupos (grpquota) ou ambos;
Controle realizado por partio;
A configurao deve ser feita no campo Options;
Filesystem do tipo ext2 ou ext3.

Inicializando
Aps a criao dos arquivos aquota.user e aquota.group, todas as parties com quota
habilitada devem ser desmontadas e montadas novamente, para que as alteraes entrem
em vigor. Se for habilitado o sistema de quotas na partio raiz, o sistema deve ser reiniciado,
j que esta partio no pode ser desmontada com o sistema em uso. Em seguida, o
administrador deve utilizar o comando quotacheck com a opo -a para inicializar os
arquivos de controle de quotas criados acima, com a situao corrente de utilizao das
parties. Se for utilizado com as opes -augv, cria ambos os arquivos e inicializa-os com os
dados atuais de uso de disco por usurio e grupo. Para finalizar o processo, o comando
quotaon deve ser executado com as opes -augv para ativar o suporte a quota de disco em
todas as parties.
Inicializando:
Criao dos arquivos aquota.user e aquota.group na raiz da partio /home:
# touch /home/aquota.user
Administrao de Sistemas Linux
80

# touch /home/aquota.group
# chmod 600 /home/aquota.user
# chmod 600 /home/aquota.group
Desmontar e montar todas as parties com quota habilitada;
Reiniciar o sistema se for habilitada quota na partio raiz.

Inserir no arquivo /etc/rc.local:


Comando quotacheck:
Inicializa os arquivos aquota.user e aquota.group.
# quotacheck -auvg
Comando quotaon:
Ativa o suporte a quota de disco.
# quotaon -augv

Editando quotas
Uma vez que o sistema de arquivos foi configurado para suportar quotas, necessrio definir
os limites de uso para usurios e grupos do sistema. Os limites de quotas so especificados
por dois parmetros: soft e hard.
O limite soft pode ser ultrapassado por um determinado intervalo de tempo (grace period). J
o limite hard nunca pode ser ultrapassado. Esses limites so definidos para o nmero de
inodes e para o nmero de blocos que o usurio ou grupo pode alocar. Sempre que a
utilizao de espao em disco do usurio ultrapassa o limite soft, o sistema envia uma
notificao ao usurio, indicando que esse limite foi ultrapassado. A partir desse momento, o
sistema de quotas permite que o usurio permanea acima do limite soft apenas durante o
grace period. Se esse perodo for esgotado e o usurio ainda estiver acima do limite soft, o
sistema bloqueia qualquer operao de escrita em disco do usurio, at que este remova
parte dos arquivos e passe a ocupar um espao abaixo do limite soft. Durante o grace period,
se o usurio atingir o limite hard, imediatamente o sistema bloquear qualquer operao de
escrita em disco do usurio, at que este remova arquivos e passe a ocupar menos espao
que o limite soft.
O comando warnquota pode ser utilizado para alertar os usurios que tenham ultrapassado
seus soft limits. Este comando analisa as quotas de todos os usurios, em todas as parties
com quota habilitada e envia por e-mail uma mensagem alertando os usurios que tiverem
ultrapassado seus soft limits. Para que este comando cumpra sua funo satisfatoriamente,
ele deve ser agendado no crontab do usurio root para ser executado periodicamente.
Comando edquota:
Edita as quotas de usurios e de grupos.
Comando warnquota:
Administrao de Sistemas Linux
81

Verifica as quotas de usurios em todas as parties com quota habilitada;


Envia por e-mail uma mensagem de alerta aos usurios que tenham ultrapassado seus
soft limits.
Para especificar os limites de quotas de disco para usurios e para grupos deve-se utilizar o
comando edquota. Esse comando ativa o editor vi para modificar os arquivos aquota.user ou
aquota.group. possvel utilizar outro editor, especificando-o na varivel de ambiente
EDITOR. Por exemplo, supondo que se deseja definir quotas de disco para o usurio aluno1,
deve-se ativar o comando edquota da seguinte forma:
# edquota -u aluno1
Esse comando ativa o editor vi e exibe a seguinte mensagem:
Quotas for user aluno1:
/dev/hda1: blocks in use: 12667, limits (soft = 0, hard = 0) inodes
in use: 1749, limits (soft = 0, hard = 0)
Nesse exemplo, os parmetros soft e hard esto com o valor 0, pois esses limites ainda no
foram definidos. Nesse ponto, o administrador modifica os valores dos limites soft e hard,
conforme planejado. Imediatamente aps salvar o arquivo, as quotas estabelecidas tornamse ativas. De forma anloga, a configurao para grupos pode ser realizada com o comando
edquota utilizando a opo -g e passando o nome do grupo como parmetro. Para editar o
grace period, utiliza-se o comando edquota com a opo -t:
# edquota -t
possvel facilitar a definio de quotas em um sistema, fazendo uso da opo -p do
comando edquota. Com essa opo pode-se definir as quotas de um usurio com base nas de
outro. Exemplificando, se quisermos definir as quotas dos usurios aluno2 e aluno3 de forma
igual s quotas do usurio aluno1, podemos utilizar o seguinte comando:
# edquota -p aluno1 aluno2 aluno3
Isso evita que o administrador tenha que editar os parmetros de quota para cada usurio e
facilita a definio de quotas para mltiplos usurios. Essa opo tambm pode ser utilizada
para definir quotas para grupos. Basta utiliz-la em conjunto com a opo g.
Comando edquota:
Utilizado para editar a quota de usurios e grupos.
Opes:
-u, -g, -t e -p
Exemplos:
# edquota -u aluno1

Mostra a quota do usurio aluno1.


# edquota -p aluno1 aluno2 aluno3

Copia as configuraes de quota do usurio aluno1 para os usurios aluno2 e


aluno3.

Administrao de Sistemas Linux


82

Verificao e gerenciamento
Para verificar as quotas estabelecidas para um determinado usurio deve ser utilizado o
comando quota. Esse comando informa o status das quotas para um determinado usurio
nas parties em que ele ultrapassou o limite estabelecido. A informao completa sobre as
quotas em todas as parties pode ser obtida adicionando a opo -v. Usurios podem,
individualmente, checar o seu status de quota, utilizando esse comando quando estiverem
trabalhando no sistema. Entretanto, apenas o administrador, por meio da conta root, pode
ver as quotas de outros usurios. O exemplo abaixo mostra as estatsticas de uso de espao
em disco e nmero de arquivos do usurio aluno1.
# quota -u 1001
Disk quotas for user aluno1 (uid 1001):
Filesystem blocks quota limit grace
/dev/sda2
876 100000 105000

files
83

quota
10000

limit
10500

grace

O comando repquota pode ser utilizado para exibir as quotas de usurios e grupos, separadas
por partio. So exibidas informaes como grace time e limites soft e hard para blocos e
inodes. O exemplo abaixo mostra o relatrio do uso de quotas por usurio, na partio
/dev/sda2.
# repquota -aug
*** Report for user quotas on device /dev/sda2
Block grace time: 7days; Inode grace time: 7days
Block limits
File limits
User
used
soft
hard grace
used soft hard grace
-------------------------------------------------------------------root
-15431
0
0
none
5318
0
0
none
aluno1 +5731 200500 300000
none
11245
0
0
Comando quota:
Utilizado para verificar as quotas de um usurio.
Comando repquota:
Utilizado para verificar as quotas de uma partio.

Administrao de Sistemas Linux


83

Administrao de Sistemas Linux


84

5
Backup
Sumrio
Conhecer os tipos de backup.
Conhecer os principais tipos de mdias utilizadas em backups.
Conhecer os principais comandos do Linux utilizados para fazer backup.
Conhecer os softwares Amanda e Bacula e saber como configur-los e utiliz-los para
fazer backup e restore de dados.
Conhecer os principais softwares comerciais de backup.
Entender o que uma poltica de backup e saber como defini-la.
Backup:
Introduo;
Tipos de backup;
Mdias de backup;
Comandos do sistema;
Softwares de backup;
Poltica de backup.

Introduo
Frequentemente, recebemos informaes sobre vrus devastadores e ataques de hackers, que
vivem ameaando a segurana dos sistemas. Na maioria das instituies, a informao
armazenada nos computadores vale mais do que os prprios equipamentos. Planejar e
executar uma eficiente poltica de backup dos dados , sem dvida, a melhor maneira para a
recuperao de acidentes e desastres; falhas dos usurios; problemas de hardware e de
software, constituindo uma das tarefas mais importantes de um administrador de sistemas. A
poltica de backup deve ser baseada, principalmente, na frequncia de modificao e na
importncia dos arquivos. Por exemplo, para um computador de uso pessoal, a frequncia de
backup mnima e considera apenas alguns arquivos do usurio. Por outro lado, um sistema
bancrio precisa manter diversas cpias dos arquivos de forma instantnea (utilizando
tcnicas de espelhamento de discos); fazer backup com frequncia (provavelmente vrias
vezes por dia) e, em complemento, manter cpias desses backups em localizaes fsicas
distintas. O Linux dispe de diversos mtodos que podem ser utilizados para a realizao de
backups. Esses mtodos vo desde comandos simples, como tar e cpio (includos na
Administrao de Sistemas Linux
85

instalao da maioria dos sistemas), at sofisticados pacotes comerciais. Um backup pode ser
to simples quanto copiar toda a rvore de diretrios em uma mdia de gravao, utilizando
o comando tar, ou to sofisticado quanto os complexos mecanismos utilizados pelos
softwares profissionais de backup.
Poltica de backup eficiente para combater:
Ao de vrus e outras ameaas;
Ataques de hackers;
Falhas de usurios;
Problemas de hardware e software.
Poltica de backup baseada na frequncia de modificao dos arquivos e em seu grau de
importncia;
Backups podem ser realizados por meio de comandos simples ou por meio de pacotes
sofisticados.

Tipos de backup
Existem trs tipos de backups que sero descritos a seguir:
Completo - No backup completo, todo o contedo copiado para a mdia de backup
utilizada. A vantagem deste tipo de backup que a recuperao dos dados mais rpida,
j que para recuperar um contedo perdido logo aps um backup completo, s preciso
termos em mos a mdia que foi utilizada para armazenar este backup. A principal
desvantagem do backup completo a grande quantidade de tempo gasto para realiz-lo.
Uma poltica de backup eficiente geralmente inicia um ciclo de backup com um backup
completo e prossegue com backups incrementais ou diferenciais de acordo com a
necessidade do administrador. Cada novo ciclo deve ser iniciado com um backup
completo.
Diferencial - No backup diferencial, somente os contedos modificados aps a realizao
do ltimo backup completo so copiados para a mdia de backup. Este tipo de backup
representa a diferena entre o estado atual e o ltimo backup completo. A recuperao de
dados neste caso um pouco mais demorada, j que para recuperar um contedo perdido
aps um backup diferencial, preciso recuperar o ltimo backup completo e o ltimo
backup diferencial. Mesmo que o arquivo tenha sido modificado aps o backup completo,
este necessrio no processo de recuperao dos dados.
Incremental - No backup incremental, somente os contedos modificados aps o ltimo
backup so copiados, independentemente se este foi completo, diferencial ou
incremental. Este tipo de backup representa a diferena entre o estado atual e o ltimo
backup realizado. A recuperao de dados neste caso pode ser bastante complexa, j que
pode haver diversas combinaes de tipos de backup realizados entre o backup
incremental que se deseja recuperar e o ltimo backup completo. Para restaurar um
backup incremental necessrio que estejam disponveis pelo menos as mdias utilizadas
no ltimo backup completo, no ltimo backup diferencial entre o backup completo e o
backup incremental que se deseja recuperar e todos os backups incrementais desde o
Administrao de Sistemas Linux
86

ltimo backup diferencial. Este um bom motivo para se evitar o uso deste tipo de
backup.
Tipos de backup:
Completo:
Todo o contedo armazenado;
Consome grande quantidade de tempo para ser realizado.
Diferencial:
S armazenado o contedo que foi alterado aps realizao do ltimo backup
completo;
Em um processo de recuperao de dados, a mdia com o ltimo backup completo
tambm necessria.
Incremental:
S armazenado o contedo que foi alterado aps realizao do ltimo backup,
independente de seu tipo;
Em um processo de recuperao de dados, vrias mdias podem ser requeridas.

Mdias de backup
O tipo de mdia em que se deve fazer o backup do sistema tambm importante. A escolha da
mdia deve levar em conta fatores que vo do volume de dados que se necessita armazenar
ao montante disponvel para esse tipo de investimento. Considerando que os sistemas de
computao esto sujeitos a uma infinidade de tipos de falhas, que podem danificar
diferentes partes do hardware de uma s vez, devemos ter como pressuposto que backups
precisam ser feitos em algum tipo de mdia removvel. Fazer o backup de um disco em outro
disco do mesmo computador, por exemplo, embora seja melhor do que no ter nenhum
backup, uma estratgia ineficaz contra defeitos na controladora. Fazer o backup em um
disco de outro computador poderia contornar esse tipo de problema. No entanto, isso no
evitaria problemas, caso um pico de energia danificasse os discos de ambos os servidores.
Existe uma grande variedade de mdias removveis nas quais os arquivos de backup podem
ser armazenados: fitas magnticas (DLT, LTO, etc.), discos pticos (CD, DVD e Blu-Ray), etc.
Alm disso, em alguns casos o uso de um storage pode ser recomendado. Faremos, a seguir,
algumas breves consideraes a respeito de cada um destes tipos de mdias.
Mdias de backup:
A escolha depende de alguns fatores:
Quantidade de dados a armazenar;
Confiabilidade e durao desejveis;
Quanto se pretende gastar.
indicado o uso de mdia removvel;
Vrios tipos de mdias podem ser utilizados:

Administrao de Sistemas Linux


87

Fitas magnticas (DAT, DLT, LTO);


Mdias pticas (CD, DVD e Blu-Ray);
Storage (DAS, NAS, SAN, iSCSI).

Fitas magnticas
As fitas magnticas so as mdias mais utilizadas para a realizao de backups. Suas
principais vantagens em relao aos outros tipos de mdia so: grande capacidade de
armazenamento, timo custo-benefcio e alto grau de confiabilidade. A seguir sero vistos os
principais tipos de fitas magnticas:

LTO (Linear Tape Open)


Tecnologia de formato aberto, desenvolvida em conjunto pela HP, IBM e Certance. Surgiu
como resposta s necessidades de armazenamento de um volume crescente de informaes
que contavam com solues complicadas, como o uso de mltiplas unidades de backup ou de
robs com vrias mdias, o que dificultava bastante a administrao do esquema de backup
de um sistema. As mdias LTO conseguem armazenar at 1,5 TB de informao de forma no
comprimida em uma nica fita, e possuem uma taxa de transferncia de dados de at 140
MB/s. Essa atualmente a melhor tecnologia de armazenamento em fita magntica e
amplamente utilizada.

DLT (Digital Linear Tape)


A tecnologia DLT foi desenvolvida pela DEC em 1984. Atualmente, dispositivos de backup
baseados nessa tecnologia so fabricados por diferentes empresas. As geraes mais
recentes desses dispositivos conseguem armazenar at 800 GB de informao de forma no
comprimida, a uma taxa de transmisso de 60 MB/s, podendo chegar a 1,6 TB e a 120 MB/s
de transmisso, se for utilizada a compresso de dados.
LTO (Linear Tape Open):
Tecnologia de formato aberto;
Capacidade de armazenamento nativa de at 1,5 TB e taxa de transmisso de at 140
MB/s;
Durabilidade de 15 a 30 anos.
DLT (Digital Linear Tape):
Desenvolvida pela DEC em 1984;
Capacidade de armazenamento nativa de at 800 GB e taxa de transmisso de 60
MB/s;
Durabilidade de at 30 anos.

Administrao de Sistemas Linux


88

Mdias pticas
As mdias pticas so mais utilizadas para a realizao de backups em casos especficos. Elas
no costumam ser utilizadas em rotinas de backup, devido a sua baixa capacidade de
armazenamento. Suas principais vantagens em relao aos outros tipos de mdia so: baixo
custo das mdias e dos dispositivos de gravao. A seguir sero vistos os principais tipos de
mdias pticas:

CD
Esse tipo de mdia bastante popular e pode ser lida, praticamente, em qualquer
computador domstico. A sua principal desvantagem, no entanto, a capacidade de
armazenamento de somente 700 MB, o que torna sua utilizao invivel para
armazenamento de grandes volumes de dados. Outra caracterstica que inviabiliza seu uso
em sistemas de backup sua baixa taxa de transferncia de dados. Embora esse tipo de mdia
no seja particularmente bom para a execuo de backups regulares, o CD pode ser utilizado
para guardar informaes de ex-usurios do sistema. Existem tipos de CDs que pode ser
regravados (RW), o que torna seu uso mais interessante.

DVD
As unidades de DVD possuem uma capacidade de armazenamento consideravelmente maior
do que as mdias de CD, chegando a 17,08 GB nos DVDs dual layer/double side. Ainda assim,
no so muito utilizados em backups devido baixa capacidade de armazenamento e baixa
taxa de transferncia de dados. Geralmente so utilizados em ocasies especficas, como para
armazenar dados de ex-usurios. Tambm podem ser reutilizados.

Blu-Ray
Disco ptico de tamanho igual ao CD e ao DVD criado para reproduo de vdeo de alta
definio e armazenamento de dados de alta densidade podendo armazenar at 50 GB de
dados. Sua principal desvantagem o alto custo por gigabyte, alm de possuir uma
capacidade de armazenamento pequena quando comparada s das mdias magnticas.
CD/DVD:
Mdias populares;
Baixa capacidade de armazenamento.
Blu-Ray:
Mdia que vem se popularizando;
Maior capacidade que a do DVD, mas bem menor que a oferecida pelas fitas
magnticas;
Custo por gigabyte relativamente alto.

Administrao de Sistemas Linux


89

Storage
O Storage um dispositivo de alto desempenho, composto por um conjunto de discos e
projetado especialmente para armazenar dados. A maioria dos storages compatvel com as
tecnologias SCSI, Fibre Channel, SAS (Serial Attached SCSI) e SATA. O storage um dispositivo
altamente escalvel, podendo ter sua capacidade expandida facilmente, atravs da compra de
novos discos ou at mesmo de novas unidades de armazenamento (storages adicionais).
Quanto ao tipo de conexo, os storages podem ser divididos em duas categorias: conexo
local, que utiliza a tecnologia DAS e conexo remota, que pode utilizar as tecnologias NAS,
SAN e iSCSI.
DAS (Direct Attached Storage) - So dispositivos de armazenamento externos ligados
diretamente ao servidor de backup atravs de uma controladora de discos. O DAS
trabalha com transferncia de dados no nvel de bloco e no permite compartilhar seu
espao de armazenamento com outros servidores. A taxa de transferncia de dados
limitada pela velocidade da controladora.
NAS (Network Attached Storage) - So dispositivos de armazenamento externos ligados
ao servidor de backup atravs da rede. O NAS pode ser considerado um appliance, que
possui um sistema operacional prprio, otimizado para a funo de armazenamento de
dados. O NAS trabalha com transferncia de dados no nvel de arquivos e utiliza os
protocolos NFS e SMB/CIFS para prover dados a sistemas Linux e Windows
respectivamente. A rea de armazenamento de um NAS pode ser compartilhada entre
vrios servidores. A taxa de transferncia de dados limitada pela velocidade do link
utilizado para interligar o servidor e o storage (podendo alcanar at 10 Gbps em uma
rede local).
SAN (Storage Area Network) - uma rede composta por dispositivos de armazenamento
externos ligados ao servidor de backup atravs de switches especiais que utilizam a
tecnologia fibre channel para realizar a transferncia de dados entre o servidor e o
storage. Assim como no DAS, em uma SAN as transferncias de dados so feitas no nvel
de bloco. Uma das vantagens da SAN a possibilidade de compartilhar a capacidade de
armazenamento do storage entre vrios servidores. Sua principal desvantagem o seu
alto custo. A taxa mxima de transferncia de dados do fibre channel de 6,8 Gbps.
iSCSI (Internet Small Computer System Interface) - um protocolo que utiliza a rede IP
para transportar comandos SCSI entre o storage e o servidor. Sendo assim, possvel que
o servidor se comunique com os discos do storage utilizando o padro SCSI, como se esses
discos estivessem fisicamente localizados neste servidor. O protocolo iSCSI utilizado por
dispositivos de armazenamento externos ligados ao servidor de backup atravs da rede
IP. Assim como no DAS e em uma SAN as transferncias de dados do iSCSI so feitas no
nvel de bloco. A taxa de transferncia de dados limitada pela velocidade do link
utilizado para interligar o servidor e o storage (podendo alcanar at 10 Gbps em uma
rede local).
Os storages tambm podem fazer uso da arquitetura RAID (Redundant Array of Inexpensive
Disks) para prover redundncia de dados. O RAID nada mais do que a combinao de dois
ou mais discos para formar uma unidade lgica de armazenamento. O RAID pode ser
Administrao de Sistemas Linux
90

implementado por hardware ou por software e alm de redundncia tambm traz ganho de
desempenho no acesso aos dados, dependendo de como for configurado. Os principais e mais
utilizados tipos de RAID sero descritos a seguir:
RAID 0 - O RAID 0, tambm conhecido como striping, nada mais do que a juno de dois
ou mais discos, formando uma unidade lgica de armazenamento. A capacidade da
unidade lgica a soma das capacidades individuais de cada disco. Este tipo de RAID no
oferece redundncia e se algum dos discos falhar, todo o contedo perdido. Por outro
lado, seu desempenho no acesso aos dados maior, j que o contedo esta dividido em
vrios discos que podem ser lidos simultaneamente. Alm disso, no h desperdcio de
armazenamento, j que a capacidade total de todos os discos utilizada.
RAID 1 - O RAID 1, tambm conhecido como mirror, necessita de dois discos para ser
implementado. Ele utiliza o mecanismo de espelhamento de disco, ou seja, todos os dados
so gravados simultaneamente nos dois discos. O RAID 1 oferece redundncia de dados,
pois mesmo que um dos discos falhe, todos os dados podem ser recuperados no outro
disco. Por outro lado, a capacidade de armazenamento e reduzida pela metade, j que o
segundo disco possui o mesmo contedo do primeiro. Alm disso, o desempenho
menor, j que os dados so gravados duas vezes. O RAID 1 tambm pode ser utilizado em
conjunto com o RAID 0, formando dois conjuntos com o mesmo nmero de discos. Os
discos de cada conjunto formam atravs do RAID 0, duas unidades lgicas de
armazenamento. extremamente recomendvel que a soma das capacidades dos discos
dos dois conjuntos seja igual, caso contrrio, quando o RAID 1 for habilitado entre as duas
unidades lgicas, ele ir considerar sempre o tamanho da menor unidade. Sendo assim, a
unidade de maior capacidade ficar sub-utilizada.
RAID 5 - O RAID 5 utiliza um mecanismo de paridade onde informaes extras sobre os
dados so armazenadas, de modo distribudo entre todos os discos, como forma de
redundncia. O desempenho para leitura de dados aumenta, j que os dados esto
espalhados entre os discos. No entanto, as operaes de escrita so mais lentas, devido ao
tempo gasto com s informaes de paridade. O RAID 5 um meio termo entre o RAID 0 e
o RAID 1. Ele oferece redundncia, mas sem desperdiar metade do espao total como
ocorre no RAID 1. O RAID 5 deve ser formado por pelo menos trs discos e caso um deles
falhe, os dados ainda podem ser acessados, porm, com queda no desempenho nas
operaes de leitura e escrita devido atividade de recuperao das informaes de
paridade realizada pela controladora de discos em tempo real. Para calcular o espao
perdido no RAID 5 deve-se aplicar a seguinte frmula: 1 - 1/n, onde n representa o
nmero de discos utilizados. O RAID 5 pode utilizar ainda um mecanismo chamado de hot
spare, que consiste em disco extra que s utilizado em caso de falha de algum disco.
Quando a falha ocorre, a controladora substitui o disco com problema pelo disco extra,
gravando neste ltimo todos os dados do disco que falhou.
Storage:
Hardware para armazenamento de dados;
Alta desempenho no acesso aos dados;
Escalabilidade;
Administrao de Sistemas Linux
91

Tecnologias de transferncia de dados - SCSI, Fibre Channel, SAS e SATA;


Tipos de conexo - DAS, NAS, SAN e iSCSI;
Prov redundncia de dados - RAID (Redundant Array of Inexpensive Disks).

Comandos do sistema
Existem alguns comandos do Linux que podem ser utilizados para fazer backup de dados. No
entanto, em ambientes mais complexos, extremamente recomendvel o uso de algum
software profissional de backup. A seguir sero vistos os principais comandos do Linux que
podem ser utilizados para realizar backups.

Comando tar
O comando tar (tape archive) apesar de simples, ainda utilizado pelos administradores de
sistemas, para a realizao de rotinas de backup. Ele pode ser utilizado para realizar o
backup dirio de um servidor, transferindo-o para uma unidade de fita de forma automtica,
utilizando o daemon cron. A seguir, sero listadas as principais opes do comando tar:
-c - Cria um arquivo tar;
-t - Lista o contedo de um arquivo tar;
-x - Extrair os arquivos de um arquivo tar;
-z e -j - Comprimir dados utilizando respectivamente os comandos gzip e bzip2;
-f - Utilizada para especificar o nome do arquivo tar que ser criado.

Comando tar:
Realiza backup de arquivos e diretrios.
Opes bsicas:
-c Cria um arquivo tar;
-t Lista o contedo de um arquivo tar;
-x Extrai os arquivos de um arquivo tar;
-z e -j - Comprimem dados utilizando os comandos gzip e bzip2, respectivamente;
-f Especifica o nome do arquivo tar que ser criado.
O backup em dispositivos de acesso sequencial utilizando o tar feito respeitando-se as
caractersticas prprias desse tipo de mdia. Um aspecto que deve ser observado com
ateno a propriedade de rebobinagem, que divide esses dispositivos em duas categorias:
os rebobinveis e os no rebobinveis. Os dispositivos rebobinveis voltam ao incio da fita
aps cada operao de gravao, enquanto os no rebobinveis permanecem na posio em
que a ltima operao terminou. Portanto, se dois comandos tar de gravao forem
executados consecutivamente, no caso de uma fita no rebobinvel, o resultado ser a
gravao de dois backups. J no caso de uma fita rebobinvel, o segundo backup ser gravado
sobre o primeiro, inutilizando-o. Para saber quais dispositivos so rebobinveis e quais no
Administrao de Sistemas Linux
92

so, preciso ler a documentao do sistema. Em geral, na conveno utilizada pelo Linux, os
dispositivos rebobinveis tm nomes de dispositivos que comeam pela letra r, como:
/dev/rft0, ao passo que os nomes dos no rebobinveis comeam por pela letra n, como:
/dev/nrft0. Por exemplo, o comando abaixo grava, em uma fita rebobinvel em modo
compactado, todo o contedo do diretrio home.
# tar -czf /dev/rtf0 /home
J o comando o comando abaixo, grava em uma fita no rebobinvel e em modo compactado,
todos os arquivos do diretrio home.
# tar -czf /dev/nrtf0 /home
Realizao de backups por meio do cron:
Exemplo:
# crontab -e
00 01 * * 1-5 tar -czf /dev/rst0 home
Uso do tar para espelhamento de rvore:
Exemplo:
# tar -cf - . | (cd /espelho ; tar -xvpf - )
Extraindo o arquivo documento.txt do aluno1, armazenado na fita para o diretrio /tmp:
Exemplo:
# cd /tmp ; tar -xf /dev/rst0 /home/aluno1/documento.txt

Backup em fita:
Dispositivo de acesso sequencial:
Rebobinvel - Armazena apenas um backup.

# tar -czf /dev/rtf0 /home


No rebobinvel - Armazena uma ou mais sequncias de backups.

# tar -czf /dev/nrst0 /home

# tar -czf /dev/rst0 /var/spool/mail

Comando cpio
O comando cpio semelhante ao tar e pode ser utilizado para copiar arquivos individuais ou
uma rvore de diretrios completa. O cpio suporta diversos formatos, inclusive aquele
utilizado pelo tar e tambm pode acessar dispositivos remotos, por exemplo, uma unidade
de fita magntica conectada a outro servidor. Para maiores informaes a respeito do
comando cpio, sua pgina de manual pode ser consultada.
Comando cpio:
Realiza backup de arquivos e diretrios;

Administrao de Sistemas Linux


93

Pode ser utilizado para ler arquivos no formato tar;


Pode acessar dispositivos de armazenamento remotos.

Comando dump
O comando dump no possui qualquer restrio quanto ao tamanho dos arquivos ou de seus
nomes completos (pathnames). Enquanto os comandos tar e cpio manipulam arquivos e
diretrios, o dump manipula diretamente os blocos de disco, podendo, assim, processar
qualquer tipo de arquivo. Em adio, o dump permite que o arquivo de backup ocupe
mltiplos volumes. O comando dump suporta o mecanismo de backup multinvel
incremental, que permite armazenar apenas os arquivos modificados desde o ltimo backup
de nvel inferior. A tcnica multinvel incremental reduz o consumo de recursos de
armazenamento e o tempo de realizao do backup. O funcionamento do backup incremental
provido pelo comando dump baseia-se no conceito de nveis de backup, que variam de 0 a 9.
Um backup de nvel 0 sempre um backup completo. Qualquer outro nvel indica um backup
parcial, em que so copiados somente os arquivos que foram modificados depois do ltimo
backup realizado com nvel inferior ao que est sendo executado. Vale notar que a referncia
para comparao o ltimo backup de nvel inferior, e no simplesmente o backup mais
recente. Para maiores informaes a respeito do comando dump, sua pgina de manual pode
ser consultada.
A restaurao de backups feitos com o comando dump realizada atravs do comando
restore, que tambm restaura de forma incremental os conjuntos de mdias resultantes dos
backups. Para recuperar arquivos individuais dos usurios, recomendvel que o
administrador o faa no diretrio /tmp e s depois o copie para a rea do usurio o contedo
necessrio. Isso evita uma srie de problemas que podem surgir como a substituio de
arquivos do usurio pelos arquivos restaurados no backup.
Comando dump:
Alm de manipular arquivos e diretrios, pode manipular diretamente os blocos do
disco;
Permite que o backup ocupe diversos volumes;
No possui quaisquer restries quanto a tamanho e pathnames dos arquivos.

Comando rsync
O comando rsync utilizado para copiar arquivos entre dois computadores atravs de uma
rede de forma segura. Para isso, utilizado o protocolo SSH para realizar a transferncia dos
dados. O rsync funciona de maneira a acelerar a transferncia de dados, copiando somente as
diferenas entre os contedos remoto e local. A cpia completa dos dados s precisa ser feita
na primeira vez que os contedos so sincronizados. No exemplo abaixo, o comando rsync
copia o contedo do diretrio /home do computador local para o diretrio /tmp/backup do
computador remoto.
# rsync -auzv /home/usuario usuario@192.168.254.20:/tmp/backup

Administrao de Sistemas Linux


94

De forma semelhante, o rsync tambm utilizado para copiar arquivos de um computador


remoto para o computador local.
# rsync -auzv usuario@192.168.254.20:/tmp/backup /backup
Para maiores informaes a respeito do comando rsync, sua pgina de manual pode ser
consultada.
Comando rsync:
Utilizado para fazer backup entre dois computadores;
Utiliza o protocolo SSH para realizar a transferncia dos dados;
Pode ser utilizado por qualquer usurio.

Comandos gzip/gunzip e bzip2/bunzip2


Os backups, em geral, utilizam a tcnica de compactao de dados, visando o melhor
aproveitamento da mdia de armazenamento. Os comandos mais utilizados para essa funo
so o gzip, e o bzip2, que aps a compactao, colocam os sufixos .gz e .bz2, respectivamente,
no nome do arquivo compactado. O comando bzip2 possui um algoritmo de compresso mais
eficiente que o algoritmo utilizado no comando gzip, mas por outro lado, mais lento quando
comparado ao gzip. O exemplo abaixo mostra como compactar um arquivo, utilizando o gzip.
# gzip /home/maria/backup.tar
Para descompactar arquivos, podemos utilizar os comandos gunzip e bunzip2. O comando do
exemplo abaixo descompacta o arquivo /home/users/maria/relat_prospec.pdf.gz.
# gunzip /home/users/maria/relat_prospec.pdf.gz
Compactao de dados:
So utilizados algoritmos para comprimir os dados de forma a ocupar menos espao
em disco;
uma das tcnicas utilizadas em backups;
Comandos gzip e bzip2:
Utilizados para compactar arquivos.
Comandos gunzip e bunzip2:
Utilizados para descompactar arquivos.

Softwares de backup
Os softwares de backup tm como principais funes, automatizar, gerenciar e centralizar o
backup de uma organizao. Nesta sesso vamos apresentar em detalhes os softwares
Amanda e Bacula que so distribudos gratuitamente. Tambm sero apresentadas algumas
caractersticas dos principais softwares comerciais disponveis no mercado.

Administrao de Sistemas Linux


95

Pacotes gratuitos
Existem vrios softwares gratuitos de backup, oferecendo diversas funcionalidades em
comum, porm, cada um com suas caractersticas especficas. Esses softwares geralmente so
compatveis com as mais diversas plataformas de hardware e sistemas operacionais. Dos
softwares gratuitos de backup podemos destacar o Amanda e o Bacula, que sero descritos a
seguir:

Amanda
O Amanda (Advanced Maryland Automatic Network Disk Archiver) um programa que utiliza
arquitetura cliente/servidor para realizar de modo centralizado o backup dos servidores de
uma organizao. Cada computador que fizer parte da rotina de backup necessita da verso
cliente do Amanda instalada. O Amanda possui alguns pr-requisitos para funcionar
adequadamente. Os seguintes softwares devem estar instalados no servidor: samba (somente
se algum computador cliente utilizar o sistema operacional Windows); Perl; GNU tar; e
readline (utilizado pelo programa amrecover). Aps instalar as dependncias necessrias, o
pacote do Amanda deve ser instalado. As principais distribuies j possuem um pacote do
Amanda, que pode ser instalado diretamente sem necessidade de compilar seu cdigo fonte.
Ativando o Amanda
O Amanda gerenciado pelo daemon inetd, por isso, necessrio que as trs linhas abaixo,
referentes aos programas amanda, amandaidx e amidxtape, sejam inseridas no arquivo
/etc/inetd.conf.
amanda dgram udp wait backup /usr/sbin/tcpd /usr/lib/amanda/amandad
amandaidx stream tcp nowait backup /usr/sbin/tcpd
/usr/lib/amanda/amindexd
amidxtape stream tcp nowait backup /usr/sbin/tcpd
/usr/lib/amanda/amidxtaped
Aps realizar as alteraes no arquivo /etc/inetd.conf, deve ser enviando o sinal HUP ao
processo do inetd, utilizando o comando kill, para que as alteraes entrem em vigor. Alm
disso, as seguintes linhas devem estar presentes no arquivo /etc/services:
amanda
amandaidx
amidxtape

10080/udp
10082/tcp
10083/tcp

Configurando o servidor Amanda


O Amanda possui um arquivo de configurao nico, dividido em sesses que agrupam
determinado tipo de configurao. O arquivo de configurao do Amanda deve estar
localizado em um diretrio localizado dentro do diretrio /etc/amanda que represente o
nome da rotina de backup (ex: /etc/amanda/diario). As tabelas 5.1, 5.2, 5.3, 5.4 e 5.5
mostram as configuraes do Amanda divididas por sesso, onde as opes mais importantes
aparecem comentadas.

Administrao de Sistemas Linux


96

Arquivo amanda.conf
Configuraes globais
org "Organizao"

# Nome da organizao

mailto "suporte@dominio" # E-mail dos administradores


dumpuser "backup"

# Usurio que vai executar o backup

inparallel 8

# Nmero mximo de dumps simultneos (mximo: 63)

dumporder "sS"
tamanho)

# Ordem de execuo (s - menor tamanho; S - maior

taperalgo first
fita.

# Algoritmo utilizado para definir qual dump ser enviado

displayunit "m"

# Unidade utilizada (k=kilo, m=mega, g=giga, t=tera)

netusage 80000 Kbps

# Largura de banda mxima utilizada pelo Amanda

dumpcycle 4 weeks

# Tempo de durao de um ciclo

runspercycle 4

# Quantidade de vezes que o amdump executado por ciclo

tapecycle 5 tapes

# Nmero de fitas utilizadas

bumpsize 1000 Mb
bumppercent 50
bumpdays 4
bumpmult 4
etimeout 6600

# Estimativa de tempo em segundos de um dump (mximo)

dtimeout 6600
abortaedo

# Tempo em segundos (idle) antes de um dump ser

ctimeout 6600

# Tempo mximo em segundos que o amcheck aguarda

reserve 90
tapebufs 64
infofile "/var/amanda/diario/curinfo"
Amanda

# Diretrio que contm a base de dados do

logdir "/var/amanda/diario/log"

# Diretrio que contm os logs do Amanda

indexdir "/var/amanda/diario/index"

# Diretrio que contm os ndices do Amanda

Tabela 5.1 - Arquivo amanda.conf - Configuraes globais

Administrao de Sistemas Linux


97

Arquivo amanda.conf
Configuraes da unidade de fita
define tapetype LTO3-HWC {
comment "just produced by tapetype prog (hardware compression off)"
length 401408 mbytes
filemark 0 kbytes
speed 74079 kps
}
runtapes 1

# Nmero de fitas utilizadas por backup

tapedev "/dev/nsa0"

# Dispositivo associado unidade de fita

rawtapedev "/dev/null"
maxdumpsize 800 Gb

# Tamanho mximo considerado para o backup

tapetype LTO3

# Tipo de unidade de fita utilizado

labelstr "^Dia-[1-5]$"

# Rtulo utilizado nas fitas

amrecover_do_fsf yes
agilizar a busca na fita

# Especifica se o amrecover utilizar o amrestore para

amrecover_check_label yes
# Especifica se o amrecover utilizar o amrestore com a
opo -l para verificar o rtulo da fita
amrecover_changer "/dev/nsa0"
Tabela 5.2 - Arquivo amanda.conf - Configuraes da unidade de fita

Arquivo amanda.conf
Configuraes de rede
define interface local {
comment "a local disk"
use 1000000 kbps
}
define interface eth0 {
comment "1 Gbps ethernet"
use 1000000 kbps
}
Tabela 5.3 - Arquivo amanda.conf - Configuraes de rede

Administrao de Sistemas Linux


98

Arquivo amanda.conf
Configuraes dos discos
holdingdisk hd1 {
comment "main holding disk"
directory "/amanda"
backup

# Partio utilizada para armazenar temporariamente o

use 600 GB
chunksize 3Gb
}
autoflush no
estes

# Especifica se os dados sero gravados na fita durante os dumps ou aps

Tabela 5.4 - Arquivo amanda.conf - Configuraes dos discos

Administrao de Sistemas Linux


99

Arquivo amanda.conf
Configuraes dos tipos de dumps
# Dump definido para servidores Linux/Unix
define dumptype root-tar {
global
program "GNUTAR"
comment "root partitions dumped with tar"
compress none
index
exclude list "/var/amanda/exclude.list"
backup

# Lista de arquivos que sero excludos do

priority medium
}
# Dump definido para servidores Windows
define dumptype root-samba-tar {
program "GNUTAR"
compress none
index
priority high
}
Tabela 5.5 - Arquivo amanda.conf - Configuraes dos tipos de dumps
Aps realizar a configurao adequada do Amanda, preciso definir o contedo de cada
computador cliente, que far parte do backup. Esses dados devem ser inseridos no arquivo
/etc/amanda/diario/disklist, utilizando o seguinte formato:
hostname

diskdev

dumtype

[spindle

[interface]]

Onde, hostname, o nome completo do computador cliente; diskdev o diretrio ou partio;


dumtype o tipo de backup; spindle a medida utilizada para balanceamento (opo no
utilizada) e interface a interface de rede utilizada para fazer o balanceamento (opo no
utilizada). O exemplo abaixo mostra duas linhas tpicas do arquivo disklist.
computador1.dominio
servidordeBackup.dominio
tar

/home
//computador2/diretorio

root-tar
root-samba-

Clientes que utilizam o sistema operacional Windows devem possuir um compartilhamento


criado para cada diretrio que fizer parte do backup. Estes compartilhamentos sero
acessados pelo servidor de backup, atravs do samba. Para isso, o administrador deve criar
Administrao de Sistemas Linux
100

um arquivo contendo o nome e a senha do usurio que possui permisso de leitura sobre os
compartilhamentos criados. Esse arquivo deve se chamar amandapass e deve estar
localizado no diretrio /etc. As linhas do arquivo /etc/amandapass devem possuir a seguinte
sintaxe:
//<nome_Computador_Cliente>/<compartilhamento> <usurio>%<senha>
Tambm deve ser criado o arquivo /etc/amanda/diario/tapelist que ser utilizado pelo
Amanda para fazer o controle das datas de utilizao das fitas. Este arquivo ser preenchido
automaticamente pelo Amanda, medida que os backups forem sendo executados.
Configurando os clientes
Aps a instalao do pacote do cliente do Amanda preciso habilitar o servio no arquivo
/etc/inetd.conf . Somente a linha abaixo, referente ao Amanda deve ser inserida no arquivo.
amanda dgram udp wait backup /usr/sbin/tcpd /usr/lib/amanda/amandad
Aps realizar a alterao no arquivo /etc/inetd.conf, ela deve ser aplicada, atravs do envio
do sinal HUP ao processo do inetd, utilizando o comando kill. Alm disso, a seguinte linha
deve estar presente no arquivo /etc/services:
amanda

10080/udp

Tambm devem ser criados o diretrio /var/amanda/gnutar-lists, que ser o repositrio do


Amanda e o arquivo /home/backup/.amandahosts, com o seguinte contedo:
servidordeBackup.dominio

backup

Este arquivo deve possuir permisso de leitura e escrita somente para o usurio backup.
Para finalizar, deve ser criado o arquivo de controle do Amanda, /etc/amandates.
Inserindo label nas fitas
Antes de utilizar as fitas para armazenar os dados do backup, preciso inserir um rtulo
(label) nelas, utilizando o comando amlabel, com a sintaxe abaixo:
# amlabel diario <label>
Agendando o backup
O backup realizado com o Amanda deve ser agendado pelo cron, ou executado diretamente
na linha de comando. As linhas abaixo mostram um exemplo do crontab do usurio backup. O
comando amcheck realiza uma verificao no servidor, na unidade de backup e nos clientes
para garantir que no haja nenhum problema antes da realizao do backup. A opo -m
utilizada para ser enviado um e-mail com o relatrio gerado pelo amchek. J o comando
amdump responsvel por realizar o backup.
00 16 * * 1-5 /usr/sbin/amcheck -m diario
00 22 * * 1-5 /usr/sbin/amdump diario ; /bin/mt -f /dev/sa0 rewoffl
00 20 * * 5 /etc/amanda/forceFullDump.sh

Administrao de Sistemas Linux


101

O script /etc/amanda/forceFullDump.sh deve ser executado todas as sextas-feiras, para


forar a realizao de um backup completo. O comando amadmin deve ser executado com a
opo force para todos os clientes. O script /etc/amanda/forceFullDump.sh executa um loop
for para obter do arquivo /etc/amanda/diario/disklist os nomes de todos os clientes e passlos como parmetro para o comando amadmin.
#!/bin/bash
for i in `cat /etc/amanda/diario/disklist | grep -v '#' | awk '{print
$1}' | uniq`
do
/usr/local/sbin/amadmin diario force $i
done
O comando amverify tambm pode ser agendado no crontab para ser executado aps o
trmino do backup. Este comando faz uma verificao geral, para ver se ocorreu algum
problema durante a execuo do backup. Outros comandos bastante utilizados so o amflush
e o amstatus. O amflush utilizado para gravar em fita um backup que por algum motivo,
tenha ficado armazenado em disco. J o amstatus, pode ser utilizado para exibir um relatrio
com o status de um backup em execuo.
Restaurando um backup
Para restaurar um backup, podemos utilizar os comandos amrestore, que um utilitrio de
linha de comando e o amrecover, que prov uma interface com diversos comandos que so
utilizados para a realizao de um restore. O exemplo abaixo mostra a interface textual do
amrecover, onde so executados os comandos necessrios para restaurar o contedo do
diretrio /home do cliente computador1.
# amrecover diario
Using index server from environment AMANDA_SERVER (servidordeBackup)
AMRECOVER Version 3.2.1. Contacting server on servidordeBackup ...
220 servidordeBackup AMANDA index server (3.2.1) ready.
Setting restore date to today (2012-02-01)
200 Working date set to 2012-02-01.
200 Config set to diario.
501 Host servidordeBackup is not in your disklist.
Use the sethost command to choose a host to recover
amrecover> sethost computador1
200 Dump host set to computador1.
amrecover> setdisk /home
200 Disk set to /home.
amrecover> add group
Added file /group
amrecover> extract
Extracting files using tape drive changer on host servidordeBackup.
The following tapes are needed: Tape1
Extracting files using tape drive changer on host servidordeBackup.
Load tape Tape1 now
Administrao de Sistemas Linux
102

Continue [?/Y/n/s/d]? Y
Restoring files into directory /tmp/restore
All existing files in /tmp/restore can be deleted
Continue [?/Y/n]? Y
./group

Bacula
O bacula um programa que utiliza a arquitetura cliente/servidor e permite ao
administrador gerenciar de modo centralizado o backup dos computadores de uma
organizao. Seu design modular o torna escalvel, sendo capaz de operar em grandes redes
com centenas de computadores clientes. Entre suas principais caractersticas, podemos
destacar:
Suporte a diversos tipos de mdia, como unidades de fita e discos;
Suporte a diversos tipos de sistemas operacionais como: Linux, *BSD, Windows, MAC, etc.;
Armazena todas as informaes em uma base de dados (MySQL, Postgresql, etc.)
O Bacula composto por cinco mdulos que sero descritos a seguir:
Director - o mdulo principal e supervisiona todas as atividades de backup e restore,
alm de coordenar os outros mdulos. O Bacula Director excutado como um daemon e
por padro, utiliza a porta TCP 9101 para receber conexes.
Console - Permite ao administrador interagir com o Director atravs de uma interface que
pode ser textual ou grfica. utilizado para realizar backups e restaurar dados alm de
outras funcionalidades.
File - o cliente do Bacula e deve ser instalado em todos os computadores clientes que
fizerem parte da rotina de backup. O File excutado como um daemon e por padro
utiliza a porta TCP 9102 para receber conexes.
Storage - responsvel por armazenar e recuperar dados das mdias de backup. O Sorage
excutado como um daemon e por padro utiliza a porta TCP 9103 para receber
conexes.
Monitor - Este mdulo responsvel por gerenciar os mdulos Director, File e Storage e
disponibilizado somente atravs de uma interface grfica.
Configurao do Bacula
A configurao do Bacula dividia em trs arquivos que sero vistos a seguir:
Configurao do Director - O arquivo de configurao do Director dividido em diversas
sesses, que sero apresentadas nas tabelas 5.6 a 5.15, que contm a descrio de cada
sesso e suas principais opes comentadas.

Administrao de Sistemas Linux


103

Arquivo de configurao do Bacula Director - bacula-dir.conf


Director - Define a configurao global do Director
Director {
Name = servidorDeBackup-dir
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 30
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"

# Console password

Messages = Daemon
DirAddress = 192.168.1.5
}
Tabela 5.6 - Arquivo bacula-dir.conf - Sesso Director

Arquivo de configurao do Bacula Director - bacula-dir.conf


Clients - Define quais clientes (computadores) que faro parte da rotina de backup.
Deve ser criado um bloco para cada computador cliente.
Client {
Name = cliente1-fd

# Nome do cliente

Address = cliente1.dominio.com

# Nome ou IP do cliente

FDPort = 9102
cliente
Catalog = Catalog

# Porta utilizada pelo servio File no


# Qual catlogo utilizar

Password = "vERoVCUMmmROAaOB8zWh3j2xkfKgeN4rFmoWRn1DDlfK" # Senha


File Retention = 1y
base

# Armazenar os dados por um ano na

Job Retention = 1y
base

# Armazenar os dados por um ano na

AutoPrune = yes
}
Tabela 5.7 - Arquivo bacula-dir.conf - Sesso Clients

Administrao de Sistemas Linux


104

Arquivo de configurao do Bacula Director - bacula-dir.conf


FileSets - Define quais arquivos e diretrios faro parte dos backups de cada
cliente. Deve ser criado um bloco para cada computador cliente.
FileSet {
Name = "fileset-cliente1"
Include {
Options {
signature = MD5
}
File = /home
}
Exclude {
}
}
Tabela 5.8 - Arquivo bacula-dir.conf - Sesso FileSets
Arquivo de configurao do Bacula Director - bacula-dir.conf
Jobs - Define os trabalhos de backup/restore que sero executados. Deve ser criado
um bloco para cada computador cliente.
Job {
Name = "job-cliente1"
Type = Backup
#Level = Incremental

# Omitindo o level. O agendamento que ir tratar isso

Client = cliente1-fd

# Nome do cliente

FileSet = "fileset-cliente1"

# FileSet do cliente

Schedule = "diario"

# Utiliza o agendamento diario

Storage = "TapeDrive0"

# Grava os dados, na Fita LTO-3, no drive 1

SpoolData = Yes

# Gravar no spool do disco antes de jogar para fita

Messages = Standard
Pool = "pool-dia1"
Priority = 10
Write Bootstrap = "/var/lib/bacula/ cliente1-fd.bsr"
}
Tabela 5.9 - Arquivo bacula-dir.conf - Sesso Jobs

Administrao de Sistemas Linux


105

Arquivo de configurao do Bacula Director - bacula-dir.conf


Pools - Define os grupos de volumes que sero utilizados nos backups
# Pool Diario - Utilizar as mesmas configuraes para os dias 2, 3 e 4 (no foram inseridas
aqui para poupar espao)
Pool {
Name = "pool-dia1"
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 6d

# recicla em 7 dias

}
# Pool semanal - Utilizar as mesmas configuraes para as semanas 3, 4 e 5 (no foram
inseridas aqui para poupar espao)
Pool {
Name = "pool-semana2"
Pool Type = Backup
Recycle = yes
AutoPrune = yes
VolumeRetention = 1m

# recicla em 1 ms

}
# Pool mensal - Utilizar as mesmas configuraes para os meses de 2 a 12 (no foram
inseridas aqui para poupar espao)
Pool {
Name = "pool-mes1"
Pool Type = Backup
Recycle = yes
AutoPrune = yes
VolumeRetention = 1y

# recicla em 1 ano

}
Tabela 5.10 - Arquivo bacula-dir.conf - Sesso Pools

Administrao de Sistemas Linux


106

Arquivo de configurao do Bacula Director - bacula-dir.conf


Schedules - Define os agendamentos dos backups
# Agendamento do backup Diario
Schedule {
Name = "diario"
Run = Level=Incremental SpoolData=yes Pool="pool-dia1" Monday at 20:00
Run = Level=Incremental SpoolData=yes Pool="pool-dia2" Tuesday at 20:00
Run = Level=Incremental SpoolData=yes Pool="pool-dia3" Wednesday at 20:00
Run = Level=Incremental SpoolData=yes Pool="pool-dia4" Thursday at 20:00
# Backup full da 2a sexta a 5a sexta de cada ms - 4 fitas reutilizveis a cada 1 ms.
Run = Level=Full SpoolData=yes Pool="pool-semana2" 2nd Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-semana3" 3rd Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-semana4" 4th Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-semana5" 5th Friday at 20:00
# Backup full da sexta (MENSAL). Toda 1a sexta de cada ms (a fita inserida ser
# referente ao ms anterior). Conjunto de 12 fitas reutilizveis a cada 1 ano.
Run = Level=Full SpoolData=yes Pool="pool-mes1" on feb 1st Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-mes2" on mar 1st Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-mes3" on apr 1st Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-mes4" on may 1st Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-mes5" on jun 1st Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-mes6" on jul 1st Friday at 20:00
Run = Level=Full SpoolData=yes Pool="pool-mes7" on aug 1st Friday at 20:00
# Acrescentar as configuraes dos meses 8, 9, 10 e 11
Run = Level=Full SpoolData=yes Pool="pool-mes12" on jan 1st Friday at 20:00
}
# Agendamento do backup do catlogo. Executado aps a finalizao do Diario.
Schedule {
Name = "WeeklyCycleAfterBackup"
Run = Full sun-sat at 20:00
}
Tabela 5.11 - Arquivo bacula-dir.conf - Sesso Schedules

Administrao de Sistemas Linux


107

Arquivo de configurao do Bacula Director - bacula-dir.conf


Storage - Define quais volumes sero utilizados para armazenar os backups (fita,
disco, etc.)
# Armazenamento em disco
Storage {
Name = FileStorage0
Address = 192.168.1.5
daemon
SDPort = 9103

# DNS ou IP do storage
# Porta do storage daemon

Password = "vF6iEYpOmSxOa5QDGYUHraqBhQ9t5lB89"
Device = FileStorage0
Media Type = File
}
# DELL PowerVault LTO-3 - Drive 0
Storage {
Name = TapeDrive0
Address = 192.168.1.5
daemon
SDPort = 9103
Password = "vF6iEYpOmSxOa5QDGYUHraqBhQ9t5lB89"
Device = TapeDrive0
Media Type = LTO-3
#Autochanger = yes
}
Tabela 5.12 - Arquivo bacula-dir.conf - Sesso Storage

Administrao de Sistemas Linux


108

# Nome ou IP do storage
# Porta do storage daemon

Arquivo de configurao do Bacula Director - bacula-dir.conf


Catalog - Define a base de dados que ser utilizada para armazenar os dados dos
backups
# Servio de catlogo generic
Catalog {
Name = Catalog
dbname = bacula; DB Address = "localhost"; user = bacula; password = "r32D#@!S
}
Tabela 5.13 - Arquivo bacula-dir.conf - Sesso Catalog
Arquivo de configurao do Bacula Director - bacula-dir.conf
Messages - Define como as mensagens do sistema sero enviadas para o
administrador
Messages {
Name = Standard
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"[Bacula] \<%r\>\" -s \"[Bacula]:
%t %e of %c %l\" %r"
operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"[Bacula] \<%r\>\" -s
\"[Bacula]: Intervention needed for %j\" %r"
mail = bacula@dominio.com = all, !skipped
operator = bacula@dominio.com = mount
console = all, !skipped, !saved
# O arquivo de log abaixo deve ser rotacionado para no crescer indefinidamente.
append = "/var/lib/bacula/log" = all, !skipped
}
# Mensagens do Director com exceo de informaes relacionadas aos jobs.
Messages {
Name = Daemon
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"[Bacula] \<%r\>\" -s \"[Bacula]
daemon message\" %r"
mail = bacula@dominio.com = all, !skipped
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
}
Tabela 5.14 - Arquivo bacula-dir.conf - Sesso Messages
Administrao de Sistemas Linux
109

Arquivo de configurao do Bacula Director - bacula-dir.conf


Console - Console restrito utilizado pelo tray-monitor para obter o status do Diretor
Console {
Name = servidorDeBackup-mon
Password = "tjgPc7_eh8cgH-Qyo-0WQnmGiNb_2g6No"
CommandACL = status, .status
}
Tabela 5.15 - Arquivo bacula-dir.conf - Sesso Console
A configurao das sesses Clients, FileSets e Jobs podem ser feitas em arquivos a parte
dependendo do nmero de servidores que fizerem parte da rotina de backup. Para isso, as
sesses correspondentes devem ser removidas do arquivo bacula-dir.conf e em seu lugar,
devem ser inseridas as linhas abaixo:
# Clients
@/etc/bacula/clients.conf
# FileSets
@/etc/bacula/filesets.conf
# Jobs
@/etc/bacula/jobs.conf
O Director utiliza senhas para se comunicar com os mdulos Storage, File e Console. Sendo
assim, as senhas definidas nos arquivos de configurao dos clientes e do Storage devem ser
as mesmas definidas nos arquivos de configurao do Director. Caso contrrio, eles no
conseguiro se comunicar.
Configurao do Storage - O arquivo de configurao do Storage dividido em diversas
sesses, que sero apresentadas nas tabelas 5.16, 5,17, 5.18, 5.19 e 5.20, que contm a
descrio de cada sesso e suas principais opes comentadas.

Administrao de Sistemas Linux


110

Arquivo de configurao do Storage - bacula-sd.conf


Storage - Configuraes do Storage daemon
Storage {
Name = servidorDeBackup-sd
SDPort = 9103

# O servio utilizar a porta TCP 9103

WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
}
Tabela 5.16 - Arquivo bacula-sd.conf - Sesso Storage

Administrao de Sistemas Linux


111

Arquivo de configurao do Storage - bacula-sd.conf


Device - Lista os dispositivos suportados pelo Storage daemon. Os dispositivos
devem possuir o mesmo nome e tipo de mdia definidos no arquivo bacula-dir.conf.
Device {
Name = "FileStorage0"
Media Type = File
Archive Device = /home/backups
LabelMedia = yes;
Random Access = Yes;
Requires Mount = No;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = yes;
}
# Dell PowerVault LTO-3 Drive0
Device {
Name = "TapeDrive0"
Description = "Dell PowerVault LTO-3 Drive0"
Media Type = LTO-3
Archive Device = /dev/nst0
AutomaticMount = yes;
AlwaysOpen = yes;
RemovableMedia = yes;
RandomAccess = no;
Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
Spool Directory = /home/spool
}
Tabela 5.17 - Arquivo bacula-sd.conf - Sesso Device

Administrao de Sistemas Linux


112

Arquivo de configurao do Storage - bacula-sd.conf


Director - Lista o Director que pode se comunicar com o Storage daemon
Director {
Name = servidorDeBackup-dir
Password = "vF6iEYpOmSxOa5QDGYUHraqBhQ9t5lB89"
}
Tabela 5.18 - Arquivo bacula-sd.conf - Sesso Director

Arquivo de configurao do Storage - bacula-sd.conf


Messages - Envia as mensagens para o Director
Messages {
Name = Standard
director = servidorDeBackup-dir = all
}
Tabela 5.19 - Arquivo bacula-sd.conf - Sesso Messages

Arquivo de configurao do Storage - bacula-sd.conf


Director - Utilizado pelo Monitor para obter o status do Storage daemon
Director {
Name = servidorDeBackup-mon
Password = "A-fFgazDOgc1oY9ylhvXla-vyiF2hqAcj"
Monitor = yes
}
Tabela 5.20 - Arquivo bacula-sd.conf - Sesso Director
Configurao do File - O arquivo de configurao do File dividido em diversas sesses,
que sero apresentadas nas tabelas 5.21, 5.22, 5.23 e 5.24, que contm a descrio de
cada sesso e suas principais opes comentadas. Este arquivo deve existir em todos os
computadores clientes que fizerem parte da rotina de backup.

Administrao de Sistemas Linux


113

Arquivo de configurao dos clientes - bacula-fd.conf


FileDaemon - Configuraes globais
FileDaemon {
Name = computador1-fd
FDport = 9102

# O servio utilizar a porta TCP 9102

WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20
}
Tabela 5.21 - Arquivo bacula-fd.conf - Sesso FileDaemon

Arquivo de configurao dos clientes - bacula-fd.conf


Director - Lista o Director que pode se comunicar com o File daemon
Director {
Name = servidorDeBackup-dir
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cg"
}
Tabela 5.22 - Arquivo bacula-fd.conf - Sesso Director

Arquivo de configurao dos clientes - bacula-fd.conf


Director - Utilizado pelo Monitor para obter o status do File daemon
Director {
Name = servidorDeBackup-mon
Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cg"
Monitor = yes
}
Tabela 5.23 - Arquivo bacula-fd.conf - Sesso Director

Administrao de Sistemas Linux


114

Arquivo de configurao dos clientes - bacula-fd.conf


Messages - Envia as mensagens para o Director
Messages {
Name = Standard
director = servidorDeBackup-dir = all, !skipped, !restored
}
Tabela 5.24 - Arquivo bacula-fd.conf - Sesso Messages
Base de Dados
Como dito anteriormente, o Bacula utiliza uma base de dados para armazenar informaes
sobre jobs, restores, pools, volumes, etc. Iremos considerar que o SGBD MySQL ser utilizado
para armazenar a base de dados do Bacula. Aps a instalao do Bacula e do MySQL, alguns
scripts tero que ser executados para que o Bacula possa funcionar adequadamente.
create_mysql_database - Script utilizado para criar a base de dados do Bacula.
make_mysql_tables - Script utilizado para criar as tabelas da base de dados do Bacula.
grant_mysql_privileges - Script utilizado para definir o permissionamento adequado ao
usurio bacula na base de dados do Bacula.
Aps a execuo desses scripts e da configurao adequada dos mdulos Director, Storage e
File, o Bacula est pronto para ser utilizado.
Bconsole
O bconsole o console do Bacula e atravs dele o administrador pode interagir com o
Director , realizando diversas tarefas como executar e restaurar backups, verificar os backups
que esto sendo executados, etc.
# bconsole
Connecting to Director localhost:9101
1000 OK: backup-dir Version: 5.2.5 (01 February 2012)
Enter a period to cancel a command.
*
A interface textual do bconsole disponibiliza diversos comandos, que podem ser listados
atravs do comando help. Para maiores detalhes sobre as opes de uso do bconsole, seu
manual pode ser consultado na URL http://www.bacula.org/5.2.xmanuals/en/console/console.pdf.
Inserindo label nas fitas
Antes de utilizar as fitas para armazenar os dados do backup, preciso inserir um rtulo
(label) nelas, utilizando o comando label disponvel no console do Bacula. Aps a insero do
label e sempre que for utilizar uma fita pra fazer backup, o administrador deve mont-la
Administrao de Sistemas Linux
115

antes utilizando o comando mount disponvel no console do Bacula. Tambm necessrio


adicionar a fita a um pool, utilizando o comando add, tambm disponvel no console.
Restaurando backups
O exemplo abaixo mostra a restaurao de um backup do cliente computador1, que
executada atravs do comando restore do bconsole.
* restore
Automatically selected Catalog: Catalogo1
Using Catalog "Catalogo1"
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified
time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Cancel
Select item: (1-13):5

Defined Clients:
1: computador1-fd
2: computador2-fd
Select the Client (1-26): 1
Automatically selected FileSet: fileset-computador1
+-------+-------+----------+----------+---------------+------------+
| JobId | Level | JobFiles | JobBytes | StartTime
| VolumeName |
+-------+-------+----------+----------+------------------+---------+
|
643 | F
|
8,420 | 1,500,887| 2011-07-01 20:00 | Mes-6
|
+-------+-------+----------+----------+------------------+---------+
You have selected the following JobId: 3
Administrao de Sistemas Linux
116

Building directory tree for JobId(s) 3 ...


+++++++++++++++++++++++++++++++++++++++++++++++
165 files inserted into the tree.
You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added,
unless you used the "all" keyword on the command line.
Enter "done" to leave this mode.
cwd is: /
$ mark *
165 files marked.
$ done
Aps a execuo do comando done, solicitado a insero da(s) mdia(s) adequada(s), para
que o backup possa ser restaurado.

Pacotes Comerciais
Existem vrios softwares comerciais de backup, oferecendo diversas funcionalidades em
comum, porm, cada um com suas caractersticas especficas. Esses softwares geralmente so
compatveis com as mais diversas plataformas de hardware e sistemas operacionais e seus
preos podem chegar a alguns milhares de reais. Dos softwares comerciais de backup
podemos destacar os seguintes:
Comerciais:
Arkeia Network Backup;
ARCserve;
Backup Exec;
NetBackup.
Arkeia Network Backup - um software de backup que foi desenvolvido em 1998 pela
empresa Arkeia Software. Alm do software, a empresa tambm oferece como soluo, um
appliance e um virtual appliance que executado no VMware. Entre suas principais
caractersticas, podemos destacar: console de administrao web, que gerencia todas as
atividades de backup e restore; suporte aos mais diversos tipos de mdias e plataformas
de hardware e software; suporte a backups fsicos, virtuais e em nuvem; criptografia de
dados; etc.
ARCserve - um software de backup que foi desenvolvido em 1990 pela empresa
Cheyenne Software. Em 1996 a empresa CA Technologies
adquiriu a Cheyenne
Software e passou a manter e aprimorar o ARCserve. Entre suas principais caractersticas,
podemos destacar: console de administrao grfico, que gerencia todas as atividades de
backup e restore; suporte aos mais diversos tipos de mdias e plataformas de hardware e
software; suporte a backups fsicos, virtuais e em nuvem; integrao com aplicativos como
Administrao de Sistemas Linux
117

MS Exchange e SQL Server; criptografia de dados; recuperao total de servidores mesmo


migrando para hardwares diferentes; etc.
Backup Exec - um software de backup que foi desenvolvido em 1982 pela empresa
Maynard Electronics. Foi comprado por diversas empresas e passou por vrias melhorias
at ser comprado pela Symantec em 2005. O nome Backup Exec s foi adotado em 1998
quando ainda pertencia a empresa Seagate. Entre as principais caractersticas do Backup
Exec, podemos destacar: console de administrao grfico, que gerencia todas as
atividades de backup e restore; suporte aos mais diversos tipos de mdias e plataformas
de hardware e software; backup de mquinas virtuais; integrao com aplicativos como
MS Exchange e SGBDs (Oralcle, SQL Server, etc.); criptografia de dados; etc.
NetBackup - um software de backup que foi desenvolvido em 1987 pela empresa
Control Data Corporation. Passou por diversos aprimoramentos e foi comprado por
outras empresas, entre elas a Veritas, quando ficou conhecido com Veritas NetBackup.
Atualmente pertence a Symantec que o adquiriu em 2005. Entre as principais
caractersticas do NetBackup, podemos destacar: console de administrao grfico, que
gerencia todas as atividades de backup e restore; criptografia de dados; controle de
acesso; suporte aos mais diversos tipos de mdias e plataformas de hardware e software;
backup de mquinas virtuais; relatrios diversos; etc.

Polticas de backup
Para cada sistema, necessrio decidir quando e como fazer o backup dos dados, o que
depende dos seguintes fatores: criticidade, volatilidade e volume dos dados armazenados no
sistema; tipo de uso e horrio de operao do sistema; capacidade e velocidade do
dispositivo utilizado para armazenar os dados do backup, etc. Com base nesses fatores, cada
organizao deve definir uma poltica de backup apropriada s suas necessidades
operacionais. Uma empresa que opere um sistema de misso crtica vai ter polticas de
backup muito diferentes das polticas de uma instituio educacional. Eventualmente,
diferentes departamentos de uma mesma empresa podem ter necessidades diversas, e, por
conseguinte, diferentes polticas de backup. Geralmente, quanto mais crtica for a operao
do sistema para o negcio da empresa e quanto maior a volatilidade dos dados, maior a
frequncia e abrangncia das operaes de backup. Essa norma vale tanto para a
periodicidade com que os backups so executados, quanto para a escolha dos dados que
devem ser includos no backup. Como regra geral, temos que, em sistemas nos quais h
grande atividade por parte dos usurios, os diretrios de trabalho devem ser salvos
diariamente. J sistemas de arquivos que so modificados com menor frequncia (o diretrio
/usr, por exemplo) podem ser salvos apenas uma vez por ms. Quando houver necessidade
de operao ininterrupta do sistema, a operao de backup deve ser planejada de modo a se
adequar ao regime e horrio de uso do sistema e interferir o mnimo possvel na rotina dos
usurios. razovel supor que o tipo de dispositivo a ser utilizado nos backups deva ser
selecionado em funo das condies anteriores, embora isso nem sempre seja possvel,
devido a limitaes oramentrias. O administrador de sistemas ter de dispor de todo o seu
conhecimento para fazer o melhor uso possvel dos equipamentos disponveis, sem colocar
em risco a segurana das operaes da empresa. Aqui vale lembrar que, independentemente
do procedimento normal de backup, administradores de sistemas experientes adquirem o
Administrao de Sistemas Linux
118

bom hbito de realizar backup regular de dados e programas que sero manipulados em
operaes de reconfigurao do sistema operacional, de reorganizao de diretrios e
parties ou de atualizao de software. Isso porque sempre existe a possibilidade de se
cometer erros, que podem levar perda de informaes importantes ou muito trabalhosas
para serem recuperadas. A administrao da rotina de backup muito facilitada se for
centralizada em um nico servidor e executada por um software profissional de backup, seja
ele gratuito ou no.
O processo de identificao das mdias demonstra ser de extrema importncia em uma
poltica de backup que prime pela eficincia. As fitas devem ser identificadas, isto , possuir
labels que indiquem unicamente o seu contedo. Informaes como a lista dos sistemas de
arquivos copiados, o nvel do backup executado e a data da sua execuo devem ser escritas
na prpria caixa que abriga a mdia. Tal procedimento facilitar bastante o processo de
recuperao de dados a partir dos backups realizados, o que ajuda bastante em situaes
crticas. O administrador deve tentar utilizar uma nica mdia para realizar os backup
dirios. Com isso, ele pode programar o backup para ser executado em um horrio de pouca
utilizao do sistema, minimizando os problemas de inconsistncia de dados e queda de
desempenho nas aplicaes. Se o backup no couber em uma nica mdia, recomenda-se
comprar uma unidade de maior capacidade, utilizar mltiplos dispositivos ou adquirir um
rob. Para minimizar a possibilidade de haver um sistema de arquivos que no possa ser
copiado para uma nica mdia, os administradores devem levar em conta a capacidade
mxima da sua mdia de backup quando forem definir os tamanhos das parties de seus
sistemas.
Fatores para definio da poltica de backup:
Criticidade, volatilidade e volume dos dados armazenados no sistema;
Tipo de uso e horrio de operao;
Capacidade e velocidade do dispositivo utilizado para realizar o backup.
Misso crtica de uma empresa:
Estabelecer diversas polticas de backup.

Cuidados no armazenamento das mdias


To importante quanto definir e cumprir risca os procedimentos de backup acondicionar
adequadamente a mdia utilizada nas operaes, independentemente do seu tipo. Cada um
desses meios de armazenamento possui caractersticas prprias de confiabilidade,
capacidade e requisitos de manuseio e armazenamento, que devem ser cuidadosamente
observadas para que se obtenha o desempenho esperado. uma boa prtica manter o
registro das condies ambientais (temperatura e umidade) do local de armazenamento. A
necessidade de armazenamento de mdias fora do local de trabalho vai depender da
criticidade dos dados para a empresa, bem como dos riscos associados s suas instalaes.
Uma refinaria de petrleo apresenta riscos consideravelmente altos em relao ao campus
de uma universidade. Em qualquer dos casos, recomendvel o armazenamento de um
backup de nvel 0 em algum local fora da empresa, como uma garantia contra desastres
naturais. Uma empresa que possua filiais, por exemplo, pode adotar a prtica de,
Administrao de Sistemas Linux
119

mensalmente, trocar fitas de backup entre elas. Ateno tambm deve ser dada segurana
do local de armazenamento da mdia de backup, visando minimizar riscos de perda dos
arquivos devido a acidentes naturais ou aes criminosas. Empresas e instituies que
trabalham com informaes sensveis ou confidenciais devem possuir locais seguros para
armazenamento das mdias utilizadas para backup de seus sistemas.
Finalmente, a boa condio de gravao da mdia de backup precisa ser verificada
periodicamente. Para isso, uma soluo eficaz consiste na execuo de operaes de leitura e
recuperao a partir de uma amostra aleatria das fitas armazenadas. Outro exerccio
recomendado consiste em explorar alguns cenrios que exijam a restaurao dos dados. O
cenrio de pior caso, com a perda total dos equipamentos, precisa ser estudado. O
administrador, nesse caso, deve determinar quanta informao seria perdida e quanto tempo
levaria para tornar o sistema novamente operacional, incluindo o tempo de aquisio de um
novo hardware. necessrio, ento, fazer uma avaliao das respostas obtidas para
determinar se elas atendem s necessidades da empresa. Caso contrrio, a poltica de backup
ter de ser revista. Para sistemas de pequeno porte, as ferramentas de backup disponveis no
Linux so satisfatrias. No entanto, para sistemas de mdio e grande porte, deve-se investir
em ferramentas profissionais mais robustas e seguras.
Mdia de backup:
Centralizar todos os backups em um s servidor;
Rotular as fitas;
Definir o contedo e a periodicidade de armazenamento para cada computador;
Fazer os sistemas de arquivos menores que o seu dispositivo de backup (dumps
dirios);
Manter algumas fitas fora do local de trabalho;
Executar o backup em horrios de pouca utilizao dos sistemas;
Acondicionar as mdias adequadamente;
Checar, periodicamente, a boa condio de gravao das mdias de backup.

Administrao de Sistemas Linux


120

6
Servio de impresso
Sumrio
Conhecer as principais caractersticas associadas manuteno de um servio de
impresso em sistemas Linux;
Entender como se d o processo de impresso em sistemas Linux;
Compreender a diferena entre os softwares gerenciadores de impresso;
Saber qual sistema de impresso melhor atende s necessidades de uma organizao;
Conhecer os comandos necessrios para a configurao e manuteno de um servio de
impresso baseado no CUPS.
Servio de impresso:
Introduo;
Arquitetura do sistema de impresso;
Softwares gerenciadores de impresso:
LPD;
LPRng;
CUPS.

Introduo
O servio de impresso de arquivos , certamente, um dos que mais exige ateno e demanda
tempo do administrador de sistemas. Alguns profissionais de TI costumam argumentar que
instalar, configurar e manter um servio de impresso no Linux muito mais complexo do
que em sistemas Windows. At pouco tempo atrs, eles no deixavam de ter razo. Instalar
uma impressora costumava ser mais complicado no Linux do que no Windows. Outro
agravante era o fato de que fabricantes de impressoras costumavam desenvolver os drivers
dos seus equipamentos somente para sistemas Windows, por ser este um sistema de maior
penetrao no mercado. Entretanto, o servio de impresso do Linux comeou a se mostrar
mais flexvel e fcil de ser administrado a partir do lanamento do software de
gerenciamento de impresso CUPS.

Administrao de Sistemas Linux


121

Histrico
Nos primrdios dos sistemas Unix, o servio de impresso era baseado em dois sistemas
projetados na dcada de 1970, para impresso de arquivos texto em impressoras matriciais:
LPD (Line Printer Daemon) do BSD;
Line Printer System do System V.
Com o surgimento de novas demandas, entretanto, esse cenrio comeou a mudar.
Desenvolvedores de sistemas Linux passaram a promover mudanas nos dois sistemas
mencionados, para que eles pudessem atender s demandas por impresses de arquivos nos
mais diferentes formatos e em dispositivos cada vez mais elaborados como as impressoras a
laser. Com o passar do tempo, foram surgindo variantes do LPD, com destaque para o PLP
(Portable Line Printer spooler system), que mais tarde teve seu nome alterado para LPRng,
Esses sistemas, contudo, no conseguiram explorar todo o potencial dos novos dispositivos
de impresso que eram lanados no mercado. Foram feitas, ento, muitas tentativas de se
desenvolver uma interface padro para impresso. Dentre elas, pode-se destacar o POSIX e o
IPP (Internet Printing Protocol).

POSIX
Foi desenvolvido pelo IEEE (Institute of Electrical and Electronics Engineers) e definia um
conjunto comum de ferramentas de linha de comando, assim como uma interface em C para
administrao de impressoras e gerenciamento de impresso. Todavia, foi descontinuado
pelo prprio IEEE.

IPP
Foi desenvolvido pelo IETF (Internet Engineering Task Force) em 1999 e define extenses ao
protocolo HTTP para prover suporte ao servio de impresso. Diferente do POSIX, o IPP
desfruta de uma ampla aceitao por parte da indstria e est cotado para tornar-se a
soluo padro de impresso em rede para todos os sistemas operacionais. Neste cenrio,
surgiu o CUPS, um moderno sistema de impresso para sistemas Unix, que pode ser
estendido para suportar novas impressoras, dispositivos e protocolos, ao mesmo tempo em
que mantm a compatibilidade com as aplicaes existentes.
O sistema de impresso, no incio, baseava-se em dois sistemas:
LPD (Line Printer Daemon) do BSD;
Line Printer System do System V.
Instalao e configurao eram tarefas complexas, at algum tempo atrs;
Os sistemas de impresso no estavam atendendo s novas demandas;
Inicia-se a busca por uma interface padro para impresso:
POSIX do IEEE;
IPP do IETF.

Administrao de Sistemas Linux


122

Arquitetura do sistema de impresso


Para manter o servio de impresso operando de forma correta, importante entender como
ele funciona. A princpio, todos os sistemas de impresso funcionam da mesma forma e sua
arquitetura ilustrada na figura 6.1.

Figura 6.1 - Arquitetura dos sistemas de impresso


O esquema de impresso de um arquivo, geralmente, funciona da seguinte maneira:
1. O usurio solicita a impresso de um arquivo e passa para o sistema algumas opes (qualidade
da impresso, nmero de cpias, etc). Geralmente, os dados encontram-se no formato PostScript,
embora isto nem sempre seja verdade. Nesse momento, o sistema de impresso cria o que se
chama de job.
2. O sistema envia ento, o arquivo e as opes por intermdio da rede, para o servidor de
impresso. Se a impressora estiver localmente conectada ao sistema, essa ao no executada.
3. Ao chegar ao servidor, o sistema de impresso local enfileira o job at que a impressora esteja
disponvel.
4. O sistema aplica as opes selecionadas pelo usurio e traduz os dados do arquivo para a
linguagem nativa da impressora que, geralmente, no PostScript. A esse passo dado o nome de
filtragem. Os filtros permitem que os usurios e as aplicaes imprimam os mais diferentes tipos
de arquivo.
5. Por fim, a impresso feita. Nesse ponto, o sistema faz a remoo de alguns arquivos
temporrios. Caso haja algum erro nesse caminho, o usurio ser notificado pelo sistema.
Arquitetura do sistema de impresso:
O usurio solicita uma impresso;
O sistema cria um job;
O job enviado por meio da rede;
O sistema de impresso trata o job;
Enfileira se a impressora est ocupada;
Filtros so aplicados ao job;
Aplicao das opes selecionadas;
Traduo dos dados para a linguagem nativa da impressora;
A impresso realizada.

Administrao de Sistemas Linux


123

Softwares gerenciadores de impresso


Existem, atualmente, alguns sistemas de impresso desenvolvidos para substituir os antigos
sistemas baseados no LPD, como por exemplo, o LPRng. Entretanto, o foco desta sesso de
aprendizagem ser o CUPS, que alm de ter se tornado um padro, a melhor opo de
sistema de impresso disponvel no mercado para sistemas Unix.
Softwares gerenciadores de impresso:
LPD;
LPRng;
CUPS.
Diferentes softwares surgem na tentativa de contornar as limitaes dos antigos
sistemas de impresso;
A seleo do melhor sistema depende de caractersticas do ambiente.

LPD (Line Printer Daemon)


O LPD foi o sistema padro de impresso do Unix BSD durante vrios anos. Quando ele
surgiu, as demandas por impresso eram de arquivos puramente textuais. Com o passar dos
anos, mostrou-se inapropriado para atender s novas demandas por impresso de arquivos
mais elaborados como imagens, grficos e at mesmo arquivos provenientes de editores de
texto mais sofisticados. Apesar de suas limitaes, o LPD conseguiu disseminar-se por uma
vasta gama de sistemas Unix e, ainda hoje, tem grande utilidade como um sistema bsico de
impresso. Entretanto, para utilizar plenamente o potencial das impressoras modernas,
necessrio uso de filtros e outros programas complementares. Esses programas existem e,
apesar de sua complexidade, so uma alternativa para quem opta por utilizar o LPD. So
programas que fazem o front-end da aplicao. Os mais conhecidos so o KDEPrint, o GPR e o
XPP. H um nmero considervel de verses do LPD, sendo o GNUlpr uma das verses que
apresenta menos modificaes com relao verso original. Caso o administrador opte por
utilizar um sistema baseado no LPD, recomendvel que ele utilize o GNUlpr.
LPD:
Foi o software padro de impresso do BSD durante anos;
Atendia bem a demandas de impresso de arquivos texto;
Mostrou-se inapropriado para impresses mais sofisticadas (grficos, imagens etc.);
O uso do GNUlpr recomendado caso o administrador opte por utilizar um sistema de
impresso baseado no LPD;
No deve ser confundido com protocolo de impresso de rede do IETF (RFC 1179).

Componentes do LPD
O LPD se refere tanto ao daemon quanto a uma vasta coleo de programas que compem o
sistema de impresso. Seus principais componentes so:

Administrao de Sistemas Linux


124

lpd Daemon de impresso propriamente dito. Controla tudo o que diz respeito
impresso de um job. Para cada arquivo em fase de impresso, um novo processo
iniciado.
lpr Trata-se do comando de impresso do usurio. Ao receber um pedido de impresso,
o lpr contacta o lpd, criando um novo job de impresso no sistema.
lpq Comando utilizado para listar os jobs que esto na fila de impresso.
lprm Comando utilizado para remover um job da fila de impresso.
lpc Trata-se do comando de controle do daemon lpd. Por meio desse comando, o
administrador do sistema pode parar, iniciar, reordenar as filas de impresso e tomar
outras medidas administrativas necessrias.
A forma como esses programas se relacionam, conforme o esquema apresentado na figura
6.1, a seguinte:
1. No momento da inicializao do sistema, o daemon lpd iniciado. Ele fica, ento, aguardando
por conexes e gerencia as filas das impressoras.
2. Quando o usurio solicita a impresso de algum arquivo utilizando o comando lpr, este
contacta o lpd atravs da rede e submete os dados do usurio, que contm o arquivo a ser impresso
e as opes selecionadas pelo usurio.
3. Quando a impressora se torna disponvel, o lpd cria um processo lpd filho para realizar a
impresso do job.
4. O processo lpd filho executa o(s) filtro(s) apropriados para o job e envia os dados resultantes
impressora.
Como j sabido, o LPD foi projetado para ser utilizado em um tempo em que as impressoras
eram do tipo matricial, e as demandas de impresso eram por arquivos texto. Pelo esquema
mostrado anteriormente, v-se que as necessidades mais complexas de impresso podem ser
atendidas mediante a aplicao de filtros. Para ajudar nesse processo de filtragem, existem
diversos programas, como o gs, ppdfilt, ps2ps, mpage e a2ps. A maioria desses programas faz
converses entre diferentes formatos de arquivos. Entretanto, como se ver adiante, existem
alternativas mais eficientes e menos trabalhosas.
Componentes do LPD:
Pode-se referir ao daemon ou ao conjunto de programas que o compem;
Componentes:
lpd - Daemon propriamente dito;
lpr - Comando de impresso;
lpq - Comando para listar os jobs que esto na fila de impresso;
lprm - Comando para remover um job;
lpc - Comando de controle do daemon lpd.

Administrao de Sistemas Linux


125

Protocolo LPD
A RFC 1179 define o protocolo LPD (Line Printer Daemon Protocol) criado pelo IETF, que
utilizado pelo servidor LPD e por todos os servidores de impresso de rede utilizados em
sistemas Unix. Esse protocolo utilizado na comunicao entre o servidor e os diversos
componentes, como comandos auxiliares e dispositivos. Apesar do protocolo e do servidor
de impresso possurem o mesmo nome, eles no devem ser confundidos.

LPRng
O LPRng uma implementao melhorada do LPD que apresenta uma preocupao maior
com aspectos de segurana, alm de outras funcionalidades. O LPRng apresenta facilidades
para a contabilidade de uso do ambiente de impresso. Essa funcionalidade especialmente
til quando se deseja controlar o uso dos recursos de impresso. O LPRng utiliza o mesmo
modelo de filtros do LPD, o que pode ser visto como uma facilidade adicional. Ele torna mais
simples a administrao de ambientes mais complexos. O uso do LPRng recomendado se o
sistema possui mais de uma impressora, impressoras seriais ou qualquer impressora de rede
que no possua suporte ao protocolo LPD. Sua maior segurana advm do fato de que
nenhum dos seus programas tem o bit SUID estabelecido, alm de suporte autenticao,
utilizando o programa PGP ou o protocolo Kerberos, que trabalham com criptografia de
dados.
LPRng:
Implementao melhorada do LPD;
Seu uso recomendado quando o sistema possui muitas impressoras, impressoras
seriais ou impressoras que no possuem suporte ao protocolo LPD;
Apresenta facilidades de contabilidade e maior preocupao com a segurana;
Utiliza o mesmo modelo de filtros do LPD.

CUPS
J h algum tempo o CUPS se tornou o sistema de impresso padro da maioria das
distribuies do Linux. Parte do seu sucesso se deve ao fato de ser uma implementao do
IPP (Internet Printing Protocol), um novo padro para impresso baseado no protocolo HTTP,
que apresenta uma srie de vantagens em relao ao velho protocolo LPD. Dentre elas, podese destacar:
Possui um escalonador baseado em um servidor web HTTP 1.1;
Possui uma interface web para configurao e administrao do sistema;
Disponibiliza um maior nmero de opes de impresso para o usurio;
Pode ser feito um controle de acesso bastante apurado a uma impressora, baseado em
diretivas Allow e Deny, comuns ao servidor Web Apache;
Oferece suporte criptografia e ao servio de proxy.

Administrao de Sistemas Linux


126

CUPS:
Surge como alternativa s diversas implementaes do protocolo LPD;
Permite a configurao automtica de clientes a partir da configurao de um nico
servidor;
Utiliza o conceito de classes;
Faz balanceamento de carga e tolerante a falhas;
Foi projetado em torno de um processo central de escalonamento.
Antes do lanamento do CUPS, muitos administradores de sistemas ressentiam-se da
dificuldade de se estabelecer um sistema de impresso em rede no Linux que funcionasse de
forma simples e confivel. Havia algumas razes para esse problema:
As extenses feitas por muitos fabricantes ao protocolo LPD, o que tornava muito difcil a
impresso entre diferentes plataformas, quando no impossvel;
O fato de o LPD no possuir um mecanismo de configurao automtica de impressoras.
CUPS:
Vantagens da implementao do IPP:
Escalonador baseado em servidor HTTP 1.1;
Interface web para administrao e configurao;
Maior nmero de opes de impresso;
Controle de acesso bastante apurado;
Suporte criptografia e ao servio de proxy;
Facilidade na configurao para clientes Windows.

Arquitetura
O CUPS suporta balanceamento de carga e tolerncia a falhas com a utilizao de mltiplos
servidores para gerenciar o ambiente de impresso. Ser visto mais frente, que possvel
reunir mltiplas impressoras de rede em uma nica classe, de forma a permitir que o usurio
possa direcionar o seu job para uma classe e t-lo impresso na primeira impressora
disponvel da classe. Como muitos sistemas de impresso, o CUPS projetado em volta de um
processo central de escalonamento, que gerencia os jobs de impresso, processa comandos
administrativos, prov informaes de status das impressoras para programas locais e
remotos e os repassa aos usurios quando necessrio. A figura 6.2 apresenta a arquitetura de
funcionamento do CUPS.

Administrao de Sistemas Linux


127

Figura 6.2 - Arquitetura do CUPS

Arquitetura de funcionamento do CUPS:


Escalonador;
API do CUPS;
Comandos BSD / System V;
Filtros e imagens do CUPS;
Backends.
Escalonador
O escalonador no gerencia apenas a impresso de jobs, por meio dele, possvel gerenciar
impressoras, jobs e classes do sistema. Trata-se, de um servidor HTTP que, alm de cuidar das
requisies de impresso feitas por intermdio do protocolo IPP, atua no monitoramento e na
administrao do servio de impresso. O escalonador tambm utiliza filtros e backends
apropriados para imprimir os jobs dos usurios. Alm disso, pode ser utilizado como ferramenta
de consulta, j que possui uma farta documentao sobre as funcionalidades do sistema.
Escalonador:
O escalonador um servidor web que gerencia jobs e impressoras;
Utiliza filtros e backends para imprimir os jobs;
Tambm pode ser utilizado como fonte de documentao.
API do CUPS
A API do CUPS contm uma srie de funes especficas para enfileiramento de jobs de
impresso. Para tal, ela obtm informaes das impressoras do sistema, acessa recursos
utilizando os protocolos HTTP e IPP e manipula arquivos PPD (PostScript Printer
Description). O CUPS possui quatro tipos de arquivos de configurao, que sero
apresentados na tabela 6.1.

Administrao de Sistemas Linux


128

Arquivos de Configurao
Arquivos de configurao
do servidor HTTP

Definem as propriedades de controle de acesso ao servidor.


Possuem sintaxe semelhante a dos arquivos de configurao
do servidor web Apache.

Arquivos de definio de
impressoras e de classes

Contm informaes sobre as impressoras e as classes


definidas no sistema. Classes de impressoras nada mais so
do que um conjunto de impressoras.

Arquivos de tipos MIME e


de regras de converso

Listam os filtros que, na impresso, permitem que uma


aplicao envie o formato de arquivo adequado ao sistema
de impresso, que ento converte o documento para um
formato que pode ser impresso pelo dispositivo indicado.

Arquivos PPD

Descrevem as caractersticas de todas as impressoras do sistema.


H um arquivo PPD para cada impressora do sistema.

Tabela 6.1 - Arquivos de configurao do CUPS


Comandos BSD / System V
O CUPS pode utilizar tanto os comandos do LPD, quanto os comandos do Line Printer System
do System V, para imprimir um arquivo ou verificar o status de uma impressora, mantendo
compatibilidade com esses sistemas.

Funcionamento do CUPS:
API contm funes especficas para enfileiramento dos jobs;
Jobs so filtrados antes de serem impressos.
Arquivos de configurao:
Arquivos de configurao do servidor HTTP;
Arquivos de definio de impressoras e de classes;
Arquivos de tipos MIME e de regras de converso;
Arquivos PPD (PostScript Printer Description).
Filtros e imagens do CUPS
Jobs de impresso so filtrados antes de serem enviados a uma impressora. Alguns filtros
fazem a converso dos dados do job para um formato compatvel com o da impressora.
Outros filtros fazem apenas a seleo de pginas e tarefas relacionadas ordenao do
arquivo. Todos os filtros, entretanto, devem suportar um conjunto comum de opes,
incluindo: nome da impressora; identificao do job (job ID); nome do usurio; ttulo do job;
nmero de cpias e opes do job. Existem filtros para os mais diferentes formatos de
arquivos existentes. A biblioteca de imagens do CUPS especialmente til na impresso de
grandes arquivos de imagens. Nesse caso, ela utilizada por filtros de arquivos de imagens e
Administrao de Sistemas Linux
129

pelos drivers mais gerais de impressoras, para fazer converses e gerenciamento de cores e
de escala de grandes arquivos de imagens que devem ser impressos.
Backends
Um backend nada mais do que um filtro especial que envia dados de impresso para um
dispositivo ou conexo de rede. Existem backends para conexes paralelas, seriais, USB, IPP,
LPD, SMB, AppSocket (JetDirect) e Netatalk. Os backends tambm so utilizados para
determinar os dispositivos disponveis. Na inicializao, cada backend questionado sobre
uma lista de dispositivos que ele suporta e sobre qualquer outra informao que esteja
disponvel. Isso permite, por exemplo, que um backend informe ao CUPS que uma impressora
HP Deskjet 860C est conectada porta paralela LPT1.

Interface web do CUPS


A interface web do CUPS possibilita o gerenciamento de impressoras, classes e jobs de modo
rpido e intuitivo. Essa sesso de aprendizagem ser baseada na administrao do CUPS
atravs da linha de comandos, ficando a cargo do aluno, navegar pela interface web para
explorar todas as suas funcionalidades. A figura 6.3 mostra a pgina inicial da interface web
do CUPS. A partir dela possvel navegar entre os diversos links e funcionalidades.

Figura 6.3 - Interface web do CUPS

Administrao de Sistemas Linux


130

Gerenciamento de impressoras
Quando um usurio solicita que um arquivo seja impresso em uma determinada classe de
impressora, o sistema direciona esse arquivo para a primeira impressora que se tornar
disponvel e que pertena classe solicitada. feito um esquema de rodzio, utilizando o
escalonamento round-robin para evitar o uso excessivo de apenas um dispositivo. Nessa
mesma linha, o CUPS tambm suporta o conceito de classes implcitas. Com isso, ele permite
que se estabeleam mltiplos servidores com configuraes de impressoras idnticas. Os
clientes, ento, passam a enviar seus jobs de impresso para o primeiro servidor que estiver
disponvel. Dessa forma, se um servidor pra, os jobs passam a ser redirecionados para
aqueles que esto operacionais, criando um sistema tolerante a falhas. O comando utilizado
para criar classes de impressoras, inserir e remover impressoras nas classes o lpadmin, que
ser visto a seguir.
Gerenciamento de impressoras:
Atravs da linha de comandos;
Por intermdio da interface web:
http://localhost:631/admin
Classes de impressora:
Impressoras so reunidas em grupos;
Jobs enviados para uma classe so encaminhados para a primeira impressora livre
da classe;
Balanceamento via round-robin adotado.

Classes implcitas:
Mltiplos servidores com configuraes idnticas;
Sistema tolerante a falhas (redundncia);
Criao e remoo de classes e impressoras feitas atravs do comando lpadmin.
Cada fila tem um dispositivo e um nome:
URI (Uniform Resource Identifier) - Forma de identificao de dispositivo:
serial:/dev/ttyS1?baud=115200
parallel:/dev/lp1
socket://192.168.1.10

Comandos
Todas as funcionalidades oferecidas pela interface web do CUPS podem ser executadas
atravs da linha de comandos. A seguir, so apresentados os comandos utilizados na
administrao do CUPS, com suas respectivas funcionalidades.

Administrao de Sistemas Linux


131

lpadmin
O comando lpadmin utilizado, para adicionar uma impressora ao sistema, ou mesmo para
modificar as caractersticas de alguma impressora existente. Tambm pode ser utilizado
para configurar classes e estabelecer quotas de impresso para usurios em relao a uma
impressora ou restringir seu uso para determinados usurios. Os exemplos abaixo mostram
como adicionar uma impressora remota e como remover do sistema uma impressora
chamada Matricial.
# lpadmin p LaserJet E v socket://10.1.3.1 m laserjet.PPD
# lpadmin x Matricial
lpinfo
Exibe os dispositivos de impresso e as impressoras disponveis no servidor CUPS.
lpstat
Exibe informaes sobre jobs, classes e impressoras do sistema.
lpoptions
utilizado para definir opes de impresso ou exibir os valores padro de cada opo.
Comando lpadmin:
Utilizado para configurar impressoras e classes.
Comando lpinfo:
Lista dispositivos e drivers disponveis.
Comando lpstat:
Informa o status do CUPS.
Comando lpoptions:
Define ou exibe opes de impresso.
cupsdisable
Um administrador de sistema, muitas vezes, depara-se com problemas como o mau
funcionamento de uma impressora. Nesse momento, preciso tomar alguma medida para
suspender a impresso de jobs at que o problema seja resolvido. O comando que deve ser
utilizado nesse caso o cupsdisable. Este comando no impede que o sistema continue
aceitando jobs para serem impressos na impressora que foi desabilitada. Ele apenas no
permite que os jobs dessa impressora sejam efetivamente impressos.
cupsenable
As impressoras que foram desabilitadas pelo comando cupsdisable continuam aceitando
novos pedidos, que so enfileirados e s sero impressos aps a impressora ser novamente
habilitada com o comando cupsenable.
cupsreject
Como foi visto acima, uma impressora pode ser desabilitada e continuar aceitando jobs para
serem impressos. Em alguns casos, entretanto, pode ser necessrio fazer com que uma
Administrao de Sistemas Linux
132

impressora no mais aceite jobs e apenas finalize a impresso daqueles que esto em sua fila.
Uma situao como essa acontece quando necessrio realizar alguma manuteno na
impressora e deve-se garantir que ela no estar disponvel para os usurios durante esse
perodo. Nesse caso, o comando cupsreject deve ser utilizado.
cupsaccept
Reverte o estado da impressora que foi modificado pelo comando cupsreject, isto , ela volta
a receber jobs de impresso.
Comando cupsdisable:
Interrompe a impresso de jobs em uma impressora.
Comando cupsenable:
Reinicia a impresso de jobs em uma impressora.
Comando cupsreject:
Impede a submisso de jobs para uma impressora.
Comando cupsaccept:
Faz com que a impressora aceite novamente pedidos de impresso (jobs).

Gerenciamento de clientes
A configurao de clientes Unix-like no CUPS pode ser feita de forma manual ou automtica,
especificando um nico ou mltiplos servidores, ou ainda por intermdio do repasse de
informaes de um cliente para outros clientes.
Configurao manual
Das vrias formas de se configurar um cliente, a mais trabalhosa, certamente, a
configurao manual. Ela exige que o administrador execute, em cada cliente, o comando
lpadmin, informando o servidor de impresso e o nome do dispositivo, por meio de seu URI.
Este procedimento deve ser repetido para cada impressora que se queira definir no cliente.
Em um ambiente com mltiplas impressoras e um grande nmero de clientes, esse trabalho
pode ser estafante.
Gerenciamento de clientes:
Configurao manual:
Executar o comando lpadmin em cada um dos clientes;
A operao deve ser repetida para cada dispositivo;
Em uma grande rede, o trabalho pode se tornar estafante.
Configurao automtica
O CUPS tambm possibilita a configurao automtica de filas de impresso em clientes que
esto na mesma rede do servidor. Para configurar um cliente, nesse caso, o administrador
no precisa fazer absolutamente nada. Todas as impressoras e classes criadas ou removidas
do servidor so automaticamente atualizadas no cliente em um perodo mximo de 30
Administrao de Sistemas Linux
133

segundos. Para tal, o administrador ter que habilitar a diretiva BrowseAddress no arquivo de
configurao do CUPS no servidor (/etc/cups/cupsd.conf). So propagados 80 bytes de
informao por impressora a cada 30 segundos. Apesar dessa quantidade de dados ser
pequena, em um ambiente com muitos servidores e dispositivos de impresso os valores
padro das diretivas BrowseInterval e BrowseTimeout podem ser alterados para reduzir esse
fluxo de dados.
Outra opo segmentar a rede e neste caso, a diretiva BrowsePoll, dever ser includa no
arquivo de configurao do CUPS no cliente (/etc/cups/cupsd.conf), para definir o servidor
que ser consultado pelo cliente. Se for utilizado mais de um servidor e eles estiverem em
sub-redes diferentes, necessrio configurar os clientes para que busquem informaes
nestes servidores, utilizando mltiplas diretivas BrowsePoll, uma por linha, para especificar
cada servidor. Esse esquema pode se tornar ineficiente se existirem clientes e servidores
espalhados em vrias sub-redes.
Para contornar essa deficincia, bem como limitar a quantidade de clientes que podem
buscar informaes em um servidor, o administrador pode configur-lo para que apenas um
cliente faa esse servio e repasse as informaes para os demais. possvel implementar
essa limitao inserindo a diretiva BrowseRelay no arquivo de configurao do CUPS no
servidor.
Vamos supor um cenrio onde exista um servidor em uma sub-rede 1 com o IP 10.1.1.2 e
outro servidor em uma sub-rede 2 com o IP 10.1.2.4. Alm disso, vamos supor que exista um
computador cliente conectado a uma terceira sub-rede, com o endereo IP 10.1.3.101 e
tambm conectado s sub-redes 1 e 2. Para este cliente fazer o repasse de informaes
(relay) para os demais clientes da sub-rede 3, seu arquivo de configurao deve estar
configurado da seguinte maneira:
# Fazendo poll nos dois servidores
BrowsePoll <nome_servidor_sub-rede-1>
BrowsePoll <nome_servidor_sub-rede-2>
# Fazendo relay das sub-redes 1 e 2 para a sub-rede 3
BrowseRelay 10.1.1 10.1.3.255
BrowseRelay 10.1.2 10.1.3.255
diretiva BrowseRelay devem ser passados dois parmetros. O primeiro especifica um
endereo fonte, e o segundo, um endereo de broadcast. Assim, quaisquer pacotes vindos dos
servidores de impresso nas sub-redes 1 e 2 sero repassados para o endereo de broadcast
da sub-rede 3.
Gerenciamento de clientes:
Configurao automtica:
Nada a fazer: impressoras e classes criadas ou removidas do servidor so refletidas
no cliente em um prazo mximo de 30 segundos;
Habilitar a diretiva BrowseAddress no servidor;
Habilitar a diretiva BrowsePoll se a rede estiver segmentada em sub-redes;

Administrao de Sistemas Linux


134

Torna-se ineficiente quando h clientes e servidores espalhados em vrias subredes;


A soluo est na definio de um cliente que faa relay para os outros clientes.
Clientes Windows
J os clientes que utilizam sistemas Windows, no podem aproveitar a facilidade de
configurao automtica do CUPS, por falta de compatibilidade. Nesses clientes, as
impressoras tm que ser instaladas manualmente o que consome uma grande quantidade de
tempo, dependendo do nmero de computadores utilizando sistemas Windows.

Administrao de Sistemas Linux


135

Administrao de Sistemas Linux


136

7
Registro de eventos
Sumrio
Conhecer em detalhes o conceito de registro de eventos em sistemas Linux;
Conhecer as principais solues para gerenciamento de registros de eventos em sistemas
Linux;
Conhecer os passos necessrios para implementar um servidor dedicado ao
armazenamento de registros de eventos de todos os servidores e equipamentos da rede;
Conhecer as principais solues de anlise de registros de eventos;
Conhecer as principais recomendaes de segurana envolvendo uma soluo completa
de gerenciamento de registros de eventos no Linux.
Registro de eventos:
Sysklogd;
Rsyslog;
Syslog-ng;
Rotacionamento de arquivos de log;
Comando logger;
Servidor de logs;
Aplicativos para anlise de arquivos de log;
Recomendaes bsicas de segurana.

Introduo
Todo sistema operacional gera eventos que, na maioria das vezes, ocorrem de modo
assncrono e a intervalos irregulares. Por exemplo, um servidor de arquivos gera eventos
como a finalizao de uma escrita em disco, a abertura de um arquivo, etc. Muitos desses
eventos possuem um grau de importncia relativamente baixo e sendo assim, no precisam
ser armazenados. Todas as aes executadas pelas aplicaes que esto ativas em um
sistema Linux podem ser registradas em arquivos, geralmente localizados no diretrio
/var/log. Esses arquivos que armazenam os registros relativos aos eventos gerados pelo
sistema operacional e pelas aplicaes so chamados de arquivos de log. Os arquivos que
armazenam os registros, e os tipos de registros que so armazenados podem ser definidos
pelo administrador. Alguns programas, como o Apache e o Qmail trabalham com diversos
arquivos de log e para uma melhor organizao, armazenam esses arquivos em subdiretrios
Administrao de Sistemas Linux
137

dentro do diretrio /var/log. Um arquivo de log contm, normalmente, os seguintes


registros: data e hora em que ocorreu o evento, nome do servidor que gerou o evento, nome
do programa que gerou o evento e a mensagem emitida pelo programa. Tais informaes so
de extrema importncia para o administrador de sistemas, auxiliando-o no s no
monitoramento das atividades executadas pelos programas, como tambm na soluo e
preveno de incidentes de segurana e falhas de software e hardware. Nesta sesso de
aprendizagem, ser visto como configurar um sistema Linux, para que possa armazenar os
diversos registros de eventos gerados, da maneira mais adequada possvel e de acordo com a
estratgia adotada pelo administrador da rede.
Introduo:
Registro dos eventos que ocorrem em um sistema;
Diretrio padro para armazenamento dos arquivos de log no Linux: /var/log;
Contedo de um registro:
Data e hora em que ocorreu o evento.
Nome do servidor que gerou o evento.
Nome do programa que gerou o evento.
Mensagem gerada pelo programa.

Sysklogd
O pacote sysklogd contm os dois daemons responsveis pelo principal servio de
gerenciamento de registros de eventos em sistemas Linux. O syslogd, que prov suporte aos
registros de eventos gerados pelo sistema operacional e pelas aplicaes e o klogd, que prov
suporte aos registros de eventos gerado pelo kernel.

Syslogd
o daemon responsvel pelo controle dos registros de eventos do sistema operacional e das
aplicaes. O daemon syslogd prov suporte tanto a sockets do Linux quanto a sockets de
internet, o que o torna capaz de trabalhar com registros de eventos gerados localmente e em
servidores remotos. A principal desvantagem do syslogd que ele no criptografa os dados
que transporta, podendo gerar problemas de segurana se os registros forem armazenados
em um servidor remoto, j que estes podem ser facilmente interceptados e alterados.
Veremos que existem outras verses de syslog que implementam criptografia de dados e por
isso, seu uso recomendado.
Syslogd:
Prov suporte a registros de eventos do sistema operacional e das aplicaes;
Seu arquivo de configurao, /etc/syslog.conf controla os registros que sero
armazenados pelo syslogd por meio de regras especficas;
Ativa o servio de registro de eventos do sistema.

Administrao de Sistemas Linux


138

Arquivo de configurao do syslog


O arquivo /etc/syslog.conf controla os registros que sero armazenados pelo syslogd, por
intermdio de regras especficas. Cada linha desse arquivo deve conter, obrigatoriamente, os
campos no formato abaixo:
facilidade.prioridade ao
Os campos facilidade e prioridade juntos, so chamados de seletor e devem ser separados
pelo caractere .. J o campo ao, deve ser separado do campo seletor por um ou mais
caracteres de espao ou de tabulao. Um mesmo tipo de facilidade pode armazenar seus
registros em arquivos de log diferentes, dependendo do nvel de prioridade do registro,
assim como um mesmo tipo de prioridade pode armazenar seus registros em arquivos de log
diferentes, dependendo da facilidade que gerou o registro, como mostram os exemplos
abaixo:
auth,authpriv.info /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* /var/log/mail.log
*.crit /var/log/syslog
O caractere , utilizado para especificar mais de uma facilidade com a mesma prioridade e
o caractere ; para especificar mltiplos seletores (facilidade/prioridade) com uma ao em
comum. A seguir veremos, em detalhes, cada um desses campos.
Arquivo /etc/syslog.conf:
Possui um formato padro que define trs propriedades bsicas para um registro de
evento:
Facilidade Especifica o tipo de programa que est gerando o registro;
Prioridade Especifica o grau de importncia do registro;
Ao Especifica para onde ser enviado o registro.
Pode ser especificada mais de uma facilidade com a mesma prioridade:
auth,authpriv.info /var/log/auth.log
Mltiplos seletores podem executar uma ao em comum:
*.*;auth,authpriv.none -/var/log/syslog
Facilidade
utilizada para especificar o tipo de programa que est enviando o registro. Mais de uma
facilidade pode ser especificada na mesma linha, separadas por vrgulas. Na tabela 7.1
podem ser vistas algumas facilidades utilizadas com maior frequncia. Algumas facilidades,
como a security, emitem um som de alerta e enviam uma mensagem para o console, como
forma de alertar o administrador do sistema.

Administrao de Sistemas Linux


139

Nome

Facilidade

auth

Programas de autorizao/autenticao de usurios.

authpriv

Registros privativos de programas de autorizao/autenticao de


usurios.

user

Registros genricos de processos de usurios.

cron

Registros do cron.

ftp

Registros de daemons de FTP.

mail

Registros de daemons de e-mail.

kern

Registros do kernel.

security

Sinnimo para a facilidade auth (obsoleta).

syslog

Registros internos gerados pelo syslogd.

daemon

Registros de outros daemons que no possuem facilidades especficas.

Tabela 7.1 - Facilidades


Prioridade
utilizada para especificar o grau de importncia de um registro. Os tipos de prioridade
esto listados na tabela 7.2 em ordem decrescente de importncia. As prioridades tambm
podem ser representadas por nmeros que variam de 0 a 7, onde o nmero 0 corresponde a
emerg, o nmero 1 corresponde a alert e assim por diante. Quando uma prioridade definida
em uma regra no arquivo /etc/syslog.conf as prioridades de maior nvel so
automaticamente consideradas. Conjuntos de facilidades e prioridades (seletores), podem
ser agrupados, separados pelo caractere ;.

Administrao de Sistemas Linux


140

Prioridade

Grau de importncia

emerg/panic

Registros gerados antes de o sistema travar.

alert

Mensagem que indica um problema que deve ser resolvido


imediatamente.

crit

Registros crticas (ex: falhas de hardware).

error/err

Registros de erro.

warning
/warn

Registros de aviso.

notice

Mensagem que no indica erro, mas deve receber uma ateno especial.

info

Registros informativos.

debug

Registros de depurao.

none

Indica que nenhuma mensagem da facilidade indicada ser registrada.

Tabela 7.2 - Prioridades


Ao
utilizada para especificar o destino que ser dado aos registros. O destino de uma
determinada regra definida no arquivo /etc/syslog.conf nem sempre um arquivo
armazenado em disco. A tabela 7.3 mostra os tipos destinos que podem ser dados a um
registro. Nos casos em que o destino for um arquivo, este deve obrigatoriamente existir. Caso
contrrio, ocorrer um erro, pois o syslogd no criar o arquivo automaticamente.
importante ressaltar que o caminho completo do arquivo precisa ser especificado.
Destino

Ao

usurio

Os registros sero enviados aos usurios especificados.

arquivo

Os registros sero armazenados no arquivo especificado.

@servidor

Os registros sero enviados ao servidor especificado.

Os registros sero enviados ao pipe especificado (utilizado para filtros


com programas externos).

/dev/console

Os registros sero enviados aos terminais definidos no arquivo


/etc/securetty.

Tabela 7.3 - Aes

Administrao de Sistemas Linux


141

Caracteres especiais
Existem alguns caracteres especiais que podem ser utilizados no arquivo /etc/syslog.conf. A
tabela 7.4 mostra esses caracteres e seus significados.
Caracteres
especiais

Funo

Todos os nveis de prioridade especificados e acima no sero


registrados (operador de negao NOT).

Desativa o sincronismo imediato do arquivo aps a gravao de


um registro.

Quando utilizado no campo seletor, pode abranger todas as


facilidades e/ou prioridades. J no campo ao envia os registros
a todos os usurios logados atravs do comando wall.

Utilizado para restringir o envio de registros apenas a um


determinado nvel de prioridade.

Tabela 7.4 - Caracteres especiais

Arquivos de log especiais


Alguns arquivos de log do sistema apresentam-se no formato binrio, visando aumentar a
segurana dos dados neles armazenados. Dessa forma, torna-se mais complicada a alterao
de um determinado registro presente nesses arquivos. Esses arquivos sero vistos a seguir.
Arquivo /var/log/lastlog
Arquivo binrio que registra o horrio do ltimo acesso, ou tentativa de acesso, feito por
cada um dos usurios do sistema. Seu contedo muda a cada login efetuado e visualizado
toda vez que um determinado usurio efetua login, ou quando os comandos finger ou lastlog
so executados. No Linux, esses registros devem ser explicitamente habilitados, configurando
a varivel LASTLOG_ENAB do arquivo /etc/login.defs.
Arquivo /var/log/utmp
Arquivo binrio que registra informaes relacionadas a usurios locais que se encontram
logados no sistema em um determinado momento. Para ter acesso aos dados contidos nesse
arquivo, podem ser utilizados os comandos w, who e finger.
Arquivo /var/log/wtmp
Arquivo binrio que registra informaes sobre as ltimas sesses abertas e encerradas
pelos usurios. Para ter acesso aos dados contidos nesse arquivo, necessria a execuo do
comando last. Recomenda-se configurar as permisses de acesso dos trs arquivos acima
para o valor 644, definindo o usurio root como o dono dos arquivos.

Administrao de Sistemas Linux


142

Arquivo /var/log/lastlog:
Registra horrio do ltimo acesso ou tentativa de acesso de cada um dos usurios do
sistema.
Arquivo /var/log/utmp:
Registra usurios locais logados no sistema.
Arquivo /var/log/wtmp:
Registra detalhes das ltimas sesses abertas e encerradas pelos usurios.

Klogd
Programa que controla o registro de eventos gerados pelo kernel, monitorando as
mensagens geradas e enviando-as, posteriormente, para o programa syslogd. Entretanto, se o
klogd for invocado com a opo -f <arquivo>, este enviar as mensagens geradas pelo kernel
para o arquivo especificado, ao invs de envi-las ao programa syslogd.
No Linux, existem basicamente duas fontes geradoras de registros do kernel: o filesystem
/proc e a interface syscall. Atualmente, as duas foram unificadas, e o klogd responsvel por
determinar a origem pela qual as mensagens de log sero obtidas. O comando klogd verifica,
primeiramente, se o file system /proc est montado, se estiver, o arquivo /proc/kmsg ser
utilizado como fonte geradora dos registros de eventos do kernel. Caso contrrio, sero
utilizadas chamadas de sistema para obter essas informaes.
Se um sistema Linux estiver configurado para enviar as mensagens geradas pelo kernel
diretamente ao syslogd, o klogd tem a habilidade de priorizar adequadamente essas
mensagens. Na tabela 7.5, podem ser vistos os nveis de prioridade definidos pelo klogd, com
suas respectivas descries.

Administrao de Sistemas Linux


143

Nvel

Prioridade

Grau de importncia

KERN_EMERG

O sistema est inutilizvel

KERN_ALERT

Uma ao deve ser tomada imediatamente para resolver


o problema

KERN_CRIT

Mensagens crticas

KERN_ERR

Mensagens de erro

KERN_WARNING

Mensagens de aviso

KERN_NOTICE

Mensagens informativas com um significado maior

KERN_INFO

Mensagens informativas

KERN_DEBUG

Mensagens de depurao

Tabela 7.5 - Prioridades dos registros gerados pelo kernel


O klogd possui tambm a habilidade de definir, por meio dos nveis de prioridade, as
mensagens que sero enviadas aos terminais definidos no sistema. Normalmente, atribudo
aos terminais o nvel 7 de prioridade. Sendo assim, qualquer mensagem com nvel de
prioridade menor que 7 enviada aos terminais definidos no sistema. O armazenamento de
registros com nvel de prioridade 7 desnecessrio, j que para situaes de operao
normal do sistema esses registros no so relevantes. O klogd deve ser invocado com a opo
-c, para que as mensagens geradas pelo kernel no sejam enviadas aos terminais definidos no
sistema. possvel definir, tambm, por intermdio da opo -c, os registros de quais nveis
de prioridade sero enviados a esses terminais. No exemplo abaixo, todas as mensagens
geradas pelo kernel, com nvel de prioridade abaixo de 4 sero enviadas aos terminais.
# klogd -c 4
klogd:
Prov suporte aos registros de eventos gerados pelo kernel;
Envia os registros gerados ao syslogd por padro;
Pode enviar os registros gerados alternativamente para um arquivo parte;
Seus registros so classificados em nveis de prioridade.

Rsyslog
O rsyslog uma verso avanada do syslog que oferece uma srie de funcionalidades extras,
onde podemos destacar as seguintes:
Armazenamento dos registros em bases de dados MySQL, PostgreSQL, etc.;

Administrao de Sistemas Linux


144

Suporte criptografia de dados utilizando o protocolo TLS sobre TCP (RFC 3195);
Definio de registros personalizados pelo administrador;
Incluso da facilidade e da prioridade nos registros;
Suporte a expresses regulares.
Devido a essas caractersticas, o rsyslog se tornou o pacote padro para gerenciamento de
logs na maioria das distribuies Linux.
Rsyslog:
Verso aprimorada do syslog;
Integrao com bases de dados;
Suporte criptografia de dados;
Definio de registros personalizados pelo administrador;
Incluso da facilidade e da prioridade nos registros.

Arquivo de configurao do rsyslog


O arquivo /etc/rsyslog.conf controla os registros que sero armazenados pelo rsyslog, por
intermdio de regras especficas, assim como feito no syslog. Alm disso, possvel definir
uma srie de opes especficas do rsyslog. A seguir, apresentado um exemplo comentado
do arquivo de configurao do rsyslog:
# Mdulos
$ModLoad imuxsock
#
$ModLoad imklog
#
#$ModLoad immark
#
#$ModLoad imudp
#
#$UDPServerRun 514
#$ModLoad imtcp
#
#$InputTCPServerRun 514

Suporte
Suporte
Suporte
Suporte

ao registro de eventos locais


ao registro de eventos do kernel
marcao de mensagens
ao protocolo UDP

Suporte ao protocolo TCP

# Diretivas Globais
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755

# Regras - Mesmo formato do syslog


auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
Administrao de Sistemas Linux
145

daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

Syslog-ng
O syslog-ng (syslog new generation) uma verso aprimorada do syslog, que tem como
principais caractersticas:
Possibilidade de filtrar os registros de log com base em seu contedo, por meio do uso de
expresses regulares;
Capacidade de armazenar assinaturas digitais para cada registro, facilitando a deteco
de modificaes no autorizadas nos arquivos de log;
Possibilidade de permitir o fluxo de registros entre servidores, utilizando qualquer porta
TCP. Alm disso, seu esquema de configurao bastante intuitivo e poderoso;
Suporte criptografia de dados, utilizando o programa stunnel.
O syslog-ng pode ser configurado para executar um comando caso detecte um padro em um
registro que case com alguma expresso regular, utilizando a diretiva program(). A execuo
automtica de programas deve ser bem planejada, pois pode sobrecarregar o servidor ou at
mesmo causar indisponibilidades, j que um mesmo tipo de registro pode ser gerado
diversas vezes em um pequeno intervalo de tempo e a execuo do programa associado a
este pode ser demorada.
Syslog-ng:
Verso aprimorada do syslog;
Pode filtrar registros com base em seu contedo;
Possibilita a incluso de assinatura digital nos registros, protegendo-os contra
alteraes no autorizadas;
Suporte criptografia de dados;
Pode executar comandos caso detecte algum padro pr-definido em um registro.
A sintaxe utilizada na configurao do syslog-ng completamente diferente da sintaxe
utilizada pelo syslog, sendo baseada em quatro elementos que sero descritos na tabela 7.6:

Administrao de Sistemas Linux


146

Elemento

Descrio

source

Define a origem dos registros de eventos. Pode ser local


ou de um servidor remoto.

destination

Define o destino dos registros de eventos. Pode ser um


arquivo, script ou um servidor de logs.

filter

Define os filtros criados pelo administrador.

log

Diretiva que associa os elementos source, destination e


filter, criando uma ao.

Tabela 7.6 - Sintaxe do Syslog-ng


Os elementos source, destination e filter so criados pelo administrador separadamente
e posteriormente so associados em uma ao representada pela diretiva log. possivel
especificar mais de uma origem para um determinado destino ou mais de um destino para
mensagens de uma determinada origem numa mesma regra.
Para que o syslog-ng seja definido no sistema como o daemon padro de gerenciamento de
registros de eventos necessrio desinstalar o sysklogd ou o rsyslog, dependendo de qual
deles estiver instalado. Alm disso, preciso remover quaisquer configuraes referentes a
eles que estejam associadas ao logrotate. Em seguida, deve ser criado o arquivo
/etc/logrotate.d/syslog-ng com a sintaxe adequada para que os arquivos de log criados pelo
syslog-ng sejam rotacionados de modo correto.

Arquivo de configurao do syslog-ng


O arquivo /etc/syslog-ng/syslog-ng.conf controla os registros que sero armazenados pelo
syslog-ng. Sua sintaxe bem diferente da sintaxe utilizada no syslog. A seguir, apresentado
um exemplo comentado do arquivo de configurao do syslog-ng:
# Configuraes globais
options {
owner(root);
group(root);
perm(0640);
dir_perm(0740);
create_dirs(yes);
use_fqdn(no);
keep_hostname(yes);
use_dns(no);
sync(0);
};
# Seo Source
Administrao de Sistemas Linux
147

source src { unix-stream("/dev/log"); internal(); };


source kernsrc { file("/proc/kmsg"); };
# Seo Destination
destination authlog { file("/var/log/auth.log"); };
destination syslog { file("/var/log/syslog"); };
destination cron { file("/var/log/cron.log"); };
destination daemon { file("/var/log/daemon.log"); };
destination kern { file("/var/log/kern.log"); };
destination mail { file("/var/log/mail.log"); };
destination all { file("/var/log/all.log"); };
destination debug { file("/var/log/debug"); };
destination messages { file("/var/log/messages"); };
destination console { usertty("root"); };
# Seo Filters
filter f_authpriv { facility(auth, authpriv); };
filter f_syslog { not facility(authpriv, mail) and not
match(ppp.*LCP); };
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_mail { facility(mail) and not match (imapd); };
filter f_debug { not facility(auth, authpriv, news, mail) and not
match(ppp.*LCP); };
filter f_messages { level(info..warn) and not facility(auth,
authpriv, mail, news); };
filter f_emergency { level(emerg); };
# Seo Log
log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_daemon); destination(daemon); };
log { source(kernsrc); filter(f_kern); destination(kern); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); destination(all); };
log { source(src); filter(f_debug); destination(debug); };
log { source(src); filter(f_messages); destination(messages); };
log { source(src); filter(f_emergency); destination(console); };

Administrao de Sistemas Linux


148

Rotacionamento de arquivos de log


O rotacionamento dos arquivos de log do sistema feito atravs do comando logrotate, que
basicamente faz cpias dos arquivos de log em uso, criando novos arquivos que passaro a
ser utilizados pelo sistema e pelas aplicaes. Opcionalmente, os arquivos de log antigos
podem ser compactados para diminuir a utilizao de espao em disco. Para automatizar o
processo de rotacionamento dos arquivos de log, o logrotate pode ser ativado via crontab do
sistema. A rotao de arquivos de log feita de acordo com o tamanho do arquivo de log
especificado, mas a opo -f pode ser utilizada para forar a rotao de um arquivo.
Rotacionamento de arquivos de log:
Comando logrotate:
Rotaciona, comprime e cria novos arquivos de log do sistema;
O rotacionamento pode ser feito de modo automtico atravs do crontab do
sistema.

Arquivo de configurao do logrotate


O arquivo /etc/logrotate.conf possui as regras utilizadas pelo comando logrotate para
realizar o rotacionamento adequado dos arquivos de log. A seguir, apresentado um exemplo
comentado do arquivo de configurao do logrotate:
# Rotaciona os arquivos de log semanalmente
weekly
# Mantm as quatro ltimas cpias dos arquivos de log anteriores
rotate 4
# Erros sero enviados ao usurio root
mail root
# Cria novos arquivos de log, vazios, aps rotacionar os antigos
create
# Compacta os arquivos de log que so rotacionados
compress
# Mantm o primeiro log rotacionado descompactado
delaycompress
# Diretrio que contm as configuraes para as aplicaes do sistema
include /etc/logrotate.d

Administrao de Sistemas Linux


149

O diretrio /etc/logrotate.d contm os arquivos de configurao de rotacionamento de


arquivos de log individuais para cada daemon. No exemplo a seguir temos a configurao
para o named:
#/etc/logrotate.d/named
/var/log/named.log {
missingok
create 0644 named named
postrotate
/bin/kill -HUP `cat /var/run/named/named.pid 2> /dev/null` 2>
/dev/null || true
endscript
}
Obs.: importante enviar um sinal HUP ao daemon que utiliza o arquivo de log que foi
rotacionado, para que no ocorram problemas aps sua rotao. Isto feito utilizando o
parmetro postrotate.
Arquivo /etc/logrotate.conf:
Arquivo de configurao do logrotate ;
Principais parmetros:
Periodicidade em que feito o rotacionamento;
Opo de compactar ou no os arquivos antigos;
Nmero de cpias de arquivos anteriores que sero mantidas;
Opo de criar ou no novos arquivos de log aps rotacionar os antigos.

Diretrio /etc/logrotate.d:
Contm, opcionalmente, os arquivos de configurao de rotacionamento dos arquivos
de log individuais para cada daemon do sistema;
Deve ser enviado um sinal HUP ao daemon ao qual o arquivo de log tenha sido
rotacionado, por meio do parmetro postrotate .

O comando logger
O comando logger permite que uma mensagem seja enviada aos arquivos de log do sistema
por meio da linha de comando. Geralmente utilizado em shell scripts desenvolvidos pelo
administrador do sistema. possvel especificar a facilidade, a prioridade e outros
parmetros da mensagem. O comando logger tambm pode ser utilizado para testar
mudanas feitas no arquivo de configurao do syslogd. Considere a hiptese de que o
administrador tenha acrescentado a seguinte linha ao arquivo /etc/syslog.conf:
auth.* /var/log/messages
Por intermdio do comando a seguir, esse administrador pode verificar se a alterao feita
por ele surtiu o efeito esperado:
Administrao de Sistemas Linux
150

# logger -p auth.* mensagem de teste


Se a sintaxe da linha inserida no arquivo /etc/syslog.conf estiver correta, a mensagem
transmitida por meio do comando logger ser gravada no arquivo /var/log/messages.
Comando logger:
Permite o envio de registros aos arquivos de log do sistema por meio da linha de
comando;
Utilizado geralmente em shell scripts;
Utilizado tambm para testar mudanas no arquivo de configurao do syslogd.

Servidor de logs
Um sistema Linux mantm um conjunto de arquivos de log que registram as diversas formas
em que o sistema foi acessado, e podem registrar indcios da passagem de um invasor pelo
sistema. Um invasor experiente, entretanto, pode remover esses indcios antes de sair do
sistema. Uma boa estratgia a ser adotada pelo administrador a instalao de um servidor
dedicado ao armazenamento dos registros de eventos gerados por todos os servidores da
rede. Essa tcnica facilita o gerenciamento, a anlise e a soluo de problemas que ocorram
nos servidores de uma organizao, bem como dificulta a remoo de registros que
evidenciem uma suposta invaso.
importante que o administrador de sistemas tenha conscincia de que preciso que os
arquivos de log sejam verificados com frequncia, ou de nada valer a implementao de um
esquema de segurana. Para habilitar o syslogd a receber os registros de eventos gerados por
outros servidores, deve-se inici-lo com a opo -r. Isso pode ser feito editando o arquivo
/etc/init.d/syslog e acrescentando a opo -r na varivel SYSLOGD_OPTIONS, ou diretamente
na linha de comando, caso o syslogd no seja iniciado por intermdio do script
/etc/init.d/syslog. Feita a alterao, o syslogd deve ser reiniciado. A instalao de um servidor
de logs evita que dados importantes se percam, caso algum servidor da rede seja invadido e
tenha seus dados comprometidos.
Servidor de logs:
Centraliza os registros de eventos gerados por todos os servidores da rede;
Evita que registros de eventos importantes sejam perdidos em caso de invases;
Facilita a vida do administrador na apurao de incidentes de segurana.

Configurando os servidores clientes


O arquivo /etc/syslog.conf dos servidores clientes tambm deve ser modificado, para que os
registros de eventos gerados por estes sejam enviados ao servidor de logs. A sintaxe utilizada
um sinal de @ seguido do nome do servidor no campo ao de cada linha, para
redirecionar os registros gerados ao servidor de logs. O daemon syslogd dos servidores
clientes deve ser reiniciado para que as alteraes entrem em vigor. A seguir, pode-se ver um

Administrao de Sistemas Linux


151

exemplo comentado do arquivo de configurao do syslogd de um servidor cliente, que


direciona seus registros de eventos a um servidor de logs:
# Arquivo /etc/syslog.conf
auth,authpriv.* @servidor_de_logs
cron.* @servidor_de_logs
daemon.* @servidor_de_logs
kern.* @servidor_de_logs
mail.* @servidor_de_logs
user.* @servidor_de_logs
Configurando os clientes:
Arquivo /etc/syslog.conf dos servidores clientes deve ser alterado, para que os
registros de eventos gerados sejam enviados ao servidor de logs;
Exemplos:
auth,authpriv.* @servidor_de_logs
cron.*

@servidor_de_logs

mail.*

@servidor_de_logs

Aplicativos para anlise de arquivos de log


Uma vez definida a soluo de gerenciamento de registros de eventos bem como a
arquitetura adotada para armazenar os arquivos de log e preciso definir tambm uma
ferramenta de anlise e tratamento dos eventos em tempo real. Existem ferramentas que
executam esta funo, monitorando os arquivos de log de forma otimizada e executando
aes em resposta a eventos que ocorrem. Diversos tipos de aes podem ser definidas como
por exemplo: o envio de um e-mail ao administrador; a execuo de um comando ou at
mesmo a incluso de uma nova regra no firewall.
Essas ferramentas so de extrema importncia para o administrador, pois de nada adianta
armazenar os registros de eventos, se no for dado nenhum tipo de tratamento a eles. Em
ambientes com diversos servidores e equipamentos de conectividade, torna-se praticamente
impossvel analisar os diversos arquivos de log existentes, em busca de problemas. A seguir
sero apresentadas trs ferramentas de anlise de arquivos de log:
Aplicativos para anlise de arquivos de log:
Auxiliam o administrador na tarefa de analisar arquivos de log;
Monitoramento de registros em tempo real;
Execuo de aes em resposta a eventos;
Existem diversas ferramentas que podem ser integradas aos daemons syslog, rsyslog e
syslog-ng.

Administrao de Sistemas Linux


152

Logwatch
O LogWatch uma ferramenta de monitoramento e anlise de arquivos de log escrita em
linguagem Perl que gera relatrios personalizados de acordo com a necessidade do
administrador e os envia por e-mail.
O LogWatch possui um agente de coleta de dados que pode ser instalado em diversos tipos
de sistemas operacionais, bases de dados, equipamentos de conectividade, appliances, etc.
Caso no seja possvel instalar o agente, devido a algum problema de compatibilidade, os
dados podem ser coletados atravs do syslog. Alm disso, deve ser instalado no servidor de
logs um agente para consolidar os dados provenientes dos diversos dispositivos da rede. A
transferncia de dados entre os diversos agentes e o agente central e toda criptografada e
para diminuir a quantidade de registros, os agentes removem os menos significativos,
reduzindo consideravelmente o volume de dados transmitido.
O LogWatch processa os dados coletados armazenando-os em uma base de dados que pode
ser consultada atravs de uma interface web, que disponibiliza diversos tipos de relatrios.
Para acessar a interface web, preciso possuir uma conta de usurio nesta.
Logwatch:
Gera relatrios personalizados e os envia por e-mail;
Suporte criptografia de dados;
Compatvel com diversas plataformas;
Interface web para gerenciamento.

Arquivo de configurao do logwatch


O arquivo /etc/logwatch/conf/logwatch.conf possui as regras utilizadas pelo logwatch para
realizar o monitoramento e a anlise dos arquivos de log. A seguir, apresentado um exemplo
comentado do arquivo de configurao do logwatch:
# Opes globais
LogDir = /var/log
TmpDir = /tmp
mailer = /usr/bin/mail
MailTo = root
UseMkTemp = Yes
MkTemp = /bin/mktemp
# Define se os relatrios sero enviados para STDOUT o por e-mail
Print = No
# Armazena os relatrios em um arquivo (no manda por e-mail/STDOUT)
#Save = /tmp/logwatch
# Define se os arquivos de log rotacionados tambm sero analisados
Administrao de Sistemas Linux
153

#Archives = Yes
#Range = All
# Define o nvel de detalhamento dos relatrios (Low/Med/High)
Detail = Med
# Define os services que sero monitorados
Service = All
# Opo utilizada para que o logwatch analise somente o arquivo
especificado
#LogFile = messages
# Define se somente este servidor ser monitorado pelo logwatch
#HostLimit = Yes

Swatch
O Swatch (Simple log watcher) uma ferramenta que analisa em tempo real um arquivo de
log e caso encontre algum padro definido pelo administrador, executa uma ao. Cada
arquivo de log a ser analisado deve ser passado como parmetro na linha de comando do
swatch. Para evitar problemas de sobrecarga ou indisponibilidade no servidor, o swatch pode
ser configurado para aguardar um intervalo de tempo entre a execuo de duas ou mais
aes disparadas por um ou mais eventos.
Swatch:
Analisa em tempo real arquivos de log;
Executa aes baseadas na deteco de padres;
Arquivo de configurao baseado em duas diretivas (watchfor e ignore);
Tipos de aes: impresso de mensagens no console; emisso de beeps; execuo de
comandos e envio de e-mails.

Arquivo de configurao do Swatch


O arquivo de configurao do swatch o .swatchrc e fica localizado por padro no diretrio
home do usurio swatch. O arquivo .swatchrc possui basicamente duas diretivas:
watchfor - Contm padres de texto e aes que sero executadas caso o padro seja
detectado;
ignore - Especifica padres que sero ignorados caso sejam detectados.
A seguir, apresentado um exemplo comentado do arquivo de configurao do swatch:
# Tentativas de login que falharam
watchfor /INVALID|REPEATED|INCOMPLETE/
echo
Administrao de Sistemas Linux
154

bell 3
exec "/usr/local/sbin/badloginfinger $0"
# Travamentos no sistema
watchfor /(panic)/
echo
bell
mail "suporte@dominio"
ignore = /.*/
A tabela 7.7 mostra as aes que podem ser executadas pelo swatch e suas respectivas
descries:
Ao

Descrio

echo modo

Imprime no console o padro


detectado. O modo opcional e pode
especificar a cor e o estilo da fonte.

bell nmero

Emite uma quantidade de beeps


indicada pelo nmero aps a ao bell.

exec comando

Executa o comando especificado.

pipe comando

Envia o comando especificado para


outro comando atravs de um pipe.

mail
endereo=email,subject=ttulo

Envia um e-mail para um ou mais


endereos.

write usurio1:usurio2

Envia uma mensagem para um ou mais


usurios, utilizando o comando write.

throttle hora:minuto:segundo

Define o perodo de tempo que ser


aguardado para uma ao relacionada a
um padro ser executada novamente.

Tabela 7.7 - Aes do Swatch

Logcheck
O Logcheck uma ferramenta de anlise de arquivos de log e gerao de relatrios. Quando
alguma anomalia (variaes em um padro) detectada, o logcheck a analisa na tentativa de
identificar alguma intruso ou violao do sistema. As mensagens de e-mail enviadas pelo
logcheck so organizadas em categorias ('Active System Attacks', 'Security Violations' e
'Unusual Activity'), o que facilita a anlise dos relatrios. Os tipos de mensagens que sero
includos nos relatrios podem ser personalizados pelo administrador atravs dos arquivos e
Administrao de Sistemas Linux
155

diretrios presentes no diretrio /etc/logcheck. Arquivos e diretrios que contm a palavra


ignore em seus nomes, armazenam expresses regulares que no sero gravadas nos
relatrios gerados pelo logcheck.
O logckeck por padro envia relatrios automaticamente atravs do cron, a cada dois
minutos aps as horas cheias (1:02, 2:02, etc.), mas esse padro pode ser alterado a critrio
do administrador no arquivo /etc/cron.d/logcheck.
Os arquivos de log que so monitorados pelo logcheck so definidos no
arquivo /etc/logcheck/logcheck.logfiles. Cada linha desse arquivo contm o caminho
completo de cada arquivo de log que ser monitorado.
Logcheck:
Analisa arquivos de log;
Anlise baseada na deteco de anomalias;
Emisso de relatrios personalizados;
Mensagens organizadas em categorias ('Active System Attacks', 'Security Violations', e
'Unusual Activity').

Arquivo de configurao do logcheck


O arquivo /etc/logcheck/logcheck.conf possui as regras utilizadas pelo logcheck para realizar
o monitoramento e a anlise dos arquivos de log. A seguir, apresentado um exemplo
comentado do arquivo de configurao do logcheck:
# Define o formato de data nos ttulos dos e-mails enviados
DATE="$(date +'%Y-%m-%d %H:%M')"
# Define se a mensagem ter cabealho/rodap (header.txt/footer.txt)
INTRO=1
# Define o nvel de filtragem (workstation, server ou paranoid)
REPORTLEVEL="server"
# Define os e-mails que recebero os relatrios das anlises
SENDMAILTO=suporte@dominio
# Define o formato do nome do servidor no subject
FQDN=1
# Define se entradas duplicadas sero removidas ou no
SORTUNIQ=0
# Define ser o arquivo cracking.ignore.d ser verificado
SUPPORT_CRACKING_IGNORE=0
# Define o diretrio que contm os arquivos de regras
Administrao de Sistemas Linux
156

RULEDIR="/etc/logcheck"
# Define o comportamento do syslog-summary
SYSLOGSUMMARY=0
# Define o tipo de subject
ATTACKSUBJECT="Attack Alerts"
SECURITYSUBJECT="Security Events"
EVENTSSUBJECT="System Events"
# Define se o prefixo [logcheck] ser includo ou no no subject
ADDTAG="no"

Recomendaes bsicas de segurana


So apresentadas a seguir algumas recomendaes bsicas de segurana, que no so
obrigatrias, mas devem ser seguidas pelo administrador de sistemas, nos casos em que ele
julgar necessrio, a fim de tornar seus sistemas mais seguros.
1. Manter os relgios de todos os servidores da rede sincronizados por meio do protocolo NTP
(Network Time Protocol), para evitar inconsistncias nos horrios dos registros dos eventos
gerados pelos diversos servidores, facilitando, assim, possveis auditorias em casos de incidentes
de segurana.
2. Recompilar o syslogd, modificando o nome e a localizao do arquivo /etc/syslog.conf, para
dificultar possveis tentativas de apagar registros de invases. Para isso, necessrio ter acesso
ao cdigo fonte do sysklogd. A mudana pode ser feita, alterando, no arquivo syslogd.c, a linha
a seguir:
#define _ PATH _ LOGCONF /etc/syslog.conf
3. Instalar um servidor dedicado ao armazenamento de registros de eventos gerados por todos os
servidores da organizao, desativando qualquer outro servio desse servidor. Deve ser criada uma
regra, no firewall local do servidor de logs, que permita o trfego de entrada somente para a porta
514 UDP (syslogd) desse servidor, partindo apenas de servidores da rede local.
4. No criar contas de usurios no servidor de logs.
5. Fazer um backup dirio do servidor de logs para garantir a integridade, a autenticidade e a
disponibilidade dos arquivos de log, pois, se estes dados forem perdidos por algum motivo, o
administrador ficar sem acesso aos registros de eventos de todos os servidores da rede.
6. recomendvel que o servidor de logs utilize mdulos de segurana como o SELinux ou o
LIDS.
SELinux - O SELinux (Security Enhanced Linux) um projeto desenvolvido pela NSA
(National Security Agency) do governo dos EUA que implementa um sistema de controle
de acesso chamado MAC (Mandatory Access Control). O MAC modifica a forma de acesso
aos recursos do sistema, limitando os acessos dos usurios e das aplicaes, deixando a
Administrao de Sistemas Linux
157

cargo do sistema operacional o controle de acesso aos recursos de forma mandatria. As


polticas impostas pelo MAC fornecem um nvel de segurana extra contra acessos no
autorizados.

LIDS - O LIDS (Linux Intrusion Detection System) um patch para o kernel do Linux que
adiciona funcionalidades de segurana como: MAC (Mandatory Access Control); deteco
de port scanners; proteo contra acessos a arquivos e diretrios (inclusive para o
usurio root) e proteo extra para processos, mdulos e interfaces. Com o LIDS
possvel restringir qualquer tipo de acesso ao sistema e qualquer tentativa de acesso no
autorizada em sistemas protegidos por ele reportada atravs de e-mails e registros nos
arquivos de log.
Recomendaes bsicas de segurana:
Manter os servidores da rede com horrio sincronizado:
Um servidor de NTP pode ser utilizado para resolver esse problema;
Esse procedimento evita inconsistncias nos horrios dos registros armazenados
nos arquivos de log.
Desabilitar qualquer servio que no seja o syslog no servidor de log;
O acesso a esse servidor deve ser restringido ao mximo;
Deve ser criada uma regra no firewall local do servidor de logs, permitindo o acesso
somente porta 514 UDP (syslogd) desse servidor, e apenas para servidores da rede
local.

Recomendaes bsicas de segurana:


Evitar que o servidor de log possua contas de usurios;
Realizar um backup dirio do servidor de logs;
Habilitar algum mdulo de segurana no servidor de logs:
SELinux;
LIDS.

Administrao de Sistemas Linux


158

8
Boot & Shutdown e Kernel
Sumrio
Compreender os processos de inicializao e de desligamento de um sistema.
Compreender as arquiteturas monoltica e modular do kernel e o conceito de mdulos.
Compreender e o processo de configurao e compilao do kernel.
Boot & Shutdown e Kernel:
Inicializao do sistema;
Shutdown;
Arquitetura do Kernel;
Configurando e compilando o kernel.

Inicializao do sistema
Na aviao, dizem que os momentos mais crticos so o da decolagem e o da aterrissagem. Da
mesma forma, pode-se dizer que a inicializao e o desligamento de um sistema Linux
tambm so os pontos mais crticos da sua operao. Nesta sesso de aprendizagem veremos
que ambos os processos tm que ser executados de forma correta para garantir o bom
funcionamento do sistema. Durante a inicializao do sistema, vrias mensagens so
mostradas na tela. Apesar de algumas dessas mensagens possurem, primeira vista, um
certo grau de complexidade, o processo de inicializao do sistema pode ser visto de uma
forma simples. A inicializao do sistema pode ser dividida nos seguintes estgios:
BIOS (Basic Input/Output System) - Programa responsvel por controlar os primeiros
passos do processo de boot e tambm por prover a interface de mais baixo nvel para os
dispositivos perifricos. Verifica o sistema e d incio ao carregador de boot de primeiro
estgio, localizado no MBR (Master Boot Record) do disco rgido primrio, que representa
o primeiro setor desse dispositivo.
Carregador de boot de primeiro estgio - Possui apenas 512 bytes e contm instrues,
em cdigo de mquina, para auxiliar o computador no seu processo de inicializao. Esse
cdigo chamado de carregador de boot de primeiro estgio, e sua nica funo
localizar e carregar, na memria do sistema, o carregador de boot de segundo estgio.
Carrega a si mesmo na memria e dispara o carregador de boot de segundo estgio a
partir de uma partio inicializvel.

Administrao de Sistemas Linux


159

Carregador de boot de segundo estgio - Sua principal tarefa carregar o kernel do


Linux na memria. Os dois principais carregadores de boot do Linux so o LILO (Linux
Loader) e o GRUB (Grand Unified Boot Loader), que sero vistos a seguir.
Iniciando o kernel - O arquivo de imagem do kernel carregado para a memria e os
drivers de dispositivos so carregados pelo kernel, j em execuo. Nessa fase, mensagens
so exibidas na tela, indicando o reconhecimento dos dispositivos e a carga de seus
respectivos drivers. O kernel monta a partio raiz, inicialmente, no modo somente
leitura e transfere o controle do processo de boot para o programa /sbin/init.
Init - O processo init passa a ser responsvel pela ativao de todos os processos que
implementam os servios configurados no sistema. Ele tambm responsvel por montar
todas as parties listadas no arquivo /etc/fstab. Aps carregar todos os programas, o
prompt de login apresentado. O init est sempre em execuo e sua morte provoca a
reinicializao do sistema, ou seja, realizado um shutdown e em seguida, o sistema
inicializado.
Inicializao do sistema:
BIOS checa sistema e aciona carregador de primeiro estgio no MBR (512 bytes);
Carregador de boot de primeiro estgio dispara o carregador de boot de segundo
estgio;
Carregador de boot de segundo estgio carrega o kernel na memria;
O kernel aciona drivers de dispositivos e dispara o processo init;
O init monta as parties e ativa os servios.
A seguir, cada um desses estgios ser apresentado em maiores detalhes.

Basic Input/Output System (BIOS)


Quando um computador inicializado, a CPU procura, na memria no voltil do sistema, um
programa especial chamado BIOS e o executa. Estamos tomando como base um computador
com arquitetura do tipo x86. Outros tipos de computadores acabam utilizando esquemas
similares, como o sistema Alpha, que utiliza o console SRM. Uma vez carregado, o BIOS
executa o POST (Power-On Self Test) que se encarrega de testar todo o hardware do sistema.
Em seguida, o BIOS identifica um dispositivo a partir do qual o sistema deve ser carregado.
Geralmente, ele comea verificando os drives de disquete e de CD/DVD em busca de mdias
que tenham algum cdigo de boot do sistema e em seguida, verifica os discos rgidos. A
ordem de verificao dos dispositivos pode ser alterada pelo administrador atravs do setup
do computador. O BIOS, ento, carrega qualquer programa que esteja armazenado no MBR na
memria RAM. Dessa forma, o controle do processo de boot do sistema repassado pelo BIOS
para esse programa.
BIOS:
Controla os primeiros passos do processo de boot;
Testa o hardware do sistema;

Administrao de Sistemas Linux


160

Busca por um dispositivo atravs do qual o boot deve ser executado (disquete, CD,
DVD, HD);
Realizar carga do programa presente no MBR.

Carregadores de boot (boot loaders)


Como visto anteriormente, existem dois tipos de carregadores de boot: os primeiro estgio e
os de segundo estgio. O carregador de boot de primeiro estgio tem como principal funo
carregar o carregador de boot de segundo estgio, que por sua vez, tem como principal
funo, carregar o kernel em memria. Estando o carregador de boot de segundo estgio
carregado na memria, ele apresenta diferentes opes de sistemas operacionais ou kernels
que foram configurados para dar boot no sistema, oferecendo ao administrador a
oportunidade de selecionar o que ele deseja utilizar no momento. Se o computador possui
apenas o Linux instalado e somente uma verso de kernel, apenas uma opo de boot dever
ser exibida.
Aps a seleo do kernel que deve ser utilizado para inicializar o sistema, o carregador de
boot de segundo estgio localiza, no diretrio /boot, o arquivo binrio correspondente ao
kernel selecionado, que geralmente segue o padro /boot/vmlinuz-<verso_do_kernel>. Em
seguida, o carregador de boot carrega, na memria do sistema, uma imagem do disco
chamada de initrd (initial RAM disk), que utilizada pelo kernel para carregar drivers no
compilados, necessrios para dar boot no sistema. Essa tcnica particularmente til em
sistemas que possuem discos SCSI cujo driver foi compilado como um mdulo. Aps a carga
do kernel e do initrd na memria, o carregador de boot de segundo estgio passa o controle
do processo de inicializao do sistema para o kernel. A seguir, so apresentados maiores
detalhes a respeito dos dois principais carregadores de boot do Linux, o LILO e o GRUB.
Carregadores de boot:
LILO e GRUB:
Apresentam ao administrador diferentes opes de sistemas operacionais ou
verses de kernel que podem ser utilizadas;
Localizam no diretrio /boot o arquivo binrio correspondente ao kernel
selecionado;
Carregam o initrd na memria;
Passam o controle do processo de boot para o kernel.

LILO
Conforme j foi dito, o programa LILO um carregador de boot e como tal, responsvel pela
carga do kernel em memria. O LILO permite que o Linux seja instalado em computadores
com mltiplos sistemas operacionais. Assim, durante a inicializao do sistema, o
administrador pode selecionar o sistema operacional a ser carregado. Essa seleo
realizada atravs do rtulo do sistema operacional, previamente definido no arquivo de
configurao do LILO (/etc/lilo.conf). No entanto, dependendo do disco rgido instalado no
Administrao de Sistemas Linux
161

sistema, o kernel pode no reconhec-lo automaticamente. Nesses casos, deve-se informar o


rtulo do Linux seguido pelos parmetros que permitem ao kernel reconhecer o dispositivo.
Caso no seja selecionado nenhum sistema operacional no momento do boot, aquele que
estiver definido como padro, ser carregado. Embora possam existir mais de dois sistemas
operacionais instalados, o termo dual-boot costuma ser utilizado nesses casos.
O arquivo de configurao do LILO (/etc/ lilo.conf) contm as informaes que ele utiliza
durante a inicializao do sistema. importante frisar que, aps a edio desse arquivo,
necessrio executar o comando LILO para efetivar as mudanas para a prxima inicializao
do sistema. possvel informar parmetros do sistema ao kernel por meio do LILO, tais como
a partio de boot e caractersticas de dispositivos instalados, mas que no esto sendo
automaticamente reconhecidos. Para maiores informaes, a pgina de manual do LILO pode
ser consultada.
importante frisar que toda vez que for feita uma atualizao manual do kernel, o comando
LILO deve ser executado para que a informao pertinente seja copiada para o MBR.
LILO:
Pioneiro entre os carregadores de boot;
Permite a passagem de parmetros para o kernel;
Arquivo de configurao:
/etc/lilo.conf
Busca informaes de opes de boot no MBR;
Demanda atualizao do MBR sempre que o arquivo de configurao for modificado ou
kernel atualizado.

GRUB
O GRUB um carregador de boot que permite selecionar o sistema operacional ou a verso
do kernel que ser carregada no momento da inicializao. Ele tambm permite a passagem
de parmetros para o kernel durante o processo de inicializao. O GRUB consegue ler
diversos tipos de parties, como ext2 e ext3 e portanto, pode acessar o seu arquivo de
configurao durante a inicializao do sistema. Esse comportamento torna desnecessria a
transferncia de informaes para o MBR toda vez que mudanas de configuraes forem
realizadas. O GRUB oferece trs diferentes interfaces que so descritas a seguir:
Menu - Conforme citado anteriormente, quando o GRUB carregado, ele procura pelo seu
arquivo de configurao e ao encontr-lo, utiliza-o para construir a lista de menu e em
seguida, exibi-la com as opes de boot disponveis.
Edio de menu - O GRUB possibilita a edio das entradas de seu menu, no momento
em que este exibido durante o boot do sistema. Para isso, basta pressionar-se a tecla e.
Linha de comando - Se o arquivo de configurao no puder ser encontrado, ou estiver
ilegvel, o GRUB carregar a interface de linha de comando a fim de permitir ao
administrador digitar os comandos necessrios para carregar um determinado sistema
operacional. Mesmo que o menu do GRUB seja exibido, ainda possvel acessar sua linha
Administrao de Sistemas Linux
162

de comandos, pressionando-se a tecla c. Se tiver sido definida uma senha de acesso no


arquivo de configurao do GRUB, atravs do parmetro password, o administrador
deve utilizar a tecla p para inform-la, antes de ter acesso linha de comandos. Para
verificar os comandos disponveis, o administrador deve pressionar duas vezes a tecla
TAB, que tambm pode ser utilizada para completar comandos e parmetros, assim como
no shell do Linux. A seguir, so listados alguns dos comandos mais importantes:
boot Pode ser utilizado para executar o boot a partir de um sistema operacional ou
verso de kernel.
chainloader <nome-arquivo> Alguns sistemas operacionais como o DOS e o
Windows armazenam seus gerenciadores de boot na partio em que esto instalados.
atravs deste comando que o GRUB passa o controle do processo de boot para esses
gerenciadores, que por sua vez, carregam o sistema operacional selecionado.
initrd <nome-arquivo> Permite ao administrador especificar uma imagem do disco
a ser utilizada no momento do boot, cuja funcionalidade j foi descrita anteriormente.
kernel <nome-arquivo> <opo-1> <opo-n> Especifica o nome do arquivo do
kernel que deve ser utilizado para dar boot no sistema. As opes so repassadas para
o kernel quando ele carregado.
root <dispositivo-partio> Configura a partio raiz do GRUB para um dispositivo
e partio particular, tal como (hd0,0), e monta a partio de forma que ela possa ser
lida.
rootnoverify <dispositivo-partio> Faz o mesmo que o comando acima, mas no
monta a partio.
O GRUB utiliza uma notao diferente da utilizada pelo Linux para referenciar os discos e
parties do sistema. A tabela 8.1 apresenta uma comparao entre as notaes utilizadas
pelo Linux e pelo GRUB.
Notao utilizada pelo Linux

Notao utilizada pelo GRUB

/dev/hda e /dev/sda

(hd0)

/dev/hda1 e /dev/sda1

(hd0,0)

/dev/hda2 e /dev/sda2

(hd0,1)

/dev/hdb e /dev/sdb

(hd1)

/dev/hdb1 e /dev/sdb1

(hd1,0)

/dev/hdb2 e /dev/sdb2

(hd1,1)

Tabela 8.1 - Comparativo entre as notaes utilizadas pelo Linux e pelo GRUB.

Administrao de Sistemas Linux


163

GRUB:
Possui mais recursos e est se tornando o gerenciador de boot padro do Linux;
Permite a passagem de parmetros para o kernel;
Arquivo de configurao:
/boot/grub/grub.cfg
Oferece trs diferentes interfaces com diferentes funcionalidades;
Consegue ler diversos tipos de parties como: ext2, ext3, ext4, Reiserfs, NTFS, etc;
No demanda atualizao do MBR.
O arquivo de configurao do GRUB (/boot/ grub/grub.cfg) composto por uma sequncia
de comandos. As configuraes globais da interface de menu geralmente esto localizadas no
incio do arquivo e so seguidas pelas diferentes entradas relativas a cada sistema
operacional ou kernel que so exibidas no menu. A seguir, apresentado um exemplo
comentado do arquivo de configurao do GRUB:
default=0
timeout=5
splashimage=(hd0,0)/GRUB/splash.xpm.gz
hiddenmenu
title Fedora (3.2.8-1.fc16.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-3.2.8-1.fc16.x86_64 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-3.2.8-1.fc16.x86_64.img
title windows
rootnoverify (hd0,0)
chainloader +1
Ao compilar um novo kernel manualmente, basta ao administrador criar um novo bloco title
nesse arquivo, colocando os parmetros referentes ao novo kernel. O processo de instalao
de um novo kernel pode ser feito de forma a automatizar essa tarefa.

Iniciando o kernel
No processo de boot, o kernel se encarrega de inicializar e configurar, primeiramente, a
memria do computador e em seguida, os vrios dispositivos presentes no sistema,
carregando todos os drivers necessrios. Tambm responsvel por montar a partio raiz,
temporariamente, no modo de somente leitura e liberar partes da memria que no esto
sendo utilizadas. Em seguida, chama o processo init, que cuidar de finalizar o boot do
sistema. Durante a inicializao do kernel, enquanto os dispositivos vo sendo detectados e
seus respectivos drivers carregados em memria, vrias mensagens so apresentadas na tela.
Aps a inicializao do sistema, o administrador pode analisar essas mensagens utilizando o
comando dmesg. Essas mensagens so armazenadas no arquivo de log do sistema
/var/log/dmesg ou /var/log/messages.
Funes do kernel:
Inicializa e configura a memria do computador;
Administrao de Sistemas Linux
164

Configura os dispositivos, carregando seus drivers;


Monta a partio raiz temporariamente no modo somente leitura;
Libera memria no utilizada;
Chama o processo init;
O comando dmesg pode ser utilizado para listar as mensagens apresentadas durante a
inicializao do sistema.

Processo init
Aps o kernel ser inicializado, o processo init ativado. Esse processo direta ou
indiretamente responsvel por inicializar todos os demais processos que implementam os
servios disponveis no sistema. Dentre esses processos, pode ser citado o mingetty, que
realiza o controle de login no sistema. Sempre que uma sesso de trabalho encerrada, o
processo init reativa o processo mingetty para aquele console virtual. No Linux, seis
processos mingetty so inicializados para os consoles virtuais que podem ser acessados
atravs da combinao das teclas Alt+F1 at Alt+F6.
O Linux define nveis de execuo (run levels) que identificam o estado atual do sistema. Cada
nvel possui um propsito especfico, que determina o conjunto de processos que devem
estar ativos. Para identificar os processos que devem ser ativados, o init l o arquivo de
configurao /etc/inittab. Nesse arquivo, esto todas as informaes sobre os nveis de
execuo e os processos a serem inicializados. Cada linha desse arquivo indica ao init um
comando ou script que deve ser executado. Dificilmente o administrador precisa alterar o
contedo do arquivo /etc/inittab. Entretanto, indispensvel entender como esse arquivo
processado.
Funes do init:
Inicializa todos os demais processos que implementam os servios do sistema;
Define nveis de execuo (run levels) para o sistema;
Identifica os processos que devem estar ativos em cada nvel;
Arquivo de configurao - /etc/inittab.

Arquivo /etc/inittab
Cada linha do arquivo /etc/inittab composta por quatro campos separados pelo caractere
:, que so descritos a seguir:
Id - Identificador nico para a linha, que pode ter qualquer valor;
Rstate - Indica o nvel de execuo do processo disparado pela linha;
Action - Indica como o init deve tratar o processo disparado por essa linha. As principais
opes para esse campo so:
initdefault - Indica o nvel de execuo padro na inicializao;

Administrao de Sistemas Linux


165

wait - Espera o trmino do processo antes de ler a prxima linha do arquivo;


once - Executa o processo uma nica vez;
respawn - Reinicia o processo caso ele termine.
Process - Informa o comando ou script a ser executado.
A primeira linha do arquivo /etc/inittab define o nvel de execuo padro assumido durante
a inicializao do sistema. O primeiro script que o init executa, presente na segunda linha do
arquivo /etc/inittab, o /etc/rc.d/rc.sysinit. Esse script ativa as parties de swap, verifica a
consistncia dos sistemas de arquivos e inicializa o sistema de quotas. Aps concluir esse
script, o init ativa o script /etc/rc.d/rc, passando como parmetro o valor do nvel de
execuo atual. Esse script ativa todos os scripts que esto armazenados no diretrio
/etc/rc.d/rcX.d, onde X o valor do nvel de execuo atual. Assim, no diretrio /etc/rc.d
existem seis diretrios rcX.d diferentes, um para cada nvel de execuo, que contm os
scripts que devem ser executados em cada nvel. Os scripts comeam com as letras K (kill
scripts) ou S (start script), seguidas de um nmero e um nome que identifica o servio
controlado pelo script. Os kill scripts so responsveis por matar os processos que
implementam um determinado servio. Vale ressaltar que eles so ativados, em ordem
crescente, baseada nos nmeros que formam seus nomes. J os start scripts, so responsveis
por ativar os processos que implementam um determinado servio. Tambm so ativados
em ordem crescente, baseada nos nmeros que formam seus nomes. No caso dos nveis de
execuo 2, 3 e 5, o ltimo script executado o S99local, que um link simblico para o script
/etc/rc.d/rc.local. Esse script pode ser editado pelo administrador para configurar servios
adicionais locais que devem ser executados durante a inicializao do sistema. importante
o administrador utilizar esse script para evitar a ativao manual de servios, todas as vezes
que o sistema for iniciado. Por fim, o processo init ativa os processos mingetty para cada
console virtual.
O nvel de execuo pode ser modificado utilizando o comando telinit, sem precisar editar o
arquivo /etc/inittab. O comando telinit requer um nico parmetro, que o nvel de
execuo desejado. A tabela 8.2 descreve os nveis de execuo do Linux.
Nvel

Descrio

Desliga o sistema.

Modo monousurio.

Modo multiusurio sem NFS e SMB.

Modo multiusurio completo.

No utilizado.

Modo multiusurio com X-Window System.

Reinicializa o sistema.

Tabela 8.2 - Run Levels


Administrao de Sistemas Linux
166

Arquivo /etc/inittab:
Executa o script /etc/rc.d/rc.sysinit;
Executa os scripts do diretrio /etc/rc.d/rcX.d, onde X representa o nvel de execuo
atual;
Ativa as parties de swap, verifica a consistncia dos sistemas de arquivos e inicializa
o sistema de quotas;
Por fim, executa o script S99local (link para /etc/rc.d/rc.local);
O comando telinit pode ser utilizado para mudar o nvel de execuo atual.
A seguir pode ser visto um exemplo comentado do arquivo /etc/inittab.
# Define o nvel de execuo padro
id:3:initdefault:
# Executa o script /etc/rc.d/rc.sysinit
si::sysinit:/etc/rc.d/rc.sysinit
# Executa o script /etc/rc.d/rc, passando como parmetro para ele o
nvel de execuo atual.
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Habilita a reinicializao do sistema atravs das teclas
CTRL+ALT+DEL.
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# Executa um shutdown caso ocorra uma falha de energia. Para isso, o
daemon powerd deve estar instalado no sistema e o servidor deve ser
alimentado por um no-break.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure. System Shutting
Down"
# Cancela o shutdown anterior caso a energia seja restabelecida.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored. Shutdown
Cancelled"
# Executa o processo mingetty nos nveis de execuo 2, 3, 4 e 5.
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
Administrao de Sistemas Linux
167

3:2345:respawn:/sbin/mingetty
4:2345:respawn:/sbin/mingetty
5:2345:respawn:/sbin/mingetty
6:2345:respawn:/sbin/mingetty

tty3
tty4
tty5
tty6

# Executa o xdm no nvel de execuo 5


x:5:respawn:/etc/X11/prefdm -nodaemon

Arquivo /etc/inittab
Define o nvel de execuo padro do sistema;
Indica quais processos devem ser iniciados, finalizados ou reiniciados;
Indica que aes tomar quando o sistema entra em um novo nvel de execuo;
Formato:
id:rstate:action:process

Figura 8.1 - Formato das linhas do arquivo /etc/inittab


Algumas distribuies como o Ubuntu substituram o inittab pelo daemon upstart que
controla o processo de inicializao e finalizao de todos os servios do Linux. As
configuraes do upstart ficam no diretrio /etc/init. Nesta sesso, no estudaremos o
upstart, por no ter se tornado ainda um padro.

Shutdown
Se um sistema Linux no desligado corretamente, os buffers de disco, mantidos pelo kernel
em memria, no sero atualizados no disco e, assim, os sistemas de arquivos podem ser
danificados. Em adio, processos podem utilizar mecanismos semelhantes, mantendo em
memria dados relevantes que, periodicamente, so armazenados em disco. Nesses casos, o
desligamento do sistema de forma abrupta provoca a perda desses dados. O processo de
parada do sistema (shutdown) deve ser feito de forma organizada, para evitar que os
sistemas de arquivos sejam corrompidos e os processos em execuo percam dados
relevantes mantidos em memria. O procedimento correto executar o comando shutdown,
que realiza a parada do sistema de modo planejado. Inicialmente, o processo shutdown envia
o sinal TERM para todos os processos. No entanto, muitos processos no tratam o sinal TERM
ou, quando o fazem, se auto cancelam ao final desse procedimento. O shutdown assume que
esses processos no mantm dados relevantes em memria e finaliza-os, atravs do envio do
Administrao de Sistemas Linux
168

sinal KILL. O comando shutdown possui algumas opes que podem ser informadas na linha
de comando:
-r Reinicializa o sistema (reboot);
-h Desliga o sistema (halt);
-c Cancela uma solicitao prvia de shutdown;
time Especifica o momento em que o shutdown deve ser executado. Pode ser
especificado como tempo relativo (+min) ou absoluto (hh:mm);
message Envia uma mensagem aos usurios logados no sistema.
Comando shutdown:
Sua funo desligar ou reinicializar o sistema de forma correta;
Envio dos sinais TERM e KILL para os processos;
Opes de uso:
-r - Reinicializa o sistema;
-c - Cancela uma solicitao prvia de shutdown;
-h - Desliga o sistema;
Especificao de tempo e mensagem.
Os comandos reboot, halt, poweroff e telinit tambm podem ser utilizados para reiniciar
ou desligar o sistema.
Alm do comando shutdown, o administrador pode reinicializar o sistema utilizando o
comando reboot, ou par-lo utilizando os comandos halt ou poweroff. O administrador
tambm pode utilizar o comando telinit para desligar ou reinicializar o sistema. Esse
comando altera o nvel de execuo do sistema e recebe como parmetro um nmero que
pode variar entre 0 e 6 e representa o nvel de execuo para o qual o sistema ser chaveado.
Sendo a parada e a reinicializao do sistema representadas pelos nveis de execuo 0 e 6,
respectivamente, o administrador pode utilizar o comando telinit passando como parmetro
os nmeros 0 ou 6 para desligar ou reinicializar o sistema respectivamente.

Arquitetura do kernel
O kernel responsvel por reconhecer os dispositivos instalados no sistema e carregar os
drivers desses dispositivos, para que funcionem adequadamente. Ele pode ser configurado de
tal forma que suporte apenas os dispositivos efetivamente instalados no sistema, otimizando
o uso de memria e melhorando o desempenho do sistema. Para isso, o administrador deve
definir os dispositivos e funcionalidades que devem ser habilitados ou no e compilar o
kernel para que as alteraes entrem em vigor. A partir da verso 2.0 do kernel, o conceito de
mdulos foi introduzido, permitindo a carga de drivers sob demanda. Assim, durante a
inicializao do sistema, o kernel pode carregar apenas os drivers dos dispositivos
detectados. O tamanho do kernel depende do nmero de componentes selecionados, por isso,
recomendado que ele s oferea suporte aos dispositivos instalados no sistema. Por
Administrao de Sistemas Linux
169

exemplo, se o computador no possui placas de som, no h necessidade de habilitar drivers


de placas de som no kernel. A incluso de drivers desnecessrios somente torna o kernel
maior e mais lento.
Arquitetura do kernel
Responsvel por reconhecer dispositivos;
Pode ser configurado para otimizar o uso da memria e melhorar o desempenho do
sistema;
Deve ser compilado aps qualquer alterao de configurao.
O conceito de mdulos:
Carga de drivers sob demanda;
Kernel monoltico com componentes modulares.

Kernel Monoltico
Como visto na sesso 1, o kernel do Linux possui uma arquitetura monoltica, sendo
composto por um grande e nico bloco de cdigo. O kernel monoltico carrega estaticamente
seus componentes, independentemente de estarem instalados no sistema e por isso, ocupa
mais espao em memria. comum carregar diversos drivers para uma determinada classe
de dispositivo, deixando para o kernel a responsabilidade de selecionar o driver adequado
durante a inicializao. Nesse caso, os demais drivers ainda so mantidos em memria. O
kernel monoltico utilizado em sistemas operacionais como Linux e FreeBSD (verses
antigas) e em algumas verses do Windows (95, 98, ME), etc.
Kernel monoltico:
composto por um grande e nico bloco de cdigo;
Carrega estaticamente os drivers de dispositivo definidos;
Ocupa mais espao da memria, uma vez que os drivers de todos os dispositivos
configurados so carregados, independentemente de estarem instalados no sistema;
Utilizado em sistemas operacionais como Linux, FreeBSD, verses antigas do Windows
(95, 98, ME), etc.

Kernel Modular ou Hbrido


O conceito de mdulos foi introduzido no Linux com o objetivo de otimizar o uso da memria
j que os mdulos s so carregados em memria quando necessrio. Alm disso, o cdigo
do kernel se torna menor quando os componentes do sistema so compilados como mdulos.
Esses mdulos so geralmente drivers de dispositivos e podem ser carregados em memria
dinamicamente quando forem solicitados por algum dispositivo. Assim, podemos manter em
um mesmo kernel, componentes permanentemente habilitados de forma esttica e
componentes habilitados dinamicamente configurados como mdulos. Os mdulos, apesar
de no fazerem parte do mesmo cdigo do kernel, so executados em seu espao de memria
(kernel-space). Dessa forma, o kernel monoltico mesmo oferecendo suporte a mdulos,

Administrao de Sistemas Linux


170

continua sendo nico e centralizado. Os mdulos podem ser removidos da memria aps um
intervalo de tempo de inatividade.
Kernel modular ou hbrido:
Carrega dinamicamente os drivers de dispositivo (mdulos) detectados na
inicializao do sistema;
Ocupa menos espao em memria;
Os mdulos so carregados sob demanda e podem ser removidos da memria aps
um intervalo de inatividade;
Utilizado em sistemas operacionais como Linux e FreeBSD.

Mdulos do kernel
So pequenos pedaos do kernel que so compilados e instalados de forma independente. Os
mdulos do kernel ficam armazenados em subdiretrios localizados no diretrio
/lib/modules/versao_do_kernel, que so divididos em categorias como: drivers, net, sound,
etc. Os arquivos que representam cada mdulo possuem uma nomenclatura caracterstica
que termina sempre com .ko. O arquivo /etc/modules possui os mdulos que devem ser
carregados durante a inicializao do sistema e mantidos carregados sempre que o sistema
estiver em execuo.
Mdulos do Kernel:
So carregados dinamicamente e sob demanda em memria;
No fazem parte do cdigo do kernel, mas so executados no kernel-space;
Localizados em categorias no diretrio /lib/modules/versao_do_kernel;
Arquivo /etc/modules - Relao de mdulos que devem ser carregados durante a
inicializao do sistema.
A seguir sero apresentados os principais comandos para gerenciar os mdulos do kernel.
kmod - utilizado para carregar os mdulos do kernel automaticamente quando
solicitados por algum processo ou dispositivo. O kmod executado como daemon e fica
monitorando o sistema de modo a ativar algum mdulo quando necessrio.
modprobe - utilizado para carregar ou remover manualmente um mdulo do kernel e
suas dependncias.
insmod - utilizado para carregar um mdulo do kernel manualmente. importante
frisar que o comando insmod no carrega as dependncias do mdulo que est sendo
carregado.
rmmod - utilizado para remover um mdulo do kernel carregado em memria.
lsmod - utilizado para listar os mdulos do kernel carregados em memria. So exibidos
o nome do mdulo, seu tamanho e o programa que est utilizando o mdulo. O comando
lsmod utiliza as informaes presentes no arquivo /proc/modules para exibir sua sada.
Administrao de Sistemas Linux
171

depmod - utilizado durante a inicializao do sistema para verificar se existe alguma


dependncia entre os mdulos do kernel, de modo que aps a inicializao, todas as
dependncias estejam resolvidas.
modconf - utilizado para configurar mdulos atravs de uma interface baseada em
menus. O comando modconf possibilita a passagem de parmetros de configurao para
um mdulo, como IRQ, DMA, etc.
modinfo - utilizado para exibir informaes a respeito de um mdulo, como sua
localizao em disco, tipo de licena, dependncias, parmetros, etc.
Comandos para gerenciar mdulos:
kmod - Carrega em memria mdulos automaticamente sob demanda.
modprobe - Carrega ou remove da memria manualmente um mdulo e suas
dependncias.
insmod - Carrega em memria um mdulo, mas no carrega suas dependncias.
rmmod - Remove um mdulo da memria.
lsmod - Lista os mdulos carregados em memria.
depmod - Verifica dependncias entre mdulos durante a inicializao do sistema.
modconf - Configura um mdulo.
modinfo - Exibe informaes sobre um mdulo.

Configurando e compilando o kernel


O processo de configurao e compilao do kernel realizado em vrias etapas que sero
descritas em detalhes a seguir:

Configurando os componentes do kernel


O cdigo-fonte do kernel fica localizado por padro no diretrio /usr/src/linux, que apenas
um link simblico para o diretrio /usr/src/linux-x.y.z, onde x.y.z indica a verso do kernel.
Nesse diretrio, o arquivo .config contm as informaes sobre a configurao dos
componentes do kernel. Este arquivo possui diversas variveis que definem se um
determinado componente ser esttico, quando o valor da varivel y ou modular, quando
o valor da varivel m. Um componente pode ser desabilitado se a varivel que o
representa, estiver comentada. O arquivo /usr/src/linux/.config pode ser modificado
diretamente atravs de um editor de texto. No entanto, o comando make pode ser utilizado
para alterar o arquivo .config simplificando a configurao dos componentes do kernel. O
comando make pode ser utilizado de trs formas para configurar o kernel. A primeira delas
utilizando o target config, conforme mostrado a seguir:
# make config
Esse comando executa, em modo texto, um script que solicita a configurao de cada
componente do kernel. Os componentes so apresentados linha a linha, obrigando o
administrador a configurar todos eles, um de cada vez. O segundo mtodo para configurar o
kernel atravs do target menuconfig, conforme apresentado a seguir:
Administrao de Sistemas Linux
172

# make menuconfig
Esse comando executa, ainda em modo texto, um script baseado em menus, que permite ao
administrador configurar os componentes do kernel. Os componentes so apresentados em
menus divididos por categorias e podem ser selecionados de acordo com a necessidade do
administrador. Os componentes podem ser includos como mdulos ou integrados ao kernel,
ou ainda excludos, de acordo com a legenda apresentada na interface. Assim, como no
mtodo anterior, esse mtodo no requer a existncia de um ambiente grfico. Por fim, um
terceiro mtodo para configurar o kernel atravs do target xconfig, conforme apresentado a
seguir:
# make xconfig
Esse mtodo baseia-se no ambiente grfico X-Window System, tornando a configurao dos
componentes bastante intuitiva. Se o administrador possui um ambiente grfico instalado no
seu sistema, esse o mtodo mais indicado para se configurar o kernel. Nele, os componentes
so listados em diferentes nveis de menu e podem ser selecionados atravs do mouse. Os
componentes podem ser includos como mdulos ou integrados ao kernel, ou ainda
excludos, de acordo com a legenda apresentada na interface. Aps a configurao dos
componentes, deve-se clicar no boto Save and Exit para criar ou atualizar o arquivo de
configurao /usr/src/linux/.config e sair do programa de configurao do kernel.
Configurando os componentes do kernel:
Cdigo-fonte armazenado no diretrio /usr/src/linux;
Arquivo /usr/src/linux/.config:
Variveis que representam os componentes do kernel;
Pode ser alterado atravs de um editor de textos (vi, emacs, etc.);
Tambm pode ser alterado atravs do comando make (make config, make
menuconfig ou make xconfig).
Existem diversos componentes que podem ser configurados no kernel. Nos mtodos make
menuconfig e make xconfig, a opo help pode ser utilizada para mostrar detalhes sobre o
significado de cada componente. A seguir, sero comentadas apenas as principais opes de
componentes, organizadas de acordo com os menus mostrados nos mtodos make
menuconfig e make xconfig.
Enable Loadable module support - Permite a configurao de caractersticas dos
mdulos. A opo Enable loadable module support habilita a utilizao de componentes
modulares no kernel. Se essa opo for desabilitada, no ser possvel habilitar
componentes como mdulos.
General setup - O conjunto de opes apresentado permite configurar componentes de
baixo nvel. Por exemplo, a opo Networking support habilita a configurao dos
mdulos de rede, e a opo Bus options inclui os mdulos que permitem ao kernel
funcionar em plataformas com barramento PCI.

Administrao de Sistemas Linux


173

Character devices - As opes disponveis permitem configurar suporte a terminais


virtuais, portas seriais, portas paralelas, etc.
Block devices - As opes apresentadas permitem a configurao de diferentes tipos de
discos rgidos, CD-ROMs, unidades de fita magntica, etc.
Networking options - O conjunto de opes est relacionado com a habilitao de
protocolos de redes e suas funcionalidades. Por exemplo, as opes TCP/IP networking e
The IPX protocol habilitam a famlia de protocolos TCP/IP e o protocolo IPX de redes
Novell, respectivamente. Para a famlia de protocolos TCP/IP, possvel habilitar
funcionalidades como: multicast, roteamento avanado, etc.
SCSI device support - As opes apresentadas permitem a configurao de diferentes
tipos de dispositivos SCSI, como: discos rgidos, CD-ROMs e unidades de fita magntica.
Network device support - Permite habilitar suporte a diversas tecnologias de rede como:
ethernet, WLAN, PPP, WiMAX, FDDI, ATM, Fibre Channel, etc.
Filesystems - O conjunto de opes permite a configurao do sistema de quotas e o
suporte aos diferentes tipos de filesystems (ext2, ext3, ext4, Raiserfs, XFS, NTFS, etc).
Opes de componentes:
Enable Loadable module support;
General setup;
Character devices;
Block devices;
Networking options ;
SCSI device support;
Network device support;
Filesystems:

Compilando o kernel
Aps configurar os componentes do kernel, o administrador deve compil-lo para que as
alteraes possam ser efetivadas. Para compilar o kernel, preciso manter como diretrio
corrente o /usr/src/linux e em seguida executar os comando abaixo:
# make clean
# make bzImage
O comando make clean, remove arquivos existentes, decorrentes de compilaes anteriores
do kernel e o comando make bzImage gera a imagem do kernel comprimida no arquivo
/usr/src/linux/arch/i386/boot/bzImage. O comando abaixo tambm pode ser utilizado para
compilar o kernel,s que nesse caso, a imagem criada tambm armazenada em um disquete
de boot, que pode ser utilizado para testar o novo kernel.
# make bzdisk

Administrao de Sistemas Linux


174

Em caso de falha na inicializao com o novo kernel, utilizando o disquete de boot, basta
retir-lo e reinicializar o sistema.

Componentes modulares
Se o novo kernel tem componentes modulares em sua configurao, o administrador precisa,
ento, compilar e instalar esses mdulos utilizando os comandos make modules e make
modules_install, respectivamente.
# make modules
# make modules_install
O tempo gasto no processo de compilao do kernel varia de acordo com o hardware
utilizado e geralmente no dura mais do que alguns minutos. importante ressaltar que a
incluso de novos componentes modulares em um kernel operacional no requer a sua
compilao. O administrador precisa apenas definir a configurao dos componentes
utilizando os comandos make menuconfig ou make xconfig, e em seguida, executar os
comandos make modules e make modules_install.
Compilando o kernel:
Ir para o diretrio /usr/src/Linux;
Comandos para compilao:
# make clean
# make bzImage
Compilao e instalao dos mdulos:
# make modules
# make modules_install

Instalando o kernel
A instalao do novo kernel feita com o comando make install. At certo tempo atrs, cabia
ao administrador fazer os arranjos finais para a instalao do novo kernel. Em primeiro
lugar, ele deveria copiar o arquivo vmlinuz, armazenado no diretrio
/usr/src/linux/arch/i386/boot, para o diretrio /boot, colocando no arquivo um nome
diferente daquele do kernel original. Por exemplo, supondo que o nome do arquivo do kernel
original fosse vmlinuz-3.2.8, o nome do arquivo do novo kernel poderia ser vmlinuz-3.2.8.new.
Alm disso, ele teria que fazer as modificaes necessrias no arquivo de configurao do
carregador de boot. Nas verses mais recentes do Linux, no entanto, suficiente a execuo
do comando:
# make install
Esse comando executa o script /usr/src/linux/arch/x86/boot/install.sh que, copia a imagem
do novo kernel e os arquivos associados para o diretrio indicado, geralmente, o /boot. Em
seguida, preciso gerar a imagem initrd utilizando o comando abaixo:

Administrao de Sistemas Linux


175

# mkinitramfs 3.2.8 -o /boot/initrd.img-3.2.8


Em outras distribuies, a imagem initrd pode ser gerada com o comando mkinitrd. Aps
isso, o arquivo de configurao do gerenciador de boot deve ser atualizado com as novas
imagens.
Instalando o kernel:
# make install
Ativa script /usr/src/linux/arch/x86/boot/install.sh;
Copia imagem do novo kernel e arquivos associados.
# mkinitramfs 3.2.8 -o /boot/initrd.img-3.2.8
Cria a imagem initrd no diretrio /boot.
Arquivo de configurao do gerenciador de boot deve ser atualizado com as novas
imagens.

Habilitando o kernel
Embora os comandos executados no passo anterior j tratem de fazer as configuraes
necessrias para o sistema inicializar utilizando o novo kernel gerado, importante que o
administrador se certifique de que as modificaes foram feitas de forma correta. Na
instalao de um novo kernel, interessante que o original seja mantido como proteo
contra possveis erros que possam ocorrer durante a inicializao com o novo kernel. Essa
proteo pode ser obtida na configurao do seu carregador de boot.
Habilitando o kernel:
Checagem da instalao por parte do administrador:
LILO - /etc/lilo.conf;
GRUB - /boot/grub/grub.cfg.
Manuteno do kernel original para se proteger de erros;
Se o carregador de boot for o LILO, necessrio atualizar o MBR:
Executar o comando lilo -v
Apresentamos a seguir os arquivos de configurao do LILO e do GRUB, antes e aps a
instalao de um novo kernel. Assim, consideramos que o arquivo /etc/lilo.conf possui,
originalmente, o seguinte contedo:
prompt
timeout=50
default=Linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
lba32
image=/boot/vmlinuz-3.2.8
Administrao de Sistemas Linux
176

label=Linux
initrd=/boot/initrd-3.2.8.img
read-only
append=root=LABEL=/
As cinco ltimas linhas formam a seo associada verso original do kernel, que utiliza o
arquivo vmlinuz-3.2.8 e possui o rtulo Linux. Esse rtulo exibido durante a inicializao
do sistema para que o administrador possa informar ao LILO o sistema operacional que deve
ser ativado. Aps a instalao, o administrador deve checar se foi includa uma nova seo ao
final do arquivo para descrever o novo kernel, conforme mostrado a seguir:
prompt
timeout=50
default=Linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
lba32
# Kernel novo
image=/boot/vmlinuz-3.2.8custom
label=Linux-3.2.8custom
initrd=/boot/initrd-3.2.8custom.img
read-only
append=root=LABEL=/
# Kernel antigo
image=/boot/vmlinuz-3.2.8
label=Linux
initrd=/boot/initrd-3.2.8.img
read-only
append=root=LABEL=/
Nota-se que foi criada uma nova entrada no arquivo, mas foi mantida a verso antiga do
kernel como padro do sistema. Isso permite que o administrador teste a nova verso e s a
defina como padro aps verificar o seu funcionamento. H duas formas de se alterar a
verso padro: a primeira delas modificando o valor da varivel default para o label do
novo kernel e a segunda trocar o valor da varivel label dos dois kernels, um pelo outro. Em
seguida, necessrio atualizar o LILO, executando o comando abaixo:
# lilo v
No caso do GRUB, vamos assumir que o arquivo de configurao, originalmente, tivesse o
seguinte contedo:
default=0
timeout=30
splashimage=(hd0,0)/GRUB/splash.xpm.gz
Administrao de Sistemas Linux
177

title Red Hat Linux


root (hd0,0)
kernel /boot/vmlinuz-3.2.8 ro root=/dev/hda3
initrd /boot/initrd-3.2.8.img
Aps a instalao do novo kernel, o arquivo deve ficar com o seguinte contedo:
default=1
timeout=30
splashimage=(hd0,0)/GRUB/splash.xpm.gz
title Red Hat Linux (custom)
root (hd0,0)
kernel /boot/vmlinuz-3.2.8custom ro root=/dev/hda3
initrd /boot/initrd-3.2.8custom.img
title Red Hat Linux
root (hd0,0)
kernel /boot/vmlinuz-3.2.8 ro root=/dev/hda3
initrd /boot/initrd-3.2.8.img
Novamente, o script cria uma entrada para o novo kernel, mas no altera o kernel padro.
Entretanto, diferente do LILO, no preciso executar nenhum comando aps alterar seu
arquivo de configurao.

Testando o kernel
Depois de feitas as devidas verificaes, o sistema pode ser reinicializado utilizando o novo
kernel. Se o sistema no inicializar ou apresentar problemas enquanto estiver operacional, o
administrador poder reinici-lo com o kernel antigo, selecionando-o, durante a inicializao.
No momento em que o novo kernel mostrar-se estvel, basta remover a seo do arquivo
/etc/lilo.conf ou /boot/grub/grub.cfg associada ao kernel antigo e remover sua imagem do
diretrio /boot.
Testando o kernel:
Reinicializar o sistema utilizando o novo kernel;
Em caso de problemas:
Verificar se o LILO foi atualizado com o comando lilo -v;
Reativar kernel antigo.
Se tudo estiver certo:
Remover entrada do antigo kernel do arquivo de configurao do carregador de
boot;
Remover a imagem do antigo kernel e a imagem antiga initrd.

Administrao de Sistemas Linux


178

9
Segurana bsica e procedimentos operacionais
Sumrio
Conhecer os aspectos de segurana bsica do sistema.
Entender a importncia da monitorao do sistema e da antecipao de aes.
Compreender como funciona o esquema de autenticao de usurios em um sistema
Linux e o princpio de funcionamento dos algoritmos de criptografia do tipo one-way.
Entender a utilidade dos bits SUID e SGID e os riscos que trazem segurana do sistema.
Conhecer os principais gerenciadores de pacotes do Linux.
Conhecer alguns procedimentos operacionais que devem ser adotados, como:
estabelecimento de uma poltica de uso de recursos computacionais, registro de
ocorrncias, rotina de backup, etc.
Segurana bsica:
Analisadores de senhas;
Contas compartilhadas;
SUID e SGID;
Atualizao de software.
Procedimentos operacionais:
Poltica de utilizao de recursos;
Atendimento a usurios;
Controle de recursos computacionais;
Diagnstico de falhas;
Rotina de backup.

Segurana bsica
Os aspectos sobre segurana bsica e procedimentos operacionais que sero tratados nesta
sesso de aprendizagem dizem respeito apenas queles que tm alguma correlao com o
que foi visto nas sesses de aprendizagem anteriores. Alguns aspectos, como o uso de senhas
no triviais, o uso de contas compartilhadas e a remoo de contas desativadas, por exemplo,
j foram discutidos em sesses anteriores. Outros aspectos, no entanto, ainda no foram
mencionados, como o uso de criptografia, os servios de rede desnecessrios, etc. Esses
tpicos sero tratados com maiores detalhes nos mdulos de administrao mais avanados.
Administrao de Sistemas Linux
179

Ainda nesse tpico, ser ressaltada a importncia da monitorao do sistema e da


antecipao de aes. Algumas questes bsicas de segurana, com as quais o administrador
de sistemas deve se preocupar sempre, independentemente do tamanho de sua rede, so
apresentadas a seguir:
Orientar os usurios de modo que no utilizem senhas bvias e configurar os sistemas de
modo que solicitem trocas de senhas periodicamente.
Manter o sistema em um local fisicamente seguro. De nada adianta proteger o sistema
contra invases atravs da rede e mant-lo em um ambiente cujo acesso no seja
controlado.
No criar contas de usurios desnecessrias e sempre excluir as contas que no estejam
mais sendo utilizadas. Contas fantasmas podem se transformar em um canal para
crackers.
Evitar compartilhar contas de usurios comuns e, principalmente, a conta do usurio
root, facilitando a monitorao das atividades do sistema.
Sempre que possvel utilizar ferramentas que suportem criptografia para transmitir e
receber dados atravs da rede. O SSH (Secure Shell) um exemplo de programa que
criptografa os dados antes de transmiti-los atravs da rede.
Evitar a ativao de servios de rede desnecessrios. Se um determinado sistema no o
servidor de e-mail da instituio, no h motivos para ativar o daemon postfix, por
exemplo. Cada servio disponibilizado por um servidor uma possvel porta de invaso
para os crackers.
Configurar corretamente os arquivos /etc/hosts.allow e /etc/hosts.deny (discutidos no
mdulo de introduo arquitetura TCP/IP para a plataforma Linux).
Utilizar firewalls para controlar o acesso aos diversos equipamentos da rede e prover o
servio de proxy para controlar o acesso dos usurios web. Estes dois servios ajudam a
manter a rede mais segura. Nos demais mdulos de administrao de sistemas Linux,
sero discutidos outros aspectos de segurana relativos a redes e servios.
Problemas bsicos de segurana:
Utilizar ferramentas que suportem criptografia;
No ativar servios de rede desnecessrios;
Configurar corretamente os arquivos /etc/hosts.allow e /etc/hosts.deny ;
Utilizar um firewall para controlar o acesso a rede e um proxy para controlar o acesso
web.
Questes bsicas:
Orientar os usurios a utilizarem senhas no triviais;
Controlar o acesso fsico aos servidores;
Controlar a criao e a remoo de contas;
Impedir o uso de contas compartilhadas.

Administrao de Sistemas Linux


180

Nenhum sistema computacional est livre de ataques de crackers. O melhor que pode ser
feito dificultar ao mximo suas aes e fazer uma monitorao permanente para procurar
detectar rapidamente as tentativas de invaso. Alguns programas que o administrador deve
utilizar para descobrir e corrigir as possveis falhas de segurana do sistema so:
Chkrootkit - um programa utilizado para detectar rootkits em sistemas Unix. Um rootkit
tem como finalidade, ocultar uma invaso em um sistema. Para isso, ele faz diversas
modificaes como substituio de executveis, remoo de entradas do arquivo wtmp,
entre outras, sempre com o objetivo de realizar ataques a terceiros. Para combater este
tipo de ameaa, foi desenvolvido o chkrootkit, que faz uma srie de verificaes,
procurando por mdulos de kernel maliciosos, arquivos executveis, servios e processos
suspeitos, entre outros, no intuito de detectar algum indcio de invaso ao sistema. A
verso atual do chkrootkit detecta cerca de 60 tipos de ameaas.
TripWire - um programa utilizado para monitorar a integridade de sistemas Unix. O
TripWire pode ser configurado para monitorar arquivos e diretrios e enviar alertas caso
ocorra alguma modificao no autorizada. So utilizadas diversas rotinas de checksum,
message-digest, secure-hash e assinaturas com o intuito de detectar alteraes no
contedo e nas permisses dos arquivos e diretrios monitorados, alm de remoo e
incluso de novos arquivos e/ou diretrios.
Nessus - um programa de auditoria utilizado para detectar e corrigir vulnerabilidades.
O Nessus utiliza a arquitetura cliente-servidor, onde o servidor executa uma varredura no
cliente, em portas TCP e UDP pr-configuradas, em busca de alguma vulnerabilidade.
Mesmo que um servio no esteja utilizando sua porta padro, ele ser examinado pelo
Nessus, desde que a porta em que ele esteja sendo executado, tenha sido configurada para
ser analisada. Como pr-requisito, o pacote nmap tem que estar instalado no sistema para
que o Nessus possa ser utilizado. Para utilizar o Nessus preciso criar antes um usurio
em sua base de dados. O administrador pode definir quais clientes sero auditados e aps
a concluso da auditoria, apresentado um relatrio com todas as vulnerabilidades
encontradas em todos os clientes auditados.
Dificultar ao mximo a ao dos crackers.
Chkrootkit:
Utilizado para detectar rootkits;
Analisa o sistema em busca de executveis, servios e processos suspeitos.
TripWire:
Monitora o sistema para garantir sua integridade;
Utiliza diversas tcnicas para encontrar alteraes no autorizadas em arquivos.
Nessus:
Utilizado para detectar e corrigir vulnerabilidades.

Administrao de Sistemas Linux


181

Analisadores de senhas
A autenticao do usurio baseada na comparao da senha fornecida no login com aquela
armazenada no arquivo /etc/passwd ou /etc/shadow, caso as shadow passwords estejam
habilitadas. Em qualquer um desses dois arquivos, as senhas so armazenadas
criptografadas por algoritmos de criptografia que esto publicamente disponveis. No
entanto, a segurana no comprometida, uma vez que esses algoritmos so do tipo oneway, e por isso, no permitem decifrar a senha criptografada. O Linux utiliza algoritmos oneway j que as senhas nunca precisam ser decifradas. Na prtica, a senha fornecida pelo
usurio criptografada e comparada com a senha criptografada armazenada. Se essas
senhas so idnticas, o acesso ao sistema permitido. Assim, as senhas so armazenadas de
forma segura e caso uma senha seja quebrada, no ser por falha do algoritmo de
criptografia, mas do usurio, que utiliza uma senha fcil de ser quebrada. Este o motivo
pelo qual no se deve utilizar senhas simples. O uso de senhas bvias como datas de
aniversrio, nomes de membros da famlia, etc. uma das principais falhas de segurana a
que os sistemas esto sujeitos. Uma senha segura deve conter caracteres maisculos e
minsculos, nmeros e ainda smbolos especiais. Isso dificulta muito a tarefa dos crackers,
que geralmente utilizam um arquivo contendo diversas senhas, chamado dicionrio, para
tentar quebrar senhas de usurios. A melhor maneira de evitar que os usurios do sistema
escolham senhas fceis de serem quebradas empregar a mesma tcnica utilizada pelos
crackers, configurando os sistemas de modo que as senhas sejam confrontadas contra um
dicionrio antes de serem efetivamente armazenadas. Caso a senha informada esteja
cadastrada no dicionrio, o sistema envia uma mensagem ao usurio informando que a
senha escolhida muito fcil de ser quebrada. Em vez de dicionrios o administrador pode
tambm definir polticas de senhas, como exigir que todas as senhas tenham caracteres
maisculos, minsculos, nmeros e caracteres especiais.
Uma vulnerabilidade extremamente grave quando sua explorao permite ao cracker
invadir o sistema obtendo os privilgios do usurio root. Esse tipo de vulnerabilidade deve
ser identificado e resolvido com a mxima prioridade. Para minimizar as chances de crackers
descobrirem a senha do usurio root, o administrador precisa mud-la periodicamente.
Outro cuidado adicional manter no arquivo /etc/securetty apenas os nomes dos terminais
seguros a partir dos quais o usurio root pode fazer login no sistema. Para os demais
terminais, somente ser possvel ter privilgios de root, primeiramente acessando o sistema
como um usurio convencional e depois se tornar root atravs do comando su.
Analisadores de senhas:
Uso da criptografia one-way;
A senha do usurio criptografada e comparada com a que est armazenada;
Uso de dicionrios prprios para obrigar os usurios a escolherem senhas difceis;
Senhas simples podem ser quebradas por crackers com o uso de dicionrios;
Alterao frequente da senha do usurio root;
Definir os terminais seguros no arquivo /etc/securetty.

Administrao de Sistemas Linux


182

Dicionrios
Nome dado a arquivos que contm as senhas mais comuns utilizadas por usurios de
sistemas. Os crackers utilizam esses arquivos como base para tentativas de acesso indevidas
a sistemas de terceiros. So utilizados scripts que tentam realizar login em um determinado
sistema utilizando para cada conta de usurio do sistema, todas as senhas presentes no
dicionrio.

Contas compartilhadas
Contas compartilhadas so aquelas utilizadas por vrios usurios para um determinado fim.
Essas contas so criadas para evitar que vrias contas sejam criadas desnecessariamente.
Por exemplo, uma empresa est fornecendo um curso de 15 dias para 10 pessoas e o uso dos
recursos computacionais essencial. Nesse caso, geralmente, o administrador cria uma nica
conta, e os alunos compartilham a senha dessa conta. No entanto, esse tipo de
compartilhamento no recomendvel, pois caso ocorra uma invaso utilizando essa conta
ou qualquer outro problema que comprometa o sistema, o administrador no ter como
identificar o usurio que direta ou indiretamente causou o problema e atribuir-lhe as
penalidades cabveis. Uma sugesto de soluo para esse caso seria o administrador criar 10
novas contas com prazo de expirao para o final do ltimo dia do curso, apesar dessa
alternativa ser mais trabalhosa. O compartilhamento da senha do usurio root ainda mais
perigoso e deve ser restringido ao mximo.
Contas compartilhadas:
Utilizadas por diversos usurios;
Ajudam a poupar tempo e evitam a criao de contas desnecessrias;
Uso no recomendado;
Mau uso dificulta a identificao do culpado;
O mesmo se aplica conta root.

SUID e SGID
Como foi descrito na sesso de aprendizagem 2, os usurios podem ser distribudos em
grupos e, dessa forma, compartilhar arquivos. Todo usurio possui um grupo primrio, o que
pode causar problemas caso este compartilhe arquivos com integrantes de dois ou mais
grupos. Por exemplo, os funcionrios do departamento de RH de uma determinada empresa
pertencem ao grupo rh e possuem um diretrio no sistema com permisso exclusiva para
esse grupo. Entretanto, o gerente do departamento de RH pertence aos grupos gerencia e
rh, sendo gerencia seu grupo primrio. Quando o gerente do departamento cria um
arquivo no diretrio do grupo rh, o grupo proprietrio do arquivo ser o grupo gerencia.
Assim, dependendo das permisses do arquivo, nenhum outro usurio do grupo rh poder
acess-lo. A permisso SGID pode ser definida nesse diretrio para solucionar o problema.
Essa permisso habilitada com o comando chmod e, quando habilitada em um diretrio,
fora todos os arquivos e diretrios criados nesse diretrio a terem o mesmo grupo
proprietrio do diretrio.
Administrao de Sistemas Linux
183

J o bit SUID, utilizado em programas que precisam ser executados com as permisses de
seu dono. Para reduzir as possibilidades de falhas de segurana do sistema, somente devem
ser executados com privilgios de root os servios em que esse requisito for obrigatrio.
Cada servio habilitado representa uma possibilidade a mais para a explorao de falhas. Se
houver uma falha de segurana em um processo sendo executado com privilgios de root,
aps a invaso o cracker herdar esses privilgios e ter acesso irrestrito ao sistema. Para
resolver esse problema, cada servio deve ser executado em nome de um usurio que tenha
unicamente os privilgios necessrios para acessar os recursos utilizados pelo servio.
Alguns usurios padro, como daemon, nobody, shutdown, ftp, games, mail e news so criados
na instalao do sistema com esse objetivo. Um servidor web, por exemplo, precisa acessar
apenas o conjunto de arquivos e recursos necessrios sua operao. Portanto, seus
processos devem ser executados com privilgios de um usurio convencional com acesso
somente a esses arquivos e recursos. Geralmente, os processos executados por um servidor
web tem o usurio nobody como proprietrio.
SGID:
Usurios so organizados em grupos;
Pode resolver problemas de permisso em arquivos compartilhados criados por
usurios de diferentes grupos.
SGID:
O uso de SUID em arquivos do usurio root potencialmente perigoso e deve ser
evitado.
Servios devem ser executados por um usurio com os privilgios necessrios.

Atualizao de software
O softwares instalados devem ser atualizados regularmente, visando a expanso de
funcionalidades e a correo de falhas de funcionamento detectadas nas verses em uso. Os
desenvolvedores tambm utilizam as atualizaes para corrigir falhas de segurana
encontradas nos seus pacotes de software, que comprometem a segurana do sistema. O
procedimento de atualizao deve ser realizado com muito cuidado, para evitar mudanas
no desejadas, que venham a comprometer o funcionamento do sistema. A maioria das
distribuies utiliza gerenciadores de pacotes, o que facilita bastante o processo de
instalao, remoo e atualizao de software no sistema. A seguir sero descritos trs dos
principais gerenciadores de pacotes do Linux.

RPM
O RPM (RPM Package Manager) um gerenciador de pacotes que oferece uma maneira fcil e
segura de instalar, remover e atualizar pacotes de software. Alm disso, o RPM mantm
informaes sobre a verso atual dos pacotes instalados em uma base de dados prpria. Os
pacotes RPM so pr-compilados e contm binrios, arquivos de configurao, pginas de
manual, etc. Red Hat, Fedora, CentOS e Mandriva so exemplos de distribuies que utilizam
pacotes RPM. O RPM possui interfaces grficas como por exemplo, o Gnome-RPM e uma

Administrao de Sistemas Linux


184

interface texto baseada no comando rpm. Esse curso ser baseado na interface texto
utilizando o comando rpm. So listadas a seguir as principais opes de uso deste comando.
-i - Instala um ou mais pacotes.
-e - Remove um ou mais pacotes.
-U - Atualiza um ou mais pacotes.
-q - Faz uma consulta na base de dados criada pelo RPM no sistema.
O RPM possui mtodos baseados no algoritmo MD5 e na criptografia de chave pblica,
utilizando GPG, para validar a integridade de um pacote. Isso necessrio, pois alguns
pacotes podem estar corrompidos.
Antes de instalar um pacote, o RPM verifica se este j est instalado no sistema e caso esteja,
verifica se sua verso mais recente que a verso que est sendo instalada. Em seguida, o
RPM verifica as dependncias, cancelando a instalao, se algum outro pacote requerido no
estiver instalado. importante frisar, que o RPM no resolve problemas de dependncia
entre pacotes. Ele somente indica as dependncias, no instalando as mesmas
automaticamente. Nesse caso, o administrador deve, primeiramente, instalar todas as
dependncias necessrias. No entanto, se o administrador tentar remover um pacote que
dependente de outro pacote, a remoo no ser realizada e uma mensagem ser impressa
na tela informando que o pacote no pode ser removido porque utilizado por outro pacote
que est instalado no sistema. O RPM tambm verifica se algum arquivo de configurao ser
modificado durante o processo de instalao de um pacote. Havendo a necessidade de
modificao de um arquivo existente, o RPM salva a verso corrente e imprime uma
mensagem na tela informando sobre a alterao.
Periodicamente, novas verses de pacotes RPM so lanadas para corrigir bugs e problemas
de segurana. O administrador deve verificar, com frequncia, na pgina da distribuio
utilizada o lanamento de novas verses de pacotes. Na verdade, os sistemas baseados em
pacotes RPM, como Red Hat, CentOS e Fedora, possuem um mecanismo ainda mais poderoso
para manter o sistema sempre atualizado. Trata-se do YUM, que um gerenciador de pacotes
baseado no RPM, que ser descrito a seguir.
RPM (RPM Package Manager):
Gerenciador de pacotes utilizados nas distribuies Red Hat, Fedora, CentOS, etc;
Os pacotes so compostos por binrios, arquivos de configurao, etc;
Possui interfaces grficas e uma interface texto baseada no comando rpm;
Utiliza criptografia e funes de hash para garantir a integridade dos pacotes;
Verifica dependncias entre pacotes mas no as resolve;
No fazem atualizaes automticas de pacotes.

Administrao de Sistemas Linux


185

YUM
O YUM (Yellowdog Updater, Modified) um gerenciador de pacotes utilizados em
distribuies que so baseadas no RPM. Entre essas distribuies, podemos destacar: Red
Hat, Fedora e CentOS. O YUM resolve problemas com dependncias entre pacotes, instalandoas automaticamente quando necessrio. Essa caracterstica facilita bastante o trabalho do
administrador durante o processo de instalao de pacotes. O YUM consulta diversos
repositrios que so utilizados para fazer o download dos pacotes que so instalados no
sistema. A lista de repositrios fica armazenada em arquivos dentro do diretrio
/etc/yum.repos.d/. O YUM possui interfaces grficas como por exemplo, o KYUM e uma
interface texto baseada no comando YUM. Esse curso ser baseado na interface texto
utilizando o comando YUM. So listadas a seguir as principais opes de uso deste comando.
install - Instala um ou mais pacotes.
group-install - Instala um grupo de programas. (ex: System Tools)
remove - Remove um ou mais pacotes.
update - Atualiza um ou mais pacotes.
upgrade - Atualiza todos os pacotes e remove pacotes obsoletos.
clean - Limpa o cache do YUM.
search - Faz uma busca por um determinado pacote.
list - Faz uma busca por um determinado pacote, mas retorna menos informaes que a
opo search.
YUM (Yellowdog Updater, Modified):
Gerenciador de pacotes utilizados nas distribuies Red Hat, Fedora, CentOS, etc;
Resolve problemas com dependncias, instalando-as automaticamente;
Utiliza repositrios para fazer o download dos pacotes;
Possui interfaces grficas e uma interface texto baseada no comando YUM.

APT
O APT (Advanced Packaging Tool) um gerenciador de pacotes utilizado na distribuio
Debian e suas derivadas como por exemplo, a distribuio Ubuntu. Assim como o YUM, o APT
tambm resolve problemas com dependncias entre pacotes, instalando-as automaticamente
quando necessrio. O APT consulta uma srie de repositrios que so utilizados para fazer o
download dos pacotes que so instalados no sistema. A lista de repositrios fica armazenada
no arquivo /etc/apt/sources.list. O APT possui interfaces grficas como por exemplo, o
Synaptic e interfaces texto, com destaque para o comando apt-get. Esse curso ser baseado
na interface texto utilizando o comando apt-get. So listadas a seguir as principais opes de
uso deste comando.
install - Instala ou atualiza um ou mais pacotes.
update - Atualiza a lista de repositrios definidos no sistema.
Administrao de Sistemas Linux
186

upgrade - Atualiza todos os pacotes que esto desatualizados.


dist-upgrade - Atualiza o sistema para uma nova distribuio.
remove - Remove um ou mais pacotes.
clean - Remove todos os pacotes baixados, utilizados em instalaes anteriores.
source - Faz o download do cdigo-fonte dos pacotes.
APT (Advanced Packaging Tool):
Gerenciador de pacotes utilizados nas distribuies Debian, Ubuntu, etc;
Resolve problemas com dependncias, instalando-as automaticamente;
Utiliza repositrios para fazer o download dos pacotes;
Possui interfaces grficas e interfaces texto, uma delas, baseada no comando apt-get.

Procedimentos operacionais
Como foi visto no item sobre segurana bsica, o trabalho do administrador de sistemas
abrange desde atividades rotineiras e bem definidas, como fazer cpias de segurana
(backups), at atividades eventuais e imprevisveis, como diagnosticar a causa do baixo
desempenho de um servidor. Uma caracterstica comum a todas essas atividades que elas
afetam, direta ou indiretamente, a produtividade dos usurios do sistema, e
consequentemente a produtividade da instituio a que o sistema atende. Desse modo, o
administrador de sistemas precisa utilizar sempre as prticas de administrao mais
adequadas para os objetivos propostos pela instituio. Tal necessidade pressupe que o
administrador conhea os objetivos da instituio e de seus usurios, os sistemas que
administra e sua rea de atuao. Alm disso, deve ser capaz de trabalhar em equipe, de
forma responsvel e organizada.
Focaliza-se, aqui, o ltimo dos atributos relacionados acima, no que diz respeito ao trabalho
de forma organizada, reunindo algumas recomendaes e propondo modelos de
procedimentos, normas e formulrios para apoiar o administrador em suas atividades.
Administradores que conseguem organizar seu trabalho so muito mais produtivos e
efetivos em suas aes. Isso resulta em sistemas com maior tempo de disponibilidade,
melhor desempenho e o que o mais importante, com usurios satisfeitos. Quando o
administrador no consegue se organizar, ele opera de forma reativa e o resultado um
interminvel apagar de incndios.
O que est aqui descrito no deve ser entendido como a palavra final sobre as prticas de
administrao de sistemas, mas como um ponto de partida para ser adaptado s condies
locais de cada instituio e aperfeioado pelo administrador no seu dia-a-dia. Inicialmente, o
administrador deve utilizar somente o que lhe parecer mais til e introduzir as demais
prticas medida que perceber sua necessidade. O registro dos dados sugeridos nas prticas
aqui descritas pode ser feito tanto em meio eletrnico quanto impresso, com um layout
requintado ou em estilo checklist. Esse no o foco da discusso, pois no importa se o
administrador vai usar caneta e papel, editor de textos, planilhas, banco de dados ou alguma
Administrao de Sistemas Linux
187

ferramenta especializada. O importante criar o hbito de registrar, de forma organizada e


sistemtica, as intervenes realizadas no sistema.
Procedimentos operacionais:
Atividades do administrador de sistemas:
Manter os sistemas atualizados, seguros e operacionais;
Implementar as polticas de uso de recursos;
Prestar atendimento aos usurios;
Trabalhar de forma pr-ativa;
Registrar informaes relevantes, independente da forma como realizado o
registro;
Etc.

Poltica de utilizao de recursos


Dentre as atribuies do administrador de sistemas, encontra-se a elaborao de regras de
utilizao dos recursos computacionais disponibilizados para os funcionrios de uma
instituio. Este ponto especialmente crtico em grandes instituies, com unidades
fisicamente distribudas, mas que compartilham o uso de recursos. As regras de uso
dependem fundamentalmente do tipo de instituio, do seu grau de informatizao e da sua
poltica de utilizao de recursos computacionais.
Quanto utilizao de sistemas corporativos, cabe ao administrador levantar as informaes
relativas ao item Caracterizao do uso, mostradas na tabela 9.1. Com base nessas
condies, o administrador de sistemas deve definir os requisitos tcnicos a serem
observados para que os funcionrios obtenham acesso aos recursos computacionais da
instituio. ideal que o administrador de sistemas proceda incluso do funcionrio no
sistema somente se essas condies forem atendidas. Na prtica, nem sempre as instituies
possuem tal grau de organizao e o resultado a degradao do desempenho do sistema e a
insatisfao generalizada, tanto dos usurios como da equipe tcnica.
O uso dos recursos computacionais disponibilizados pela instituio para seus funcionrios e
colaboradores deve ser feito nica e exclusivamente com o objetivo de realizar atividades
pertinentes ao cargo e funo do usurio, em acordo com os objetivos e a misso da
instituio, respeitando as leis de direitos autorais e de propriedade intelectual aplicveis
aos softwares utilizados, dados e informaes armazenadas ou acessveis por meio daqueles
recursos.
Entende-se por recursos computacionais o conjunto de ativos de TI, formados por
servidores, desktops, laptops, equipamentos de conectividade, dispositivos de hardware,
cabeamento, softwares diversos, links de comunicao de dados, entre outros, que so
responsveis por proverem os servios de computao, comunicao e informao da
instituio.

Administrao de Sistemas Linux


188

Campo

Caracterizao do uso
Tipo (administrativo, desenvolvimento, pesquisa, produo etc.);
Regime (uso eventual ou contnuo, processamento em tempo real ou
batch etc.);

Carga (uso marginal ou intensivo de recursos do sistema);


Perodo do uso (data inicial, data final).
2

Experincia do usurio em informtica, relativa ao uso pretendido.

Parecer do administrador sobre a disponibilidade dos recursos para o


uso pretendido (incluindo insumos, suporte tcnico e treinamento).

Tabela 9.1 - Caracterizao do uso de recursos computacionais


A incluso de um usurio no sistema deve ser documentada com o levantamento referido
anteriormente, acrescido das informaes presentes na tabela 9.2. Essas informaes so
resultantes da incluso do usurio e devem ser registradas pelo administrador juntamente
com as informaes da tabela 9.1. O acompanhamento do uso dos recursos computacionais
da empresa tambm uma atribuio do administrador do sistema e visa coletar dados para
antecipar deficincias no sistema como um todo e subsidiar aes de:
Manuteno preventiva;
Ajustes de parmetros para melhoria de desempenho (tuning);
Substituio, atualizao e expanso de dispositivos saturados;
Planejamento para aquisio de novos equipamentos;
Treinamento de operadores, monitores e equipe de suporte.
A coleta dessas informaes nem sempre fcil. Existem ferramentas comerciais
especializadas, mas o administrador de sistemas pode, inicialmente, utilizar os recursos do
prprio sistema operacional e de softwares especficos para coletar estatsticas simples sobre
o uso de CPUs, memria, espao em disco, links de comunicao de dados, etc.. medida que
os dados coletados se mostrarem importantes para o planejamento de aes futuras, o
processo de coleta pode ser aperfeioado para incluir mais detalhes e, eventualmente,
poder ser adquirido um software especfico para essa funo. Os relatrios gerados a partir
dos dados consolidados devem ser claros, objetivos e concisos. O formato, caso ainda no
exista, deve ser definido em conjunto com os demais integrantes da equipe e com o gerente
de TI da instituio.
Acompanhamento da utilizao dos recursos computacionais:
Manuteno preventiva;
Tuning;

Administrao de Sistemas Linux


189

Substituio, atualizao e expanso de dispositivos saturados;


Aquisio de novos equipamentos;
Treinamento de pessoal de suporte.

Informaes sobre os novos usurios


Para ser efetivada, a incluso de um novo usurio deve ser acompanhada de um termo de
responsabilidade, em que o futuro usurio declara sua concordncia com os termos e
condies de uso estabelecidos pela instituio e da assinatura de seu superior imediato. Um
exemplo simples de termo de responsabilidade apresentado na tabela 9.2.
Campo

Dados cadastrais

Nome completo do usurio

Documento de identificao (matrcula na empresa, RG)

Departamento/Setor

Cargo/Funo

Nome do chefe imediato

Telefones de contato

Endereo eletrnico

Datas de recebimento/processamento da solicitao de incluso

10

Identificao do tcnico responsvel pela incluso da conta

Tabela 9.2 - Dados cadastrais dos usurios


Informaes sobre os novos usurios:
Documentao da incluso do usurio no sistema;
Assinatura do Termo de Responsabilidade;
Registro das informaes da conta;
Termo de responsabilidade:
De acordo/Data/Assinatura do usurio.

Atendimento aos usurios


Visando facilitar o trabalho do novo usurio, o administrador de sistemas deve
disponibilizar, em forma impressa e eletrnica, as informaes bsicas sobre as
caractersticas e condies de uso dos sistemas sob sua responsabilidade. De nada adianta
ter um sistema muito bem organizado se os usurios no esto sendo bem atendidos nas
suas necessidades. Os usurios so os clientes e como clientes, precisam ser ouvidos e
respeitados, mesmo quando suas expectativas sejam inadequadas para a realidade da
instituio. Quando se trata de instituies com uma alta taxa de rotatividade de usurios,
Administrao de Sistemas Linux
190

como o caso de instituies de ensino e pesquisa, essas informaes devem possuir


formato simples e resumido e serem disponibilizadas em local de fcil acesso.
Cabe ao administrador do sistema, em ltima instncia, tentar descobrir as reais
necessidades do usurio e decidir como pode melhor atend-los. Se o problema de
desconhecimento dos recursos existentes e de como utiliz-los, o usurio deve ser treinado,
o que pode ser feito pela prpria equipe de suporte, ou com a ajuda de outros usurios
experientes. Caso o problema seja de inadequao dos recursos computacionais existentes
para o fim desejado, o administrador pode levar o problema ao seu superior e tentar resolvlo da melhor maneira possvel.
Atendimento aos usurios:
Disponibilizar as informaes bsicas sobre caractersticas e condies de utilizao
dos sistemas;
Formato simples (eletrnico) e de fcil acesso.
Descobrir as necessidades dos usurios;
Tratar de problemas de inadequao de recursos;
Promover treinamento por meio da equipe de suporte.
Eventualmente, se o trabalho do usurio for importante para a instituio, o recurso poder
ser adquirido. Qualquer que seja a soluo encontrada para as necessidades dos usurios, o
administrador de sistemas precisa se colocar sempre na posio de quem ajuda a viabilizar
os projetos da instituio, e no como a pessoa interessada unicamente em manter os
sistemas operando de maneira adequada. O importante que o usurio do sistema seja
respeitado em suas necessidades. Afinal, os recursos computacionais so meios e no fins
para a empresa. Eles tm que ser utilizados com o objetivo de melhorar a produtividade dos
funcionrios e aumentar a competitividade da instituio como um todo, e no como vitrine
do estgio tecnolgico por ela alcanado. O administrador de sistemas necessita manter
contato permanente com os usurios e estimul-los a opinarem sobre o funcionamento dos
sistemas sob sua responsabilidade e sobre o atendimento que esto recebendo da equipe
tcnica. Essa postura fundamental para que o administrador identifique, em primeira mo,
as falhas de atendimento da sua equipe, ou as necessidades no atendidas dos usurios, e
possa corrigi-las antes que comprometam as atividades finais da instituio. Se toda a equipe
sob sua coordenao estiver imbuda desse mesmo esprito, o administrador de sistemas
ter mostrado possuir no s competncia tcnica, mas tambm organizacional.
Atendimento aos usurios:
Respeitar o usurio e suas necessidades;
Recursos computacionais so meios e no fins;
Fazer checagem peridica do ndice de satisfao dos usurios;
Identificao de falhas no atendimento;
No comprometimento das atividades fim da instituio.

Administrao de Sistemas Linux


191

Controle de recursos computacionais


Os recursos computacionais sob responsabilidade de um administrador de sistemas podem
variar desde uma pequena rede local com estaes individuais de trabalho, para uso
dedicado de um pequeno grupo de usurios, at uma grande rede com diversos servidores,
equipamentos de conectividade, estaes de trabalho, etc. Qualquer que seja o caso
importante que o administrador mantenha informaes atualizadas sobre os itens que
compem a infraestrutura de TI. A manuteno de um cadastro com informaes de
identificao e de localizao de cada equipamento uma atividade importante em
organizaes com uma infraestrutura complexa e distribuda por diversas unidades
separadas geograficamente. A tabela 9.3 mostra os dados essenciais que devem ser coletados
para a montagem desse cadastro. importante, tambm, manter um histrico das
ocorrncias de cada equipamento, incluindo atividades de manuteno preventiva e
corretiva e de atualizao de hardware e software. Vale observar a importncia de serem
registradas as verses e os respectivos nmeros de licenas de software comercial instalado
nos equipamentos, para facilitar o controle e evitar problemas com cpias ilegais. Essas
informaes devem estar, preferencialmente, em formato eletrnico. Aplicativos de planilha
e de bancos de dados, ou mesmo softwares de inventrio so uma boa alternativa para
armazenamento desses dados, uma vez que facilitam a gerao de relatrios. Mas bom
existir um checklist em papel para ser utilizado quando a equipe de suporte sair a campo
para diagnosticar algum problema.
Controle de recursos computacionais:
De uma pequena rede com estaes de trabalho a uma grande rede geograficamente
distribuda;
Cadastro com informaes de identificao e localizao de cada equipamento;
Histrico de manutenes preventivas ou corretivas e atualizaes de hardware e
software;
Iventrio de hardware e software instalados;
Checklist em papel para ser utilizado pela equipe de suporte local.

Cadastro de hardware
O cadastro dos equipamentos de TI deve ser feito independentemente do software utilizado
para este propsito. Em grandes organizaes, essa atividade fundamental para que o
administrador no perca o controle sobre os ativos pelos quais responsvel. A tabela 9.3
mostra uma relao de informaes que devem fazer parte do cadastro de um item de
hardware, mesmo que em alguns casos, alguns dos itens relacionados no sejam aplicveis:

Campo

Dados Cadastrais

Tipo do equipamento / Dispositivo

Marca / Modelo

Administrao de Sistemas Linux


192

Campo

Dados Cadastrais

Configurao de hardware (dados principais)

Identificao patrimonial

Nmero de srie

Localizao fsica

Operador / usurio responsvel (nome completo, departamento, telefone)

Softwares instalados (ttulo, verso, nmero da licena)

Endereo IP

10

Nome do computador na rede

Tabela 9.3 - Cadastro de hardware


Cadastro de hardware:
Guardar informaes;
Manter histrico das ocorrncias de cada equipamento;
Possuir registro de verses e de licenas de software;
Guardar informaes, preferencialmente em formato eletrnico.
Tambm importante que se faa o cadastro de todos os softwares utilizados pela
instituio, visando um melhor controle sobre licenas e necessidades de uso, utilizando um
formato semelhante ao utilizado na tabela 9.3.

Diagnstico de falhas
Por mais responsvel e dedicado que seja, o administrador de sistemas no vai conseguir
evitar que ocorram falhas no funcionamento dos sistemas sob sua responsabilidade. Essas
falhas podem ter as causas mais diversas, incluindo:
Bugs de software;
Mau funcionamento de dispositivos e equipamentos;
Incompatibilidade de verses de hardware e software;
Mau uso intencional;
Erro de operao;
Condies fsicas inadequadas.
O diagnstico de falhas, devido ao seu carter investigativo, uma das atividades mais
desafiantes dentre as atribuies do administrador de sistemas. O problema que o tempo
gasto no diagnstico de uma falha pode atrasar outras tarefas tambm importantes e
Administrao de Sistemas Linux
193

comprometer toda a programao de atividades, tornando o administrador de sistemas um


verdadeiro apagador de incndios. Alm da experincia, um dos instrumentos mais
efetivos com que o administrador de sistemas pode contar ao diagnosticar uma falha o
Livro de Registro de Ocorrncias do sistema.
Diagnstico de falhas:
Uma das atividades mais desafiantes do administrador;
Tempo gasto no diagnstico pode atrasar a execuo de outras tarefas;
Utilizao do Livro de Registro de Ocorrncias.

Registro de ocorrncias
O registro de ocorrncias uma atividade importante no dia-a-dia de um administrador de
sistemas e constitui uma excelente referncia para consultas, identificao de problemas
decorrentes de associaes entre problemas (que sugerem efeitos colaterais), de solues
diferentes para o mesmo problema (que sugerem diagnsticos incorretos), etc. O livro de
registro de ocorrncias utilizado para registrar, cronologicamente, as principais aes
realizadas pelo administrador nos diversos sistemas que administra, bem como
acontecimentos relevantes que tenham afetado algum componente da infraestrutura de TI
da organizao. A tabela 9.4 mostra uma relao de informaes que devem fazer parte de
um registro de ocorrncias:
Campo

Informaes

Nmero sequencial de identificao

Data e hora do registro da ocorrncia

Descrio resumida do problema

Hardware / Software / Servio afetado

Autor do registro

Categoria da ocorrncia (ex.: parada total, parada parcial, atualizao de


software, manuteno de hardware, instalao de novo hardware, etc.)

Diagnstico provvel

Soluo adotada

Data / hora da soluo da ocorrncia

10

Autor da soluo

11

Observaes (para referncia a outras ocorrncias etc.)

Tabela 9.4 - Registro de ocorrncias

Administrao de Sistemas Linux


194

Esse tipo de documento, alm de contribuir para elevar o nvel de qualidade da


administrao dos sistemas de uma instituio, facilita o trabalho da equipe de TI durante a
resoluo de problemas, liberando o administrador para atividades mais complexas. O
campo 6 da tabela 9.4 por exemplo, til para agrupar ocorrncias de um mesmo tipo,
facilitando a produo de relatrios consolidados. O administrador pode criar categorias
especficas para a sua instituio.

Rotina de backup
A atividade de backup uma das atribuies mais crticas do administrador de sistemas.
Deve ser planejada de acordo com as necessidades da instituio e ser de amplo
conhecimento de todos os usurios. Avaliadas as necessidades da empresa, com base nos
critrios discutidos na sesso de aprendizagem 6, o administrador deve elaborar o plano de
backup e cumpri-lo rigorosamente.
No que diz respeito execuo dessa atividade, deve ser dada especial ateno
documentao da mdia utilizada, com o objetivo de facilitar a recuperao da informao
salva, em caso de necessidade. Diferentes instituies possuem diferentes necessidades de
backup. Uma instituio de ensino e pesquisa totalmente distinta de uma instituio
financeira, no que diz respeito a essas necessidades. As mdias de backup devem estar
devidamente identificadas por algum rtulo que caracterize o seu uso. O administrador deve
ainda programar o rodzio dos conjuntos de mdias de backup (dirios, semanais e mensais)
para assegurar que o desgaste pelo uso seja proporcionalmente equivalente entre os vrios
conjuntos e que os backups totais sempre sejam feitos sobre conjuntos de mdia mais novos
e, portanto, mais confiveis. O acondicionamento fsico da mdia de backup precisa levar em
conta os requisitos ambientais de armazenamento de cada tipo, seguindo as recomendaes
do fabricante. Alm disso, o controle de acesso ao local de armazenamento das mdias de
backup deve ser rigoroso. No caso de sistemas crticos, o backup pode ser duplicado e
armazenado em locais distintos, para reduzir o risco de perda por catstrofes como
incndios, inundaes, etc.
Rotina de backup:
Lembrar que para diferentes instituies h diferentes necessidades de backup;
Elaborar o plano de backup;
Promover o rodzio dos conjuntos de mdia;
Cuidar do correto acondicionamento fsico das mdias;
Controlar o acesso ao local de armazenamento das mdias de backup;
Dependendo da necessidade, o backup deve ser duplicado e armazenado em locais
distintos.

Administrao de Sistemas Linux


195

Administrao de Sistemas Linux


196

10
Webmin
Sumrio
Conhecer o Webmin, uma ferramenta para administrao de servidores Unix, por
intermdio da web;
Conhecer os pr-requisitos necessrios instalao do Webmin;
Identificar as principais vantagens do Webmin;
Entender o conceito de mdulo utilizado pelo Webmin;
Conhecer o Usermin, uma ferramenta que pode ser utilizada pelos usurios de um sistema
para gerenciarem seus perfis.
Webmin:
Caractersticas gerais;
Instalao;
Interface de administrao;
Mdulos;
Usermin.

Caractersticas gerais
Nesta sesso de aprendizagem sero abordados tpicos relacionados ao Webmin, uma
interface web para administrao de sistemas Unix-like. Trata-se de um pacote que possui um
servidor web, que roda em uma porta TCP, definida durante a sua instalao e alguns scripts
CGI que podem atualizar diretamente os arquivos de configurao do sistema e de
basicamente qualquer programa que esteja instalado. O servidor web e todos os outros
scripts CGI so escritos em linguagem Perl. Sero apresentadas as principais caractersticas
do Webmin e seus aspectos de segurana e controle de acesso, que o tornam uma alternativa
interessante na rotina de trabalho de um administrador de sistemas.
Caractersticas gerais:
Interface web para administrao de sistemas Unix-like;
Aplicao composta por um servidor web e por scripts Perl;
Possui suporte criptografia de dados, utilizando o protocolo SSL;
Pode ter seu acesso restringido a determinados IPs ou redes;

Administrao de Sistemas Linux


197

Possui um esquema de autenticao de usurios completamente independente do


sistema.
Algumas caractersticas importantes do Webmin sero apresentadas a seguir:
Quanto segurana: seu sistema de autenticao de usurios completamente
independente do esquema utilizado pelo sistema. Isso significa que o administrador pode
atribuir direitos a um usurio, por meio do Webmin, sem que esse usurio possua acesso
a qualquer tipo de configurao por intermdio do sistema. Para possibilitar uma
comunicao segura entre o servidor web e o browser cliente, pode ser utilizada uma
conexo criptografada, por meio do protocolo SSL, principalmente em se tratando de
atividades com permissionamento de superusurio. O acesso ao Webmin tambm pode
ser restringido a determinadas redes ou IPs especficos.
Quanto funcionalidade: o Webmin pode atuar como um servidor proxy. possvel
estabelecer uma conexo segura a um firewall e, por intermdio dessa conexo, gerenciar
computadores em uma intranet, atrs desse firewall. Essa funo revela-se muito til nos
casos em que se deseja fornecer servios de gerenciamento a clientes externos. Outra
funcionalidade interessante a oferecida pelo mdulo Custom Commands, que permite
ao administrador executar os seus prprios scripts e ter a sada deles redirecionada a
uma pgina web. O Webmin deve ser executado pelo usurio root, j que a maioria das
tarefas de administrao que realiza, como editar arquivos de configurao ou reiniciar
servios, s podem ser executadas com os privilgios desse usurio.
Quanto configurao: o Webmin tambm pode ser configurado para registrar todas as
alteraes feitas por meio dele em arquivos de log. Essa caracterstica extremamente
til para a soluo de problemas e para o controle, por parte do administrador, das
mudanas que esto sendo feitas no sistema por meio dessa interface. O Webmin trabalha
diretamente com os arquivos de configurao dos servios, o que significa que ele no
utiliza uma base de dados prpria, ou algum outro meio para armazenar qualquer tipo de
informao. possvel editar diretamente, com um editor de textos, o arquivo de
configurao do Apache, por exemplo, sem preocupao com possveis problemas que
poderiam ser causados ao Webmin.
O Webmin tambm possui um excelente mecanismo de controle de acesso aos vrios
mdulos disponveis. O administrador pode, por exemplo, permitir a um determinado
usurio o controle total sobre as configuraes do servidor DNS, sem que esse usurio tenha
acesso a quaisquer configuraes do servidor Apache, ou mesmo permitir o acesso somente
s configuraes de determinadas zonas no servidor DNS. Essa caracterstica torna-se
bastante proveitosa quando necessrio delegar tarefas a vrios administradores.
Controle de acesso:
Possui excelente flexibilidade em relao ao controle de acesso aos diversos mdulos;
Permite registrar as alteraes feitas por meio da interface web em arquivos de log;
As alteraes feitas por meio do Webmin so executadas diretamente nos arquivos de
configurao do sistema;
Deve ser executado pelo superusurio.
Administrao de Sistemas Linux
198

Instalao
As principais distribuies do Linux possuem um pacote pr-compilado do Webmin, que
pode ser instalado utilizando um gerenciador de pacotes, que j instala automaticamente
todas as dependncias necessrias. No entanto, nessa sesso de aprendizagem, ser
apresentado o modo de instalao manual, utilizando o cdigo fonte do Webmin e de suas
dependncias. Para acessar o Webmin de forma segura, necessrio a instalao de trs
dependncias que so exibidas a seguir:
Perl
OpenSSL
Net_SSLeay.pm
Pacotes necessrios:
Perl;
OpenSSL;
Net_SSLeay.pm ;
Webmin .

Perl
O Webmin, conforme mencionado anteriormente, escrito na linguagem de programao
Perl. Sendo assim, a mesma deve estar instalada no sistema para que o Webmin possa ser
executado. O Perl j vem instalado por padro, na maioria das distribuies Linux, mas caso
seja necessrio instal-lo, basta executar a sequncia de comandos a seguir para instalar a
verso 5.14.2:
#
#
#
#
#
#
#
#

cd /usr/local/src
wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz
tar -zxvf perl-5.14.2.tar.gz
cd perl-5.14.2
./Configure
make
make test
make install

Se no ocorrer nenhum erro, passa-se prxima seo. Caso contrrio, o administrador pode
consultar a seo de documentao no site oficial do Perl, em http://www.perl.org. Feito isso,
o diretrio perl-5.14.2 pode ser excludo, assim como o pacote de instalao.
Instalao do Perl:
# cd /usr/local/src
# wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz
# tar -zxvf perl-5.14.2.tar.gz
# cd perl-5.14.2
Administrao de Sistemas Linux
199

# ./Configure
# make
# make test
# make install

OpenSSL
O OpenSSL um pacote que implementa, entre outras caractersticas, os protocolos SSL e
TLS, que permitem a troca de informaes criptografadas entre dois computadores atravs
da rede. Na instalao padro, o binrio do OpenSSL instalado no diretrio
/usr/local/ssl/bin. recomendado manter essa localizao, pois outros programas que
utilizam esse binrio geralmente o procuram nesse diretrio. Para a instalao da verso
1.0.0g do OpenSSL, dever ser executada a seguinte sequncia de comandos:
#
#
#
#
#
#
#
#

cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.0g.tar.gz
tar -zxvf openssl-1.0.0g.tar.gz
cd openssl-1.0.0g
./config
make
make test
make install

Se no ocorrer nenhum erro, passa-se prxima seo. Caso contrrio, o administrador pode
consultar a seo de documentao no site oficial do OpenSSL, em http://www.openssl.org.
Feito isso, o diretrio openssl-1.0.0g pode ser excludo, assim como o pacote de instalao.
Instalao do OpenSSL:
# cd /usr/local/src
# wget http://www.openssl.org/source/openssl-1.0.0g.tar.gz
# tar -zxvf openssl-1.0.0g.tar.gz
# cd openssl-1.0.0g
# ./config
# make
# make test
# make install

Net_SSLeay.pm
O Net_SSLeay.pm nada mais do que um mdulo necessrio para a implementao de
aplicaes Perl que utilizem funes da biblioteca OpenSSL. o Net_SSLeay que ficar
responsvel pela gerao do certificado digital requerido para o site seguro do Webmin. Para
a instalao da verso 1.45 do Net_SSLeay, dever ser executada a seguinte sequncia de
comandos:
# cd /usr/local/src
Administrao de Sistemas Linux
200

# wget http://www.cpan.org/modules/by-module/Net/Net-SSLeay1.45.tar.gz
# tar -zxvf Net-SSLeay-1.45.tar.gz
# cd Net-SSLeay-1.45
# perl Makefile.PL
# make
# make install
Se no ocorrer nenhum erro, passa-se prxima seo. Caso contrrio, o administrador pode
consultar o site http://www.cpan.org. Feito isso, o diretrio Net-SSLeay-1.45 pode ser
excludo, assim como o pacote de instalao.
Instalao do Net_SSLeay:
# cd /usr/local/src
# wget http://www.cpan.org/modules/by-module/Net/Net-SSLeay-1.45.tar.gz
# tar -zxvf Net-SSLeay-1.45.tar.gz
# cd Net-SSLeay-1.45.tar.gz
# perl Makefile.PL
# make
# make install

Webmin
Neste tpico ser abordada a instalao do programa Webmin propriamente dito. As
instrues apresentadas neste documento foram baseadas nas verses indicadas abaixo, mas
devem ser semelhantes para verses futuras. Para a instalao da verso 1.580 do Webmin,
dever ser executada a seguinte sequncia de comandos:
# cd /usr/local/src
# wget
http://ufpr.dl.sourceforge.net/project/webadmin/webmin/1.580/webmin1.580.tar.gz
# tar -zxvf webmin-1.580.tar.gz
# cd webmin-1.580
# ./setup.sh /usr/libexec/webmin
Quando for executado o script setup.sh, que o programa de instalao do Webmin, sero
feitas algumas perguntas que, na sua maioria, devem ser mantidas com suas respostas
padro. O administrador deve escolher uma senha de acesso para a aplicao nesse passo. O
diretrio /usr/libexec/webmin armazenar todos os scripts, imagens e pginas HTML. A
seguir podem ser vistas as perguntas feitas pelo script setup.sh e as respostas utilizadas.
Config file directory [/etc/webmin]:
Log file directory [/var/webmin]: /var/log/webmin
Full path to perl (default /usr/bin/perl):
Web server port (default 10000):
Administrao de Sistemas Linux
201

Login name (default admin):


Login password:
Password again:
Use SSL (y/n): y
Start Webmin at boot time (y/n): y
Feito isso, o diretrio /usr/local/src/webmin-1.580 pode ser excludo, assim como o pacote
de instalao. Se o administrador quiser desinstalar o Webmin, ele deve executar o script de
desinstalao, /etc/webmin/uninstall.sh, que quando executado, remove todos os diretrios e
arquivos adicionados por ele durante o processo de instalao.
Instalao do Webmin:
# cd /usr/local/src
# wget http://ufpr.dl.sourceforge.net/project/webadmin/webmin/1.580/webmin1.580.tar.gz
# tar -zxvf webmin-1.580.tar.gz
# cd webmin-1.580
# ./setup.sh /usr/libexec/webmin

Interface de administrao
Finalizado o processo de instalao, deve-se testar o acesso ao Webmin. Para acessar sua
interface basta digitar a URL https://servidor:10000 em qualquer navegador web, onde
servidor o nome do servidor onde o Webmin est instalado. Se a instalao tiver sido
executada de maneira correta, a pgina inicial do Webmin dever ser carregada. Nessa
pgina, o administrador deve informar o usurio e a senha de acesso aplicao, que foram
criados durante o processo de instalao do Webmin. Se o usurio e a senha fornecidos
estiverem corretos, o acesso ser autorizado e a pgina inicial do Webmin ser exibida. A
figura 10.1, mostra a pgina inicial do Webmin que apresenta um menu na parte superior
esquerda da tela, com as categorias de configurao do sistema. Cada categoria composta
por diversos mdulos, que podem ser configurados de acordo com as necessidades do
administrador.

Administrao de Sistemas Linux


202

Figura 10.1 - Pgina inicial do Webmin


Para cada categoria presente no menu, existe uma pgina principal correspondente, com os
diversos itens de configurao do sistema ou de programas instalados pelo administrador.
Navegando pelo Webmin, possvel notar que, apesar de existirem diversos mdulos
disponveis para serem administrados atravs de sua interface, nem sempre esses mdulos
esto habilitados, pois, em determinados casos, pode acontecer de determinado programa
no estar devidamente instalado no servidor. Navegando pelas vrias opes disponveis no
Webmin, pode-se ver, em poucos instantes, como essa ferramenta extremamente poderosa
e de fcil utilizao, simplificando o trabalho tanto dos administradores novatos, como dos
mais experientes.
Interface de administrao:
O acesso interface do Webmin pode ser feito por meio de qualquer navegador web:
URL de acesso: https://servidor:10000
Na pgina inicial, devem ser informados o usurio e a senha definidos durante a
instalao;
Apresenta um menu com as categorias principais de configurao do sistema;
Cada categoria possui uma srie de mdulos que representam os diversos servios
disponveis.

Mdulos
O Webmin possui um design modular, onde todo e qualquer servio ou caracterstica
representado por meio de um conjunto de mdulos. O Webmin possui mais de 100 mdulos
em sua instalao padro, e muitos outros esto disponveis na Internet. Existem mais de 300
mdulos escritos por terceiros, disponveis para integrao com o Webmin. Esses mdulos
Administrao de Sistemas Linux
203

cobrem desde LDAP at IDSs, como o Snort, etc. A maioria deles livre e regida pela GPL,
porm alguns mdulos so comerciais. A qualidade desses mdulos varia, mas pode-se dizer
que, para qualquer servio que se queira gerenciar, existe um mdulo disponvel. Os mdulos
do Webmin ficam armazenados por padro, em diretrios dentro do diretrio
/usr/libexec/webmin, definido durante a instalao. Para desenvolver um mdulo externo,
necessrio seguir algumas regras listadas abaixo:
Um mdulo, a princpio, pode ser escrito em qualquer linguagem, mas para evitar
problemas de incompatibilidade, recomendvel que seja escrito em linguagem Perl,
verso 5.8 ou superior e no utilize programas externos.
Para ser exibido na interface do Webmin, um mdulo deve conter o arquivo module.info,
que contm as informaes necessrias sobre o mdulo; o arquivo images/icon.gif, que
contm o cone que representa o mdulo e o arquivo lang/en, que contm as mensagens
de texto utilizadas pelo mdulo, neste caso, na lngua inglesa.
Evitar o uso de frames, javascript, DHTML e Flash.
Mdulos:
So incorporados ao Webmin, permitindo que os mais diversos servios sejam
controlados por meio de sua interface web;
Possui mais de 100 mdulos em sua instalao padro;
Existem mais de 300 mdulos desenvolvidos por terceiros para o Webmin;
possvel utilizar a API do Webmin para o desenvolvimento de novos mdulos;
Devem ser escritos preferencialmente em linguagem Perl e seguir algumas regras.
A seguir so descritas as categorias presentes na interface do Webmin:
Webmin Possui mdulos de configurao do Webmin, como criao de usurios, backup
dos arquivos de configurao etc.
System Possui mdulos de configurao de servios do sistema, como boot e shutdown,
gerenciamento de file systems, backup etc.
Servers Possui mdulos de configurao de servidores, como Apache, SSH, etc.
Others Possui mdulos de configuraes diversas, como comandos do shell, status do
sistema, mdulos Perl, etc.
Networking Possui mdulos de configurao de rede, como firewall, monitoramento de
banda, etc.
Hardware Possui mdulos de configurao de hardware, como gerenciamento de
volumes lgicos, parties, impressoras etc.
Cluster Possui mdulos de configuraes relativas administrao de clusters.
Categorias de configurao:
Webmin Mdulos de configurao do Webmin.
System Mdulos de configurao de servios de sistema.
Administrao de Sistemas Linux
204

Servers Mdulos de configurao de servidores.


Others Mdulos de configuraes diversas.
Networking Mdulos de configurao de rede.
Hardware Mdulos de configurao de hardware.
Cluster Mdulos de configuraes relativas a clusters.
Um novo mdulo pode ser instalado tanto atravs da linha de comando, quanto atravs da
prpria interface de administrao do Webmin. Esta ltima opo pode ser seguida,
navegando-se em sua interface atravs das opes: Webmin, Webmin Configuration, Webmin
Modules. As opes de instalao incluem: um mdulo que est localizado no prprio
servidor, um mdulo que est localizado no computador que est acessando a interface do
Webmin, um mdulo que est disponvel atravs de uma URL ou um mdulo padro do
Webmin, presente na categoria Un-used Modules.
A figura 10.2 mostra a pgina principal de administrao do servio SSH, que est presente
na categoria Servers. Como pode ser visto, e possvel realizar uma srie de configuraes no
servio SSH utilizando o Webmin. Cada um dos outros mdulos possui uma pgina inicial
equivalente a esta, com diversas opes de configurao disponveis. Devido a grande
quantidade de mdulos, suas pginas no sero exibidas nesta sesso, cabendo ao
administrador, navegar pela interface do Webmin para explorar todas as suas
funcionalidades.

Figura 10.1 - Pgina de administrao do servio SSH

Usermin
Devido s inmeras facilidades introduzidas pelo Webmin, seu desenvolvedor resolveu criar
outro programa de gerenciamento, chamado Usermin, desta vez voltado exclusivamente para
a administrao de tarefas relativas a usurios. O Usermin pode ser acessado atravs da URL
https://servidor:20000.
Introduo ao Linux
205

Entre as caractersticas do Usermin, podemos citar que ele prov uma interface web, por
meio da qual usurios de um sistema podem alterar suas senhas, editar seus scripts de login,
agendar tarefas no cron, etc. O Usermin pode ser gerenciado atravs do Webmin. Sendo
assim, possvel restringir o nvel de autonomia de cada usurio. Durante este curso, no
trataremos do aprendizado e da utilizao do Usermin. Cabe ao aluno o estudo mais
aprofundado dessa ferramenta de grande utilidade nas tarefas realizadas pelos
administradores de sistemas. O Usermin possui os seguintes mdulos:
Usermin Permite a troca de linguagem e de tema.
Others Permite acesso a vrias outras aplicaes, como file manager, submisso de
tarefas utilizando o cron, documentao do sistema, etc.
Mail Permite a leitura de mensagens, criao de redirecionamentos, filtros, etc.
Login Permite ao usurio administrar sua conta, podendo fazer mudana de senha,
visualizar processos, executar comandos, etc.
Applications Permite iniciar aplicaes como, por exemplo, GPG encryption, fazer
upload e download de arquivos, etc.
Usermin:
Interface web desenvolvida para auxiliar os usurios de sistemas Unix em tarefas
cotidianas;
Possibilita a alterao de senhas, edio de scripts de login, agendamento de tarefas,
etc;
O Webmin possui um mdulo que permite o gerenciamento do Usermin.
A figura 10.3, mostra a pgina inicial do Usermin que apresenta um menu na parte superior
esquerda da tela, composto por categorias. Cada categoria composta por diversos mdulos,
que podem ser configurados de acordo com as necessidades do usurio.

Figura 10.3 - Tela Inicial do Usermin

Introduo ao Linux
206

Anda mungkin juga menyukai