Você está na página 1de 241

MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 1
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 2
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Caractersticas do Linux System Administrator

O curso de Linux System Administrador prepara o aluno para os exames 117-101 e 117-102, que
fazem parte do programa de certificao LPIC-1, oferecido pelo Linux Professional Institute (LPI). O contedo
do curso sincronizado com os objetivos listados por tpicos no site www.lpi.org e seu contedo pode ser
encontrado em nosso site: www.mcury.com.br.

O foco do curso se estende s tarefas administrativas de sistema, como abaixo:

Montar o melhor Layout de particionamento em um servidor;


Instalar distribuies Linux;
Entender e manter a integridade dos sistemas de arquivos e diretrios do sistema;
Instalar, consultar e remover programas em diferentes plataformas Linux;
Administrar contas de usurios e grupos;
Criar, personalizar e fazer uso de scripts ou programas teis para o administrador;
Manipular servios de sistema e seus nveis de execuo;
Criar a melhor estratgia de armazenamento de arquivos para servios, usurios e grupos;
Criar estratgias de backups;
Entender e usar a documentao disponvel no sistema e online;
Configurar, compilar e instalar o Kernel Linux na distribuio, assim como os seus mdulos;
Entender a linguagem SQL;
Administrar servios de interface grfica;
Configurar interfaces de rede, roteamento e DNS em clientes;
Entender e usar um Agente Transmissor de E-mails;
Criar filtros de pacotes de rede no Firewall.

O objetivo deste material didtico auxiliar o aprendizado do aluno sobre a matria ministrada pelo
instrutor em sala de aula. Quaisquer dvidas podem ser tiradas com o mesmo em sala de aula.

Sejam bem-vindos a M.Cury e ao GNU/Linux!!!

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 3
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

ndice:

Tpico Pgina

1- CONCEITOS 05
2- PROGRAMAS E COMANDOS BSICOS 12
3- DISCOS E PERMISSES 23
4- GERENCIAMENTO DE PACOTES 27
5- INSTALAO DO SISTEMA OPERACIONAL 37
6- O SHELL 41
7- DOCUMENTAO NO LINUX 46
8- COMANDOS DE CONTEDO 50
9- EXPRESSES REGULARES 64
10- USURIOS E GRUPOS 71
11- PERMISSES 85
12- SISTEMA DE ARQUIVOS 89
13- LINKS 103
14- COMANDOS DE BUSCA 104
15- RAID 107
16- BACKUP E COMPACTAO 113
17- AGENDAMENTO DE TAREFAS 121
18- COTAS DE ARMAZENAMENTO 126
19- GERENCIAMENTO DE PROCESSOS E INICIALIZAO 132
20- KERNEL 144
21- GERENCIADORES DE BOOT 155
22- COMPILAO DE PACOTES E BIBLIOTECAS 162
23- SHELL SCRIPT 166
24- REDES EM LINUX 184
25- CLIENTES DE SERVIDORES LINUX 197
26- SERVIDOR DE LOGS 203
27- SUPERSERVIDORES 207
28- TCP WRAPPERS 209
29- SSH 210
30- SINCRONIZAO DE DATA E HORA 214
31- SERVIDOR X 217
32- SERVIO DE IMPRESSO 224
33- LINGUAGEM SQL 227
34- MTA 230
35- FIREWALL IPTABLES 234

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 4
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

1 - CONCEITOS

Antes de comear a administrar sistemas operacionais Linux, preciso ter alguns conceitos bem
fundamentados:

1.1 O projeto GNU

Este projeto surgiu em 1984 (criado por Richard Stallman) e,


desde este momento, teve como objetivo a criao de softwares
livres baseados em sistemas operacionais Unix. O nome GNU vem de
GNU is Not Unix, e no somente do nome do animal Gnu, como
muitos pensam. Este projeto o responsvel por desenvolver alguns
softwares muito conhecidos pelo pblico que utilizam sistemas open-
source, como GIMP e GNOME, por exemplo.
importante ressaltar que Linux tambm no GNU, mas
que os sistemas operacionais Linux utilizados hoje em dia podem
tranquilamente ser chamados de GNU/Linux. Este fato se explica
porque o que se aplica do projeto GNU em sistemas operacionais
GNU/Linux apenas a estrutura de arquivos e diretrios, o ncleo
aplicado foi desenvolvido por Linus Torvalds (que no tem nada a ver com o projeto) e, desde ento, vem sendo
aplicado em conjunto com sistemas operacionais GNU.

1.2 - A GPL

A FSF (Free Software Foundation) criou como parte do projeto GNU, a GPL (General Public License, ou
Licena Pblica Geral), para que houvesse um padro de licenciamento para os softwares livres a serem
desenvolvidos a partir do fim da dcada de 80. O desenvolvedor da GPL foi Richard Stallman.
Ela baseada em quatro liberdades:

Execuo do software (liberdade n 0);


Estudo do software (liberdade n 1);
Distribuio do software (liberdade n 2);
Aperfeioamento do software (liberdade n 3).

Como integrantes da lista de softwares baseados em GPL (os chamados open-source) esto sistemas
operacionais como FreeBSD, OpenSolaris e IBM-AIX (que so baseados em Unix), Debian, Red Hat, Slackware e
Suse, que funcionam sobre Kernel Linux.

1.3 Open Source x Free

Ser open-source no significa ser grtis. Empresas como a Red Hat e a Novell cobram pelo suporte de
seus produtos Red Hat Enterprise e Suse Linux Enterprise, respectivamente.
O motivo de se poder cobrar pelo suporte de produtos que, sobre isso, no se ope a GPL, j que o
Kernel continua sendo Linux (cujo cdigo fonte pode ser facilmente encontrado em www.kernel.org para
download) e as outras liberdades continuam garantidas ao usurio.
Existem sim alguns exemplos de distribuies que, alm de ser open-source, so tambm free e
so excelentes opes para servidores e (ou) desktops. Exemplos bem claros disso so as distribuies Debian,
Ubuntu, CentOS e Fedora.

Para maiores detalhes sobre a GPL, pode-se consultar a URL www.gnu.org/licenses.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 5
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

1.4 - O Linux e as Distribuies

Criado pelo at ento universitrio Linux Torvalds em Helsinki


(Finlndia), o Linux surgiu de um estudo de uma verso reduzida de kernel Unix
(o Minix) em um projeto de faculdade.
A primeira verso do Kernel foi lanada em 1991 e, a partir da, este
kernel Linux comeou a ser utilizado por diversas distribuies open-source.
As distribuies mais significativas so:
Debian, Red Hat, Suse, Slackware, Gentoo, Arch Linux, Mandriva,
Ubuntu, CentOS e Fedora.
Algumas distribuies se originaram de outras, pois bem mais
prtico e coerente desenvolver uma grande soluo em cima de outra que j
funcione muito bem nos mesmos padres desejados.
Exemplos:

Ubuntu e Kubuntu so baseadas em Debian.

O Ubuntu (que tem como diferena para o Kubuntu apenas o fato de utilizar GNOME enquanto o
KUBUNTU usa KDE como interface grfica) tem se destacado muito no cenrio Desktop (usurio final) por sua
fcil usabilidade, efeitos de interface grfica, suporte nativo a sistemas de arquivos NTFS e FAT16/32, drivers
para inmeras impressoras e scanners, etc. Por este motivo, vem sendo adotado como principal distribuio
Linux para Desktops. Sua verso Server tambm tem sido largamente utilizada por empresas e estudiosos na
rea de TI.
O Debian j um sistema operacional muito mais focado em aplicaes para servidores e preferido
pela maioria dos estudantes de especialistas em Linux pelo fato de ele ser 100% free e de ter o modo de
instalao CORE, que no carrega nenhum tipo de aplicao alm do prprio sistema bsico, o que quer dizer
que o sistema fica totalmente cru para que o prprio administrador escolha, efetivamente, que tipo de papel
ele vai desempenhar como servidor de rede.

Mandriva*, Fedora e CentOS so baseados no Red Hat.

Assim como o Ubuntu, o Fedora tem se destacado em aplicaes que dizem respeito ao usurio final e
uma excelente distribuio para este fim.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 6
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O CentOS se destaca pala sua funo de servidor Red Hat 100% free, pois a Red Hat cobra suporte ao
seu sistema operacional Red Hat Enterprise e a verso free deste sistema operacional no existe mais.
Quando se diz que uma distribuio baseada na outra, no quer dizer que seja a mesma coisa, mas
sim que a construo de uma se baseou em um projeto j pronto da outra.
Algumas diferenas entre sistemas operacionais baseados em Debian e em Red Hat so bem evidentes,
como a instalao e o gerenciamento de pacotes instalados, a estrutura de diretrios e os arquivos de
configurao.
Podemos afirmar, ento, que o Linux se resume ao kernel que instalado em sistemas operacionais
open-source que assim o desejarem.
Outra considerao importante que, por se tratar de um sistema que o usa o mesmo modelo POSIX
do Unix, no haver muitas barreiras para o administrador Linux experimentar sistemas operacionais como
FreeBSD, Solaris, SunOS, etc. Alguns comandos e diretrios so simplesmente os mesmos.
Algumas distribuies so protegidas pelas leis de Copyright, caso de Suse Enterprise e Red Hat
Enterprise.

*O Mandriva originou da fuso das empresas Mandrake e Conectiva.

1.5 O Kernel Linux

O papel do kernel para uma distribuio fundamental, pois ele que prov o suporte a recursos de
software e hardware necessrios para o funcionamento do mesmo. O exemplo clssico disto que, em alguns
servidores, os administradores tm o costume de reconfigurar, recompilar e reinstalar o kernel para tirar mais
proveito de recursos de um processador especfico ou at habilitar o modo PAE para que um sistema
operacional de 32 bits possa operar com mais de 4 GB de memria RAM.
Os comandos do Linux dependem que exista algum
COMANDOS programa que os interprete, assim como o este
interpretador (Shell) precisa que algum Kernel interaja
SHELL
entre ele e o Hardware existente. Um grande exemplo disso
que se o kernel no der suporte a placas de rede Wireless,
KERNEL
no adiantar nada o administrador tentar usar o comando
iwconfig, pois no haver suporte ao hardware de rede sem
fio para manipul-lo
HARDWARE Um kernel pode ser classificado de 2 formas:
Monoltico: carrega todos os recursos de que
precisa na prpria imagem de boot do kernel.
Modular: carrega grande parte dos recursos de
kernel em mdulo que podem ou no ser carregados aps o
boot do sistema. A maioria dos sistemas operacionais
prefere trabalhar com kernel modular.
Estas definies podem ser feitas quando o
administrador configura e compila o kernel.

Verses do kernel
A nomenclatura de uma verso de kernel segue o padro abaixo:
<verso maior>.<verso menor>.<compilao/patch>.<verso extra>

Por definio, um kernel era considerado instvel (ainda em desenvolvimento) quando a sua verso
menor fosse mpar, mas, desde 2004, com o lanamento da verso 2.6, isto no mais aplicado. O que
acontece agora que, quando for preciso alterar parmetros de segurana e suporte a dispositivos e
tecnologias , as alteraes sero preferencialmente feitas no terceiro campo e, quando houver a necessidade
de um conjunto massivo de alteraes, a segunda verso ser afetada (de forma estvel).

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 7
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Exemplo de verso do kernel:


2.6.32-2-PAE

Neste caso acima, temos um kernel de reviso 32, que recebeu a verso extra de 2-PAE do
administrador porque ele inseriu durante a configurao do mesmo o suporte a PAE e decidiu declarar isso no
nome do seu kernel.

1.6- Terminais do Linux

O Linux trabalha com a quantidade padro de 63 terminais disponveis para uso. O grande problema
encontrar combinaes possveis de teclas de funo para isso tudo.
Cada um desses terminais funciona de forma independente, facilitando assim a execuo de mltiplas
tarefas. Imagine que em um dos terminais pode-se iniciar um servidor DNS e em outro monitorar o log
pertinente ao mesmo.
Convencionalmente, se utilizam os terminais abaixo:

Terminal Uso Teclas de atalho

/dev/tty1 Modo de comandos ALT+F1

/dev/tty2 Modo de comandos ALT+F2

/dev/tty3 Modo de comandos ALT+F3

/dev/tty4 Modo de comandos ALT+F4

/dev/tty5 Modo de comandos ALT+F5

/dev/tty6 Modo de comandos ALT+F6

/dev/tty7 Interface Grfica ALT+F7

Estes terminais so utilizados por interpretadores de comandos, como BASH e SH, no uso dos
comandos administrativos e de usurios.
Para logins remotos e emulaes de terminais em modo grfico, so utilizados os terminais
/dev/pts/<num>.

Exemplos:
/dev/pts/0 um terminal emulado por xterm.
/dev/pts/1 um terminal utilizado por shell seguro (SSH).

/etc/securetty: o arquivo onde se encontram todos os terminais suportados pela distribuio. Ele
pode ser usado para restringir ou permitir o uso de terminais no sistema.
A tendncia clara de um usurio final fugir dos terminais do Linux, at porque sua usabilidade no
atende s aplicaes das quais ele faz uso, portanto, importante que sejam utilizados gerenciadores de
desktop em sistemas Linux que forem para este fim. Exemplos de gerenciadores de desktop so KDE e GNOME.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 8
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Exemplo de terminal:

1.6 Interfaces grficas

O uso de interface grfica, como j foi dito anteriormente, mais indicado e praticado para usurios de
desktop, ainda que muitas aplicaes grficas para servidor sejam utilizadas para gerenciar servios de rede e
hardware, por exemplo.
Como um assunto a ser falado posteriormente com mais detalhes neste mesmo material, vamos dar
um apanhado geral das principais interfaces grficas disponveis para Linux.
Alguns sistemas operacionais disponibilizam a instalao de mais de uma interface grfica, enquanto
outros so fechados a este tipo de opo (caso do Ubuntu, que usa o Gnome e tem no Kubuntu a sua verso
com KDE).

GNOME
Por ser um gerenciador de janelas com muitos efeitos visuais e menus
organizados e de fcil entendimento, este desktop-manager preferido pelos usurios
de desktop Linux.
Ele gerencia diversas reas de trabalho com grande facilidade, propiciando o
envio de mltiplas janelas de uma rea de trabalho para outra (recurso muito til para
designers, por exemplo).

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 9
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Exemplo de rea de trabalho do Gnome no Ubuntu

Efeito de cubos do GNOME com mltiplas reas de trabalho

KDE
O KDE o desktop manager preferido de alguns administradores de servidores
(quando eles precisam utilizar interface grfica) por causa da sua leveza.
A estrutura de menus do KDE bem diferente em relao do Gnome, se
assemelhando um pouco com a estrutura de menus do Windows (grosso modo).
Ele no conta com alguns recursos especiais do Ubuntu, mas tambm uma tima
opo, j que o que mais o usurio ou administrador do Linux tem opo!!

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 10
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Menu do KDE no Kubuntu

Qual distribuio, verso do kernel e desktop manager utilizarem uma questo a ser analisada
cuidadosamente pelo usurio/administrador, pois no em toda distribuio que se pode utilizar um servidor
de correio eletrnico, por exemplo, e tambm uma Distribuio do tipo Servidor no vai satisfazer o usurio
de programas multimdia.
importante lembrar que ter uma interface grfica instalada pode significar o maior uso de memria
RAM (em alguns casos, chegando a fazer uso de SWAP), o suporte obrigatrio a recursos e resolues de vdeo
suportadas pelos drivers dos fabricantes de vdeo, dispositivos de udio instalados, etc. Justamente por tudo
isso que o administrador Linux no instala interface grfica no servidor ou, se for necessrio, opta por instalar
a interface mais leve possvel e apenas a utiliza em caso de ltima necessidade.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 11
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

2 - PROGRAMAS E COMANDOS BSICOS

Os comandos GNU/Linux so totalmente SENSITIVE CASE. Isso significa que se uma opo de um
comando ou um comando for minscula, ela no funcionar se for trocada por maiscula.
Alguns comandos tm opes em modo curto e modo longo. Algo do tipo: -a que tambm pode ser
usado como --all.

# ls
Lista contedo de diretrios.

Sintaxe:
# ls <opes> <diretrio>

Opes:
-l : modo longo. Lista detalhes sobre os objetos, como o dono, o grupo, as permisses, data de ltima
alterao e tamanho (a unidade padro o byte).
-a ou --all : lista todos os objetos contidos no diretrio, inclusive os ocultos(iniciando com .).
-i ou inode : lista o nmero inode de todos os objetos (ndice que o sistema de arquivos usa para
identificar o arquivo ou diretrio).
-c : lista em ordem alfabtica.
-h ou --human-readable: lista o contedo no modo mais humano. A unidade de tamanho de cada
objeto a mais compreensvel possvel.
-C : lista o contedo em colunas.
-t : classifica o contedo pela data de ltima modificao (ctime).
-S : classifica os arquivos pelo tamanho.
-R: lista o contedo recursivamente, subdiretrios e arquivos.
-r: classifica o contedo em ordem alfabtica reversa.

Exemplos:

Listando todo o contedo do diretrio /root/LPI, inclusive arquivos ocultos, em modo longo e mais
humano:
# ls lha /root/LPI

Listando por ordem alfabtica reversa e de modo recursivo, todo o contedo de /etc:
# ls lrR /etc

Listando em modo longo os arquivos e diretrios de /var/www e o nmero inode de cada um:
# ls li /var/www

Detalhes de um arquivo:

Ao listar um diretrio especfico com 'ls -l', foram verificados alguns itens interessantes:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 12
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Acontece que a primeira coluna representa o tipo do arquivo e as permisses aplicadas a ele. Dessa
primeira coluna, vamos destacar por hora o tipo (primeiro campo).
Os arquivos esto divididos em alguns tipos:
_ : um arquivo regular.
d : um diretrio.
l : um link simblico.
b: um arquivo de bloco (um disco ou uma partio).
c: um arquivo de caracteres (um terminal, por exemplo).
p: um pipe.
s: um socket.

As outras colunas so:


<arquivos contidos> <dono> <grupo> <tamanho> <data de ltima modificao>

# file
Mostra qual o tipo de arquivo em questo.

Sintaxe:
# file <objeto>

# touch
Cria arquivos vazios e/ou troca data de modificao de arquivos.

Sintaxe:
# touch <opes> <arquivo>

Opes:
-d : especifica data.
-m : troca data de ltima modificao.
-r : utiliza data de ltima modificao de outro arquivo como referncia.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 13
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Exemplos:
# touch -m -d 20100512 arq1 : troca a data de ltima modificao para 12/05/2010.
# touch arq2 : cria um arquivo vazio chamado 'arq2'.

# cd
Altera o diretrio atual.

Sintaxes:
# cd <diretrio_destino>
# cd .. - retorna um nvel na hierarquia (pai).
# cd ../.. - retorna 2 nveis na hierarquia.
# cd ~ - muda para o diretrio pessoal do usurio em seo. o mesmo que cd sem argumentos.
# cd ~user1 muda para o diretrio pessoal do usurio user1.
# cd ../<dir1> muda para o diretrio 'dir1', que est um nvel hierrquico acima.

# mkdir
Cria diretrios.

Sintaxe:
$ mkdir <opes> <diretrios>

Opes:
-v : verbose. Exibe detalhes do que foi feito.
-m <perm>: cria o diretrio j com as permisses determinadas.
-p : cria subdiretrios e diretrios de uma vez s. No h a necessidade de existir o diretrio pai
para que seja criado o subdiretrio.

Exemplos:

Criando os diretrios linux/debian/ubuntu de uma s vez e exibindo a sada do comando:


# mkdir -pv linux/debian/ubuntu

Criando o diretrio suse com permisso 733 (permisses de arquivos e diretrios sero detalhadas
mais frente).
# mkdir -mv 733 suse

Criando diretrios dir1, dir2, dir3 e dir4 em um s comando, exibindo tambm a sada do comando:
# mkdir -v dir{1,2,3,4}

Criando diretrios dir10, dir11, dir12, dir13, dir14, dir15 em um s comando, em modo verbose:
# mkdir -v dir{10..15}

# rmdir
Exclui diretrios vazios.

Sintaxe:
# rmdir <diretrio>

# rm
Exclui arquivos e diretrios.

Sintaxe:
# rm <opes> <arquivo/diretrio>

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 14
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Opes:
-v : verbose.
-i : modo interativo. Espera confirmao do usurio para excluir.
-r : modo recursivo. Exclui diretrio e seu contedo.

# mv
Move ou renomeia arquivos e diretrios.

Sintaxe:
# mv <opes> <arquivo/diretrio> <dir_destino/nome_destino>

Opes:
-i : modo interativo. Pergunta antes de sobrescrever um arquivo existente com o mesmo nome.
-v : modo verbose.
-n : no sobrescreve um arquivo de destino com o mesmo nome.
-f : modo forado.

# cp
Cria cpias de arquivos ou diretrios.

Sintaxe:
# cp <opes> <origem> <destino>

Opes:
-R : modo recursivo. Copia diretrio e seu contedo.
-v : modo verbose.
-i : modo interativo. Pergunta antes de sobrescrever destino.
-u : modo update. Apenas copia para o destino arquivos que o mesmo no tem ou que, a pesar de
ter o mesmo nome, so diferentes em seus contedos.
-f : modo forado de cpia.
-p : preserva os atributos originais do arquivo.
-d : preserva ligao simblica.

Exemplos:
Copia todos os arquivos de /etc/network para /tmp mantendo seus atributos em modo verbose:

# cp -vp /etc/network/* /tmp

Apenas copia o arquivo /etc/passwd se houver alguma modificao do original em relao ao arquivo
de destino com o mesmo nome:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 15
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# cp -vu /etc/passwd /tmp

# du
Disk usage - exibe o tamanho em disco ocupado por diretrios.

Sintaxe:
# du <opes> <diretrio>

Opes:
-k : em KB.
-m : em MB.
-h : modo mais humano. Exibe o resultado no mltiplo de byte mais compreensvel.
-s : modo simples. S exibe o tamanho ocupado pelo diretrio, no o de seu contedo.

Exemplos:

Exibindo o tamanho ocupado por todos os subdiretrios de /etc/network e por ele prprio em modo
mais humano:
# du -h /etc/network

Exibindo apenas o tamanho total do diretrio /etc em modo mais humano:

# df
Exibe informaes sobre armazenamento de volumes montados.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 16
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Sintaxe:
# df <opes> <volume>

Opes:
-k : em KB.
-m : em MB.
-h : modo mais humano. Exibe o resultado no mltiplo de byte mais compreensvel.
-i : ao invs de exibir informaes sobre blocos, exibe informaes sobre inodes.
-T: Exibe o tipo de sistema de arquivos utilizado por cada partio montada.

Exemplo:

Exibindo o espao ocupado pela partio /dev/sda5, que est montada:


# df -h /dev/sda5

Mostrando informaes sobre a reserva de inodes da partio montada /dev/sda5:


# df hi /dev/sda5

# cal
Exibe o calendrio no terminal.

Opes:
-j : exibe calendrio Juliano (dias corridos do ano).
-3 : exibe calendrio do ms anterior, do atual e do posterior.
-m <num> : exibe calendrio do ms especfico.

Exemplo:

Exibindo o calendrio dos dias corridos at hoje desde o incio do ano:


# cal -j

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 17
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# date
Exibe ou modifica a data e hora do sistema.

Opes:
--utc : exibe data e hora no padro UTC(Universal Time Clock).
-r <arquivo>: exibe a data e hora de ltima modificao de um arquivo.
-R : exibe data e hora no formato RFC2822.
+<var> : utiliza variveis do comando para exibir em formato especfico.

Variveis do date:
%d : dia.
%m : ms.
%y : ano com 2 dgitos.
%Y : ano com 4 dgitos.
%H : hora.
%M : minuto.
%S : segundo.
%e : dia do ms.
%b : ms por extenso.

Sintaxes:
$ date <opes>
$ date +<variveis>
# date MMDDhhmmAAAA (ms,dia,hora,minuto e ano) modificao da data.

Exemplos:

Modifica a data para 27/02/2010 e hora para 08:31.


# date 022708312010

3 Formas diferentes de representao de data e hora:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 18
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# free
Exibe informaes sobre uso de memrias RAM e Swap.

Sintaxe:
# free <opes>

Opes:
-k : em KB.
-m : em MB.
-g : em GB.
-t : exibe RAM + Swap.

Exemplos:

Exibindo o tamanho total de memria ocupado em MB:


# free -m

Exibindo em tempo real (executando o comando de 1 em 1 segundo) o uso de RAM + Swap:


# watch -n1 free -mt

*Obs: O comando watch tem a funo de repetir a cada x segundos um comando especfico, o padro
o intervalo de repetio de 2 segundos.

2.1 Comandos de desligamento

# halt e # poweoff
Desligam o sistema.

# shutdown
Desliga, reinicia ou simula desligamento.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 19
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Sintaxe:
# shutdown <opes>

Opes:
-h - desliga o sistema.
-r - reinicia o sistema.
-c - cancela qualquer shutdown.
-k - simula o desligamento do sistema enviando mensagens de aviso para todos os terminais.
-f - pula verificao de disco no prximo boot.
-F - fora verificao de disco no prximo boot.

Exemplos:

Desliga o sistema.
# shutdown -h now

Agenda desligamento do sistema para 23:30.


# shutdown -h 23:30

Simula desligamento imediato enviando mensagens para os terminais ativos:


# shutdown -k now

2.2 Editor vim

Editor de texto sucessor do VI, que possui compatibilidade com qualquer sistema Linux.

# vim <arquivo> edita arquivo.

Opes internas do editor:

<insert> modo de insero de texto.


<insert>2x modo 'replace'. Sobrescreve contedo posterior.
<esc> entra em modo de comandos.
v entra em modo 'visual'. Seleo de texto.

Comandos:
yy copia linha inteira.
y copia contedo selecionado.
p cola.
x recorta contedo selecionado.
dd exclui linha inteira.
d exclui contedo selecionado.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 20
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

:set number exibe linhas numeradas.


:set nonumber desliga numerao.
:%s /<texto>/<texto> substitui texto.
/<texto> busca por texto. A tecla n continua a busca.
:<num> vai para a linha <num>.
:split <arquivo> ou :sp <arquivo> abre outro arquivo no editor.
CTRL+ALT+W troca de documentos em modo 'split'.
:!<comando_do_shell> executa um comando do shell dentro do vim.
:.!<comando_do_shell> alm de executar o comando do shell dentro do vim, copia sua sada padro
para o arquivo.
:w salva arquivo.
:q sai sem salvar.
:wq ou :x sai salvando.
:w <caminho>/<nome> salva como...
:<comando>! - fora o uso do comando.
ALT+U desfaz alterao.
CTRL+R refaz alterao
.
O editor VIM , com certeza, uma tima ferramenta para um administrador de sistema e rede Linux,
uma vez que muitos servios de sistema dependem nica e exclusivamente de um arquivo de configurao,
sem contar a programao em Shell Script, que fica muito mais interessante com os recursos do VIM. O arquivo
de configurao de recursos do VIM o /etc/vim/vimrc no Debian e /etc/vimrc em Red Hat. Para alguns
recursos especiais oferecidos, como sintaxe de algumas linguagens de programao, organizao automtica do
script e a salva da ltima posio do cursor do teclado aps fechar o arquivo, preciso instalar o pacote vim-
scripts.

Exemplo de arquivo /etc/vim/vimrc

Outro recurso importantssimo do VIM a manuteno de um arquivo de backup para cada


documento que est sendo redigido, protegendo o seu contedo contra qualquer desligamento involuntrio ou
contra qualquer outro tipo de acidente que impossibilite o administrador de salvar o arquivo antes. Neste caso,
mantido um arquivo com o seguinte nome: .<nome_original>.swp, que o chamado arquivo de swap, este
contedo que est dentro dele s pode ser restaurado com o seguinte comando:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 21
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# vim -r <nome_original>

Logo aps, o documento tem que ser salvo com a opo w e caso tudo esteja correto pode-se remover
de swap, pois, se isto no for feito, toda vez que for abrir o arquivo o editor ir te avisar de que existe um
arquivo de swap e ir te perguntar o que voc deseja fazer em funo disso.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 22
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

3 - DISCOS E PARTIES

3.1 - Discos

A nomenclatura de discos no Linux bem particular. Ela consiste em, ao identificar o volume fsico,
criar um arquivo de bloco dentro de /dev correspondente a ele. Exemplo: /dev/sda (1 disco SATA).
O caso mais particular de discos o dos IDEs. Qualquer placa-me de qualquer computador pode
abrigar apenas 4 discos IDEs. Para este caso, fica assim a nomenclatura:

/dev/hda Primary Master.


/dev/hdb Primay Slave.
/dev/hdc Secondary Master.
/dev/hdd Secondary Slave.

Esta nomenclatura acima engloba tambm CDs/DVDs IDEs. Para este caso, existir um link simblico de
um desses endereos para /dev/cdrom, facilitando assim a montagem por parte do usurio.

No caso de discos SATA, SAS, SCSI e discos externos em geral, j fica diferente:

/dev/sda 1 disco.
/dev/sdb 2 disco.
/dev/sdc 3 disco.
/dev/sdd 4 disco, e assim por diante.

Para um drive de CD/DVD SATA, criado o arquivo de bloco correspondente /dev/sr(0,1,2,3..), com link
para /dev/cdrom, da mesmo forma.
Os disquetes so reconhecidos por /dev/fd0 e /dev/fd1.
Drives de fita SCSI so reconhecidos como /dev/ft0(1,2,3..).

Para fazer a consulta de quais discos esto disponveis para uso e quais os seus tipos, deve-se ler o
arquivo /proc/partitions. Este arquivo onde o Kernel vai consultar e escrever as tabelas de parties e discos
que podem ser utilizados pelo sistema. Nele surgiro algumas informaes importantes como o major number
dos discos, que o nmero de identificao do tipo dos mesmos. O exemplo abaixo mostra a interpretao de
um arquivo desse:

# cat /proc/partitions
major minor #blocks name
8 0 156290904 sda
8 1 7164958 sda1
8 16 78184008 sdb
8 17 1959898 sdb1

Pelo que o arquivo mostrou acima, temos dois discos prontos para uso (sda e sdb) e os dois so SATA.
O que indica que ele SATA o major number 8.

Os major numbers so assim classificados:

3 disco IDE (ide-0).


7 dispositivo de Loop(no ligado a disco fsico).
8 disco SATA, SAS, SCSI e discos externos.
9 RAID via software.
22 Disco IDE (ide-1).

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 23
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

3.2 - Parties

Quanto nomenclatura de parties, preciso ter muita ateno pois o Linux as trata de maneira bem
conceitual, a comear pelo limite de parties: 63 no total.

Os minor numbers definem o tipo de cada partio:

De 1 a 4: simbolizam parties primrias ou estendidas.


De 5 em diante: simbolizam parties lgicas.

Se forem ocupados todos os minor numbers de 1 a 4, o restante do espao em disco (se houver) fica
inutilizvel, por isso, importante saber que, para que se possa utilizar mais de 4 parties em um disco, uma
partio estendida deve ser criada.

A funo da partio estendida apenas abrigar as parties lgicas, ou seja: ela nunca vai ser
montada em diretrio algum do sistema.

Vamos conferir outra tabela de parties:

# cat /proc/partitions

No caso acima, vamos analisar a tabela de Particionamento de /dev/sda:

/dev/sda1 uma partio primria.


/dev/sda2 uma partio estendida, que foi criada com o nico objetivo de serem criadas parties
lgicas dentro dela.
/dev/sda5 uma partio lgica.
/dev/sda6 uma partio lgica.
/dev/sda7 uma partio lgica.

3.3 Esquemas de Particionamento

Como j havia sido comentado em FHS, muito importante que se pense bem no layout de
Particionamento antes de fazer uma nova instalao em um servidor qualquer. importante que alguns
diretrios fiquem em parties separadas do sistema raiz, so elas:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 24
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

/tmp o nico diretrio que tem permisso de escrita para qualquer usurio comum, sendo assim,
qualquer usurio pode acabar com os blocos disponveis da partio do sistema raiz, deixando muitos servios
sem funcionar mais,
/home por ser o diretrio onde, por padro, iro ficar os arquivos pessoais de cada usurio, preciso
analisar a necessidade e o tipo de tecnologia de armazenamento que vai ser usado para a partio que ser
montada neste diretrio. O recomendvel para um servidor, que possui muito volume de arquivos nesse
diretrio, que seja utilizado o sistema LVM.
/var importante deixar este diretrio em outra partio, pois nele podem estar arquivos de sites de
um servidor web, as caixas de entrada dos usurios em um servidor de e-mail, bancos de dados do MySQL-
Server, logs do sistema que tm apenas o programa logrotate para garantir sua rotatividade.
/usr/local boa parte dos programas que so aqui instalados tem suas bibliotecas e arquivos
executveis copiados para este diretrio, por isso importante isol-lo do sistema raiz.
Partio Swap para a realidade atual, criar uma partio Swap est se tornando cada vez mais
desnecessrio.
Ela funciona como memria de auxlio memria principal (RAM), mas com o crescente uso de
memrias RAM de capacidades altssimas de armazenamento temporrio ela tornou-se cada vez mais
desnecessria.
Costumava-se destinar o dobro do espao de RAM para a criao de uma partio Swap, hoje fica a
critrio de o administrador cri-la. 2 GB estaria de bom tamanho, se necessrio.

3.4 - O FHS

O Filesystem Hierarchy Standard (Padro Hierrquico de Sistema de Arquivos) mantido pela Free
Standards Group, que composta por empresas como HP, IBM e Dell.

O projeto inicial foi aproveitado, porm personalizado pela maioria das distribuies, a maioria delas
aproveita o formato original do FHS em 80%.

O FHS consiste na padronizao da estrutura de diretrios do sistema, afim de que as diferenas de


diretrios entre uns sistemas operacionais open-source e outro sejam mnimas.

A estrutura padro de diretrios para sistemas Linux :

/ - o sistemas raiz, o nvel mais alto da hierarquia de diretrios.


/bin diretrio onde so armazenados programas binrios de interesse de todos os usurios.
/boot diretrio onde esto localizados arquivos de interesse do boot do sistema, como a imagem do
kernel e os arquivos de configurao do boot loader GRUB/GRUB2.
/dev diretrio onde esto os arquivos especiais que, para o Linux, podem ser discos, parties,
memria RAM, mouse, teclado, terminais do sistema, etc.
/etc o diretrio onde so armazenados arquivos de configurao e scripts de servios em geral,
como DHCP, FTP, LDAP e Proxy, por exemplo. extremamente importante ter um backup completo deste
diretrio.
/home diretrio onde, por padro, os usurios tm seus diretrios pessoais.
/lib diretrio onde se encontram bibliotecas de sistema e mdulos j instalados do kernel.
/media diretrio onde geralmente so montadas as mdias removveis.
/media/cdrom diretrio pronto para montagem de CD/DVD.
/media/floppy - diretrio pronto para montagem de Floppy Disk.
/mnt diretrio pronto para servir como ponto de montagem para discos adicionais.
/opt alguns programas no oficiais da distribuio utilizam este diretrio para armazenar arquivos de
instalao.
/proc um sistema de arquivos virtual, do kernel Linux, que possui arquivos e diretrios de status de
recursos de sistema.
/root o diretrio pessoal do usurio root (opcional).
/sbin diretrio onde so armazenados programas de interesse apenas do superusurio (comandos
administrativos).

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 25
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

/srv diretrio de dados de servios providos pelo sistema.


/usr diretrio de hierarquia secundria.
/usr/src diretrio da localizao esperada do cdigo-fonte do kernel antes da
compilao.
/usr/local diretrio de instalao de programas que no so oficiais da distribuio.
/usr/share/man diretrio de manuais do sistema.
/usr/share/doc diretrio de documentao de sistema.
/var diretrio de dados variveis.
/var/log diretrio de logs de eventos diversos.
/var/mail diretrio padro de recebimento de e-mails de todos os usurios.
/var/cache diretrio utilizado como cache de programas como o apt, por exemplo.
/tmp diretrio de arquivos temporrios. extremamente recomendvel que este esteja em outra
partio, pois ele o nico diretrio da hierarquia padro que tem permisso de gravao para todos os
usurios do sistema.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 26
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

4 - GERENCIAMENTO DE PACOTES

Programas no Linux so instalveis atravs de pacotes, que geralmente contm os binrios, as


bibliotecas e arquivos de documentao que sero copiados para o sistema com a instalao.

4.1 Pacotes .deb (DEBIAN)

As distribuies que so baseadas em Debian e ainda o prprio Debian aceitam pacotes de extenso
.deb como arquivos de pacotes instalveis, alm de pacotes .tar.gz ou .tar.bz2.

# dpkg
Instala e manipula arquivos .deb. Ele tambm faz operaes de consultas em pacotes j instalados.

Sintaxe:
# dpkg <opes> <pacote>

Opes:
-i : instala pacote atravs de arquivo .deb.
-x : extrai contedo de um pacote.
-r : remove os arquivos binrios de um pacote instalado.
-P : purge - remove os binrios e todos os arquivos relativos ao pacote.
-l : consulta pacotes instalados.
-c : exibe o contedo de um arquivo de pacote .deb.
-L : pesquisa arquivos que pertencem a um pacote j instalado.
-S : exibe quais arquivos foram copiados para o sistema aps a instalao do pacote.
-s : exibe o status do pacote j instalado e informaes reduzidas sobre o mesmo.
-p : exibe informaes detalhadas sobre pacote j instalado.

Exemplos:

Instala o pacote 'ldap-utils' atravs de um arquivo de pacote .deb.

# dpkg -i ldap-utils_2.4.21-0ubuntu5.2_i386.deb

Expurga o pacote slapd:

# dpkg -P slapd

Remove o pacote samba sem remover seus arquivos:

# dpkg -r samba

Mostra o contedo do arquivo de pacote ldap-utils_2.4.21-0ubuntu5.2_i386.deb:

# dpkg -c ldap-utils_2.4.21-0ubuntu5.2_i386.deb

Mostra detalhes sobre o pacote samba, que j est instalado:

# dpkg -p samba

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 27
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

A instalao de um programa no Debian pode ser feita atravs de um pacote de extenso .deb ou dos
chamados repositrios, que armazenam os pacotes e suas dependncias. Um repositrio pode ser uma mdia
de CD/DVD, um servidor HTTP ou um FTP. Cada distribuio costuma ter alguns repositrios oficiais espalhados
pelo mundo, e este o caso do Debian.

Repositrios

O arquivo de configurao de repositrios para pacotes .deb /etc/apt/sources.list, contm a lista de


servidores ou mdias onde podem ser encontrados os pacotes para a distribuio. Geralmente, opta-se por
trabalhar com repositrios em rede (LAN ou WAN), pois a dinmica de atualizao dos pacotes funciona muito
mais.
O uso de repositrios poupa o administrador do trabalho de procurar arquivos .deb por sites de
download da internet ou por mdias externas.
Repositrios de internet so mais comuns de serem utilizados e o repositrio br.debian.org o
repositrio oficial do Debian no Brasil. Algumas universidades pelo Brasil (como Unicamp e PUC, por exemplo)
tambm disponibilizam seus mirrors para download de pacotes .deb.

Exemplo de arquivo de repositrio do Debian:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 28
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Cada linha dessas a configurao de apontamento para um repositrio diferente, sendo, por
exemplo, a primeira de pacotes principais da distribuio 'stable'.
Ao invs de 'stable', o tipo da distribuio poderia muito bem se chamar 'squeeze'. Isso porque
Squeeze a verso estvel do Debian.

Verses de Distribuies Debian:

oldstable : verso anterior estvel;


stable : verso atual estvel;
testing : prxima verso j em fase de testes;
unstable : os repositrios instveis no so recomendveis pois ainda esto em fase de discusso e
desenvolvimento.

Repositrios Debian:

main : pacotes open-source;


contrib : pacotes open-source que dependem da contribuio de terceiros;
non-free: pacotes no-livres;
multimedia : pacotes de aplicaes multimdia;
backports : pacotes ainda fora do repositrio estvel provavelmente por serem muito atuais.
interessante que a instalao de um programa seja feita atravs de repositrio, porque neste caso
instalado o pacote e todas as suas dependncias ao mesmo tempo.

APT (Advanced Packaging Tool)

Gerenciador de arquivos e dependncias de pacotes atravs de repositrios do Debian, este


gerenciador consulta os dados de /etc/apt/sources.list.

Comandos APT:
# apt-get update

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 29
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Atualiza a base de dados de pacotes contida no diretrio /var/lib/dpkg com os dados do repositrio.
Este comando no tem a funo de atualizar nenhum pacote j instalado.

Sintaxe:

# apt-get update

# apt-get install

Instala um pacote e suas dependncias a partir de repositrios que esto listados dentro de
/etc/apt/sources.list.

Sintaxe:

# apt-get install <opes> <pacote(s)>

Opes:
-s : simula a instalao do pacote.
-d : apenas faz o download dos pacotes dentro do diretrio /var/cache/apt/archives/.
-y : assume como Yes todas as respostas de instalao.
-f : corrige uma instalao inacabada. Utilizada com install ou remove.
--reinstall : reinstala um pacote.

# apt-get remove

Remove pacote instalado.

Sintaxe:

# apt-get remove <pacote>

Para remover um pacote e seus arquivos de configuraes:

# apt-get remove <pacote> --purge

Exemplo:

Expurgando o pacote bind9:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 30
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# apt-get remove --purge bind9 -y

# apt-get upgrade

Atualiza a verso de todos os pacotes que esto instalados.

Sintaxe:

# apt-get upgrade

# apt-get dist-upgrade

Atualiza toda a distribuio mediante mudana de verso em /etc/apt/sources.list.

Sintaxe:

# apt-get dist-upgrade

# apt-cache pkgnames

Exibe a lista de nomes de pacotes disponveis nos repositrios para instalao.

Sintaxe:

# apt-cache pkgnames

# apt-cache search

Busca descrio sobre programas disponveis no repositrio por assunto.

Sintaxe:

# apt-cache search <Nome>

Exemplo:

Procurar com algum pacote que tenha a ver com DNS no repositrio:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 31
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# apt-cache search dns

No caso acima, ele buscou na lista de repositrios do Ubuntu todos os pacotes que tenham a ver com
DNS.

# apt-cdrom add

Adiciona uma mdia de CD como um repositrio em /etc/apt/sources.list.

Sintaxe:

# apt-cdrom add

# aptitude

uma interface mais amigvel para o apt. possvel visualizar a lista de pacotes disponveis para
instalao de uma forma muito organizada.

Sintaxe:

# aptitude <opo>

As opes do aptitude so as mesmas do apt-get.

Exemplos:

Instala o pacote samba atravs de um repositrio:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 32
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# aptitude install samba

Atualiza a base de dados do apt:

# aptitude update

Remove o pacote samba:

# aptitude remove samba

4.2 Pacotes .rpm (RED HAT)

Distribuies baseadas em Red Hat e o prprio Red Hat aceitam a instalao de pacotes .rpm e .tar.gz.
A questo das dependncias a mesma: um pacote sozinho pode no ter todas as dependncias
necessrias para a sua instalao e, para resolv-las, muito importante instalar os pacotes por repositrios.

# rpm
Chamado de Red Hat Package Manager, o comando rpm instala e consulta arquivos .rpm.

Sintaxe:
# rpm <opes> <pacote>

Opes do modo de instalao:

-i : instala um pacote atravs de arquivo de pacote.


-U : faz upgrade em um programa j instalado atravs de um arquivo.
-v : modo verbose de instalao.
-vv: modo verbose com mais detalhes.
-h : modo hash. Exibe barra de rolagem ao instalar.
-e : remove um programa instalado.
--nodeps : ignora dependncias no satisfeitas do pacote na instalao. Esta opo no
recomendvel, pois h grandes chances de o programa no funcionar.

Opes do modo de consulta:

Para o modo de consulta, a opo q deve estar sempre presente antes de qualquer outra.
-qa: consulta todos os programas instalados.
-ql: consulta por arquivos pertencentes a programas instalados.
-qf : descobre a qual pacote pertence um determinado arquivo.
-qi : exibe informaes detalhadas sobre um programa instalado.
-qd ou -configfiles : mostra todos os arquivos de configurao do programa instalado.
-qd ou -docfiles : mostra todos os arquivos de documentao do programa instalado.
-qpl : exibe os arquivos e diretrios contidos em um arquivo de pacote.
-qpd: exibe os arquivos de documentao contidos dentro de um arquivo de pacote.
-qpc: exibe os arquivos de configurao de um arquivo de pacote.

Exemplos:

Remove o pacote samba.i386 instalado:

# rpm e samba.i386

Instala o pacote samba_3.0.2_i386.rpm em modo hash e verbose:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 33
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# rpm ivh samba_3.0.2_i386.rpm

Consultando detalhes sobre o pacote samba.i386 j instalado:

# rpm qi samba.i386

Consultando os arquivos de configurao do pacote samba.i386 j instalado:

# rpm qc samba.i386

Consulta arquivos de documentao do arquivo do pacote de instalao do Adobe Flash Player:

# rpm qpd samba_3.0.2_i386.rpm

YUM (Yellow dog Updater Modifier)

# yum update

Atualiza a base de dados do yum, assim como todos os pacotes instalados at o momento.

Sintaxe:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 34
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# yum update

Download das atualizaes dos pacotes pelo YUM

# yum install

Instala pacotes e suas dependncias.

Sintaxe:

# yum install <opes> <pacotes>

Opes:

-y : assume como yes todas as respostas de instalao.

# yum upgrade

Atualiza pacotes instalados para a verso mais nova existente no repositrio.

Sintaxe:

# yum upgrade <pacote1> <pacote2> ...

# yum list

Lista os nomes dos pacotes disponveis no repositrio para instalao.

Sintaxe:

# yum list

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 35
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# yum Search

Busca descrio sobre pacotes pelo assunto.

Sintaxe:

# yum search <pacote>

# yum info

Exibe detalhes sobre pacotes j instalados. Exibe a mesma sada do comando rpm qi <pacote>.

Sintaxe:

# yum info <pacote>

Exemplo:

Exibindo informaes detalhadas sobre o pacote samba.i386:

# yum info samba.i386

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 36
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

5 - INSTALAO DO SISTEMA OPERACIONAL

A instalao de um sistema operacional Linux em um servidor, principalmente, deve seguir risca os


esquemas de Particionamento citados acima. Alguns diretrios, se mantidos juntos com a partio do sistema
raiz ( / ) podem causar inconvenientes de estouro de reserva de inodes ou de blocos, parando por completo o
servidor. Imagine s se um usurio qualquer resolver criar um nmero exagerado de arquivos vazios (que
ocupam inodes) em /tmp e acabar com a reserva de inodes, no sobrando mais espao no sistema raiz para a
criao de um arquivo sequer?!?!

Seria um verdadeiro desastre criar um servidor PDC de clientes Windows se o diretrio /home, que
carrega os perfis mveis de cada usurio, estivesse na mesma partio do sistema raiz. Bastaria, neste caso, que
um usurio sem cotas configuradas fosse ocupando espao com arquivos fteis vontade para que o espao
em disco no servidor se reduzisse zero, de repente e causasse a paralisao dos servios ativos.
Outros pontos importantes a se analisar so: flexibilidade, redundncia e desempenho de discos, para
saber se utilizar arranjos LVM ou RAID em discos seria necessrio.

A escolha da verso do sistema operacional ideal para a necessidade tambm muito importante,
assim como a arquitetura do mesmo, para que ele possa tirar o mximo de proveito dos recursos de Hardware
do sistema. Faz toda a diferena de desempenho para um servidor com 2 processadores Intel Xeon operar com
o sistema operacional com arquitetura ia64 (arquitetura de processadores Intel 64-bits) ao invs de trabalhar
com um sistema operacional de arquitetura de 32 bits (i386).

Caso seja Slackware, Red Hat, Debian, Ubuntu, Suse ou CentOS vai depender da preferncia do
administrador ou da empresa.

5.1 Particionando o disco

Um bom esquema de Particionamento para um servidor de arquivos Samba de usurios em uma rede
com um HD de 500GB seria:

/ - 10 GB
/usr/local 10GB
/var 10GB
/tmp 2GB
/boot 200MB
swap 2GB (se necessrio)
/home 465,8GB (aproximadamente) Utilizar LVM

Para um servidor web com o Apache, o diretrio /var quem precisaria de mais espao em disco:

/ - 10 GB
/usr/local 10GB
/var 475,8GB(aproximadamente) Utilizar LVM
/tmp 2GB
/boot 200MB
swap 2GB (se necessrio)

Pensando que, geralmente, um servidor web tambm conta com servidor FTP e que as contas de
usurio so mapeadas para o diretrio /var/WWW (diretrio de publicao de arquivos do servidor), no seria
preciso isolar o /home.

O uso de uma partio para uso como swap, ainda mais em servidores com quantidade grande de
espao em RAM, torna-se cada vez mais dispensvel ao longo do tempo. Pode ter certeza que se o servidor

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 37
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

precisar usar swap porque algum no planejou corretamente o hardware para o tipo de servidor que iria ser
utilizado.

5.2 Configurao ps-instalao

Passado todo o processo de planejamento e instalao do servidor, o processo de configurao o


prximo passo.

hora de configurar a rede, repositrios, configurar o login de usurios, decidir se vai ou no usar
interface grfica, etc..

A primeira providncia, j que se trata de um servidor, configurar a interface de rede. Para isso,
preciso que o administrador conhea primeiro os conceitos de IPV4/6 necessrios, e isto realmente um pr-
requisito para que o administrador possa ter sucesso na administrao dos servidores.
O arquivo de configurao de rede no Debian /etc/network/interfaces. preciso edit-lo e reiniciar o
servio de rede aps isso para que as alteraes faam efeito.

Editando o arquivo:

# vim /etc/network/interfaces

A interface lo se refere interface de loopback e no deve ser desativada, pois alguns servios
dependem dela para funcionar, enquanto a interface eth0(zero) a primeira interface de rede reconhecida pelo
sistema (mais detalhes sobre configurao de redes ser dados mais frente).

Reiniciando o servio de rede:

# invoke-rc.d networking restart

Conferindo a conectividade:

# ifconfig
# ping 10.1.1.254

Conferindo rotas:

# route -n

Configurando DNS:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 38
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# vim /etc/resolv.conf

nameserver <ip do servidor>

Repositrios de pacotes:

A configurao de repositrios, como foi visto no captulo anterior, feita no arquivo


/etc/apt/sources.list.

# vim /etc/apt/sources.list

Neste caso, o sistema est fazendo uso de um repositrio da rede interna. Para os casos de novas
instalaes, so utilizados repositrios de internet e, neste caso, importante j na hora da instalao de
Debian o administrador optar por utilizar um espelho de rede (mirror) da internet que seja oficial da
distribuio, pois desta forma ele pode garantir que os pacotes que sero instalados estaro nas verses
corretas de seu sistema. Havendo a necessidade, o administrador pode configurar depois um mirror na rede
LAN. No caso das outras distribuies, em geral no vai ser preciso nenhuma escolha por espelho de rede na
hora da instalao, pois isto j vai ser automtico na instalao.

Vejamos um exemplo de configurao onde se busca repositrios na internet (Ubuntu):

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 39
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Viso do arquivo /etc/apt/sources.list

Agora importante atualizar a base de dados do APT:

# apt-get update

Pronto! Agora s escolher quais tipos de servios sero utilizados.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 40
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

6 - O SHELL

Conceitualmente, o Shell o interpretador dos comandos que sero enviados ao sistema, afim de que
sejam executadas as tarefas necessrias para o seu funcionamento. O Linux capaz de trabalhar com uma
variedade enorme de shells, estando todos os suportados em /etc/shells:

De todos os Shells disponveis para uso no Linux, os mais importantes, sem dvida, so sh e bash
(Bourne Again Shell). O sh (Bourne Shell) inclusive o shell padro do comando useradd. Ele usado por muitas
distribuies baseadas em Unix, como FreeBSD e OpenBSD, por exemplo. J o bash o shell padro do Linux
em todas as distribuies.

6.1 Scripts do Shell

Alguns scripts de bash so comumente encontrados em um S.O Linux:

/etc/rc.local

Este script executado antes do logon do usurio aps o boot do sistema pela imagem do kernel.

/etc/profile

o primeiro script a ser executado aps o logon dos usurios. Ele global, ou seja: todos os usurios
que fazem login sofrem os efeitos deste script. Geralmente nele esto duas variveis de bash importantssimas:

PATH - define em quais diretrios o bash vai procurar os comandos digitados pelos usurios.
PS1 define qual vai ser o rtulo de prompt dos usurios.

Exemplo:

PS1='\u@\h:\w\$' ficaria para o usurio user1 no host 'MCURY' e no diretrio home dele assim:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 41
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

user1@MCURY:~$

O arquivo acima explica o porqu de quando o usurio comum digita um comando exclusivo de root
retorna para ele o erro: -<comando> : command not found . Basta verificar que a varivel PATH do root (o
que tem UID=0) contm os diretrios onde esto os comandos de administrao do sistema (os ../sbin) e o
PATH do usurio comum no.

Hierarquia de scripts de usurio:

H uma ordem de execuo de scripts aps o login de cada usurio.

Na falta de algum destes scripts abaixo, o posterior executado. A ordem oficial est abaixo:

~/.bash_profile
~/.bash_login
~/.profile

No Debian, o ~/.profile o primeiro script de usurio a ser executado e aponta para outro script
chamado ~/.bashrc, que acaba sendo o ltimo script de usurio a ser executado. Em shell Bash, se
~/.bash_profile e ~/.bash_login existirem, o ~/.profile no executado.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 42
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O ~/.bashrc tem uma caracterstica muito especial em relao a outros scripts de login: ele pode ser
executado em sesses que no requerem login.

Por padro, este script vem com alguns campos comentados, mas que so de grande importncia para
ajudar a tornar o shell um ambiente de trabalho mais amistoso.

O script /etc/bash_completion facilita e muito a vida do usurio, pois completa automaticamente um


comando se for digitada parte dele seguida da tecla TAB. este script deve ser ativado em algum script de login.

Os aliases para os comandos rm, cp e mv evitam que muitos arquivos sejam sobrescritos sem que o
usurio seja avisado antes que isso acontea (cada alias recebe um comando com a opo interativa '-i'). Como
no Linux a falta de um arquivo pode significar o colapso de um sistema inteiro, dependendo de qual arquivo
seja esses aliases so providenciais.

~/.bash_logout

Script executado no logoff do usurio.

~/.bash_history

Arquivo que contm o histrico de comandos digitados pelo usurio.

# history

Exibe histrico de comandos digitados pelo usurio.

Limpando o histrico:

# history -c

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 43
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# fc

Comando que usa o editor de textos padro do sistema para manipular o arquivo de histrico.

Para que o editor padro seja modificado, basta usar a linha de comando abaixo:
# update-alternatives config editor

fc usando editor nano para editar histrico de comandos recentes

Impedindo login de usurios comuns

Por motivo de manuteno no sistema, por exemplo, necessrio que s vezes apenas o root tenha o
direito de abrir uma sesso. Para que isso seja possvel, preciso que seja criado o arquivo /etc/nologin. A
criao do arquivo, mesmo que vazio, j o suficiente para que ningum, alm do root, possa abrir uma sesso,
mas o arquivo pode conter um texto qualquer que ser exibido para o usurio, geralmente indicando o motivo
de no poder iniciar a sesso.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 44
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Os usurios comuns s vo poder abrir alguma sesso aps este arquivo ser removido.

Mensagens para o usurio:

Alguns arquivos contm mensagens para os usurios no terminal em momentos diferentes:

/etc/issue

Mensagens na tela de pr-login (local).

/etc/issue.net

Mensagens na tela de pr-login (remoto).

/etc/motd

Mensagens aps o login do usurio.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 45
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

7 - DOCUMENTAO NO LINUX

A difuso e aprendizado de sistemas operacionais open-source passa tambm pela documentao


sempre bem organizada que estes sistemas tm. Um exemplo bem prtico que um Administrador de Redes
que entende profundamente sobre protocolos, portas e servios, mas que no usurio de Linux teria uma
dificuldade muito maior em criar regras no firewall Iptables se ele no pudesse consultar uma pgina de manual
local para ajud-lo.
O responsvel por manter essa documentao toda funcionando o LDP (Linux Documentation
Project), cujo site www.tldp.org. Ele possui links para as sees abaixo:

Wiki - detalhamento de alguns assuntos pesquisados;


HOWTOs - guias passo a passo de tarefas;
FAQs - respostas para dvidas eventuais;
Manpages pginas de manuais de comandos.

Os diretrios que contm documentao local so:

/usr/share/doc diretrio de documentao local oficial do LDP, e fornece documentao adicional de


programas instalados;
/usr/share/man diretrio de pginas de manuais de comandos, arquivos e programas.

7.1 - Tipos de arquivos de documentao

Dentro dos diretrios /usr/share/doc e /usr/share/man existem arquivos de documentao de diversos


tipos:
README : instrues de uso relevantes ao usurio;
Copyright : informaes de autoria e direitos sobre programa;
Changelog : log de modificao do programa;
Manpages : manuais lidos pelo comando man;
FAQs : perguntas e respostas frequentes sobre o assunto.

7.2 Sees de manuais

Um arquivo de configurao, um programa e um comando de root podem, coincidentemente, ter o


mesmo nome. Isso seria a causa de uma confuso muito grande caso os mantenedores do projeto no tivessem
pensado em separar os manuais por sees. Elas so identificadas numericamente e possui cada uma, um
diretrio dentro de /usr/share/man, como../man8, que o diretrio de manuais de seo 8. Mas por que seo
8?!?! Basta olhar a tabela abaixo:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 46
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Seo Descrio

1 Programas de uso comum de todos os usurios do sistema

2 Chamadas de sistema

3 Chamadas de bibliotecas

4 Arquivos especiais contidos em /dev

5 Arquivos de configurao

6 Games

7 Miscelnea

8 Comandos de administrao, de interesse do administrador (root).

7.3 Comandos de documentao

# <comando> --help

Exibe informaes reduzidas sobre opes de comando, geralmente.

Exemplo:

Ajuda sobre opes do comando shutdown:

# shutdown --help

# apropos

Busca, por tpico, a descrio de cada comando ou arquivo encontrado.

# whatis

Busca, por nome exato, a descrio de cada comando ou arquivo encontrado.

# man

Exibe informaes sobre manuais contidos em /usr/share/man.

Sintaxe:

# man <opes> <assunto>

Opes:

-w : busca o caminho do arquivo de manual ao invs de exibir algum tipo de ajuda sobre o tema.
-k : busca resumo sobre um tpico especfico.
-f : busca resumo sobre um comando ou arquivo exato.
-P : modifica o programa de paginao do man.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 47
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Obs.:

# man -k corresponde a # apropos.


# man -f corresponde a # whatis.

Exemplos:

Buscar manual do comando iptables:

# man iptables

Buscar definio sobre comandos relacionados ao assunto iptables:

# man -k iptables

Ou

# apropos iptables

Buscar definio sobre comando iptables em especfico:

# man -f iptables

Ou

# whatis iptables

Buscar por manual de um comando na seo 5, para o caso de haver algum outro objeto de busca
chamado interfaces:

# man 5 interfaces

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 48
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# info

Programa de leitura de manuais preferido pelo projeto GNU. Sua exibio dos manuais mais
organizada.

# mandb

Atualiza a base de dados de manuais do sistema.

Se alguma modificao for feita em /etc/manpath.config, este comando precisa ser executado.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 49
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

8 - COMANDOS DE CONTEDO

# less

Pagina o contedo de arquivos ou sadas de texto. Ele muito verstil, pois permite o deslocamento
para cima, para baixo, para a direita e para a esquerda quando estiver paginando um documento. Existe
tambm o recurso de procurar por um texto com / no meio da paginao.

Sintaxe:

# less <arquivo>

Exemplo:

# less /etc/shadow

Paginando arquivo /etc/shadow:

# more

Tambm pagina um documento de texto ou sada em modo texto, s que de forma bsica, permitindo
apenas a paginao para baixo e pressionando a tecla ENTER.

Sintaxe:

# more <arquivo>

# zless

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 50
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Usa o less para paginao de contedo em modo texto de arquivos compactados com o agente de
compactao GZIP.

Sintaxe:

# zless <arquivo>.gz

# zmore

Usa o more para paginao de contedo em modo texto de arquivos compactados com o agente
compactador GZIP.

Sintaxe:

# zmore <arquivo>

# head

Visualiza as primeiras linhas de um arquivo. Padro: 10 primeiras linhas.

Sintaxe:

# head <opo> <arquivo>

Opes:

-c : mostra os primeiros bytes de um arquivo.

-n : especifica o nmero de linhas.

Exemplos:

Mostrar os primeiros 128 bytes do arquivo /etc/passwd:

# head -c 128 /etc/passwd

Mostrar as 5 primeiras linhas de /etc/passwd:

# head -n 5 /etc/passwd

Ou

# head -5 /etc/passwd

# tail

L as ltimas linhas de um arquivo, Padro: 10 ltimas linhas.

Sintaxe:

# tail <opes> <arquivo>

Opes:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 51
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

-n : especifica o nmero de linhas.

-f : monitora as ltimas linhas de um arquivo enquanto o mesmo escrito. Muito til para leitura de
arquivos de log.

Exemplos:

Exibir as ltimas 5 linhas do arquivo /var/log/messages.

# tail -n 5 /var/log/messages

Ou

# tail -5 /var/log/messages

Monitorar as mudanas que esto sendo feitas no arquivo /var/log/auth.log.

# tail -f /var/log/auth.log

# pr

Prepara um arquivo para ser impresso, mas no o imprime.

Sintaxe:

# pr <arquivo>

# nl

Exibe contedo de um arquivo com as linhas numeradas.

Sintaxe:

# nl <arquivo>

# wc

Conta linhas, caracteres e palavras de um arquivo.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 52
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Sintaxe:

# wc <opes> <arquivo>

Opes:

-l : nmero de linhas do arquivo.

-w : palavras contidas no arquivo.

-c : quantidade de caracteres.

Exemplo:

Contando linhas, palavras e caracteres de /etc/passwd:

# wc /etc/passwd

# od

Exibe arquivo em formatos diferentes.

Sintaxe:

# od <opes> <arquivo>

Opes:

-o : modelo octal.

-d : decimal.

-x : hexadecimal.

# grep

Busca textos dentro de documentos.

Sintaxe:

# grep <opes> <texto> <arquivos>

Opes:

-i : modo insensitivo. No diferencia maisculas de minsculas quando faz a busca.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 53
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

-v : exceo. Apenas no filtra o texto selecionado.

-w : busca por palavra especfica.

-E : habilita o comando a trabalhar com as expresses regulares avanadas (REGEXP).

-n : exibe o nmero das linhas onde estavam os registros encontrados.

-H : mostra o nome do arquivo ao lado de cada registro achado.

Exemplos:

Buscar dentro do arquivo /etc/passwd a linha contendo 0:

# grep 0 /etc/passwd

Buscar dentro do arquivo /etc/passwd linhas que contenham apenas 0 como valor absoluto:

# grep -w 0 /etc/passwd

Buscar apenas as linhas do arquivo /etc/passwd que no tenham /bin/bash e nem 0 como valor
absoluto (ou seja: usurios que no usam o Shell bash e que no sejam root):

# grep -vw /bin/bash*.0 /etc/passwd

Onde *. significam E TAMBM.

Buscar dentro dos arquivos /etc/passwd, /etc/shadow e /etc/group e /etc/gshadow registros do


usurio root mostrando o nome do arquivo no incio das linhas do resultado:

# grep -H root /etc/passwd /etc/shadow /etc/group /etc/gshadow

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 54
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# cut

Exibe apenas os campos desejados de um arquivo.

Sintaxe:

# cut <opes> <arquivo>

Opes:

-c : exibe todos os caracteres na coluna informada.

-d caractere: os campos so separados pelo delimitador informado.

-f : campos. Campos do arquivo, levando em conta o delimitador.

Exemplos:

Exibir a coluna 1 do arquivo /etc/shadow:

# cut -c 1 /etc/shadow

Exibir as colunas 1,2 e 4 do arquivo /etc/passwd:

# cut -c 1,2,4 /etc/passwd

Exibir da coluna 1 at a 5 do arquivo /etc/group:

# cut -c 1-5 /etc/group

Entendendo o : como delimitador, exibir os campos 1,3 e 6 do arquivo /etc/passwd:

# cut -d : -f 1,3,6 /etc/passwd

Com o mesmo delimitador, agora exibindo do campo 1 at o 5 do arquivo /etc/shadow:

# cut -d : -f 1-5 /etc/shadow

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 55
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# shred

Destri o contedo de um arquivo.

#Sintaxe:

# shred <arquivo>

# split

Comando utilizado dividir um arquivo em pedaos.

Opes:

-b : quebra por quantidade de bytes.

-l : quebra por quantidade de linhas.

Sintaxe:

# split <opo> <arquivo> <primeiro nome do arquivo de destino>

Exemplos:

Criando arquivos com 128 bytes de /etc/passwd cada um. Neste caso, sero criados os arquivos arqaa,
arqab, arqac, etc:

# split -b 128 /etc/passwd arq

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 56
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Criando arquivos com 4 linhas do arquivo /etc/profile cada um, esclarecendo que o ltimo arquivo
pode ficar com menos linhas se for o caso de a quantidade de linhas do arquivo no for mltipla de 4, neste
caso:
# split -l 4 /etc/passwd arq

# uniq

Exibe as linhas nicas de um arquivo.

Sintaxe:

# uniq <arquivo>

# cat

L o contedo de um arquivo ou reconstri o mesmo, se for o caso de ele estar em pedaos criados
pelo comando split.

Sintaxe:

# cat <opo> <arquivo>

Opes:

-A : Exibe todos os caracteres no imprimveis.

-b : l o arquivo com as linhas no vazias numeradas.

-n : l o arquivo com todas as linhas numeradas.

Exemplos:

Ler o contedo do arquivo /etc/motd:

# cat /etc/motd

Ler o contedo do arquivo /etc/profile com as linhas no-vazias numeradas:

# cat -b /etc/profile

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 57
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Ler o contedo do arquivo /etc/profile com todas as linhas numeradas:

# cat -n /etc/profile

Reconstruir as cpias fragmentadas do arquivo /etc/passwd com nomes de arqaa, arqab e arqac:

# cat arqaa arqab arqac > passwd

# tac

Tem a mesma sintaxe do cat mas l o arquivo da ltima linha para a primeira.

# sort

Ordena o contedo do arquivo.

Sintaxe:

# sort <opes> <arquivo>

Opes:

-d : ordem alfanumrica.

-n : ordem numrica.

-t : usa um delimitador.

-k : usa um campo como referncia.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 58
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

-r : ordem reversa.

-R : ordem randmica (aleatria).

Exemplos:

Classificar o contedo do arquivo /etc/passwd em ordem alfabtica:

# sort -d /etc/passwd

Classificar o contedo do arquivo /etc/shadow em ordem alfabtica inversa:

# sort -dr /etc/passwd

Usando : como separador, classificar o arquivo /etc/passwd em ordem numrica, tendo como
referncia o campo 3 do arquivo:

# sort -n -t : -k 3 /etc/passwd

# sed

Substitui texto e nmeros de um arquivo.

Sintaxe:

# sed s/<texto_original>/<texto_substituto>/g <arquivo>

Exemplo:

Substituindo o termo root do arquivo /etc/passwd pelo termo administrador:

# sed s/root/administrador/g /etc/passwd

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 59
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# <comando> | tr

Comando que s pode ser utilizado em combinao com outro de leitura de arquivo atravs do pipe,
o tr substitui caracteres em sequncia.

Sintaxe:

# <comando> | tr <opo> <caracteres>

Algumas variveis so utilizadas pelo comando:

\\ - backslash.

\b - backspace.

\\t - tabulao horizontal.

\n - nova linha (pula uma linha).

\v - tabulao vertical.

Exemplos:

Remover : do arquivo /etc/passwd:

# cat /etc/passwd | tr -d :

Trocar : e , por tabulao no arquivo /etc/passwd:

# cat /etc/passwd | tr : \\t

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 60
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Trocar letras maisculas do arquivo /etc/shadow por minsculas e depois trocando : por tabulao :

# cat /etc/shadow | tr [a-z] [A-Z] | tr : \\t

# fmt

Formata um texto.

Sintaxe:

# fmt <opo> <arquivo>

Opes:

-w : limita a largura de cada linha.

-u : uniformiza os espaos dentro do arquivo.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 61
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# join

Une linhas de 2 arquivos utilizando colunas em comum.

Sintaxe:

# join <arquivo1> <arquivo2>

# expand

Troca tabulao por espao simples

Sintaxe:

# expand <opo> <arquivo>

Exemplo:

Convertendo linhas que tenham 2 tabulaes para espao simples do arquivo /etc/syslog.conf:

# expand -t 2 /etc/syslog.conf

# diff

Mostra as linhas diferentes de dois arquivos.

Sintaxe:

# diff <arquivo1> <arquivo2>

Exemplo:

Exibindo as linhas diferentes do arquivo arq1.txt e arq2.txt:

# diff arq1.txt arq2.txt

Os arquivos originais so:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 62
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 63
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

9 - EXPRESSES REGULARES

Sempre que houver a necessidade de procurar padres de textos em documentos utilizaremos as


expresses regulares, ou regex, portanto regex nada mais do que um mtodo formal para buscar padres de
textos.

9.1 Metacaracteres

Composio de smbolos, caracteres com funes especiais que, agrupados entre si e com caracteres
literais, formam uma sequncia, uma expresso.

Meta Significado
* Zero, um ou mais
? Zero ou um
^ Incio da linha
$ Fim da linha
[ ... ] [^... ] Lista de caracteres permitidos, e lista de caracteres proibidos.
{n ,m } Vai de n at m
\ Escapamento de caracteres especiais (espao, parnteses, chaves, etc..)
| Ou
( ... ) Delimita um grupo
. Qualquer caracter na posio

Exemplos:

Exibindo de /etc/passwd apenas os usurios que usem Shells BASH ou que tenham login negado:

# grep -E (bash|false) /etc/passwd

Exibindo de /etc/shadow apenas os usurio que comecem com a,d,r,s :

# grep -E ^[adrs] /etc/shadow

Exibindo de /etc/passwd apenas os usurios que usem BASH ou SH e comecem com letras que no
sejam b a f e tambm os que no comecem com h:

# grep -E (bash|sh).*^[^b-fh] /etc/passwd

Detalhe: ^ utilizado dentro de [ ] significa exceo!

Exibindo do /etc/passwd apenas os usurio que usem Shells BASH ou SH e tambm comecem com
letras no intervalo de f a l :

# grep -E ^[f-l].*(bash|sh) /etc/passwd

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 64
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O grep utilizado com E por que algumas expresses regulares fazem parte do grupo de REGEXP
(expresses regulares avanadas), como o caso do { }.
O comando grep -E o mesmo que egrep.
Para exibir as linhas que tenham exatamente 5 caracteres de um arquivo chamado Linux.txt, as
seguintes expresses poderiam ser utilizadas:

# grep ^....$ Linux.txt

Ou
# egrep ^.{5}$ Linux.txt

Onde o {5} iria ser o responsvel por dizer que . repete 5 vezes e o motivo de o ponto estar entre ^e
$ dizer para a expresso regular que entre incio e fim existem 5 posies.

Exibindo as linhas que tenham pelo menos 70 caracteres:

# egrep ^.{70,}$ /etc/passwd

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 65
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

9.2 - Pipes, redirecionamentos e execuo de comandos em sequncia

Como j se pode notar pelos captulos anteriores, o | tem uma funo importantssima dentro de uma
expresso regular, pois ele concatena a sada de um comando com a de outro posterior, como a seguir:

O comando cut -d : -f 1-5 /etc/passwd envia a sua sada para o comando tail -5, possibilitando assim a
paginao do contedo do arquivo apenas com os campos 1,2,3,4 e 5 :

# cut -d : -f 1-5 /etc/passwd | tail -5

Antes de redirecionar sadas ou entradas de comandos, vamos entender quais tipos de entrada/sada
podem existir:

STDOUT - sada padro. Quando o comando executado com sucesso, ele produz esta sada, exceto
para comandos que no possuem verbose em suas sadas.

STDERR - Sada de erros. Quando o resultado da execuo um erro, esta sada mostrada, exceto em
comandos que no produzem verbose.

STDIN - Entrada padro. Entrada de dados em um comando.

Tipos de redirecionamento:

> - redireciona sada padro de um comando para um arquivo novo.

>> - redireciona sada padro de um comando para a ltima linha de um arquivo (append), mas se
este no existir ele o cria.

< - redireciona entrada padro para um comando.

<< - append de entrada padro.

2> - redireciona apenas sada de erros para um arquivo novo.

2>> - append de sada de erros.

&> - envia sada padro e de erros para um arquivo novo.

Exemplos:

Enviando o resultado do comando de verificao de uso de discos montados para o arquivo


/root/discos.txt :

# df -h > /root/discos.txt

Enviando mais um relatrio de uso de discos para o mesmo arquivo sem sobrescrev-lo:

# df -h >> /root/discos.txt

Enviando um e-mail com o contedo do arquivo de log /var/log/syslog:

# mail -s LOG administrator@mcury.com.br < /var/log/syslog

Enviando o erro ao se executar o comando LS -L para o arquivo erro_ls.txt:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 66
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# LS -L 2> erro_ls.txt

# <comando> | tee <opo> <arquivo>

Alm de enviar sada do comando para um arquivo, exibe a sada no terminal.

Exemplos:

Enviar ltimas 15 linhas do log /var/log/auth.log para o arquivo log_auth.txt exibindo a sada dele no
display:

# tail -n 15 /var/log/auth.log | tee log_auth.txt

Enviar linhas numeradas do arquivo /etc/passwd para o mesmo arquivo sem sobrescrev-lo:

# nl /etc/passwd | tee -a log_auth.txt

Nem sempre interessa esperar a execuo de um comando para poder executar outro e por isso que
existem os caracteres ;, && e || . Eles permitem que isso acontea da seguinte forma:

; - permite que um comando posterior seja executado independentemente do resultado do


anterior.

&& - apenas permite a execuo do prximo comando se o anterior foi executado com sucesso
(cdigo de retorno igual a zero).

|| - O prximo comando s ser executado se o anterior falhar (cdigo de retorno diferente de


zero).

Exemplos:

Esta combinao de comandos abaixo funcionaria, pois a pesar do primeiro estar com sintaxe errada, o
segundo vlido e o ; no leva isso em considerao:

# LS -L; df hi

Far toda a diferena se a mesma combinao for tentada com o &&:

# LS -L && df h

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 67
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Vamos analisar ento a expresso abaixo:

# mail -s TESTE DE EXPRESSO administrator@mcury.com.br < log_auth && rm log_auth; apt-get update

O resultado ser: rm log_auth s ser executado se o primeiro comando de envio de e-mails der certo,
mas independente dos dois, a base de dados do APT ser atualizada.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 68
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

9.3 - Codificao de caracteres

Os caracteres que so escritos e lidos precisam de codificao, pois o sistema s consegue mesmo
interpretar bits, que por sua vez so representados por nmeros binrios. A primeira tabela de codificao
criada foi uma tabela chamada ASCII, que contava com 7 bits para representao de caracteres, que davam
exatos 128 caracteres, esta codificao foi criada baseada na linguagem de povos de origem anglo-saxnica,
pois os mesmos no fazem uso de acentos. Como no mundo existem muitos povos que utilizam caracteres
diferentes dos utilizados na lngua inglesa, por exemplo, foi preciso criar uma tabela de caracteres capaz de
representar estes caracteres a mais que os povos de origem latina, por exemplo, usam, desta forma, foi
implementado mais 1 bit na tabela ASCII, ficando assim esta tabela com a possibilidade de representar 256
caracteres (8 bits).

Mesmo com todo o esforo descrito acima, ainda faltavam caracteres para representar alfabetos de
pases do Leste Europeu e sia, foi desta necessidade que surgiram tabelas de 8 bits, normatizadas pelo ISO,
onde a compatibilidade com ASCII nos primeiros 128 bits nativo e os outros 128 bits so destinados a
caracteres especiais da tabela especfica. As distribuies Linux podem utilizar dois tipos de tabelas para
codificao: a UTF-8 e a ISO8859-1, sendo o primeiro mais flexvel, pois d suporte tanto a idiomas
provenientes do Latim quanto a idiomas asiticos e europeus. O que acontece com o UTF-8 que, em caso de
representao de dialetos asiticos, por exemplo, ele assume 16 bits e no 8 (UTF-16), sendo assim compatvel
com qualquer tipo de dialeto possvel.

Para configurar a codificao e a linguagem do sistema, assim como o idioma do teclado, preciso
atribuir esta configurao s variveis LANG e LANGUAGE, sendo a primeira a varivel que define o idioma
padro do sistema e a codificao de caracteres e a segunda a que define o idioma do teclado.

O arquivo onde estas configuraes podem ser realizadas de forma permanente o


/etc/default/locale.

O conjunto inteiro de variveis exibido pelo comando locale, como no exemplo abaixo:

# locale

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 69
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Onde cada varivel dessa recebe a linguagem e codificao atribuda varivel LANG.

Para fazer qualquer tipo de converso de caracteres, o administrador pode utilizar o comando iconv,
como no exemplo abaixo:

# iconv -f UTF-8 -t ISO-8859-1 ~/arquivo_original.txt > ~/arquivo_convertido.txt

Onde -f para o comando significa from e -t significa to, ou seja: converter de UTF-8 para ISO-8859-1
o arquivo ~/arquivo_original.txt e enviar esta sada convertida para o arquivo ~/arquivo_convertido.txt.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 70
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

10 - USURIOS E GRUPOS

Uma das tarefas mais importantes para um administrador saber gerenciar de forma segura os
usurios e grupos do sistema.

O usurio root o primeiro usurio criado no sistema aps a instalao. Ele o administrador do
sistema e pode tudo, desde deixar o servidor com um nvel de segurana altssimo com servios configurados
por ele at destruir o sistema de arquivos por completo. importante para a segurana do sistema que a senha
do usurio root no deve ser distribuda para pessoas que no sejam habilitadas a desempenhar tarefas
administrativas.

Os usurios comuns utilizam o rtulo de prompt $ enquanto o root utiliza o # em seu login.

Qualquer outro usurio criado no tem qualquer privilgio administrativo, portanto o usurio comum
vai continuar sendo um usurio com tarefas limitadas at que o root decida dar permisso para que ele possa
desempenhar algumas ou at todas as tarefas do usurio root.

10.1 Arquivos importantes

O banco de dados em modo texto que contm os dados dos usurios do sistema o /etc/passwd. Sua
estrutura s deve ser alterada manualmente em ltimo caso, pois uma sujeirinha dentro desse arquivo pode
custar impossibilidade de se fazer login com o usurio root, por exemplo, ou paralisar um servio de HTTP do
apache, que utiliza a conta do usurio www-data para tal.

Abrindo o arquivo:

# vim /etc/passwd

Onde seus campos so:

<login>:<senha>:<UID>:<GID>:<descrio>:<homedir>:<shell utilizado pelo usurio>

Repare que o campo root:x:0:0:root:/root:/bin/bash da senha do usurio root est como x. Isto
significa que o sistema est fazendo uso de senhas shadow, que o sombreamento de senhas do arquivo
/etc/passwd para o arquivo /etc/shadow. Isto acontece por um simples motivo: o arquivo /etc/passwd tem
permisso de leitura para qualquer usurio, pois eles precisam ler suas informaes de contas aps logon (sua
permisso padro 644 ou rw_r__r__), sendo assim, qualquer usurio poderia copiar a senha criptografada
para outro lugar.

UID

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 71
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O UID o nmero de identificao dado a cada usurio no ato de sua criao. O UID 0 dado para o
usurio root e no deve ser dado a qualquer outro usurio alm dele, pois se isto for feito, o usurio que
receber o UID 0 vai assumir a identidade de root e ter os mesmos poderes que ele.

Por definio padro no arquivo /etc/login.defs, qualquer usurio novo criado em sistemas baseados
em Debian ter um UID de 1000 para cima, comeando por este. Em ambiente Red Hat, este nmero j de
500 em diante. lgico que isso um padro que pode ser modificado facilmente no arquivo ou atravs da
criao de um usurio com o UID especificado pelo comando useradd.

GID
a identidade dada a cada grupo criado no sistema. A presena dele dentro desse arquivo representa
que ele o grupo primrio do usurio. Cada arquivo ou diretrio que criado por um usurio (salvo em caso
especfico de existncia de permisso especial de herana de grupo) tem o mesmo como dono e o grupo
primrio dele como grupo do arquivo ou diretrio.

O GID 0 tambm reservado para o grupo root e, pelos mesmos motivos citados anteriormente, no
deve ser atribudo a mais nenhum usurio.

Homedir
O diretrio pessoal do usurio, ou homedir, deve ser o nico diretrio do sistema (alm do /tmp) onde
ele ir ter permisso de leitura, execuo (se for o caso) e escrita.

O diretrio pessoal do usurio no precisa necessariamente ser em /home. O exemplo mais prtico
disto que em um servidor Web Apache, que tem diretrio de publicao de contedo /var/www por padro,
geralmente tambm instalado um servidor FTP, como Proftpd ou Vsftpd, e a conta do web developer feita
com homedir /var/www/[nome_do_usurio], para que o mesmo, quando faa logon, j entre direto no
diretrio onde est publicado o contedo de se site hospedado pelo servidor.

Shell do usurio
O BASH o Shell padro para sistemas Linux mas no quer dizer que todo usurio tenha que us-lo
como interpretador de comandos. Alguns podem usar o SH por algum motivo especfico, como por exemplo,
um usurio que era de BSD acostumado com scripts de SH e que est ainda migrando para Linux.

Quando o usurio no pode ou no precisar fazer logon em um terminal, determinado para ele o
SHELL /bin/false. Este recurso utilizado com muita freqncia em usurios de e-mail e de um servidor PDC ou
BDC Samba pelo motivo de que em nenhum destes casos o usurio vai precisar usar nenhum terminal do Linux.

O arquivo /etc/shadow, como j foi dito, o arquivo onde por padro so armazenadas as senhas dos
usurios.

altamente recomendvel trabalhar com senhas shadow por 2 motivos:

O controle de parmetros de login de usurios (expirao de senha e conta, por exemplo) s existe
quando este arquivo existe;
O usurio comum no pode nem ler este arquivo, no tendo assim acesso senha criptografada de
todos os usurios.
Os grupos existentes do sistema esto em /etc/group. Dentro deste, esto:

<nome_do_grupo>:<senha>:<GID>:<usurios relacionados ao grupo>

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 72
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

A senha de grupo est em /etc/gshadow.

Como foi falado anteriormente, e existncia do arquivo /etc/shadow imprescindvel para que a
segurana de informaes se autenticao possa ser garantida. Vamos agora entender o que cada campo deste
arquivo significa:

Login: o login do usurio cadastrado em /etc/passwd.

Senha: a senha do usurio criptografada. Caso este campo esteja vazio, o usurio estar utilizando
senha em branco (nada recomendvel!). Caso haja neste campo o sinal !, o usurio estar com a sua conta
travada, de forma a no conseguir nem efetuar o prximo logon.

Dias entre 1 de Janeiro de 1970 e a data da ltima mudana de senha.

Mnimo de dias entre mudanas de senhas: a quantidade de dias que o usurio tem que esperar at
que ele possa novamente alterar a sua prpria senha.

Mximo da durao da senha do usurio: a prpria informao dos dias de validade da senha do
usurio aps ele ter modificado sua senha pela ltima vez. Aps este dia, ele ser obrigado a mudar sua prpria
senha no logon.

Dias anteriores expirao da senha onde o usurio ser avisado para trocar se senha: o padro
sempre que 7 dias antes de a senha expirar, o usurio seja avisado a troc-la.

Nmero de dias aps a expirao da senha onde a conta ser inativada.

Nmero de dias entre 1 de Janeiro de 1970 e a data exata de expirao da conta do usurio.

Vejamos o exemplo das configuraes da conta do usurio user1 dentro de /etc/shadow:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 73
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Repare, neste caso, que a senha do usurio user1 est em branco e sua conta tem data para expirar,
assim como a sua senha, que expirar 25 dias aps ser modificada.

importante lembrar que, como todas as informaes relativas aos controles de contas de usurio
estaro dentro deste arquivo, no caso de o administrador escolher por no utilizar senhas shadow este controle
no ser possvel.

10.2 Comandos de usurio e grupos

# whoami

Exibe qual o usurio em sesso.

# id

Sintaxe:

#Id <usurio>

Exibe UID, GID e grupos do usurio.

# useradd

Cria usurios.

Sintaxe:

# useradd <opes> <login_do_usurio>

Opes:

-d :homedir do usurio.

-s : shell que o usurio vai usar.

-c : descrio(comentrios). Conhecido tambm como campo GECOS.

-m :cria o homedir.

-u : especifica um UID.

-g : especifica um grupo primrio.

-G : relaciona o usurio a grupos.

-k : escolhe um diretrio de skel alternativo.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 74
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

-e : cria o usurio com data para sua conta expirar.

*Obs1

O Shell padro do comando useradd o SH, ou seja: se no for especificado outro shell, o usurio vai
utilizar o SH como interpretador de comandos.

*Obs2:

O diretrio de skel de onde so tirados os arquivos e diretrios que vo para o homedir do usurio na
hora que ele criado.

O diretrio de skel padro o /etc/skel e por padro ele contm os scripts de logon do usurio.

Exemplos:

Criando um usurio com login user1, homedir /home/user1, shell /bin/bash e nome Operador 1:

# useradd m d /home/user1 s /bin/bash c Operador 1 user1

Criando usurio webmaster com UID 1400, grupo primrio cdrom, grupos relacionados audio e backup,
shell /bin/bash e homedir /var/www/webmaster:

# useradd m d /var/www/webmaster u 1400 g cdrom G audio,backup s /bin/bash


webmaster

Criando usurio user2 com data de expirao da conta para 10/12/2010, sem uso de shell e com
diretrio de skel alternativo /dados:

# useradd m s /bin/false e 2010-12-10 k /dados user2

# adduser

Cria usurios conforme as configuraes do arquivo /etc/adduser.conf.

A grande vantagem que em um simples comando, sem argumentos, pode-se criar um usurio de
forma pr-configurada no arquivo do comando adduser.

Exemplo:

Adicionando o usurio bsd:

# adduser bsd

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 75
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# addgroup

Tambm consulta /etc/adduser.conf, mas s que para criar grupos.

Exemplo:

Criando o grupo mcury:

# addgroup mcury

# usermod

Modifica parmetros de contas de usurios. As opes so bem parecidas com as opes do comando
anterior.

Sintaxe:

# usermod <opes> <login>

Opes:

-d : modifica o diretrio pessoal (homedir).

-s : modifica o shell utilizado.

-c : modifica a descrio.

-g : modifica o grupo primrio.

-G : relaciona o usurio com outros grupos.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 76
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

-a : se for utilizado junto com o G, adiciona usurio nos grupos sem desfazer as relaes que ele tem
com outros grupos.

-l : modifica o login do usurio.

-u : modifica o UID do usurio.

-L : trava a conta do usurio.

-U : destrava o usurio.

-e : especifica uma data para a expirao da conta do usurio.

Exemplos:

Modificando o homedir do usurio user1 para /var/www:

# usermod d /var/www user1

Modificando o shell do usurio user1 para /bin/sh:

# usermod s /bin/sh

Travando a conta do usurio user1:

# usermod L user1

Destravando a conta do usurio user1:

# usermod U user1

Modificando o login de user1 para usuario1:

# usermod l usuario1 user1

Mudando o grupo primrio de user1 para unix:

# usermod -g unix user1

Adicionando o usurio user1 ao grupo cpd:

# usermod -G cpd -a user1

# chfn

Modifica o campo de descrio do usurio.

Sintaxe:

# chfn <usurio>

Exemplo:

Modificando a descrio do usurio user1:

# chfn user1
MANUAL DE TREINAMENTO M.CURY
LINUX SYSTEM ADMINISTRATOR PGINA 77
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# passwd

Cria, consulta e modifica parmetros de autenticao de usurio.

Sintaxe:

# passwd <opes> <usurio>

Opes:

-S : consulta parmetros de logon fornecidos por /etc/shadow.

-d : cria senha e branco para o usurio.

-l : trava usurio.

-u : destrava usurio.

Exemplos:

Criando senha em branco para o usurio operador:

# passwd d operador

Travando a conta do usurio operador:

# passwd l operador

Destravando a conta do usurio operador:

# passwd -u operador

Conferindo o status da conta:

# passwd S operador

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 78
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# chage

Modifica parmetros de logon de usurios.

Sintaxe:

# chage <opes> <usurio>

Opes:

-l : lista parmetros de logon.

-M : modifica o tempo (em dias) da validade da senha do usurio aps a ltima modificao
(MAX_DAYS)

-m : modifica o tempo mnimo (em dias) entre mudanas de senha (MIN_DAYS).

-W : modifica a quantidade de dias anteriores expirao as senha do usurio onde ele ser avisado a
trocar a senha (WARN_DAYS).

-e : informa uma data especfica para a expirao da conta do usurio.

-I : informa em quantos dias aps a expirao da senha do usurio a conta do mesmo ser inativada.

Exemplos:

Informando que a conta do usurio user1 ir expirar exatamente dia 31/12/2010:

# chage -e 2010-12-31 user1

Mudando para 5 dias o tempo anterior expirao da senha onde o usurio user1 ser avisado a troc-
la:
# chage -W 5 user1

Modificando a validade da senha do usurio user1 para 60 dias (2 meses) aps ser modificada:

# chage M 60 user1

Listando parmetros de login de user1:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 79
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# chage l user1

A interpretao do comando acima a seguinte: a senha do usurio user1 ir expirar dia 11/10/2010,
pois o 20 dia depois da ltima alterao da mesma, que foi definido pelo PASS_MAX_DAYS. Sua conta expira
dia 12/12/2010.

Informando que aps, a mudana de senha, o usurio user1 ter que esperar 20 dias para mud-la de
novo:
# chage m 20 user1

# pwunconv

Desabilita o uso de senhas shadow, enviando a senha para /etc/passwd e excluindo o arquivo
/etc/shadow.

# pwconv

Habilita novamente o uso de senhas shadow, criando o arquivo /etc/shadow com as senhas que
estavam em /etc/passwd sendo copiadas para este arquivo.

# who

Exibe a lista de usurio em sesso por terminal.

#w

Exibe a lista de usurios em sesso por terminal e os programas que eles esto utilizando.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 80
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# last

Exibe todas as conexes feitas pelos usurios no sistema.

Resultado dos 2 comandos (diferenas)

# lastlog

Exibe o ltimo login de todos os usurios cadastrados no sistema.

# groupadd

Cria um grupo no arquivo /etc/group.

Sintaxe:

# groupadd <opes> <grupo>

Opes:

-g : especifica um GID para o novo grupo.

-o : cria o grupo com o GID no-nico.

# users

Exibe os logins de usurios em sesso.

# userdel

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 81
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Exclui uma conta de usurio.

Exemplos:

Excluindo a conta do usurio user1 sem excluir o seu homedir:

# userdel user1

Excluindo a conta do usurio user1, seu diretrio home e todos os arquivos contidos dentro dele.

# userdel r user1

# groupdel

Exclui um grupo do sistema.

Sintaxe:

# groupdel <grupo>

# su

Faz logon com outro usurio sem fazer logoff da sesso atual

Sintaxe:

# su <login>

10.3 - SUDO

# sudo

Permite que o usurio comum execute comandos de root caso os comandos que ele queira executar
estejam permitidos a ele dentro de /etc/sudoers. Esta uma tima prtica para casos em que necessrio ter
um ou outro usurio usando alguns comandos de root. Exemplo: se em uma empresa existe um usurio que
deve administrar o Firewall Iptables e outro que deve monitorar e fazer modificaes nos discos do servidor
apenas, no teria nenhum motivo para nenhum dos dois ter a senha do usurio root, bastaria que seus nomes
fossem includos em /etc/sudoers e, neste arquivo, fossem habilitados a executar apenas comandos relativos s
tarefas descritas acima, em algumas distribuies, inclusive, o usurio root travado por medida de segurana,
neste caso, o /etc/sudoers foi configurado previamente para dar acesso de root ao usurio em qualquer
comando que ele digitar (isso no o mesmo que ser root, pois o sudo no d permisso nenhuma ao usurio
comum de ter as mesmas permisses de acesso a arquivos e diretrios que o root).

Sintaxe do comando sudo:

# sudo <comandos>

O arquivo de configurao dos usurios do sudo tem permisso R--R-- ---, o que quer dizer que nem o
usurio root teria permisso de edit-lo, s que o diretrio /etc de propriedade do root e ele tem permisso
de escrita sobre ele, o que tambm garante permisso de escrita sobre todos os arquivos do diretrio. Basta
forar a gravao para escrever nesse arquivo, isto pode ser feito no editor vim (com ! aps a opo) ou no
editor visudo, que j fora a gravao por padro. bom lembrar que o editor padro do sistema o nano, mas
por causa de suas funcionalidades, vamos usar o vim, mudando o editor padro:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 82
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# update-alternatives --config editor

Editando o arquivo:

# visudo

No caso acima, temos a representao do seguinte cenrio:

O usurio user1 pode executar comandos como qualquer usurio, sem precisar lanar a sua prpria
senha para isso, e ele apenas pode executar como root os comandos fdisk e mkfs. J o grupo adm, pode
executar comando como qualquer usurio, menos o usurio dba, tambm sem senha, e pode tambm executar
todos os comandos de root.

Feitas todas as configuraes, vamos prtica:

Se o comando administrativo for executado em o sudo, a operao no ter sucesso:

user1$ mkfs -t ext4 -L ISO /root/disco.iso

Com o sudo:

user1$ sudo mkfs -t ext4 -L ISO /root/disco.iso

# chown

Modifica dono e grupo de arquivos ou diretrios.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 83
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Sintaxes:

# chown <opes> <dono> <diretrio/arquivo>

# chown <opes> <dono>.<grupo> <diretrio/arquivo>

# chown <opes> <dono>:<grupo> <diretrio/arquivo>

Exemplos:

Modificando o dono do arquivo ~/arquivo1.txt para o usurio operador:

# chown operador ~/arquivo1.txt

Modificando o dono do arquivo ~/arquivo1.txt para o usurio operador e o grupo para cpd:

# chown operador.cpd ~/arquivo1.txt

Modificando o dono do diretrio /backups, todos os seus subdiretrios e arquivos para o usurio
operador e o grupo para cpd:

# chown R operador:cpd /backups

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 84
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

11 - PERMISSES

Entender e saber aplicar as permisses necessrias essencial para um administrador de qualquer


distribuio Linux. Uma poltica permissiva demais em arquivos ou diretrios pode levar todo um projeto de TI
por gua abaixo em questo de segundos. Basta imaginar um servidor de arquivos com permisses de leitura,
gravao e escrita para todos os usurios em todos os compartilhamentos, quando na verdade existem
diretrios que no devem ser nem lidos por mais de um grupo de usurios.

11.1 Tipos e aplicaes

Leitura

Representada em modo literal por R, a permisso de leitura concede ao usurio ao usurio copiar e ler
o contedo de arquivos ou diretrios.
Gravao

Representada em modo literal por W, est permisso concede ao usurio mover, renomear e modificar
o contedo de um arquivo ou diretrio.

Execuo

Esta com certeza merece uma ateno muito especial, pois sua aplicao em arquivos e diretrios
totalmente diferente.

Ela s aplicada a um arquivo quando o mesmo for um programa executvel (exemplo: programa de
Shell Script). J em diretrios ela essencial se o objetivo for permitir o acesso a um usurio qualquer. Sem tal
permisso, no haver como o usurio executar o comando cd no diretrio.

A permisso de execuo representada em modo literal por X.

11.2 - Permisses especiais

SUID

Permite que qualquer usurio tenha a mesma permisso de execuo que o dono sobre o arquivo.
Em modo literal, representada no campo de dono por s.

SGID

Faz com que cada arquivo ou subdiretrio criado em um diretrio seja do grupo do diretrio pai
(herana de grupo).
Em modo literal, representada no campo de grupo por s.

Sticky Bit

Probe que qualquer usurio que no seja o dono do objeto ou o prprio root exclua o mesmo, mesmo
que tenha permisso para isso.

Em modo literal, representada no campo de outros por t.

11.3 Campos de permisses

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 85
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Dono (USER)

So permisses relativas ao dono do arquivo ou diretrio.

Grupo (GROUP)

Toda vez que um arquivo ou diretrio criado, o dono do mesmo fica sendo o usurio que cria e o
grupo proprietrio acaba ficando aquele que o grupo primrio do usurio que criou.
Este campo se refere s permisses aplicadas quele que fazem parte do grupo do objeto.

Outros (OTHERS)

o nvel de permisso para usurio que no so o dono do objeto e tambm no fazem parte do grupo
do mesmo.

11.4 Modo octal de permisses

Alm de poderem ser representadas por letras (R,W e X), as permisses tambm podem ser
representadas por nmeros no modelo octal:

Nmero Tipos de permisso


4 Leitura ou SUID.
2 Gravao ou SGID.
1 Execuo ou Sticky bit
0 Sem permisso alguma.

Para agregar mais de uma permisso, pode-se somar os nmeros, como no exemplo:

Leitura, gravao e execuo para dono e leitura e execuo para grupo e outros:

RWXR-XR-X = 755

Leitura e gravao para o dono e apenas leitura para grupo e outros:

RW-R--R-- = 644

Leitura, gravao e execuo para dono e leitura e execuo para grupo e outros mais SGID e Sticky bit:

RWXR-sR-t = 3755

Como se pode perceber, no modo octal de permisses especiais, o nmero referente a elas vem antes
das outras permisses.

Outro detalhe: quando o campo de execuo do nvel onde se aplica as permisses especiais estiver
sem permisso de execuo, estas letras referentes a essas permisses ficaram em caixa alta.

11.4 Aplicao

# chmod

Modifica permisses de arquivos e diretrios.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 86
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Sintaxe:

# chmod <opes> <permisses> <arquivo/diretrio>

Opes:

-R : modo recursivo.

-v : modo verbose.

Exemplos:

Aplicando permisso para dono de RWX, adicionando permisso de gravao para o grupo e
especificando permisso de apenas leitura para outros no arquivo ~/arq1.txt (tudo em modo literal):

# chmod v u=rwx,g+w,o=r ~arq1.txt

Retirando a permisso de execuo de todos os nveis no arquivo do exemplo acima:

# chmod x ~/arq1.txt

Adicionando permisso de gravao para grupo e outros no mesmo arquivo:

# chmod g+w,o+w ~/arq1.txt

Aplicando SUID e Sticky bit em modo literal ao mesmo arquivo:

# chmod u+s,g+s ~/arq1.txt

Aplicando as permisses RWXRWXR__ ao diretrio /backups e a todo o seu contedo em modo octal:

# chmod -R 774 /backups

Aplicando SGID e Sticky bit, e permisso RWX para todos os nveis no diretrio /backups em modo
octal:
# chmod 3777 /backups

11.5 Umask

Ao serem criados, por padro, arquivos e diretrios ganham as permisses 644 e 755,
respectivamente. Este fato s ocorre por causa de um nmero chamado de Umask. Este nmero, subtrado de
666 para arquivos e 777 para diretrios, vai determinar as permisses padronizadas para os novos objetos a
serem criados pelo usurio.

Exemplos:

Umask : 022 (padro)

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 87
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Permisso padro para arquivos novos: 644

Permisso padro para diretrios novos: 755

Umask : 024

Permisso padro para arquivos novos: 642

Permisso padro para diretrios novos: 753

*Obs:

Quando o valor de Umask configurar permisso padro de execuo em qualquer nvel para arquivo,
esta no ser aplicada. No lugar dela, ser aplicada a permisso de gravao.

Geralmente, o valor de Umask definido em algum dos scripts de logon de usurio pelo comando
umask.

# umask

Comando que define e consulta a umask do usurio.

Sintaxe:

# umask <valor>

Exemplo:

Transformando Umask do usurio para 020:

# umask 020

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 88
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

12 - SISTEMAS DE ARQUIVOS

Alguns conceitos so imprescindveis antes que o estudo deste assunto seja iniciado:

INODES
So nmeros que servem como ndices para arquivos e diretrios. Cada arquivo ter um nmero
reservado para ele, isto acontece por causa da reserva de inodes existente no file system (que, por padro, de
5%). A reserva de inodes deve ser sempre verificada com a linha de comando df hi, pois o estouro desta
reserva causa a incapacidade de criao de novos arquivos ou diretrios no sistema de arquivos em questo.

JOURNALING
Este recurso encontrado em sistemas de arquivos diversos suportados pelo Linux, como EXT3, EXT4 e
ReiserFS. Ele consiste na criao de um log de atividades recentes do sistema, que podem ser recuperadas em
um prximo boot, caso ocorra um desligamento no programado, por exemplo, proporcionando maior
segurana e estabilidade do sistema e permitindo a recuperao do sistema aps problemas.

SUPERBLOCO
So cpias de blocos que armazenam informaes detalhadas sobre um sistema de arquivos. Estas
cpias, por padro, so feitas a cada 8192 blocos e elas sevem para auxiliar a recuperao de um file system
que esteja com inconsistncia.

So muitos sistemas de arquivos suportados pelo Linux e sempre importante estar sincronizado com
o suporte oferecido pelo Kernel a eles, para que no haja nenhum tipo de perda de tempo ao tentar usar um
sistema de arquivos que no suportado.

Os mais importantes sistemas de arquivos suportados pelo Linux so:

EXT2
Sistema de arquivo padro de distribuies antigas. adotado muito comumente como padro por
programas como o tune2fs, o mke2fs e o e2fsck. Seu limite de criao de blocos de 8TB e o tamanho de cada
bloco pode chegar a 4096 bytes.

EXT3
Este sistema de arquivos possui limitao por tamanho de arquivo de 2TB e limite de criao de blocos
de 32TB. Ele tambm possui o recurso de Journaling, diferena mais marcante entre ele e o EXT2.

importante ressaltar que, em caso de fim dos inodes, nenhum dos dois sistemas de arquivos acima os
recria. Ser preciso que o prprio administrador redefina a reserva de inodes.

EXT4
Sucessor do EXT3, este sistema de arquivos suporta arquivos de at 16TB de tamanho e 1 exabyte de
blocos no total. Um recurso muito interessante neste filesystem o de verificao de integridade de Journaling,
o que incrementa mais confiabilidade para o recurso, que foi melhorado. A gravao atrasada de dados
tambm pode ser considerada como um recurso muito til deste sistema de arquivos, pois aumenta a
velocidade de leitura e gravao, apenas gravando um dado quando ele realmente for sair de cache. O tamanho
do inode tambm maior do que no EXT3 (256bytes ao invs de 128bytes de EXT3), isso necessrio para que
o inode possa armazenar informaes extras, como verso do inode ou data de modificao do mesmo.

ReiserFS
Sistema de arquivos desenvolvido por Hans Reiser, este sistema de arquivos proporciona de vantagem
em relao aos outros o fato de garantir maior recuperao de danos estrutura existente de dados. A grande
desvantagem que ele j no garante um Journaling to eficiente assim para arquivos que estiverem sendo
utilizados no ato de um crash.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 89
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

UFS
O Unix File System o sistema de arquivos padro de distribuies Unix como FreeBSD, por exemplo.

JFS
O Journaling File System foi concebido pela IBM para ser o sistema de arquivo do IBM-AIX.

XFS
Desenvolvido pela Silicon Graffics, o XFS suporta at 8 exabytes de tamanho por volume.

Swap
Chamado de rea de troca, este sistema de arquivos funciona como memria virtual para o sistema.
Costumava-se destinar o dobro do espao da memria RAM para uma memria Swap em verses
antigas de distribuies Linux. Hoje esta prtica est em desuso por causa do crescente desenvolvimento de
tecnologias de armazenamento temporrio. Hoje em dia, muito comum encontrar um servidor com at 64GB
de memria RAM.

Proc
Este sistema de arquivos na verdade contm pseudo-arquivos, que so criados pelo Kernel Linux
conforme haja necessidade de manipular algum recurso de sistema. Estes arquivos so os processos executados
em tempo real pelo Kernel e consultados pelo mesmo.

O sistema de arquivos Proc fica montado em /proc e sem ele o kernel Linux no pode interagir com o
sistema operacional.

Alguns exemplos de pseudo-arquivos de processos do Kernel:

/proc/partitions arquivo de parties disponveis para uso.

/proc/cpuinfo arquivo de informaes detalhadas sobre CPU.

/proc/meminfo arquivo de informaes detalhadas sobre memria RAM.

/proc/swaps arquivo de reconhecimento de sistemas de arquivo SWAP.

/proc/mounts arquivo de reconhecimento de sistemas de arquivos montados (mesma informao de


/etc/mtab)

/proc/version arquivo de informaes sobre verso do sistema operacional e do kernel.

ISO9660

Sistema de arquivos padro para mdias de CD ou DVD.

FAT16 e FAT32 so tratados em Linux como MSDOS e VFAT, enquanto NTFS tratado como NTFS
mesmo.

12.1 Comandos administrativos de file systems

# fdisk

Particionador modo texto padro para distribuies Linux.

Sintaxe:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 90
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# fdisk <opes> <disco>

Exemplos:

Exibindo a tabela de parties do disco /dev/sda:

# fdisk l /dev/das

No caso acima, o disco /dev/sda tem 1 partio primria, 1 estendida e 3 lgicas.

Particionando /dev/sda:

# fdisk /dev/sdb

As principais opes do prompt do fdisk so:

P : exibe a tabela de parties do volume.

T : muda o tipo da partio.

C : cria uma partio.

D : exclui uma partio.

A : torna a partio ativa.

W : sai salvando as alteraes na tabela de parties.

Q : sai sem salvar qualquer mudana feita na tabela de parties.

# cfdisk

Particionador modo texto com interface mais amigvel.

Sintaxe:

# cfdisk <disco>

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 91
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# mkfs

Cria sistemas de arquivos em volumes.

Sintaxe:

# mkfs <opes> <volume>

Opes:

-t : especifica o tipo do sistema de arquivos (na verdade, o programa que ser utilizado na formatao).

-L : aplica um rtulo em volumes EXT2 e EXT3.

-c : faz a verificao de disco antes de formatar o volume.

-V ou v : modo verbose.

-n : cria rtulos em filesystems VFAT e MSDOS.

*Obs:

Os comandos abaixo so equivalentes:

# mkfs t ext3 <volume>

# mkfs.ext3 <volume>

# mke2fs j <volume>

Exemplos:

Criando sistema de arquivos ext3 em partio /dev/sda5, com aplicao de rtulo Backups e
verificao de integridade de disco:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 92
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# mkfs t ext3 L Backups c /dev/sda5

Criando sistema de arquivos ext2 em /dev/sda6:

# mkfs /dev/sda6

# tune2fs

Verifica e modifica parmetros ajustveis de sistemas de arquivos EXT2 e EXT3.

Sintaxe:

# tune2fs <opes> <volume>

Opes:

-l : lista os parmetros do file system.

-j : aplica recurso de Journaling em sistemas de arquivos ext2 (converte para ext3).

-L : aplica um rtulo ao volume.

-m : modifica o percentual de blocos reservados para inodes.

-r : modifica o nmero de blocos reservados para inodes.

-c : configura o nmero de montagens do volume antes de ele ser verificado por fsck.

Exemplos:

Modificando o percentual de blocos reservados para inodes de /dev/sda7 para 15%:

# tune2fs m 15 /dev/sda7

Convertendo /dev/sda8 para ext3:

# tune2fs j /dev/sda8

Listando parmetros de volume /dev/sda7:

# tune2fs l /dev/sda7

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 93
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Na figura acima, que o resultado do comando em questo, pode-se observar que o parmetro
hs_journal est presente, o que caracteriza um sistema de arquivos com recurso de Journaling ativado.

# fsck

Verifica a integridade de sistemas de arquivos.

Sintaxe:

# fsck <opes> <volume>

Opes:

-t : especifica o tipo do sistema de arquivos que vai ser verificado.

-f : fora o a checagem mesmo em sistemas de arquivos aparentemente limpos.

-p : repara automaticamente inconsistncias no sistema de arquivos.

-c : verifica badblocks.

-N : no executa. Apenas simula o que seria feito.

-M : no verifica sistemas de arquivos montados.

-C : exibe barra de progresso.

Exemplos:

Verificando integridade do volume ext3 /dev/sdb6 e corrigindo as falhas no mesmo, se houverem:

# fsck t ext3 p /dev/sdb6

Simulando verificao em /dev/sdb6:

# fsck N /dev/sdb6

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 94
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

*Obs:

muito importante ressaltar que uma verificao de disco feita em um volume montado pode causar
inconsistncia no sistema de arquivos do mesmo.

# badblocks

Verifica a existncia de badblocks em um disco.

Sintaxe:

# badblocks <opes> <volume>

# hdparm

Ajusta parmetros de configurao de HDs.

Sintaxe:
# hdparm <opes> <disco>

Opes:

-d : ativa o modo DMA.

-c : ativa o I/O de 32 bits.

-i : exibe identificao do disco.

Exemplos:

# hdparm i /dev/sda

# dumpe2fs

Exibe informaes sobre blocos e superblocos de um sistema de arquivos.

Sintaxe:

# dumpe2fs <volume>

# dd

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 95
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Cria imagens bit a bit de sistemas de arquivos.

Sintaxe:

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

Opes:

bs : block size o tamanho do bloco a ser criado.

count : define quantos blocos sero criados.

notrunc : no truncar arquivo de destino.

Exemplos:

Criando um clone da partio /dev/sda1 em /dev/sdb1:

# dd if=/dev/sda1 of=/dev/sdb1

Criando um arquivo de imagem /root/part2 da partio /dev/sda2:

# dd if=/dev/sda1 of=/root/part2

Criando o arquivo /root/swp a ser usado como sistema de arquivos swap:

# dd if=/dev/zero of=/root/swp

# mknod

Cria arquivos especiais dentro de /dev.

Sintaxe:

# mknod <dispositivo> <tipo> <major number> <minor number>

Tipos de arquivos:

b : cria arquivo de blocos.

c ou u : cria arquivo de caracteres.

p : cria um fifo.

Exemplo:

Criando um arquivo de blocos que vai servir como arranjo RAID (software):

# mknod /dev/md0 b 9 0

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 96
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

12.2 Sistema de arquivos SWAP

O sistema de arquivos SWAP (ou rea de troca) funciona como memria virtual para o sistema (auxiliar
a memria RAM).

Este sistema de arquivos pode ser um arquivo propriamente dito ou pode ser tambm uma partio
separada para este fim, o que leva o administrador a seguinte concluso: em qualquer caso, para utilizar SWAP
o sistema vai ter que utilizar o disco rgido, o que diminui bruscamente a performance do sistema. Por esse
motivo especfico que apenas em ltimo caso recomendado o uso deste recurso.

Era comum em sistemas antigos (pela falta de memria RAM) a atribuio do dobro da capacidade de
armazenamento em RAM para a SWAP, ou seja: se um sistema possui 256MB de RAM, o correto destinar
512MB para a criao da SWAP. Hoje em dia essa prtica cada vez mais desnecessria, uma vez que as
tecnologias de armazenamento em RAM j proporcionam a capacidade de armazenamento temporrio
necessria para qualquer servidor.

Criando sistemas de arquivos SWAP:

Levando em considerao que foi criada uma partio tipo 82 para abrigar um sistema de arquivos
SWAP e o seu caminho /dev/sda2, o que, primeiro deve ser feito a criao do sistema de arquivos SWAP:

Cria o sistema de arquivos SWAP em /dev/sda2 (no existe mkfs t swap):

# mkswap /dev/sda2

O prximo passo ativar a swap:

# swapon /dev/sda2

Verificando a sua atividade:

# swapon s

Ou

# cat /proc/swaps

Configurando o SWAP para ativar automaticamente no boot:

# vim /etc/fstab

Como o SWAP no precisa de ponto de montagem, este deve ser definido como none no campo de
opes.
Se for necessrio desativar o SWAP, pode-se usar a linha de comando abaixo:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 97
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# swapoff /dev/sda2

12.3 Diretrio /dev e gerenciador UDEV

O diretrio /dev tem em seu contedo arquivos especiais, que podem ser arquivos de blocos (discos ou
parties, por exemplo), arquivos de caracteres (terminais de controle, memrias RAM, placas de som, por
exemplo).

O gerenciador de dispositivos UDEV cuida de atualizar os dispositivos disponveis dentro de /dev de


forma em dinmica. Assim que um dispositivo for conectado fisicamente, o UDEV cria o arquivo correspondente
ao mesmo em /dev.

Quando a interface grfica est instalada em distribuies que contam com o Kernel 2.6 do Linux
instalado, UDEV monta automaticamente todo volume novo em /media/<rtulo do volume> assim que o
reconhece. Isto facilita e muito a vida do usurio de desktop Linux medida que o mesmo no ter trabalho
algum de sequer montar manualmente o volume.

A lista de arquivos especiais existentes em /dev est no arquivo /proc/devices, como mostra o exemplo
a seguir:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 98
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

12.4 Montagem de volumes

Para que um volume seja utilizado como sistema de arquivos no sistema, preciso mont-lo em algum
dos diretrios existentes, pois, a princpio, ele um arquivo de blocos qualquer antes que isso ocorra.

O diretrio onde este volume vai ser acessado chamado de ponto de montagem, ou mount point.

Este mount point pode ser um diretrio j existente do modelo FHS (/mnt ou /media, por exemplo) ou
pode ser um diretrio criado pelo usurio.

bom lembrar tambm o seguinte: as permisses do mount point so mandatrias sobre as


permisses de montagem do volume, ou seja: um volume pode ter sido montado com permisso de gravao,
mas se o diretrio onde ele foi montado no tiver permisso para que o usurio que vai acessar possa escrever
o mesmo no o far.

O arquivo /etc/fstab contm as configuraes de montagem de volumes. Sua sintaxe interna a


seguinte:

<sistema de arquivos> <ponto de montagem> <tipo do sistema de arquivos> <opes de montagem> <uso de
dump> <flag de checagem de disco no boot>

importante reparar que tambm possvel montar um volume neste arquivo de configurao atravs
do UUID do seu sistema de arquivos, este nmero de identificao pode ser obtido atravs do comando
tune2fs -l <volume> ou com o comando blkid <volume>.

No caso deste arquivo /etc/fstab acima, ao invs de montar o sistema de arquivos pelo seu nome em
/dev, ele esta configurado para montar o volume pelo o UUID (ID de partio).

Opes de montagem

ro : monta o volume com permisso de apenas leitura para todos.

rw : monta o volume com permisso de leitura e gravao para todos.

auto : pode ser montado automanticamente com a opo a.

noauto : neste caso, o volume precisaria ser montado manualmente atravs do comando mount.

dev : o volume pode abrigar arquivos especiais.

nodev : o contrrio de dev.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 99
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

exec : o volume permite que sejam executados programas dentro do volume (permisso x em
arquivos).

noexec : o contrrio de exec.

suid : permite que permisses especiais aplicadas a arquivos e diretrios tenham efeito.

nosuid : o contrrio de suid.

user : permite que o usurio comum monte o volume e apenas aquele que montou pode desmontar o
mesmo.

users : qualquer usurio monta e desmonta o volume.

nouser: probe que qualquer usurio no-root monte ou desmonte o volume.

async : entrada e sada assncrona de gravao e escrita no volume.

sync : o contrrio de async.

defaults : o mesmo que as opes rw,auto,suid,nouser,async e exec juntas.

loop : alvo um arquivo loop.

guest : monta como convidado, em caso de montar volumes CIFS.

remount : remonta o volume informado.

Quando for o caso de o volume ser montado durante o processo de boot, nas opes de montagem
dele dentro de /etc/fstab deve constar a opo auto.

Comandos de montagem

# mount

Monta manualmente um sistema de arquivos.

Sintaxe:

# mount <opes> <volume> <ponto de montagem>

Opes:

-a : monta todo volume com opo auto em /etc/fstab.

-v : verbose.

-r : monta como apenas leitura.

-w : monta como leitura e gravao.

-o : especifica as opes de montagem.

Exemplos:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 100
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Montando o volume /dev/fd0, que est com opo noauto em /etc/fstab:

# mount /dev/fd0

Montando o volume /dev/sdb1, formatado como vfat, em /dados, em modo verbose:

# mount t vfat v /dev/sdb1 /dados

Montando o volume /dev/sdb2, que ext3, em /backup como leitura e gravao, sem verbose:

# mount t ext3 w /dev/sdb2 /backup

Montando todos os volumes com opo auto dentro de /etc/fstab:

# mount a

Montando o volume /dados exportado pelo servidor NFS 172.16.0.1 em /media/dados:

# mount t nfs 172.16.0.1:/dados /media/dados

Montando o compartilhamento do Windows ARQUIVOS em 192.168.0.2 em /mnt:

# mount t CIFS //192.168.0.2/ARQUIVOS /mnt

Montando o arquivo de imagem de CD /root/debian_lenny.iso em /media/debian como apenas leitura:

# mount t iso9660 r /dev/debian_lenny.iso /media/debian o loop

# umount

Desmonta sistemas de arquivos.

Sintaxe:

# umount <opes> <volume/ponto de montagem>

Exemplos:

Desmontando o volume /dev/sdb3:

# umount /dev/sdb3

Desmontando um volume qualquer montado em /media/debian:

# umount /media/debian

Desmontando todos os volumes montados:

# umount a

Diferentemente de mount a, umount a desmonta todo e qualquer volume que no estiver um


uso.
Toda vez que um volume est montado, todos os seus parmetros de montagem e seu caminho so
enviados o arquivo de tabelas de volumes montados, o /etc/mtab, que recebe informaes de /proc/mounts.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 101
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 102
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

13 LINKS

Criar ligaes entre arquivos e diretrios no uma tarefa to fcil quanto parece, existem regras e
conceitos que precisam ser respeitados.

Primeiramente, vamos entender os tipos de links existentes:

Hardlink (link fsico)

Um hardlink a ligao entre arquivos onde o arquivo original praticamente o mesmo que o link,
tanto que os dois possuem o mesmo nmero inode e, por isso, no podem estar em sistemas de arquivos
diferentes.

Em uma ligao fsica entre arquivos, se o arquivo original for renomeado, movido ou at removido, o
link continua existindo com os mesmos dados e o mesmo tamanho do arquivo original. Ele ideal para se fazer
cpias de segurana de arquivos em tempo real.

Softlink (link simblico)

Um softlink assume o papel de simples atalho, como o usurio costuma chamar. Ele assume um
nmero inode diferente do arquivo original, podendo assim, ser implementado entre sistemas de arquivos
diferentes.

Em uma ligao simblica entre arquivos, se o arquivo original for movido, excludo ou renomeado, a
ligao fica quebrada (no existe mais).

# ln

Cria links entre arquivos (hardlink, por padro).

Sintaxe:

# ln <opo> <origem> <link>

Exemplos:

Cria ligao fsica entre os arquivos /etc/passwd e /etc/users:

# ln /etc/passwd /etc/users

Cria ligao simblica entre /etc/shadow e /mnt/senhas:

# ln s /etc/shadow /mnt/senhas

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 103
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

14 COMANDOS DE BUSCA

# type

Exibe informao sobre o tipo de comando.

Sintaxe:

# type <nome>

# which

Localiza um comando do sistema que esteja definido na varivel PATH do usurio.

Sintaxe:

# which <comando>

# whereis

Busca por arquivos e diretrios de manuais, de configurao de binrios de um programa qualquer.

Sintaxe:

# whereis <programa>

# locate

Procura por arquivos e diretrios em todo o sistema mediante atualizao em sua prpria base de
dados pelo comando updatedb.

Sintaxe:

# updatedb

# locate <arquivo/diretrio>

Exemplo:

Procurando por samba no sistema inteiro:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 104
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# find

Faz a busca avanada em uma rvore de diretrios especfica.

Sintaxe:

# find <diretrio> <opes>

Opes:

-type : procura por tipo de arquivo.

-name : procura por nome.

-iname: procura por nome em modo insensitivo (ignora diferenas entre maisculas minsculas).

-fstype : procura por sistema de arquivos do um tipo especfico.

-maxdepth : mximo de profundidade da busca em diretrios (mximo de subdiretrios buscados).

-mindepth : mnimo de profundidade da busca em diretrios.

-executable : procura por objeto executvel.

-perm : especifica qual a permisso exata do objeto que vai ser buscado.

-size : busca por tamanho.

-amin : procura por objetos acessados a minutos atrs.

-atime : procura por objetos que tenham sido acessados dias atrs.

-mmin : procura por objetos que tenham sido modificados a minutos atrs.

-mtime : procura por arquivos que tenham sido modificados a dias atrs.

Exemplos:

Buscando apenas por links simblicos dentro de /etc, de 4 subdiretrios em diante:

# find /etc -mindepth 4 -type l

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 105
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Busca apenas por arquivos regulares com permisso 644 em /var/log:

# find /var/log perm 644 type f

Busca apenas por arquivos executveis em /usr/local:

# find /usr/local executable

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 106
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

15 RAID

O termo RAID vem de Reduntant Array of Independent Disks (arranjo redundante de discos
independentes), mas nem sempre a parte redundante pode ser levada a srio, pois nem todos os tipos de
arranjos proporcionam a redundncia anunciada.

A tecnologia permite agregar recursos diversos de disponibilidade e desempenho com diversos discos
fazendo parte de um bloco s.

O RAID aplicvel atravs de controladas RAID ou de software. Vamos tratar aqui neste captulo a
prtica do RAID via software no Linux, j que se o RAID for via hardware, o sistema operacional Linux vai
enxerg-lo como um disco serial comum.

Os principais nveis de RAID so:

RAID0 (Stripping)

Em RAID0, no existe redundncia alguma entre discos. O que


acontece no arranjo que o desempenho de leitura e gravao melhora
significativamente, medida que dois discos, no mnimo dividem esta
tarefa, pois os dados ficam fragmentados entre os discos.
Esta prtica no proporciona qualquer tipo de segurana aos
dados, uma vez que no h tolerncia a falhas de nenhum dos discos (se
isto ocorrer, os dados sero perdidos completamente). A pesar disso,
uma prtica bastante usada em bancos de dados, pelo bom desempenho
de I/O proporcionada. Utilizar RAID0 com 2 HDs SATA2 com 300MB/s cada
proporcionaria (em tese) 600MB/s de taxa de transferncia.

RAID1 (Mirroring)

Em RAID1, o desempenho de I/O cai significativamente mas,


em compensao, a segurana dos dados (disponibilidade, na verdade)
garantida em caso de problemas com um dos discos do arranjo. Isso
porque o RAID1 o nvel que proporciona redundncia completa de
dados. Acontece que um dos discos serve de espelho para os dados do
outro. preciso pensar muito antes de pr em prtica o RAID neste
nvel o desempenho, como foi dito antes, cair significativamente por
causa da sincronizao em tempo real dos dados de um disco para o
outro.

RAID10 (0 + 1)

Neste caso, os di nveis acima so combinado para


poder proporcionar redundncia e desempenho ao mesmo
tempo. O mnimo de 4 discos para este arranjo.
Primeiro so implementados dois arranjos RAID0
independentes e aps estes serem criados, criado um RAID1
com esses dois arranjos.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 107
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

RAID5

O RAID5 pode ser implementado com, no mnimo, 3


discos e uma tima soluo para aliar disponibilidade,
segurana e maior aproveitamento da capacidade de
armazenamento dos discos.
Neste nvel, h um RAID0 funcionando em todos os
discos, s que dentro de cada um deles reservada uma rea de
paridade que faz o papel de mirror de arquivos, as reas de
paridade dos discos somadas devem ter o espao referente a um
dos discos do arranjo, fazendo assim com que a tolerncia a
falhas do arranjo seja de um disco. A diferena entre fazer RAID5
com 3 discos ou com mais que cada disco que entra no arranjo
ajuda a dividir a rea de paridade de forma que fique um espao
igual para todos os discos, diminuindo a perda de espao no arranjo.
Um arranjo RAID5 com 6 HDS de 1TB cada um ficaria com 5TB de espao total e ainda teria tolerncia
falha de 1 dos discos.

RAID6

Este nvel bem parecido com o RAID5, s que o mnimo


de 4 discos no arranjo.
A rea de paridade distribuda entre os discos de forma
que o total de espao no arranjo fique com o espao referente a
dois discos reservado para redundncia, proporcionando tolerncia
a falhas de 2 discos.
Em um arranjo RAID6 com 8 discos de 1TB cada, o
tamanho final do arranjo ficaria de 6TB, com tolerncia a falha de 2
discos.

15.1 - Criando arranjo RAID

O programa mdadm administra os arranjos RAID no Linux.

Instalando o programa:

# apt-get install mdadm y

Para melhor viabilidade de aprendizado, vamos fazer RAID com parties.

Primeiro vamos cri-las:

cfdisk /dev/sda

As parties para integrar o arranjo tm que ser do tipo fd (deteco automtica de RAID).

Vamos fazer o laboratrio com 5 parties lgicas, onde 3 iro ficar no arranjo, compondo um RAID5, e
2 ficaro de disco reserva (spare disk).

Criando o arquivo de bloco do arranjo:

# mknod /dev/md0 b 9 0

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 108
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Criando o arranjo RAID5:

# mdadm C /dev/md0 l 5 n 3 /dev/das{5..7} x 2 /dev/sda{8,9}

Onde:

-C : cria um arranjo RAID.

-a : Cria o dispositivo informado em C , caso o mesmo no exista.

-l : indica qual o nvel de RAID a ser criado.

-n : indica quantos e quais discos faro parte do arranjo (no conta com os reservas).

-x : indica quantos e quais discos vo ficar de spare disks.

Os metacaracteres [-] e {,} foram utilizados para facilitar a declarao desses discos, pois se no fosse
assim, o administrador teria que digitar disco por disco separado por espao.

15.2 Verificando funcionamento do arranjo

O arquivo /proc/mdstat pode ser consultado caso o administrador queira ver como est
sincronizao do arranjo:

# watch n1 cat /proc/mdstat

O comando watch repete de n em n segundos um comando especfico. Desta forma, o arquivo ser
lido de 1 em 1 segundo, proporcionando ao administrador monitorar em tempo real a criao do arranjo.

Para mais detalhes sobre o mesmo, pode ser utilizada a seguinte linha de comando:

# mdadm D /dev/md0

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 109
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Onde:

-D : descreve detalhes sobre o arranjo.

15.5 Formatando e montando o arranjo

RAID no sistema de arquivos, mas sim um arranjo de discos, como j foi visto. Por esse motivo, no
h nenhum sistema de arquivos especial para que ele seja formatado. O arranjo pode ser formatado com
qualquer sistema de arquivos suportado pelo sistema.

Outro fato importante o de que o arranjo ser formatado, e no cada disco individualmente:

# mkfs t ext3 L RAID5 c /dev/md0

Se for necessrio usar o arranjo permanentemente, como o caso da maioria dos arranjos, ele deve
ser configurado em /etc/fstab:

# vim /etc/fstab

Montando o arranjo antes de reinicializar o sistema:

# mount -a

15.4 Discos falhando no arranjo

Vamos forar uma falha em um dos discos do arranjo para testar a participao dos discos reservas:

# mdadm /dev/md0 f /dev/sda5

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 110
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Observa-se que o disco fica marcado como falhado, enquanto o reserva entra em seu lugar e faz
novamente a sincronizao com o arranjo.

Para remover de vez o disco que falhou:

# mdadm /dev/md0 r /dev/sda5

Para adicionar mais um spare disk:

# mdadm /dev/md0 a /dev/sda9

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 111
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Para parar todo o arranjo:

# mdadm S /dev/md0

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 112
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

16 BACKUP E COMPACTAO

Em todo servidor instalado, uma boa prtica de backup sempre requerida. Manter estratgias de
backup eficientes no uma tarefa simples, com s vezes se imagina. O administrador deve analisar vrios
pontos antes de montar estas estratgias, como por exemplo: tipo do backup, frequncia com que vai ser feito,
dados a serem copiados, mdias de armazenamento e o programa que vai gerenciar este backup.

Tipos de backup

Backup Completo: o tipo de backup onde todos os dados de um determinado local so copiados para
outra mdia, de forma que, a cada backup completo seja criado um destino diferente para o mesmo.

Backup diferencial: o tipo de backup que apenas copia o que foi modificado ou criado desde o ltimo
backup completo.

Backup incremental: apenas faz o backup de tudo que tenha sido modificado ou criado desde o ltimo
backup diferencial.

Diretrios importantes

Fazer um backup completo, diferencial ou incremental do sistema todo implica em incluir estes
diretrios abaixo na lista:

/etc por ter todos os arquivos de configurao de servios de sistema a servidores instalados, este
diretrio nunca deve ser esquecido em um alista de backup.

/home dependendo do tipo de servidor, ser importante fazer backup dos arquivos pessoais de
usurios. Na verdade, como nem todo usurio precisa usar /home como diretrio de arquivos pessoais, o ideal
primeiro seria verificar em /etc/passwd antes a lista de diretrios home de usurios antes de montar este
backup ou fazer com que isso seja feito por um script cheio de expresses regulares (muito melhor!!).

/var/mail para um servidor de correio que trabalhe com os padres de armazenamento de


mensagens de usurios, este diretrio crucial, pois nele esto os e-mails recebidos pelos usurios.

/var /www para um servidor web que tambm opere nos padres, este diretrio fundamental, pois
nele que se encontram os arquivos de publicao de sites no servidor.

/var/lib/mysql diretrio de banco de dados do MySql-Server.

16.1 Arquivamento de backups

# tar

Arquiva dados de diretrios em um arquivo apenas. padro para todas as distribuies Linux. Ele
muito verstil para backups, podendo corresponder a qualquer tipo de backup citado acima.

Sintaxe:

# tar <opes> <arquivo de backup> <origens dos dados>

Opes:

-c : cria uma arquivo da backup.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 113
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

-t : consulta o contedo de arquivos tar.

-v : verbose.

-x : extrai contedo de arquivo tar.

-u : modo update. Apenas atualiza o contedo de um arquivo tar.

-M : habilita backup em mltiplos volumes.

-C : muda o destino da extrao de contedo de arquivo tar.

-z : utiliza o agente de compactao gzip.

-j : utiliza o agente de compactao bzip2.

-a : adiciona contedo a um arquivo tar.

-f : toda a sada deve ser redirecionada para um arquivo, dispositivo, uma entrada (stdin) ou uma sada
(stdout) padro.

Exemplos:

Criando um arquivo de backup do diretrio /etc inteiro em /backups/bkp.tar

# tar cvf /backups/bkp.tar /etc

Adicionando ao arquivo de backup anterior os diretrios /var/mail, /var/mysql e /home:

# tar uvf /backups/bkp.tar a /var/mail /var/mysql /home

Conferindo contedo do arquivo da backup:

# tar tf /backups/bkp.tar

Atualizando o contedo do backup com o que foi modificado nesses diretrios:

# tar uvf /backups/bkp.tar /etc /var/mysql /var/mail /home

Criando arquivo de backup /backups/homedir.tar.gz (arquivo tambm compactado com gzip) do


diretrio /home/user1:

# tar czvf /backups/homedir.tar.gz /home/user1

Criando arquivo de backup /backups/mails.tar.bz2 (arquivo tambm compactado com o bzip2) do


diretrio /var/mail:

# tar cjvf /backups/mails.tar.bz2 /var/mail

Conferindo o backup /backups/homedir.tar.gz:

# tar tzf /backups/homedir.tar.gz

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 114
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Extraindo todo o contedo do arquivo /backups/homedir.tar.gz para /mnt:

# tar xzf /backups/homedir.tar.gz C /mnt

# cpio

Este agente de backup trabalha com backups tirando os dados das origens de uma lista. Ele pode ser
combinado com outros comandos, como muito comum ver com o find.

Exemplos de backup com o cpio:

Criando um arquivo de backup de uma lista de diretrios pronta chamada lista.txt:

# cpio o < lista.txt > /backups/backup_lista.bin

Verificando o contedo deste backup:

# cpio t < lista.txt

Combinando o comando find com cpio para obter o backup de todos os arquivos com permisso de
execuo contidos em /etc:

# find /etc type f executable | cpio o > backup_etc.bin

Restaurando este backup:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 115
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# cpio i F backup_etc.bin

As opes mais usadas do cpio so:

-o : cria um arquivo cpio.

-t : verifica um arquivo de backup.

-i : extrai o contedo de um arquivo cpio.

-F : aponta para um arquivo de backup, eliminando a necessidade de se utilizar redirecionamentos (<


ou >).

16.2 Criao de scripts de backup

claro que, para agilizar e facilitar as operaes de backup, o administrador pode criar alguns scripts
de backup e agendamentos (se for o caso), pois o Linux proporciona este tipo de prtica administrativa.

Em um primeiro exemplo, vai ser criado um script que far um backup completo cada vez que ele for
executado, tendo como diferencial de nome de arquivos de backup a data do mesmo, que ser uma varivel.

Levando em considerao que o assunto de scripts de Shell ser abordado com muito mais
profundidade mais frente, vamos edio do primeiro script de backup:

# vim /backups/backup_dia.sh

sempre importante dar permisso de execuo para o script que foi construdo:

# chmod +x /backups/backup_dia.sh

Executando o script:

# . /backups/backup_dia.sh

Cada dia em que este script for executado, ele criar um arquivo de backup com nome diferente,
sendo ideal esta prtica para agendamentos de backups completos semanais ou mensais, por exemplo.

Como resultado deste script, ser criado uma arquivo com o seguinte formato:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 116
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O segundo script ser feito para atualizar o contedo de um arquivo de backup completo existente
com os dados de uma lista de diretrios bkp_lista.txt:

# vim /backups/backup_lista.sh

Criando a lista de diretrios:

# vim /backups/bkp_lista.txt

Executando o script:

# . /backups/backup_lista.sh

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 117
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

16.3 Agentes compactadores

O tar no capaz de compactar o contedo de arquivos de backup sozinho. Agentes compactadores


precisam ser utilizados em conjunto com ele, caso de gzip e bzip2.

Os agente mais importantes de compactao so:

# gzip

Gera arquivos de extenso .gz e tem taxa de compactao mdia quando o arquivo a ser compactado
grande.

Este agente compactador no mantm o arquivo original compactado. A nica verso que vai estar
disponvel desde ento ser a verso compactada.

Sintaxe:

# gzip <opo> <arquivo>

Exemplos:

Compactando o arquivo arq1.txt em modo forado:

# gzip f arq1.txt

Listando o contedo deste arquivo:

# gzip l arq1.txt.gz

Descompactando este arquivo:

# gzip d arq1.txt.gz

Ou

# gunzip arq1.txt.gz

Obs: Representar um arquivo com extenso .tgz o mesmo que represent-lo como .tar.gz.

# bzip2

Agente compactador que possui uma alta taxa de compresso de arquivos grandes, podendo
compactar em at 10% do tamanho original. Arquivo manipulados pelo agente bzip2 tm extenso .bz2.

Sintaxe:

# bzip2 <opo> <arquivo>

Exemplos:

Compactar arquivo disco.iso, mantendo o arquivo original:

# bzip2 k disco.iso

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 118
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Descompactar o arquivo:

# bzip2 d disco.iso.bz2

ou

# bunzip2 disco.iso.bz2

Testando a integridade do arquivo:

# bzip2 t disco.iso.bz2

Restaurando o arquivo danificado:

# bzip2recover disco.iso.bz2

# zip

Compactador compatvel com Windows.

Sintaxe:

# zip <arquivo zip> <origem>

Exemplos:

Criando arquivo /backups/prog.zip contando um programa chamado game1.exe:

# zip /backups/prog.zip game1.exe

Descompactando este arquivo:

# unzip /backups/prog.zip

Compactando arquivo game1.exe com criptografia:

# zip e /backups/prog.zip game1.exe

Compactando subdiretrios de /etc em /backups/etc.zip:

# zip r /backups/etc.zip /etc

# rar

Compactador proprietrio que tem verses para sistemas GNU/Linux, MacOS, Windows e outros.

Sintaxe:

# rar <aes> <opes> <arquivo rar> <origem>

Aes:

a : cria arquivo rar com contedo selecionado.

x : extrai contedo de arquivo rar.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 119
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

l : lista contedo de um arquivo rar.

r : repara arquivo danificado.

m : apaga contedo de origem aps compactar.

r : inclui subdiretrios no arquivo rar.

Exemplos:

Criando arquivo logs.rar contendo todos os arquivos do diretrio /var/log:

# rar a mail.rar /var/mail

Extraindo o contedo deste arquivo:

# rar x mail.rar

Criando um arquivo chamado etc.rar do todos os subdiretrios de /etc:

# rar r etc.rar /etc

listando os arquivos existentes dentro do arquivo compactado logs.rar:

# rar l mail.rar

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 120
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

17 AGENDAMENTO DE TAREFAS

Automatizar tarefas uma prtica muito comum entre administradores de servidores Linux. Um
backup full que deve sempre ser feito de um diretrio de publicao de sites, por exemplo, toda sexta-feira,
precisaria de interveno manual do administrador se no houvesse a possibilidade de agend-lo para executar
neste dia em um horrio especfico.

Os daemons que gerenciam todos os agendamentos do sistema so o cron e o atd, mas eles no so os
programas que configuram a instalam os agendamentos de tarefas no Linux. Para esta tarefa, so utilizados o at
ou o crontab, sendo o mais expert dos 2 o crontab.

17.1 Diretrios importantes

/var/spool/cron/crontabs : diretrio de agendamentos de usurios que foram produzidos com o


crontab.

/var/spool/cron/atjobs : diretrio de agendamentos de usurios que foram produzidos com o at.

/etc/cron.hourly : diretrio de scripts que sero executados de hora em hora podem ser
armazenados.

/etc/cron.daily : diretrio onde scripts que sero executados diariamente podem ser armazenados.

/etc/cron.weekly : diretrio onde scripts que sero executados semanalmente podem ser
armazenados.

/etc/cron.mounthly : diretrio onde scripts que sero executados mensalmente podem ser
armazenados.

Os scripts contidos nos diretrios acima so executados pelo comando run-parts, que tem a funo de
executar scripts de diretrios em demanda. O agendamento da execuo deste comando nos diretrios est
dentro do arquivo /etc/crontab, como no exemplo abaixo:

importante que estes diretrios sejam lembrados em um backup de dados ou em uma migrao de
um servidor para outro, pois os agendamentos, em muitos casos, fazem parte da vida funcional de um
sistema, uma vez que tarefas imprescindveis podem j estar agendadas, como por exemplo, uma aplicao que
faz cache de arquivos pesados e que so excludos de 30 em 30 minutos para no estourar o espao de uma
determinada partio.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 121
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

17.2 Programas de agendamento

# at

Cria agendamento para executar uma nica vez e depois ser excludo.

Quando for utilizado para agendar alguma tarefa, o at vai abrir seu prompt de comandos de Shell SH
para que o administrador possa digitar os comandos que vo ser executados.

Sintaxe:

# at <opes> <tempo>

Exemplos:

Criando um agendamento para 22:00 (para salvar e sair do prompt do at, bastar pressionar CTRL+D):

Listando agendamentos do at:

# atq

ou

# at l

Removendo o quinto agendamento:

# atrm 5

Os formatos de data e hora podem ser diferentes, como nos exemplos abaixo:

Criar agendamento para ser feito dia 05/10/2010, s 13:00 ou 1:00PM:

# at 1:00PM 10/05/2010

Criar agendamento para s 14:00 de amanh:

# at 14:00 tomorrow

# crontab

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 122
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Agenda tarefas de forma muito mais verstil e dinmica. Com ele, a mesma tarefa pode se repetir
vrias vezes e possvel criar tarefas com intervalos de tempos diversos. Ele nativo de todas as distribuies
GNU/Linux.

importante ressaltar que nem o cron e nem o atd precisam ser reiniciados, basta editar os arquivos e
pronto!

Sintaxe:

# crontab <opo> <usurio> <opo>

Opes:

-u : especifica o usurio.

-l : lista agendamentos de usurios.

-e : edita agendamentos do usurio.

-r : remove todos os agendamentos de um usurio.

Intervalos de agendamentos

Os intervalos so pea fundamental para o crontab. Na verdade um dos diferenciais deste programa.

* : todo.

*/n : de n em n.

n-r : de n at r.

n,r : n e r.

n-r,x : de n at r e tambm x.

Campos do arquivo de agendamentos

A viso destes campos horizontal, e assim representada:

<MINUTO> <HORA> <DIA/MS> <MS> <DIA/SEMANA> <COMANDO>

Onde:

Minuto vai de 0 a 59.


Hora vai de 0 a 23.
Dia do ms vai de 1 a 31 (quando for o caso, claro).
Dia da semana vai de 0 at 7, onde 0 e 7 simbolizam o domingo.

Para que o editor padro para a nossa edio de agendamentos seja o vim vamos troc-lo, pois os
recursos de sintaxe dele nos ajudaro a entender melhor os campos.

# update-alternatives config editor

Exemplos:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 123
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Criando tarefa para o root executar o script de backup /backups/backup_lista.sh todo dia 15 do ms, s
17 horas e 30 minutos:

# crontab u root e

Os campos do ms e do dia da semana ficaram com *, pois o agendamento vai mesmo ser executado
todo dia da semana e todo ms.

Criando um agendamento para o usurio user1, de 10 em 10 minutos, nos meses de abril a junho e
tambm dezembro, toda 2 e 4-feira, remover os arquivos .mp3 de seu diretrio pessoal:

# crontab u user1 e

(no seria necessrio que o root agendasse tarefas para o usurio, pois todos eles, por padro, podem
criar e administrar os seus agendamentos).

Listando todos os agendamentos do usurio user1:

# crontab u user1 l

Removendo todos os agendamentos do usurio user1:

# crontab u user1 r

17.3 Controle de acesso a agendamentos

possvel controlar o acesso de usurios ao crontab e ao at.

Os arquivos que o administrador pode criar para fazer este tipo de controle so:

/etc/at.deny : lista de negao de acesso dos usurios que esto nesta lista ao programa at.

/etc/at.allow : lista de nicos usurios que podem acessar agendamentos prprios no at.

/etc/cron.deny : lista de negao de acesso de usurios ao programa crontab.

/etc/cron.allow : lista de nicos usurios que podem acessar os agendamentos prprios no crontab.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 124
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Basta incluir o nome dos usurios (um em cada linha) e salvar o arquivo criado para que possa passar a
valer o bloqueio/aceitao de acesso dos usurios.

Nenhum dos agendamentos j criados pelo usurio afetado por este bloqueio, eles persistem.

Exemplo:

Criando lista de negao de acesso a agendamentos dos usurios user1, operador e cpd:

# vim /etc/cron.deny

Tentando agendar tarefas com o usurio user1:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 125
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

18 COTAS DE ARMAZENAMENTO

Pense voc, administrador, que um servidor Web Apache, que tem um sistema de arquivos de 2TB
funcionando sobre RAID e LVM montado em /var/www para abrigar arquivos de publicao de sites de diversos
clientes e que um deles resolve hospedar vdeos a vontade e estoura a capacidade de espao em disco em 3
meses, parando o servio de hospedagem at que o administrador, manualmente, remova os arquivos que
esto excedendo o limite de blocos disponveis do volume, causando constrangimento e desconfiana em seus
usurios.
Este acontecimento catastrfico citado acima com certeza seria evitado com a configurao bem
planejada de cotas de armazenamento para usurios e (ou) grupos, onde cada um teria seu limite de espao ou
quantidade de arquivos em disco, estando este limite bem longe dos limites reais de armazenamento do disco.

Alguns conceitos sobre cotas em Linux devem ser muito bem assimilados pelo administrador antes que
ele pense em criar cotas:

Cotas em volumes
No possvel criar cotas em diretrios de um sistema de arquivos qualquer. Elas s podem ser criadas
em sistemas de arquivos.

Cotas para usurios


As cotas para usurios dizem respeito aos diretrios ou arquivos de propriedade deles em um volume,
ou seja: se o usurio user2 quiser criar arquivos em um sistema de arquivos com cota estourada para user1, ele
pode.
Cotas para grupos
A mesma regra que se aplica a usurios se aplica a grupos. S que se, por exemplo, o usurio user1 tem
limite de cota de 1GB livres para utilizao, mas algum outro usurio do grupo criou uma imagem ISO de 2GB e
estourou a cota de grupos para o volume, user1 fica sem ter permisso de escrita no volume do mesmo jeito,
por esse motivo que toda cota deve ser bem planejada antes de criada.

Permisses
Nunca se pode esquecer que a permisso de execuo e escrita em diretrios essencial para que se
possa garantir que os usurios possam ter acesso gravao no volume. No h motivo para se criar cotas de
armazenamento para um volume montado como apenas leitura ou montado em algum diretrio que no tenha
permisso de gravao.

18.1 Limites de cotas

Limite Soft
o primeiro limite a ser estabelecido para cota de usurios ou grupos. Quando o usurio chega a este
limite, ele passa a ficar em grace time, que o perodo de tolerncia dado ao usurio ou grupo para que eles
possam remover o contedo excedente e continuem tendo permisso de escrita no volume. Caso eles no o
faam durante este perodo, tero a permisso de escrita negada no volume.

Limite Hard
Este o ltimo limite de cotas possvel. Atingindo este nvel, o usurio vai ter a permisso de escrita no
volume negada automaticamente. Se o limite Soft for igual ao limite Hard, o primeiro vale como ltimo nvel de
cotas no volume.

18.2 Aplicao

Primeiramente, importante instalar os pacotes necessrios para administrao de cotas:

# apt-get install quota quotatool y

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 126
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Levando em considerao que j existe um sistema de arquivos ext3 criado e montado em /home, o
prximo passo ativar o uso de cotas para usurio e grupos neste volume. Isso possvel adicionando as
opes usrquota e grpquota (separadas por vrgula) no campo de opes de montagem do volume em
/etc/fstab:

# vim /etc/fstab

A habilitao de sistemas de cotas para usurios e grupos vai implicar na criao de 2 arquivos, que vo
funcionar como bancos de dados de cotas (aquota.user e aquota.group) na raiz do sistema de arquivos com
cota. Estes arquivos no podem ser apagados nem pelo usurio root.

ideal, para pleno funcionamento do sistema de cotas, que o sistema seja reiniciado aps a
configurao do arquivo /etc/fstab.

Aps este passo ter sido dado, o prximo editar as cotas:

# edquota

Edita cotas em volumes para usurios ou grupos.

Sintaxe:

# edquota <opo>

Opes:

-u : edita cotas de usurios.

-g : edita cotas de grupos.

-T : edita o grace time individual de usurio ou grupo.

-p : replica as cotas de um usurio ou grupo para outro(s).

Exemplos:

Aplicando cotas de 500MB soft e 600 hard para blocos, 150 soft e 200 hard para inodes para o usurio
user1 no volume /dev/sdb1:

# edquota u user1

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 127
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Replicando as cotas de user1 para user2, user3 e user4:

# edquota p user1 user{2..4}

Editando o grace time do usurio user2:

# edquota T user2

# repquota

Emite relatrio de cotas de usurios ou grupos.

Sintaxe:

# repquota <opo> <volume>

Opes:
-a : lista cotas de todos os volumes.

-u : se refere a cotas de usurios.

-g ; se refere a cotas de grupos.

-v : modo verbose.

Exemplos:

Emitindo relatrio de cotas de todos os volumes e usurios:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 128
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Deste relatrio pode-se chegar concluso de que o usurio user1, por ter criado 155 arquivos,
ultrapassou a sua cota soft de inodes, o que o deixa em perodo grace de 7 dias (padro), porm, sua cota de
blocos continua praticamente inalterada, pois 150 dos 155 arquivos so vazios, ou seja: no ocupam blocos mas
ocupam inodes.

# quotacheck

Verifica existncia sistemas de arquivos com cotas habilitadas e aplica configuraes de cotas j
definidas.

Sintaxe:

# quotacheck <opes> <volume>

Opes:

-a : aplica a todos os volumes montados (verifica /etc/mtab)

-f : fora a aplicao de novas cotas criadas.

-m : no tenta remontar sistemas de arquivos como read only.

-u : aplica cotas a usurios.

-g : aplica cotas a grupos.

-v : verbose.

Exemplo:

Aplicando cotas a todos os sistemas de arquivos com suporte a cotas para usurios:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 129
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# quotacheck aufmv

# quotaon

Ativa cotas em um volume especfico.

Sintaxe:

# quotaon <opo> <volume>

Exemplos:

Ativando cotas em /dev/sdb1:

# quotaon /dev/sdb1

Verificando o status das cotas n volume /dev/sdb1:

# quotaon p /dev/sdb1

# quotaoff

Desativa as cotas em sistemas de arquivos:

Sintaxe:

# quotaoff <opo> <volume>

Exemplos:

Desativando cotas em /dev/sdb1:

# quotaoff /dev/sdb1

Verificando status de cotas em /dev/sdb1:

# quotaoff p /dev/sdb1

$ quota

o nico comando de cota que o usurio comum pode executar. Ele emite um resumo da situao de
cotas do usurio.

Sintaxe:

$ quota <opes> <usurio/grupo>

Opes:

-u : emite relatrio de cotas de usurio.

-g : emite relatrio de cotas de grupo.

-s : modo mais legvel (mais humano).

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 130
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Exemplo:

Verificando a situao das cotas do usurio user1 no modo mais legvel possvel:

# quota us user1

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 131
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

19 GERENCIAMENTO DE PROCESSOS E INICIALIZAO

O administrador precisa ter muito conhecimento sobre este assunto antes de chegar a gerenciar algum
servidor Linux. O usurio root tem poderes ilimitados sobre o sistema e, por isso mesmo, ele tanto pode
executar uma operao de trmino de um processo de forma a no danificar os arquivos envolvidos no mesmo
como pode tambm o interromper de forma brusca e danificar um arquivo importante nesta ao apenas pelo
fato de no ter escolhido o sinal certo a envia para o processo. Pode o administrador tambm escolhe mal a
prioridade de execuo de um processo pesado e paralisar todo o sistema por causa disso. Justamente por esse
fato, que preciso dominar os conceitos e comandos que vo ser ministrados neste captulo.

PID
o Process ID, o nmero de identificao que cada processo recebe. O nico PID fixo existente o
PID do processo INIT, que o de n 1.

NICE NUMBERS
o nmero de prioridade de execuo de um processo. Se um processo executado com maior
prioridade, ele usa os melhores recursos de processamento para sua execuo, enquanto se for prioridade
baixa, ele depende que outros processo no estejam utilizando estes recursos para que ele tambm possa fazer
uso. OS NICE NUMBERS vo de -20 at 19, sendo a maior a prioridade negativa.

SINAIS DE PROCESSOS
Para saber o que se pode fazer com cada processo que est em execuo preciso entender os sinais
de processos.

Os mais importantes so:

1 - HUP ou SIGHUP : instrui o servio a reler o seu arquivo de configurao (operao de reload).

2 INT ou SIGINT : interrompe um processo em primeiro plano ( o mesmo que CTRL+C).

9 KILL ou SIGKILL : Interrompe bruscamente um processo. Este sinal deve ser utilizado em ltimo
caso, pois ele pode causar danos aos arquivos envolvidos no processo.

12 USR2 ou SIGUSR2 : interrompe processo do usurio fazendo logoff no mesmo.

15 TERM ou SIGTERM : enviado para todos os processos do sistema assim que ele entra em
desligamento. Este sinal fecha todos os arquivos abertos do processo antes de termin-lo, no causando
nenhum tipo de dano a eles. Este o sinal padro da maioria dos comandos e programas que terminam
processos justamente pela sua elegncia.

18 CONT ou SIGCONT : continua processos que foram parados pelo sinal 20, enviando-os para
background.

20 TSTP ou SIGTSTP : pra processos de forma que eles possam ser reiniciados depois pelo sinal 18.
o mesmo que a combinao de teclas CTRL + Z.

RUNLEVELS

Um Runlevel o estado em que se encontra o sistema.

0 sistema em desligamento.

1 modo single user. Ideal para modo de manuteno do sistema, pois apenas uma instncia de
logon e terminal sero permitidos.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 132
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

2 o Runlevel padro do sistema. Este o nvel multi-user, onde mltiplos logons podem ser
efetuados e todos os terminais podem ser utilizados.

3 o mesmo que o Runlevel 2.

4 em desuso.

5 GUI. Interface grfica.

6 sistema em reinicializao.

19.1 Comandos de gerenciamento de processos

# ps

Exibe os processos do sistema.

Sintaxe:

# ps <opes>

Opes:

-a : mostra processos de todos os terminais.

-x : mostra processos que no precisam de terminal de controle.

-u : exibe o nome do usurio responsvel pelo processo ao lado do mesmo.

-U : exibe apenas processos de um usurio especfico.

-f : modo floresta. Exibe processos pai e processos filho.

-w : exibe na linha de baixo o contedo que no coube na linha de cima.

Exemplos:

Exibindo os processos de todos os terminais, incluindo aqueles que no usam terminal, com o nome de
cada usurio responsvel pelo processo:

# ps aux

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 133
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Os campos mais importantes desta sada de comando so:

%CPU percentual de CPU consumido com o processo.

%MEM percentual de memria consumida no processo.

STAT Status do processo.


R : em execuo.
S : aguardando outro evento para continuao.
D : dormindo permanentemente.
T : parado para que possa ser reiniciado depois.
X : morto.
Z : processo zumbi. Foi terminado mais ainda procurado por seu PPID.
< : maior prioridade.
N : menu prioridade.
+ : em primeiro plano.
s : lder de sesso.
l : multi-thread.

# top

Exibe e gerencia processos. Mostra os processos mais atuais no topo.

O campo NI, que mostrado, se refere ao Nice Number do processo. O Nice number padro para
processos iniciados o 0, ou seja: se um processo iniciado sem que seja especificado o seu Nice Number, ele,
automaticamente, 0.

# kill

Gerencia os processos pelo PID deles.

Sintaxe:

# kill -<sinal> <PID>

Exemplos:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 134
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Exibindo todos os sinais que o sistema pode usar:

# kill l

Terminando o processo de PID 913 com o sinal 15(TERM):

# kill -15 913

Ou

# kill TERM 913

Ou

# kill 913

Terminando abruptamente o processo de PID 913 com o sinal 9(KILL):

# kill -9 913

ou

# kill KILL 913

Deixando o processo de PID 913 pronto para ir para background:

# kill -20 913

Ou

# kill TSTP 913

Continuando o mesmo processo em background:

# kill -18 913

Ou

# kill CONT 913

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 135
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Como pudemos perceber acima, o comando kill no serve apenas para matar processos, como o
prprio nome sugere. Ele um gerenciador de processos que envia o sinal necessrio para eles via linha de
comando. Outro detalhe importante que o sinal padro do comando kill 15, pois o sinal mais aconselhvel
para terminar uma tarefa, ou seja: terminar um processo com o comando kill sem especificar qualquer
argumento leva-o a terminar o processo com o sinal 15.

O prximo comando tambm gerencia processos, s que pelo nome, ao invs de pelo PID.

# killall

Gerencia processos pelos nomes deles.

Sintaxe:

# killall -<sinal> <nome_do_processo>

Exemplos:

Listando os nomes de todos os sinais disponveis:

# killall -l

Terminando o processo executado pelo programa dd com o sinal 15:

# killall -15 dd

Ou

# killall TERM dd

Ou

# killall dd

Encerrando abruptamente o processo executado pelo servidor X com o sinal 9:

# killall -9 Xorg

Ou

# killall KILL Xorg

# killall5

Termina todos os processos em execuo.

Sintaxe:

# killall5

Ou

# killall5 o <PID> (para fazer um PID ser omitido).

# fuser

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 136
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Fecha processos e seus arquivos.

Sintaxe:

# fuser <opes> <arquivo>

Opes:

-k : envia o sinal -9 ao processo.

-M : se refere a um ponto de montagem a ser fechado.

-v : verbose.

-i : modo interativo.

Exemplo:

Fechando abruptamente o terminal remoto pts/0:

# fuser k /dev/pts/0

Um processo pode ser enviado para background de vrias formas diferentes, uma delas executar o
comando sucedido por &. Ele receber um ID, que ser usado para manipul-lo em background. Um exemplo
disso a linha de comando abaixo, que envia uma verificao de badblocks para segundo plano:

# badblocks /dev/sda5 &

# bg

Envia um processo parado com sinal 20 (CTRL+Z) para background.

Sintaxe:

# bg <num>

# fg

Traz um processo de volta para foreground (primeiro plano).

Sintaxe:

# fg <num>

# jobs

Mostra os processos que esto em background no terminal atual.

# nohup

Executa processos em background, tornando-os insensveis a logout da sesso de usurio. A sada do


comando ser enviada para o arquivo nohup.out.

Sintaxe:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 137
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# nohup <comando>

Exemplo:

Executando o backup dos logs do sistema com o nohup:

# nohup tar czf /root/logs.tgz /var/log

# nice

Executa um processo com prioridade especfica.

Sintaxe:

# nice -<Nice Number> <comando>

Exemplos:

Clonando o disco /dev/sda em /dev/sdb com prioridade -15:

# nice --15 dd if=/dev/sda of=/dev/sdb

Fazendo backup compactado do diretrio /home com prioridade 2:

# nice -2 tar cjvf /root/backup_users.tar.bz2 /home

Repare que o primeiro - faz parte da sintaxe do comando, portanto, no tem nada a ver com o Nice
Number a ser aplicado.

Devemos sempre lembrar tambm de que dar prioridade alta a um processo significa usar melhores
recursos de processamento do que se ele estivesse sendo executado em prioridade 0.

# renice

Modifica a prioridade de um processo j em execuo.

Sintaxe:

# renice <Nice Number> <PID>

Exemplos:

Mudando a prioridade do processo de PID 1811 para -16:

# renice -16 1811

Mudando para 4 a prioridade do processo de PID 1902:

# renice 4 1902

Mudando a prioridade de todos os processos do usurio operador para -17:

# renice -17 u operador

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 138
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

19.2 Processo INIT

O processo INIT o primeiro a ser executado assim que o sistema inicializado. A cadeia de boot em
Linux funciona da seguinte forma: o boot loader entrega o boot para a imagem do kernel, que chama o
processo INIT para inicializar todos os daemons (servios/sevidores) referentes ao Runlevel escolhido para boot
que so executados na inicializao, como por exemplo, servio de rede e servidor Web. Para executar estes
servios, o processo INIT usa os diretrios abaixo:

/etc/init.d o diretrio que contm os scripts que gerenciam os daemons do processo INIT no
Debian (e distribuies afins). Para que estes scripts sejam executados no boot, preciso que eles tenham link
simblico para os diretrios abaixo:

/etc/rc0.d diretrio de links simblicos para scripts de Runlevel 0.

/etc/rc1.d diretrio de links simblicos para scripts de Runlevel 1.

/etc/rc2.d diretrio de links simblicos para scripts de Runlevel 2 (este o Runlevel padro dos
sistemas GNU/Linux em geral).

/etc/rc3.d diretrio de links simblicos para scripts de Runlevel 3.

/etc/rc5.d diretrio de links simblicos para scripts de Runlevel 5.

/etc/rc6.d diretrio de links simblicos para scripts de Runlevel 6.

Em Red Hat o padro muda um pouco, na verdade, o que passa a acontecer que os diretrios rc e o
init.d ficam como subdiretrio do diretrio /etc/rc.d.

Exemplos:

/etc/rc.d/rc2.d diretrio de links simblicos de scripts de Runlevel 2.

/etc/rc.d/init.d diretrios dos scripts de gerenciamento dos daemons.

Obs: importante ressaltar que existe no Red Hat o link simblico /etc/init.d, que aponta para o
diretrio /etc/rc.d/init.d.

O gerenciamento desses daemons feito com os comandos abaixo:

No Debian:

# /etc/init.d/<servio> <ao>

Ou

# invoke-rc.d <servio> <ao>

No Red Hat:

# /etc/rc.d/init.d/<servio> <ao>

Ou

# service <servio> <ao>

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 139
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Aes:

start: inicia um daemon.


restart: reinicia um daemon.
reload : apenas rel o arquivo de configurao do daemon.
force-reload : fora esta releitura do arquivo de configurao.

Exemplos:

Reiniciando o servio de rede no Debian:

# /etc/init.d/networking restart

Ou

# invoke-rc.d networking restart

Relendo o arquivo de configurao do samba para aplicar as alteraes que foram feitas em um
servidor Red Hat:

# service smbd reload

Definir em qual Runlevel um daemon vai ser executado ou terminado uma tarefa que pode ser
executada tanto criando links manualmente dos scripts do diretrio init.d para o rc correspondente quanto
com o uso dos comandos abaixo:

# update-rc.d

Cria ou remove uma execuo de script em um Runlevel especfico. Ele cria os links simblicos
necessrios para que o daemon possa iniciar no Runlevel desejado.

Sintaxe:

# update-rc.d <daemon> <enable/disable/remove> <runlevel>

Exemplos:

Definindo que daemon winbind seja executado toda vez que o sistema iniciar em Runlevel 2:

# update-rc.d winbind enable 2

Removendo foradamente os links do daemon rsync de todos os diretrios rc:

# update-rc.d f rsync remove

# chkconfig

Faz o mesmo que o comando update-rc.d, porm este no padro da distro Debian e sim do Red Hat:

Sintaxe:

# chkconfig <opo> <daemon> <runlevels> <on/off>

Opes:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 140
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

--list : lista em quais Runlevels o daemon vai ser executado.


--level : especifica o Runlevel.
on : ativa execuo do daemon em um Runlevel.
off: desativa execuo do daemon em um Runlevel.

Exemplos:

Exibindo o status de todos os scripts de daemons no processo INIT:

# chkconfig list

Ativando o daemon apache2 nos runlevels 2345:

# chkconfig --level 2345 apache2 on

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 141
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O Runlevel padro de um sistema pode ser modificado em um arquivo chamado /etc/inittab. preciso
tocar cuidado ao faz-lo, pois sistema tiver como Runlevel padro o Runlevel 6, por exemplo, ele ficar em um
constante loop de reinicializao, que s poder ser resolvido com o incio forado do sistema em outro
Runlevel, processo que s poderia ser feito no arquivo de configurao do boot loader.

A estrutura deste arquivo constiuda da seguinte forma:

<ID>:<RUNLEVELS>:<AO>:<COMANDOS>

As aes mais importantes so:

Initdefault : define qual vai ser o runlevel padro do sistema.

sysinit : define qual o script principal de inicializao do processo INIT. Para Red Hat este script o
/etc/rc.d/rc.sysinit, enquanto para Debian este script o /etc/init.d/rcS, que, na verdade, apenas aponta para
outro script (/etc/init.d/rc). Este script o responsvel pela execuo dos links simblicos que apontam para o
diretrio /etc/init.d ou /etc/rc.d/init (Red Hat).

wait : define que um programa inicia ou termina sempre aps o de ordem anterior ser executado.

respawn : indica que quando terminar a execuo de um processo, o mesmo ser iniciado novamente.

ctrlaltdel : define a qual comando a combinao de teclas CTRL+ALT+DEL ir corresponder.

# runlevel

Exibe o Runlevel atual do sistema.

# init

Troca o Runlevel do sistema.

Sintaxe:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 142
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# init <runlevel>

Exemplo:

Mudando o Runlevel atual para 1:

# init 1

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 143
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

20 KERNEL

Como visto de maneira resumida na introduo deste material, o Kernel o responsvel por suportar e
interagir com os recursos lgicos e fsicos que podem ser oferecidos pelo sistema. Uma placa de rede Wireless
s funciona se o Kernel der suporte a ela, assim como tambm o protocolo ipv6 s funciona se o Kernel o
suportar. Para saber das modificaes que esto sendo feitas no cdigo-fonte do Kernel, basta observar a seo
de Changelogs do site www.kernel.org.
Antes de configurar, compilar e instalar um novo Kernel, preciso saber que tipo de Kernel o
administrador vai querer utilizar. Os tipos so:

Kernel Monoltico
Este tipo de kernel deixa junto com a imagem de boot do Kernel todo e qualquer suporte
implementado a qualquer tipo de recurso, podendo tornar a inicializao do sistema um pouco mais demorada.

Kernel Modular
Neste caso em especfico, uma grande quantidade de recursos fica em mdulos, que so instalados a
parte e no precisam serem carregados juntos com o sistema. Neste caso, h mais facilidade em gerenciar
recursos, uma vez que, se no quiser um recurso, basta adicion-lo a uma blacklist de mdulos.
importante destacar tambm que nem todos os recursos podem ser colocados em mdulos, alguns
tm que ser built-in mesmo, por exigncia do Kernel, sendo assim, nenhum Kernel totalmente modular.

Verses do Kernel
A sintaxe de verso do Kernel :

<verso maior>. <verso menor> .<correo/patch/atualizao>.<verso extra>

Antes do Kernel 2.4 ser lanado, as verses aumentavam de forma que uma verso menor que fosse
mpar representava um Kernel instvel ainda, enquanto uma verso menor que fosse par significava em Kernel
estvel. Hoje isso no mais uma realidade, uma vez que Linus Torvalds decidiu que as alteraes seriam feitas
no terceiro campo. A verso menor s ser alterada se for uma mudana muito brusca na estrutura do Kernel.

Exemplo:

Uma verso recompilada para dar suporte a Paravirtualizao, no Kernel 2.6.35, teria a nomenclatura:
2.6.35-Virt

20.1 Compilao de Kernel

A possibilidade de download, reconfigurao e reinstalao de um novo Kernel fascina os


administradores de sistemas Linux ao redor do mundo. Os motivos pelos quais um administrador pode querer
recompilar um Kernel so muito simples de se explicar: obter melhor desempenho de recursos de hardware do
sistema, como processador, memria RAM, placas de vdeo e rede, por exemplo; ter que habilitar suporte a
recursos adicionais, como paravirtualizao e PAE (para sistemas de 32 bits poderem reconhecer memrias
RAM de mais de 4GB); personalizar uma distro para que ela possa ter um fim especfico, como uma distro
exclusiva para Firewall, como o SmothWall, por exemplo, que tem suporte a muitos adaptadores de rede mas
no suporta placas aceleradoras grficas funcionando em modo pleno, j que o Kernel desta distro est
compilad para ser um Firewall e no uma estao de jogos, ou de edio grfica.

O procedimento para a sua recompilao consiste em algumas etapas:

Configurao
Nesta etapa ocorre a escolha de quais recursos sero instalados. preciso entender muito bem de
recursos como rede, discos, dispositivos e recursos de hardware, redes e de sistemas de arquivos, pois as

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 144
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

opes de configurao do Kernel so muitas e escolher a opo errada pode custar o no reconhecimento de
alguns recursos desejados.

Compilao
A compilao de um software qualquer consiste em converter os cdigos-fonte dele para arquivos
binrios (linguagem de mquina). Numa compilao de Kernel no diferente, uma vez que existe a
necessidade de os mdulos e recursos Built-in interagirem com os hardwares de sistema.

Instalao
O conceito de instalao a cpia de binrios do um programa para um diretrio de instalao.

Procedimentos para compilao de instalao de um novo Kernel

Para este procedimento, vamos utilizar a verso 2.6.35.4 do Kernel obtida em www.kernel.org.

Descompactar o diretrio de cdigo-fonte do Kernel em /usr/src:

# tar xjf linux-2.6.35.4.tar.bz2 C /usr/src

Criar um link simblico do diretrio de compilao (apenas para facilitar o procedimento):

# ln s /usr/src/linux-2.6.35.4 /usr/src/Linux

Instalar programas necessrios, entrar no diretrio do cdigo-fonte e comear a configurao do


Kernel:

# apt-get install libncurses5-dev gcc build-essential make y

# cd /usr/src/linux

# make menuconfig

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 145
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Os mtodos de configurao de Kernel so os seguintes:

# make config : mtodo de configurao em modo texto. No tem menu nenhum e confirma opo
por opo, exigindo que o usurio diga obrigatoriamente a qual recurso ele no quer dar suporte.

# make menuconfig : esta opo conta com um menu para terminal que dinamiza muito mais a
escolha das opes, uma vez que o administrador s precisa configurar os recursos que ele quer.

# make oldconfig : restaura a configurao de um arquivo .config j pronto.

# make xconfig : configurao atravs de interface grfica do servidor X.

importante, antes de fazer a configurao do Kernel, definir qual vai ser a verso atual do Kernel que
est sendo reconfigurado, isto pode ser feito dentro do arquivo Makefile, como no exemplo da figura a seguir:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 146
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Depois de configurada a verso do Kernel, vamos partir para a configurao do mesmo. A figura abaixo
de uma configurao feita com o comando # make menuconfig. Aps a concluso deste passo, Serpa gerado
um arquivo chamado .config, que ir conter as escolhas feitas na configurao realizada com o comando em
questo.
Os recursos que podem ser adicionados como Built-in ou como Modulares esto com < >,
enquanto aqueles que s podem ser implementados em Built-in esto com [ ].

Resolvendo dependncias antes de comear a compilao:

# make dep

No caso abaixo, todas as dependncias esto satisfeitas, tornando assim o uso de make dep
desnecessrio.

Removendo arquivos de compilaes anteriores:

# make clean

Criando a imagem de boot do Kernel no diretrio arch/<arquitetura_do_kernel>/boot:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 147
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# make bzImage

importante lembrar que at este momento nenhuma ao foi tomada em relao aos mdulos, j
que a imagem de boot totalmente independente dos mdulos do Kernel.

Este passo ir compilar a imagem do Kernel e criar um arquivo de imagem desta imagem, assim, o
gerenciador de boot poder executar o boot por ela.

No caso, # make bzImage usa o agente compactador BZIP2 para comprimir a imagem, esta imagem
tambm pode ser carregada em memria estendida, enquanto # make zImage usa o agente COMPRESS e s
pode compactar imagens pequenas de Kernel (at 500KB). justamente por causa desta diferena que em
grande maioria das compilaes escolhido o mtodo # make bzImage.

Compilando os mdulos:

# make modules

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 148
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Instalando os mdulos em /lib/modules/<verso do kernel>:

# make modules_install

Criando uma imagem INITRD dos mdulos instalados:

# cd /lib/modules

# mkinitramfs -o /boot/initrd.img-2.6.35-VIRTUAL 2.6.35-VIRTUAL

Os mdulos instalados no so carregados durante o boot, a no ser que eles sejam declarados no
arquivo /etc/modules ou que estejam dentro de uma imagem INITRD e que o boot loader aponte para ela.

Copiar a imagem do Kernel para o diretrio de boot:

# cp -p arch/<arquitetura do kernel>/boot/bzImage /boot/vmlinuz-2.6.35-VIRTUAL

Para manter o padro de nomenclatura, deve-se copiar a imagem do Kernel para /boot com o nome de
vmlinuz-2.6.35-VIRTUAL.

Atualizar o boot loader GRUB:

# update-grub

Reiniciar o sistema:

# shutdown -r now

20.2 Comandos de Kernel

# uname

Exibe informaes sobre o Kernel em execuo.

Opes:
-a : exibe todas as informaes sobre o Kernel instalado.
-n : exibe o hostname.
-r : exibe a verso do Kernel instalado.
-m : exibe a arquitetura do Kernel instalado.
-s : exibe o nome do Kernel instalado.
-p : exibe o processador do sistema.
-o : nome do sistema operacional.

# lsmod

Exibe mdulos que foram carregados

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 149
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# modinfo

Exibe informaes detalhadas sobre um mdulo especfico, como informaes sobre autoria, verso,
arquitetura, dependncias, etc.

Sintaxe:

# modinfo <mdulo>

Exemplo:

Obtendo informaes sobre o mdulo iptable_nat:

# modinfo iptable_nat

# depmod

Atualiza o aquivo de dependncias de mdulos em /lib/modules/<verso>/modules.dep com novos


mdulos instalados.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 150
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# modprobe

Insere os mdulos e suas depoendncias no Kernel em execuo. Tambm tem opes de consulta e
excluso de mdulos.

Sintaxe:

# modprobe <opes> <mdulo>

Opes:

-l : lista localizao dos mdulos.


-t : indica o tipo dos mdulos (seo de mdulos).

Sees:

arch : mdulos de arquitetura do Kernel.


crypto : mdulos de criptografia.
drivers: mdulos de drivers de dispositivos de hardware.
net: mdulos de dispositivos de rede.
sound: mdulos de recursos de som.
fs : mdulos de filesystems.
lib : mdulos de bibliotecas.

-r : remove um mdulo.

Exemplos:

Inserindo o mdulo tun no Kernel:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 151
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# modprobe tun

Removendo o mdulo tun do Kernel:

# modprobe -r tun

Mostrando a localizao do arquivo de mdulo do mdulo ip_conntrack:

# modprobe -l ip_conntrack

Mostrando os 10 primeiros arquivos de mdulos da seo de drivers de dispositivos de rede:

# modprobe -l -t net | head -10

# insmod

Isere um mdulo no Kernel em execuo, mas no resolve dependncias de mdulos.

Sintaxe:

# insmod <mdulo>

# rmmod

Remove mdulos de um Kernel em execuo.

Sintaxe:

# rmmod <opo> <mdulo>

Opes:

-a : remove todos os mdulos que no esto sendo usados.


-f : fora a remoo do mdulo.
-v : verbose.

20.3 - Comandos de Hardware

# lspci

Mostra os dispositivos de hardware que utilizam o barramento PCI.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 152
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# lsusb

Mostra todos os dispositivos conectados porta USB.

# lshw

Este programa exibe toda a configurao de Hardware do sistema.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 153
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 154
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

21 GERENCIADORES DE BOOT

Os carregadores de boot so pea fundamental em uma configurao de sevidor Linux, visto que so
eles que cuidam de tornar a imagem do Kernel inicializvel e dizer qual a partio ser usada como sistema raiz.
Os dois gerenciadores de boot padres do Linux so o GRUB e o LILO, o primeiro amplamente utilizado pelos
sistemas operacionais e o segundo est subutilizado pela maioria das distribuies (est disponvel na maioria
dos repositriosmas no o padro). Uma das nicas excees o Slackware, que at hoje usa este boot
loader.
Independente do boot loader, importante saber que ele pode ser instalado em 2 lugares diferentes:

Na partio ou no MBR (Master Boot Recording)?

Os primeiros 512 bytes do HD so destinados a um setor especfico chamado Master Boot Recording,
que onde se encontra, geralmente, o boot loader de um sistema operacional qualquer. No caso de GRUB e
LILO, gerenciadores de boot do Linux, o administrador ainda tem como escolher onde eles sero instalados.
Quando apenas um sistema operacional Linux for instalado no HD, o ideal que ele seja instalado no MBR.
Caso exista algum outro sistema operacional derenciando o boot pelo HD, o administrador pode optar
por instalar o boot loader em uma partio, e no no disco, lembrando que essa no uma prtica comum em
servidores, pois no h razo para dual boot em servidor, j que ele foi concebido para prover alta
disponibilidade de servio.

21.1 LILO (Linux Loader)

Gerenciador de boot mais antigo do Linux, o LILO est em crescente desuso entre as distribuies em
geral, salvo algumas excees, como o Slackware, por exemplo.

Por no ser o boot loader padro do Debian, o LILO precisa ser instalado no mesmo:

# apt-get install lilo y

O arquivo de configurao do LILO o /etc/lilo.conf, para gerar o arquivo, o administrador pode


escolher editar linha por linha dele ou digitar o comando liloconfig:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 155
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# liloconfig

Neste exemplo acima, o LILO est sendo instalado no MBR (HD /dev/sda). Este comando apenas cria o
aquivo de configurao, mas no instala o LILO MBR, para tal, o administrador precisa verificar a sintaxe do
arquivo que foi gerado e depois instalar o lilo onde ele foi escolhido para ser instalado:

# lilo

Uma das vantagens do LILO em termos de segurana que ele depende de instalao manual toda vez
que modificado, evitando assim que alguns acidentes, como edio errada do arquivo, por exemplo, possam
causar o constrangimento de o sistema ficar sem inicializao.

O arquivo de configurao do LILO (/etc/lilo.conf) divido em duas sees: global e image. A primeira
vai tratar de assuntos genricos do boot loader, enquanto a segunda vai tratar de questes relacionadas s
opes de boot pela imagem do Kernel.

Opes da seo global do arquivo:

boot : configura o disco ou partio onde vai ser instalado o LILO.

delay : tempo de espera por opo do usurio at que seja escolhida a primera imagem de boot.

timeout : tecnicamente, faz a mesma coisa que a opo acima. Detalhe: a unidade de medida dos dois
o dcimo de segundo, portanto, configurar timeout=100 significa esperar 10 segundos at que o usurio
decida por qual imagem ele vai inicializar, no ocorrendo isso, ele inicia com a primeira.

prompt : para que o prompt boot: seja exibido, preciso que seja utilizada esta opo.

install : tipo de interface do menu do LILO. As opes podem ser:


text : boot em modo texto simples.
menu : menu bsico.
bmp : imagem bitmap.

password : define uma senha de boot para o LILO.

vga : resoluo de vdeo do terminal, elas so representadas por cdigos. Os mais importantes so:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 156
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

normal : 640x480
788 : 800x600
791 : 1024x768
794 : 1280x1024

map : especifica o caminho do mapa de dispositivos.

Opes da seo image do arquivo:

label : especifica um rtulo para a opo de boot.


initrd : aponta para o caminho da imagem dos mdulos que sero carregados no boot aps a imagem
do Kernel ser descompactada.
read-only : configura descompactao do Kernel no boot como apenas leitura.
read-write : configura descompactao do Kernel no boot como leitura e gravao.
other : aponta para outro sistema operacional como uma das opes de boot (muito utilizado em dual-
boot com Windows).

Exemplo:

other=/dev/sda7
label=Windows
table=/dev/sda

table : aponta para o disco onde se encontra a tabela de parties do sistema operacional estrangeiro.

Toda vez que alguma mudana for feita em /etc/lilo.conf, o LILO deve ser reinstalado e o sistema deve
ser reiniciado:

# lilo
# shutdown r now

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 157
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

21.2 GRUB (Gran Unified Boot Loader)

O GRUB o boot loader usado pela maioria das distribuies para desktops e servers justamente pelo
fato de ele ser um gerenciador dinmico (no precisa ser reinstalado aps cada mudana em seu arquivo de
configurao) e cheio de recursos, como boot por diversos sistemas operacionais e filesystems diferentes, por
discos de qualquer tipo (inclusive ISCSI), por mltiplas imagens, por ter um menu que disponibiliza o modo de
comando (para emergncias) e a possibilidade de criptografao de senha se boot.

O grub tambm pode ser instalado no MBR ou na partio pelo comando grub-install.

Exemplo:

Instalando o GRUB no disco /dev/sdc:

# grub-install /dev/sdc

Os arquivos dos quais o GRUB precisa esto em /boot (imagem do Kernel, initrd, mapas de dispositivos,
etc), portanto, em cada alterao de contedo deste diretrio, como em uma instalao de um novo Kernel,
no necessrio editar seu arquivo de configurao em /boot/grub/menu.lst, basta executar o comando
update-grub.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 158
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O arquivo de configurao do GRUB tem, em tese, opes parecidas com as do arquivo de


configurao do LILO, o que difere bastante a sintaxe dessas opes. Os campos mais importantes desse
arquivo so:

default : configura qual vai ser a imagem de boot padro. Geralmente este nmero 1.

timeout : configura o tempo de espera (em segundos) por uma escolha de boot por parte do usurio.
Se esta escolha no for feita, o boot loader ir iniciar pela primeira imagem de boot que estiver listada no
menu.
color : permite escolher cores para o menu do GRUB.

password : especifica uma senha para o caso de o administrador tantar acesso de edio pelo menu do
GRUB. Esta uma tima prtica de segurana, principalmente se o acesso fsico ao servidor por mltiplos
usurios inevitvel.

hiddenmenu : esta opo esconde o menu do GRUB at que o usurio presione <ESC>, dentro do
limite de tempo (timeout). Caso isto no seja feito, o boot ser feito com a imagem escolhida na opo default.

root : especifica por qual partio ser o sistema raiz do sistema.

makeactive : aplicar o flag inicializvel partio.

chainloader : entrega a responsabilidade de iniciar um outro sistema operacional ao seu boot loader
instalado. Esta opo muito utilizada em dual-boots Linux/Windows.

kernel : configuraes de boot pela imagem do Kernel. Nesta seo, configurada a resoluo de
vdeo, seguindo o padro vga=<cdigo>, sendo os mesmos cdigos que so utilizados no LILO. Tambm, e
principalmente, referenciado o local da imagem de boot do Kernel, se o mesmo vai ser iniciado em ro(read
only) ou rw(read and write). Tambm podem ser passados alguns parmetros especiais, como o boot forado
por um runlevel especfico e a inicializao direta pelo Shell BASH, para caso de ter que pular o processo INIT
e fazer login como root (sem senha alguma).

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 159
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

title : especifica um rtulo para a opo de boot.

initrd ; aponta o caminho da imagem INITRD que vai carregar os mdulos na inicializao do sistema.
Outro detalhe a ser observado a declarao de nomenclarura de discos e parties no GRUB bem
particular, tornando-se uma preocupao para quem no domina o assunto e obrigado a configur-lo. Esta
nomenclatura segue a seguinte sintaxe, com a contagem de discos comeando de zero:

(HD<num_disco>,<num_part>)

Exemplos:

/dev/sda (HD0)
/dev/sda2 (HD0,1)
/dev/sdb5 (HD1,4)
/dev/sdb7 (HD1,6)

Criando e usando a criptografia no GRUB

Como foi dito anteriormente, a passagem de parmetros no menu do GRUB deve ser controlada ao
mximo para que no aconteam desastres, como um usurio comum com acesso fsico ao servidor conseguir
entrar no sistema direto pelo Shell Bash e no precisar de senha de root para acesso ao terminal. Uma grande
estratgia de proteo contra esta ameaa de segurana criar uma senha para passagens de parmetros no
boot do GRUB. Para isso, vamos criar uma senha primeiro e redirecionar a sua criotografia para o arquivo se
configurao de boot:

# grub-md5-crypt | tee a /boot/grub/menu.lst

Dentro do arquivo menu.lst, onde est a criptografia, a sintaxe para configurar este bloqueio deve
estar antes da primeira opo de boot se seguinte forma:

Lock

passwd --md5 <chave criptografada>

Se, aps o sistema reiniciado o usurio quiser editar o menu do GRUB, esta senha criptografada ser
pedida a ele para que o procedimento possa ser realizado.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 160
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

21.3 GRUB2

O GNU GRUB2 derivado de GRUB, the Grand Unified Bootloader, que foi originalmente concebido e
implementado por Erich Stefan Boleyn.

Esta atualmente em diversas distribuies GNU/Linux. As melhorias em relao ao GRUB incluem:


- apoio de scripts;
- mdulo de carregamento dinmico;
- modo de recuperao;
- menus personalizados;
- temas;
- Entre outras funcionalidades.
Formato
No antigo GRUB, os arquivos ficam localizados em /boot/grub/, inclusive o arquivo menu.lst que lido
durante a inicializao, sendo exibido ao usurio na forma de menu do GRUB.

O Grub2 desmembra em uma nova hierarquia de arquivos e diretrios:

/boot/grub/grub.cfg Este o principal arquivo de configurao que substitui o menu.lst, e o mesmo


no pode ser editado diretamente.

Por padro, sempre que o comando update-grub executado, este arquivo refeito como somente
leitura. Isto porque a inteno que o arquivo no seja editado manualmente. O usurio tambm ver uma
infinidade de arquivos *. mod na pasta /boot/grub. Esses arquivos so de natureza modular do GRUB 2 e so
carregados pelo mesmo durante a inicializao.

/etc/grub.d/ Este novo diretrio contm os scripts do GRUB. Esses scripts so blocos de construo a
partir do qual o arquivo grub.cfg construdo. Arquivos com numeral no incio so executados primeiro
comeando pelo menor, exemplo: o 10_linux executado antes do 20_mentest, que executado antes do
40_custom. Entradas personalizadas podem se criadas no arquivo 40_custom ou num outro recm-criado.

/etc/default/grub Este arquivo contm as configuraes do menu do GRUB que so lidos pelos scripts
do GRUB e escritos em grub.cfg. a famosa parte de personalizao do GRUB.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 161
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

22 COMPILAO DE PACOTES E BIBLIOTECAS

A instalao de alguns pacotes pode ser feita tambm atravs de seu cdigo-fonte disponibilizado em
alguma mdia de download. Este cdigo-fonte geralmente vem compactado no formato .tar.gz (ou .tgz, que d
no mesmo) ou em formato .tar.bz2 e modo mais open-source possvel de instalao de pacote, visto que o
cdigo-fonte a prpria linguagem utilizada para a construo dos programas que integram o pacote a ser
instalado.

Compilao

O computador trabalha com interpretao de linguagem binria (zeros e uns) mas os programas
so construdos em linguagens mais compreensveis para seres humanos: as linguagens de programao (C, C#,
C++, Java, Shell Script, etc). Por este motivo que, depois antes de ser instalado, um programa tem que ser
compilado para linguagem binria, para que ele possa ser interpretado pelo computador. Quando este pacote
vem em formato .deb ou .rpm, ele j vem pr-compilado, s cabendo aos gerenciadores de pacote instal-lo
(ou seja: copi-lo para os diretrios que so destinos de instalao).

Para que um pacote possa ser comipilado, necessrio um compilador de cdigo fonte, portanto, deve
ser a primeira atitude a ser tomada pelo administrador instalar todos os softwares necessrios para este
procedimento:

# apt-get install make gcc libncurses5 y

Tendo em mos o arquivo de pacote, o prximo passo descompact-lo, levando em considerao


que o nome do arquivo aalib-1.4rc5.tar.gz :

# tar -xzvf aalib-1.4rc5.tar.gz

Todos os outros passos tm que ser executados de dentro do diretrio do cdigo-fonte, dentro dele
estar o arquivo Makefile assim que ele for criado por um script quase que genrico para todas as compilaes
de pacotes, o configure, que tambm fica dentro do diretrio do cdigo-fonte:

Executando o script configure:

# ./configure

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 162
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O arquivo Makefile possui alguns campos que devem ser observados primordialmente:

prefix : o local para onde vo ser copiados os arquivos todos os arquivos de instalao. A maioria dos
pacotes tgz utilizam /usr/local mas este diretrio pode ser outro, se o administrador modificar este campo ou
executar o script configura coma s opes:

# ./configure --prefix=<diretrio>

bindir : indica qual ser o diretrio de arquivos binrios comum a todos os usurios.

sbindir : indica qual ser o diretrio de arquivos binrios de superusurios.

libdir : diretrio de bibliotecas do pacote.

mandir : diretrio de manuais do comando man.

infodir : diretrio de manuais do comando info.

sysconfdir : diretrio de arquivos de configurao do pacote.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 163
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O prximo passo a compilao do cdigo-fonte:

# make

Agora, a instalao propriamente dita:

# make install

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 164
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Aps executada a instalao, o administrador deve se preocupar em saber se os comandos e


bibliotecas relativas ao pacote esto no path do usurio. Em relao aos binrios, s observar o valor da
varivel PATH, se os diretrios de binrios estiverem l, o prximo passo ser verificar se no path de bibliotecas
est o diretrio de biliotecas do pacote. O aquivo de configurao de paths de bibliotecas o /etc/ld.so.conf,
porm, o que ele faz apenas um include para o diretrio /etc/ld.so.conf.d/, onde esto os arquivos de
configurao individuais de path com extenso. conf, sendo assim, todo arquivo com esta extenso dentro
desse diretrio ser um arquivo de configurao de path de biblioteca, basta incluir em seu interior o caminho
de path desejado.

# ldconfig

Este comando aplica as modificaes feitas em todos os arquivos de configurao de paths. Ele grava
estas mudanas em /etc/ld.so.cache, que o aquivo que armazena estas informaes de busca.

# ldd <programa>

Lista de quais bibliotecas compartilhadas pelo sistema um programa depende, geralmente estas
bibliotecas estaro em /lib, pois este o diretrio de bibliotecas do sistema.

O resultado deste comando utilizado contra o binrio /usr/local/bin/aafire o da figura abaixo:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 165
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

23 SHELL SCRIPT

A linguagem de programao Shell um kit de ferramentas versteis e de grande utilidade para o


administrador, pois esta linguagem utiliza como interpretador de comando o prprio Shell do sistema e, sendo
assim, pode executar todos os comandos de um terminal do Linux ou do Unix e ainda mais as suas prprias
estruturas de anlises lgicas, seus comandos prprios, interfaces grficas, etc. Estas caractersticas todas
fazem de um programa de Shell uma parte integrante do prprio sistema em si, uma vez que diversas rotinas
administrativas podem ser interfaceadas por ele, como backups, regras de firewall, criao e administrao de
usurios em demanda, etc. Enfim, o Shell Script totalmente aplicvel a sistema.

Antes de produzir o primeiro script, algumas ferramentas devem ser conhecidas:

23.1 - Aliases

Os aliases substituem comandos ou parte de linhas de comandos. Eles so armazenados em memria e


removidos dela no momento em que o usurio no est mais usando o terminal (logoff), por causa disto, para
que haja persistncia dos aliases, preciso declar-los em algum arquivo de script de login de usurio, como foi
visto em captulo anterior.

A sintaxe de criao de um alias esta abaixo:

# alias <nome do alias>=comandos

Para remover um alias:

# unalias <nome do alias>

Para executar o alias, basta digitar o nome dele como um comando, que pode, sem problemas ter
argumentos tambm:

# <nome do alias>

Exemplos:

Criando e executando o alias backup para fazer backup de todo o diretrio /var/log para um aquivo
chamado /backups/backup-var.tar.gz:

# alias backup=tar -czvf /backups/backup-var.tar.gz /var/log

# backup

Criando um alias para tornar padro o modo interativo do comando rm quando ele for digitado:

# alias rm=rm i

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 166
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Neste caso, quando o comando for executado com qualquer que seja a opo, ser perguntado ao
usurio se ele quer mesmo excluir o objeto.

23.2 - Funes

Ao contrrio dos aliases, as funes s conseguem armazenar comandos completos, ou seja: no


aceitam argumentos na hora da execuo.

As duas sintaxes possveis para uma funo so:

# function <nome> { comandos; };

Ou

# <nome> () { comandos; };

preciso tomar muito cuidado com os espaos entre as chaves e os outros caracteres, pois se esta
sintaxe no for mantida risca, a funo no funcionar.

Exemplos:

Criando e executando uma funo para atualizar a base de dados do APT, instalar o pacote squid e
depos limpar o cache:

# function instala_squid { apt-get update; apt-get install squid; apt-get clean; };

# instala_squid

Para excluir uma funo, basta usar o comando unset:

# unset <funo>

Para exibir todas as funes criadas:

# declare f

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 167
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

23.3 Variveis do Shell

O Shell do sistema trabalha o tempo inteiro lendo e gravando variveis que vo ajud-lo a interpretar
melhor os comandos e as configuraes existentes. Um exemplo sismples a varivel HOME do usurio, que
lida pela linha de comando cd ~ para que seja possvel entender que ~ o homedir do usurio em sesso, a
cada vez que um usurio faz logon criada esta varivel com o caminho do diretrio pessoal dele
(independente de qual seja este usurio).Existem dois tipos de variveis no Linux:

Variveis Globais

So as variveis que no dependem de sesso de usurio para existirem. Estas variveis podem ser
consultadas atravs do comando set.

Exemplos:

LANG : varivel que recebe o idioma do sistema e a codificao de caracteres.

LANGUAGE: varivel de idiomas de teclado.

HOSTNAME : hostname da mquina.

Variveis de ambiente

So aquelas que dependem do usurio para serem criadas, pois, dependendo de quem seja o usurio,
a varivel no ser a mesma, como as variveis abaixo:

PATH : indica o caminho de busca dos comandos que so digitados pelo usurio. A varivel PATH do
usurio root contm os diretrios sbin, que a mesma varivel para um usurio comum no tem, por padro,
pois os programas contidos em dietrios sbin so de uso exclusivo de root.

SHELL : aponta para a localizao do arquivo binrio do Shell do usurio.

PWD : diretrio atual do usurio.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 168
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

OLDPWD : diretrio acessado anteriormente pelo usurio.

HOME : diretrio pessoal do usurio.

A lista de variveis de ambiente pode ser obtida com o comando env. No exemplo abaixo, este
comando utilizado em conjunto com o grep para obter o valor da varivel PATH do usurio root:

Criao e manipulao de variveis

Dependendo do motivo do script, o usurio vai precisar que a varivel que ele esteja usando no sirva
apenas para o seu prprio programa, mas seja tambm uma varivel exportada para o sistema, ento, a
primeira providncia que deve ser tomada exportar esta varivel com o comando abaixo:

# export <varivel>=<valor>

Este processo tambm pode ser feito em duas etapas: a criao e depois a exportao da varivel. Para
isso, podemos usar as seguintes linhas de comando:

# <varivel>=<valor>

# export <varivel>

Toda vez que uma varivel for utilizada, o $ deve vir antes do nome dela, como no exemplo abaixo:

# export LOGS=/var/log

# cd $LOGS

Outro exemplo de manipulao de varivel a adio do diretrio /programas na varivel PATH do


usurio para que comandos que estejam neste diretrio possam ser executados de forma mais simples por ele:

# export PATH=$PATH:/programas

Mostrando o valor da varivel:

# echo $PATH

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 169
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Para excluir uma varivel que foi criada, basta utilizar tambm o comando unset, como no exemplo
abaixo:

# unset LOGS

23.4 Criao de scripts

Um aquivo de script um arquivo comum de texto e pode ser executado com qualquer extenso
(.txt,.mp3,.ppt, etc..), at porque as extenses em Linux no tm funcionalidade nenhuma para execuo ou
leitura ou gravao em arquivos. Ainda que no utilizemos as extenses, para que o script de Shell possa ser
lido pelo edito vim com cores de sintaxe preciso que o arquivo de script tenha alguma extenso, mais
especificamente a extenso .sh.

Como os scripts de Shell sero utilizados em administrao de sistema Linux como caixa de
ferramentas, vamos j comear aplicando o seu uso para este fim, com o primeiro script abaixo, que ser um
programa para criar usurios:

# vim ~/cria_users.sh

Neste script, j se podem notar algumas caractersticas de Shell Script, como a insero de
comentrios, que pode ser feita com o #. Eles so primordiais para a boa documentao dos scripts criados,
pois podem ser usados para marcar a verso do script, as datas de criao e ltima modificao, o autor e a
descrio do script que est sendo criado, como foi feito no exemplo acima.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 170
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

importante tambm que a informao de qual Shell vai interpretar os comandos esteja no cabealho
com a seguinte sintaxe: #!<caminho do Shell>. No exemplo acima foi utilizado o Shell BASH, cujo binrio est
em /bin/bash. Poderia ter sido utilizado outro Shell disponvel em /etc/shells, sem nenhum problema, mas
como o BASH o Shell padro para comandos no Linux, sempre melhor utiliz-lo como interpretador para os
comandos que vo ser usados.

Alguns outros recursos usados acima sero analisados agora:

# echo

Este comando responsvel por produzir tanto STDIN (sada padro de comando) como STDERR (sada
de erros de comando). Suas sintaxes so:

# echo <valor de varivel, sada de comando ou texto>

# echo <valor de varivel, sada de comando ou texto>

# echo <texto>

Exemplos:

Produzindo como sada o valor da varivel SHELL:

# echo $SHELL

Ou

# echo $SHELL

Produzindo o texto $SHELL:

# echo $SHELL

Outro detalhe importante sobre o comando echo so as opes de posicionamento do texto, utilizadas
em conjunto com o parmetro -e do mesmo:

\\n : insere nova linha.


\\t : insere tabulao horizontal (padro para documentos de texto em geral).
\\v : insere tabulao vertical.
\\b : insere um backspace.
\\a : emite um sinal de bip do speaker.

Exemplos:

Exibir o texto de seguinte forma:

Linux
System
Administrator

# echo -e Linux \\nSystem \\nAdministrator

Exibir o mesmo texto, s que com as linhas tabuladas horizontalmente:

# echo -e \\tLinux \\n\\tSystem\\n\\tAdministrator

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 171
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Agora, o mesmo tabulado horizontalmente e verticalmente (espeamento entre linhas):

# echo -e \\v\\tLinux \\n\\v\\tSystem \\n\\v\\tAdministrator

# read

Atribui a uma varivel o valor digitado pelo usurio.

Exemplos:

Lendo o valor da varivel IP, que ser lanado como 172.16.0.1 pelo usurio, e exportando a varivel:

# read IP; export IP

Lendo, exportando e exibindo o valor da varivel DSK_BKP com mensagem para o usurio:

# read -p Digite o disco desejado para backup: DSK_BKP

# export DSK_BKP

#echo $DSK_BKP

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 172
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

lgico que o uso do read s vivel para um script, pois a nica forma de pedir para que o usurio
lance um valor para uma varivel.

Sub-Shells

Quando a sada desejada para STDOUT, STDIN ou STDERR o resultado de um comando, o ideal
utilizar um Sub-Shell, que uma forma de um comando utilizar a sada de um outro comando ou de uma
varivel receber um resultado de comando. Um Sub-Shell pode ser representado por $(comando) ou por
`comando`, como nos exemplos abaixo:

Fazendo backup de uma lista em um arquivo chaamado lista.txt:

# tar -cjvf /backups/bkp-lista.tar.bz2 `cat lista.txt`

Execuo de um script

importante que um script tenha permisso de execuo para o usurio que o quer utilizar, pois desta
forma, ele pode ser executado se for informado o seu caminho completo ou se ele for copiado (ou se tiver um
link) para um diretrio do path do usurio s execut-lo como um comando qualquer, apenas digitando o seu
nome.
Outras formas de execuo:

# sh <script> (neste caso, o script no precisa ter permisso de execuo).

# . <script>

# ./<script>

# source <script>

# bash <script>

Exemplos:

Executando o script cria_users.sh criado acima como um comando no path do usurio:

# chmod +x ~/cria_users.sh && ln -s /root/cria_uses.sh /sbin/cria_users

# cria_users

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 173
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Executando ~/cria_users.sh, que no est no path do usurio:

# sh ~/cria_users.sh

23.4.1 Estruturas de anlise lgica

As estruturas funcionam no Shell Script como na maioria das linguagens de programao, s que com
sintaxes diferentes. sempre recomendvel para um programador Shell conhea pelo menos um pouco de
algoritmos (o mximo possvel), pois preciso antes de implementar uma estrutura dessas, saber muito bem
qual ser o intuito, uma anlise condicional, uma execuo com n passos, uma estrutura de repetio ou uma
anlise de caso para um menu, por exemplo.

O uso de cada uma dessas estruturas bem didtico e bem simples, mesmo para o administrador de
sistema Linux que nunca teve contato com lgica de programao.

Antes de conhecer cada uma das estruturas, importante conhecer o comando abaixo:

Test

Testa arquivos, diretrios, nmeros e strings (textos).

Testes numricos:

-eq : igual a.
-lt : menor que.
-le : menor ou igual.
-gt : maior que.
-ge : maior ou igual.
-ne : diferente de.

Testes em strings:
= : igual a.
!= : diferente de.
-z : vazia.
-n : no-vazia.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 174
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Testes em aquivos:
-d : um diretrio.
-f : um arquivo.
-s : um aquivo e no vazio.
-ef : o mesmo arquivo.
-nt : arquivo mais novo.
-ot : arquivo mais velho.

Estrutura if (condicional)

Analisa uma condio verdadeira e, para ela, executa uma srie de comandos. Tambm possvel
adicionar uma condio para se teste for falso (else), mas esta no imprescindvel.

Sintaxe1:

if <condio verdadeira>
then <comandos>
fi

Onde fi finaliza a estrutura.

Sintaxe2:

if <condio verdadeira>
then <comandos>
else <comandos>
fi

Sintaxe3:

if <condio verdadeira>
then <comandos>
else if <condio verdadeira>
then <comandos>
fi
fi

No modelo de sintaxe acima, temos uma estrutura if composta, onde a anlise de condio falsa (else)
pode receber uma outra estrutura if. Outro detalhe que, como foram utilizadas 2 estruturas if, foram tambm
finalizadas as duas com fi.

Exemplo1:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 175
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

No caso acima, o script acim testa a existncia do arquivo /etc/nologin. Caso este exista, a mensagem
O login no ser possvel agora!! ser exibida, caso contrrio, a mensagem Login liberado ser exibida.

Exemplo2:

No caso acima, mais uma condio foi analisada: a de existir /etc/nologin, mas ele ser um diretrio, e
no um arquivo, neste caso, a mensagem /etc/nologin um diretrio, no um arquivo ser exibida.

Para estruturas if compostas com muitas condies, utilizada a avaliao booleana (E e OU). Em um
exemplo abaixo, podemos testar a existncia de /etc/network/interfaces e se este arquivo est vazio ou no
antes de configurar a rede via script:

#!/bin/bash
configura () {
read -p Qual a sua sala? sala
read -p Qual a sua mquina? maq
echo -e

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 176
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.$sala.1.$maq
netmask 255.255.255.0
gateway 10.$sala.1.254 > /etc/network/interfaces ;;
}

###A avaliao booleana ocorre abaixo, onde somente se o arquivo de configurao das interfaces
de rede existir e no for vazio, os comandos sero executados:

if test -f /etc/network/interfaces && test -s /etc/network/interfaces


then
echo Existe um arquivo com este nome. Deseja sobrescrev-lo (sim ou no)?
read resp
function avalia {
case $resp in
sim|s|yes|y)
configura
no|nao|n|no)
exit 0 ;;
*)
read -p Por favor, responda sim ou no. Pressione ENTER para voltar pergunta
avalia
esac
}
avalia
else
configura
fi
#########FIM DO SCRIPT#############

Para avaliao booleana, podem ser utilizados em conjunto com o comando test:

&& : apenas se todas as condies forem satisfeitas que os comandos so executados.

|| : neste caso, basta que alguma das opes esteja correta para que os comados sejam executados.

Estruturas while e until

Estras estruturas tm sintaxes diferentes, porm tm a mesma funo: a de executar tarefas em


repetio (loop) mediante a um teste satisfeito.

Estrutura while:

while <teste verdadeiro>


do <comandos>
done

Estrutura until:
until <teste falso>
do <comandos>
done

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 177
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

No caso de uma estrutura while, sero repetidos comandos enquanto aquele teste for verdadeiro,
enquanto que na estrutura until justamente o contrrio: apenas quando o teste falso for satisfeito a repetio
dos comandos vai parar de ser realizada.

Exemplos:

No caso acima, foi criado um loop de criao de diretrios onde, cada vez que este loop for
executado, ele vai verificar se a varivel qtd (quantidade de diretrios) ainda maior que cont (um contador
que foi criado para servir de referncia), caso seja, cont vai ter o seu valor acrescido de 1 e vai servir de rtulo
para a criao de um diretrio com o nome dir-$cont, quando cont for igual qtd, o loop acaba.

Neste script foram utilizados operadores matemticos. Os operadores para Shell Script so:

+ : soma
- : subtrao.
* : multiplicao.
/ : diviso.
** : exponenciao.

Para o caso de precisar fazer alguma operao aritmtica, ela deve ser deve ser realizada entre (( )) ou
$(( )), como foi mostrado no exemplos acima.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 178
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Neste caso acima, foi utilizada a estrutura de repetio until, que testou o valor da varivel qtd at que
ele fosse igual ao valor da varivel cont, que, na verdade, agiu como uma constante neste script, j que o seu
valor apenas serviu como parmetro de comparao para a varivel qtd, que permaneceu sendo subtrada de 1
a cada loop desses.

Estrutura for

A estrutura for atribui para uma varivel um valor de uma lista por vez. Para cada passo dessa lista
sero executados comandos que estiverem abaixo de do. Esta uma ferramenta importantssima para
programas que precisam executar passos em sequncia.

Sintaxe:

for <varivel> in <lista>


do
<comandos>
done

Exemplo:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 179
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

No programa acima, para cada diretrio da lista extrada do arquivo /etc/passwd foi criado um arquivo
de backup. Supondo que haja 20 usurios nesta lista, os comandos sero executados 20 vezes, portanto
teremos 20 arquivos de backup, um para cada homedir de usurio, pois a cada passo desses, a varivel home
receber um desses diretrios como valor.

O uso de for em scripts til tambm para criao de diretrios em demanda, utilizando o comando
seq.
# seq

Exibe uma sequncia numrica.

Exemplos:

Exibir de 1 at 100:

# seq 100

Exibir de 10 at 100:

# seq 10 100

Exibir de 10 at 100 com intervalo de 5:

# seq 10 5 100

Exemplo de uso do seq na estrutura for:

# vim ~/criadir_for.sh

Toda vez que digitado um parmetro para qualquer comando, este parmetro guardado na varivel
1, por isso ela foi analisada sem ser solicitada pelo comando read.

No programa acima, a varivel num, utilizada pela estrutura for, recebe cada um desses nmeros que
foram resultado do comando seq de cada vez e, para cada um deles, cria um diretrio. Detalhe: tudo foi feito
com apenas 4 linhas de script.

Vamos execuo do script (que vai criar 10 diretrios):

# chmod +x ~/criadir_for.sh

# ln -s ~/criadir_for.sh /sbin/criadir_for

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 180
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# criadir_for 10

Estrutura case

Analisa se a varivel se encontra em cada caso e, para cada um, executa os comandos escolhidos pelo
programador. Esta estrutura muito til na criao de programas com menu e tambm na criao de
comandos que possuem argumentos.

Sintaxe:

case <varivel> in
<opo1>) <comandos> ;;
<opo2>) <comandos> ;;
<opo3>) <comandos>
esac

Em tese, este estrutura uma ferramenta de substituio estrutura if em anlises muito grandes,
como uma que precisasse de 10 condies, com o if este cdigo ficaria enorme e, em qualquer linguagem de
programao, primordial que o programador prime pela boa organizao de seu scripts, estruturas cada vez
menores mas que tenham funcionalidade completa.

Existe a necessidade de o programador providenciar que o script dele esteja bem documentado (com
comentrios e, se necessrio, manuais), bem indentado e com as verses bem atualizadas, levando em
considerao a freqncia com que elas so atualizadas para decidir se ser uma verso com 2,3 ou at 4
dgitos.
Voltando estrutura, cada opo do case deve ser separada da outra com ;; e o final da mesma
marcado pelo esac.

O tratamento de erros em uma estrutura case feito por * em uma das opes significando nenhuma
das alternativas acima.

Vamos ver um exemplo de case usado para analisar um menu de opes em um programa para
gerenciamento de pacotes:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 181
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

A funo menu, no caso deste script responde pelo menu e pela estrutura case inteira e, antes de ela
ser executada, o sinal 2(sinal INT) foi capturado com o comando trap. Este comando insensibiliza uma linha de
comandos a sinais em especfico, neste caso a funo no ter como ser interrompida com CTRL+C.

Quanto s opes, o | quer dizer ou, para o caso de o nmero ser digitado por extenso.

O uso do shift

Quando o usurio digita vrios argumentos de um comando aps o mesmo, a mesma varivel 1 tem
que receber vrias opes, uma de cada vez, para que as opes do comando sejam processadas corretamente.
Pois ento, o comando shift faz a funo de fazer com que um valor atribudo varivel seja processado aps o
anterior j ter sido, fazendo com que a varivel sempre receba valores em sequncia.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 182
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

A execuo deste programa vai acarretar no backup de todos os diretrios dos usurios que forem
digitados como argumentos do comando bkpusr (nome do porgrama), como no exemplo do backup dos
diretrios pessoais dos usurios user1, operador e dba:

# bkpusr user1 operador dba

Ficou assim o diretrio de destino dos backup:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 183
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

24 REDES EM LINUX

Ao longo dos anos, por conta de sua estabilidade, segurana, flexibilidade, escalabilidade, e outras
caractersticas, o Kernel Linux esteve assumindo o posto de excelente servidor de rede em muitas aplicaes,
como servios de LDAP, servidor de arquivos, firewall, DHCP, proxy, servidor de uma VPN, etc. Por causa dessa
vocao que o Linux tem para este mercado que o seu administrador deve ter um profundo conhecimento de
tcnicas de configurao, planejamento e manuteno de uma rede.

O servidor de rede Linux deve ser capaz de se manter disponvel para que os clientes Linux e de outras
plataformas (Windows, Mac, Unix, BSD, etc) possam fazer uso dos recursos providos por ele. Para que a alta
disponibilidade acontea, preciso providenciar que o Hardware esteja condizente com o servio que ser
prestado, podemos citar como exemplo a diferena de espao de armazenamento em discos entre um servidor
de logs e um firewall que apenas vai servir como roteador e vai fazer filtro de pacotes que passarem dele para
outra rede, claro que o servidor de logs dever contar com um espao em disco maior. Outra diferena que
pode ser analisada a existente entre o Hardware requerido para um servidor de mquinas virtuais e o
requerido para um servidor de arquivos apenas, neste caso, a diferena maior fica por conta do tipo de CPU que
ter que ser adotado: o primeiro usa instruo de virtualizao e o segundo no tem obrigao de ter tal
tecnologia. igualmente importante, lgico, atentar para o Hardware de rede a ser utilizado, com o advento
de redes de at 1Gb/s de taxa de transferncia de dados, fica a cargo do administrador ento apenas escolher
os fabricantes e modelos adequados para a estrutura (switches, patch chords, patch pannels, routers, access
points, etc.).

24.1 - Protocolos e portas

Protocolos de rede so conjuntos de regras de funcionamento que regem as conexes que vo ser
estabelecidas. Cada protocolo de rede tem a definio de seu padro em um documento chamado de RFC.

TCP/IP

De todos os protocolos, 2 se destacaram bastante no processo de difuso e desenvolvimento da


Internet, assim com das grandes LANs: TCP e IP, tanto que, na maioria dos casos, so pronunciados juntos
(TCP/IP). O primeiro o Protocolo de Controle de Transferncia (Transmission Control Protocol), que um
protocolo que funciona na camada de transporte do modelo OSI (camada 4) e recebe este nome porque ele
garante a entrega de dados ao destinatrio, tornando-se um protocolo confivel, pois confere a integridade da
informao antes de ela ser enviada. Este protocolo utilizado para servios onde a entrega dos dados em
perfeito estado essencial, um grande exemplo um download de um arquivo: lgica que nenhum usurio
ficaria satisfeito de receber este arquivo com vrios pedaos faltando (pois, na maioria dos casos nem
funcionaria) e, por isso, a transferncia do mesmo feita no protocolo TCP por intermdio de alguma porta que
possa prover o servio de transporte usado, como a porta 21 do servio de FTP.
Para que os servios possam ser criados e no haja conflitos entre as funcionalidades deles, so
designadas as portas para os mesmos. A lista de portas para servios disponveis para protocolo o TCP esto em
/etc/services. As mais comuns so:

20 : Dados FTP
21 : Comandos e autenticao FTP
22 : SSH
23 : Telnet
25 : SMTP
53 : DNS
80 : HTTP(WWW)
110 : POP3
143 : IMAP
443 : HTTPS
465 : SMTPS

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 184
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

514 : Log Remoto


995 : POP3S

O Internet Protocol se preocupa somente com os critrios e as caractersticas de conectividade dos


sistemas. Ele garante que hosts que estejam em uma mesma rede tenham conectividade direta e tambm que
possam ser feitas vrias segmentaes dentro de uma rede s, recurso chamado de sub-rede. A verso deste
protocolo que vai ser analisada a verso 4 (IPV4), que conta com as seguintes caractersticas de
endereamento de hosts:

Endereo IP

Um endereo IP em IPV4 constitudo de 4 blocos de 8 bits no mximo cada um, sendo chamado cada
bloco de octeto, por causa disso. Em cada octeto desses, os bits so representados em nmeros decimais, pois
assim fica mais humanamente possvel de ser implementado. Os nmeros decimais disponveis para compor
esse modelo de endereamento de rede vo de 0 a 255 (estando disponveis para uso 256 nmeros, contando
com o 0, claro). Um exemplo de endereo IP de um host 10.0.0.1.

O endereo IP tambm pode ser utilizado por ume rede, definido com ele quantos hosts podero
integrar a mesma rede. Um exemplo de endereo IP de rede 172.16.0.0/16, onde o primeiro critrio de
conectividade plena entre hosts que faam parte desta rede ser cada host estar na mesma classe, que est
sempre definida pelo primeiro octeto, o segundo critrio ser a igualdade do segundo octeto entre os hosts: 16
o que est definido no endereo de rede e ele deve ser mantido porque o octeto onde ele est se encontra
com os 8 bits fechados para alterao.

Os endereos IP esto divididos em classes:

Classe A : o primeiro octeto pode ir de 1 at 126.


Classe B : o primeiro octeto pode ir de 128 at 191 (obs: o 127 reservado para o localhost).
Classe C : o primeiro octeto pode ir de 192 at 223.
Classe D : o primeiro octeto pode ir de 224 at 239.

As classes utilizadas para redes LAN e WAN so as A,B e C, pois a C utilizada para comunicao em
multicast, onde mltiplos endereos recebem a mesma mensagem do host que enviou (o chamado broadcast).

Exemplos de IPs:

125.0.2.25 um IP de classe A.
155.200.0.20 um IP de classe B.
219.1.5.2 um IP de classe C.

Um refinamento dessas 3 classes foi criado para que os IPs de seus hosts no se confundissem com IPs
de servidores externos da grande rede mundial de computadores, ficando assim constitudo o termo IP
privado para IPs de redes LAN. As classes de IP privado so:

Classe A: 10.0.0.0 at 10.255.255.255, tendo como representao CIDR 10.0.0.0/8.


Classe B: 172.16.0.0 at 176.31.255.255, tendo como representao CIDR 172.16.0.0/16.
Classe C: 192.168.0.0 at 192.168.255.255, tendo como representao CIDR 192.168.0.0/24.

A definio de quantos hosts uma rede pode suportar feita com a seguinte frmula:

32 - BITS DA REDE

Deste resultado acima iremos extrair a informao de quantos bits faltam para completar todos os
endereos dos octetos, o nmero 2 deve ser elevado a este nmero obtido e o resultado subtrado de 2 (que

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 185
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

so os endereos de rede e broadcast, que no podem ser utilizados). Em uma rede 192.168.0.0/24 teramos o
seguinte clculo:

32 - 24 = 8 (bits que faltam ser preenchidos)


2 = 256 -2 = 254 hosts

Protocolo ARP (Address Resolution Protocol)

Este protocolo encarregado de garantir a interpretao de um endereo fsico de rede (MAC address)
atravs de um endereo lgico (IP). Endereo MAC o endereo fsico que toda interface de rede possui, sendo
nico para todas elas espalhadas pelo mundo. Este endereo construdo com nmeros hexadecimais
(nmeros e letras) e representado por 6 blocos de 2 nmeros hexadecimais cada um, sendo os 3 primeiros,
geralmente, reservados especificao do fabricante da interface.

Exemplo:

00:0f:e0:42:27:0d

Este protocolo de extrema importncia para aplicaes de Firewall e servidores DHCP, que sero
explicados em captulos posteriores.

O protocolo RARP faz justamente o contrrio: resolve IP atravs de endereo MAC.

UDP (User Datagram Protocol)


O uso deste protocolo tambm para trfego de dados, porm ele no garante a entrega dos mesmos,
visto que um protocolo de transporte simples. Ele pode ser utilizado para troca de dados que no tm a
obrigao de chegarem em perfeito estado mas precisam chegar o mais rpido possvel, como por exemplo a
transmisso de uma rdio online, onde a qualidade sonora no seria mais importante do que a velocidade de
chegada da mensagem. Pelo fato de no garantir esta entrega dos dados, o servios SMTP e FTP no trabalham
com este protocolo, porm, alguns servios tm tambm funcionalidade com o protocolo UDP, como HTTP,
DNS e LDAP.

ICMP (Internet Control Massage Protocol)


Este protocolo encarregado de emitir relatrios sobre a conectividade entre hosts na mesma rede e
entre hosts e roteadores. Os comandos ping e traceroute utilizam este protocolo para enviar pacotes pequenos
(geralmente 64 bytes) que perguntam o estado de uma conexo e recebem, na mesma proporo, a resposta
do destino ou gateway consultado, caso ocorra algum erro nesta comunicao, este erro ser reportado ao host
que enviou a requisio, salvo em caso de bloqueio por poltica DROP de um Firewall Iptables. importante
ressaltar que quando uma requisio so protocolo ICMP enviada, o MAC do remetente fica registrado na
tabela ARP do destinatrio, e vice-versa.

imprescindvel que um administrador de servidor Linux entenda os protocolos e as portas disponveis


para uso no servidor. Estas duas informaes esto dentro dos arquivos /etc/services e /etc/protocols, como
mostram as figuras abaixo:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 186
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 187
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

24.2 - Configurao de rede

As interfaces de rede no Linux seguem, geralmente, padres de nomenclatura:

eth0 : 1 interface de rede ethernet.

eth1 : 2 interface de rede ethernet.

wlan0: 1 interface de rede wireless.

wlan1: 2 interface de rede wireless.

Os modos de configurao dos endereos IP para estas interfaces so diferentes para algumas
distribuies:

No Debian

O arquivo /etc/network/interfaces o concentrador da configurao de endereo de rede de todas as


interfaces de rede presentes.

# vim /etc/network/interfaces

Onde auto a flag que ativa a interface de rede assim que o servio networking iniciado (no boot,
por exemplo), a opo iface se refere interface de rede em questo, inet o tipo de endereo de rede a ser
utilizado: static para endereo IP definido manualmente e dhcp para IP dinmico (que depende de um servidor
DHCP ativo na rede), address o endereo IP, netmask a mscara de sub-rede, gateway neste arquivo o
gateway padro (um host pode ter apenas um default gateway). Vale lembrar que, para uma definio de IP
por dinmico (por DHCP), nenhum campo de endereo deve ser preenchido, j que o servidor ficar
encarregado da funo de fornecer o endereo.

No caso da figura apresentada, temos trs interfaces de rede: lo com seu endereo de loopback para o
localhost (127.0.0.1), eth0 com IP esttico e eth1 com IP dinmico. A interface lo no deve ser desabilitada em
hiptese alguma, pois ela poder servir para testes em Web Server, por exemplo.

Depois que toda alterao necessria feita nesse arquivo, o servio networking tem que ser
reiniciado para que as interfaces possam fazer uso da nova configurao:

# invoke-rc.d networking restart

No Red Hat

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 188
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

No caso desta distro, e das distribuies baseadas nela, existe, para cada interface de rede um arquivo
de configurao ser criado assim que o Kernel reconhecer a interface, que pode ser encontrado dentro do
diretrio /etc/sysconfig/network-scripts/. O nome de cada arquivo desse segue a sintaxe de ifcfg-<interface>,
como por exemplo o arquivo de uma interface de rede eth1 seria ifcfg-eth1. Vamos configurao:

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

Onde:

DEVICE o nome da interface de rede.


BOOTPROTO tipo de endereo que essa interface vai ter.
IPADDR o endereo IP para caso de escolha de endereo esttico.
NETMASK a mscara de sub-rede.
GATEWAY o gateway padro do host.
HWADDR o endereo MAC da interface (que no deve ser modificado em hiptese alguma neste
arquivo).
ONBOOT a flag que ativa (ou no, dependendo da resposta) a interface no boot.

Em comum, os dois sistemas operacionais tm a configurao de servidor de nomes (DNS), ela pode
ser feita no arquivo /etc/resolv.conf, como no exemplo abaixo:

# vim /etc/resolv.conf

Neste caso acima, temos o sistema usando dois servidores DNS: 10.12.1.254 o primrio e 10.12.1.150
o secundrio (que s consultado caso o primeiro no responda). Este arquivo pode conter os seguintes
campos:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 189
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

nameserver <IP>

o campo onde deve ser declarado o IP do servidor DNS que vai responder s consultas de nomes
deste host.

domain <NOME>

o nome de domnio local a ser usado pelo host. Se nada for definido, este nome fica
localhost.localdomain.

search <NOME> <NOME>

a lista de domnios, separados por espao, que podem tambm serem consultados na busca por
algum host. Quanto mais domnios forem escolhidos nesta opo, mais lenta vai ficar a busca por um nome na
rede.

24.3 - Comandos de rede

Os comandos de rede que iremos abordar neste treinamento so:

# ifconfig

Exibe configurao IP de uma interface de rede e tambm modifica o seu endereo.

Sintaxe:

# ifconfig <opo> <interface> <opes>

Opes:

-a : exibe a configurao das interfaces ativas e desativadas.


up : ativa uma interface.
down : desativa uma interface.
netmask : define mscara de sub-rede para a interface.

Exemplos:

Listando o IP de todas as interfaces de rede ativas no host:

# ifconfig

Listando o IP de todas as interfaces de rede ativas ou inativas:

# ifconfig -a

Listando o IP apenas da interface de rede eth2:

# ifconfig eth2

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 190
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Repare que o comando ifconfig, sem mais argumentos, capaz de retornar o endereo MAC da
interface de rede.

Desativando a interface de rede eth0:

# ifconfig eth0 down

Ou

# ifdown eth0

Ativando a interface de rede eth0:

# ifconfig eth0 up

Ou

# ifup eth0

# ping

Faz teste de conectividade entre hosts atravs do protocolo ICMP.

Sintaxe:

# ping <opes> <host>

Opes:

-c : especifica quantas tentativas vo ser feitas. O padro testar continuamente.

-s : muda o tamanho do pacote a ser enviado (o padro 64 bytes).

-I : especifica a interface para o teste.

Exemplos:

Testando a conectividade com o host 10.12.1.254 com 5 tentativas, no mximo:

# ping -c5 10.12.1.254

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 191
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Testando a conectividade com o host www.mcury.com.br atravs da interface eth2:

# ping -I eth2 www.mcury.com.br

# nmap

um sacanner de portas de um servidor qualquer.

Exemplo:

Verificando o status das portas do host www.lpi.org:

# nmap www.lpi.org

As portas que esto marcadas como OPEN esto receptivas conexes que possam ser feitas nela,
porm as que esto marcadas como FILTERED tm o acesso filtrado por algum firewall do servidor.

# lsof

Exibe a lista de arquivos abertos no sistema, inclusive os utilizados por servios de rede.

# arp

Exibe informaes sobre a tabela ARP.

Opes:
-v : modo verbose.
-n : ao invs de exibir nomes, exibe nmeros IP.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 192
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

-i : especifica a interface.

Exemplos:

Listando a tabela ARP de conexes ocorridas na interface de rede eth2 em modo numrico:

# arp -ni eth2

Esta tabela ARP armazenada dentro do arquivo /proc/net/arp.

# hostname

Exibe ou modifica temporariamente o hostname do sistema. A modificao definitiva s pode ser feita
em /etc/hostname.

# netstat

Exibe o status das conexes de rede estabelecidas. Conexes STREAM so de protocolo TCP e DGRAM
so conexes de protocolo UDP.

Opes:

-n : exibe apenas hosts em modo numrico, no em nomes.


-l : mostra apenas sockets em escuta.
-r : mostra a tabela de roteamento.
-c : monitoramento contnuo de conexes.

Exemplo:

Verificando a tabela de roteamento (apenas IPs):

24.4 - Interfaces de rede virtuais

Em uma interface de rede pode haver mais de um endereo IP configurado e isso s possvel atravs
da criao de interfaces de rede virtuais.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 193
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Elas podem ser criadas com os nomes seguindo a seguinte sintaxe: <interface>:<nome> e vo
responder normalmente s solicitaes requeridas em uma rede. Quanto performance, preciso analisar qual
o tipo de servio ser prestado pelo host e se a interface fsica suportar toda a banda requerida pelas
interfaces virtuais adicionadas a ela. Este recurso muito utilizado por servidores que possuem um fluxo de
dados mediano e precisam separar redes para utilizar, cada uma delas, servios diferentes. Exemplo: um
servidor Web que tem o host tux.linux respondendo na rede 192.168.0.0/24 e um servidor de arquivos que
disponibilizado para a rede 10.0.0.0/24, todos os dois no mesmo servidor fsico e na mesma interface fsica.

A definio de uma interface de rede virtual pode ser feita temporariamente atravs do comando
ifconfig ou pode tambm ser feita de forma permanente, dentro do arquivo /etc/network/interfaces, no
Debian. Vamos ver no exemplo abaixo a criao de uma interface de rede chamada eth2:virtual:

# ifconfig eth2:virtual 172.16.0.20/16

Comparando as duas interfaces:

Em outro exemplo, podemos ver a configurao definitiva de uma interface de rede virtual com o
mesmo endereo:

# vim /etc/network/interfaces

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 194
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

24.5 - Rotas

Quando uma solicitao feita por qualquer protocolo e ela no pode ser atendida na mesma rede
preciso que a mesma seja encaminhada para um roteador, se o roteador foi encontrado e se ele for o caminho
correto para o destino, a solicitao ter sucesso, se no for, o protocolo ICMP se encarregar de dar a
mensagem de que no h rota para o host. O maior exemplo de uso de roteadores a Internet, pois antes de
chegar a um site especfico, o pacote passa por vrios roteadores, que no se responsabilizam por processar o
pacote e sim encaminh-lo para o destino que possa process-lo ou repass-lo para outro roteador.

Existem 3 tipos de rotas que podem ser criadas para um host:

Rota padro: o roteador padro chamado de default gateway e ele fica como opo genrica de rota
para todas as interfaces de rede (virtuais ou no). sempre importante ressaltar que pode existir apenas um
default gateway em um servidor, pois o mesmo responde ao endereo de rede 0.0.0.0/0.0.0.0, ou seja:
qualquer rede com qualquer mscara de sub-rede.

Rota para host: uma rota para um host ela definida apenas para um IP, onde apenas requisies
daquele host iro ser roteadas.

Rota para rede: o tipo de roteamento onde uma rede inteira atendida.

# route

Verifica ou cria rotas em um servidor.

Opes do modo de consulta:

-n : exibe o resultado da tabela de roteamento em modo numrico (apenas IPs).


-v : modo verbose.
-C : exibe o cache de roteamento.
-F : exibe a tabela de roteamento (igual ao comando route sem argumento nenhum).

Exemplo:

Listando a tabela de roteamento em modo numrico e verbose:

# route -nv

No caso acima, podemos concluir que o nico roteador existente o 189.32.128.1, que tambm o
default gateway, pois est respondendo ao destino 0.0.0.0 com mscara 0.0.0.0, ou seja: responde como
roteador de todos os outros IPs.

O campo opes da tabela de roteamento pode ser interpretado da seguinte forma:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 195
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

U : roteador em uso.
! : a rota no foi aceita.
G : um gateway est sendo usado.
H : uma rota para um host.

Opes do modo de alterao:

add : adiciona uma rota.


del : exclui uma rota.
-host : se refere a rota para um host.
-net : se refere a rota para uma rede.
netmask : especifica a mscara de sub-rede para uma rota de rede.
gw : especifica um roteador.
default : se refere a um default gateway, seria o mesmo que -net 0.0.0.0 netmask 0.0.0.0.

Exemplos:

Criando rota esttica para o host 172.16.0.20 sair pelo roteador 172.16.0.1:

# route add -host 172.16.0.20 gw 172.16.0.1

Criando rota padro para 172.16.0.1:

# route add default gw 172.16.0.1

Criando rota para a rede 172.16.0.0/16 sair pelo roteador 172.16.0.1:

# route add -net 172.16.0.0 netmask 255.255.0.0 gw 172.16.0.1

# traceroute

Verifica por quantos roteadores passa um pacote antes de chegar ao host destino. Este comando
tambm utiliza o protocolo ICMP para este tipo de teste. Por padro o traceroute vem configurado para at 30
trinta saltos (HOPs).

Exemplo:

Verificando as rotas at o host www.mcury.com.br:

# traceroute www.mcury.com.br

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 196
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

25 CLIENTES DE SEVIDORES LINUX

Em muitos casos, os clientes de servidores Linux so distribuies Linux. J vimos a configurao de um


cliente DNS, agora vamos ver como outras aplicaes de cliente podem ser utilizadas em distribuies
GNU/Linux.

25.1 - DHCP

O Dinamic Host Configuration Protocol, substituto do protocolo BOOTP, o protocolo que prov
configuraes automticas de endereo de rede para os clientes que solicitarem, esta solicitao feita pelo
cliente em broadcast por protocolo UDP e, sendo assim, o primeiro servidor que responder analisar se o
cliente se encaixa nos critrios que o prprio servidor estabeleceu. Um servidor DHCP pode tambm fornecer,
alm do endereo IP e da mscara de sub-rede, o nome de domnio, o gateway e os endereos IP dos servidores
DNS a serem utilizados pelo cliente. Estas concesses de endereo tm um tempo de durao determinado
pelo servidor e, aps este tempo ter se esgotado, ser feita uma nova negociao de endereo entre o MAC
address da interface de rede do cliente e o servidor, podendo assim, o cliente receber um endereo totalmente
diferente do anterior.

sempre importante lembrar que requisies DHCP sendo feitas em uma rede com muitos hosts
podem causar a queda de rendimento significativa, pois as requisies sempre so enviadas em broadcast pelos
clientes. Para o caso de redes de grande porte que precisem usar DHCP, recomendvel utilizar um lease time
(tempo de concesso) maior, para que os intervalos de solicitao de IP possam ser cada vez maiores.

# dhclient

Este comando faz a requisio de endereo para um servidor DHCP qualquer em uma rede.

Sintaxe:

# dhclient <interface>

Exemplo:

Requisitando IP dinmico para eth0:

# dhclient eth0

-r : Libera a configurao e para o dhclient que est em 2. Plano.

Para a configurao de uma interface de rede permanecer solicitando endereo IP dinamicamente,


basta editar o arquivo /etc/network/interfaces:

# vim /etc/network/interfaces

Neste caso acima, a interface de rede eth0 est configurada para automaticamente buscar em
broadcast suas configuraes de endereo de rede.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 197
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

25.2 - FTP

O File Transfer Protocol, como o prprio nome j diz, um protocolo desenvolvido para transferir
arquivos pela rede. Ele utiliza duas portas TCP para tal conexo: 20 e 21. Na maioria dos casos dos servidores
FTP espalhados pela Internet, o acesso ao servidor FTP autenticado, porm, existem os casos em que este
login feito de forma annima. O acesso do cliente ao servidor FTP feito atravs do comando ftp:

Sintaxe:

# ftp <host>

Logo aps o acesso, o usurio ter sua disposio o prompt do ftp para digitar os comandos (muito
destes comandos so comandos de shell sh). Vamos ver alguns comandos de FTP:

ftp> lcd - exibe ou modifica o diretrio local do usurio (diretrio do cliente).


ftp> put - faz o upload de um arquivo apenas.
ftp> mput - faz o upload de mltiplos arquivos.
ftp> get - faz o download de um arquivos apenas.
ftp> mget - faz o download de mltiplos arquivos.

Exemplos:

Fazendo download do arquivo arq1.txt:

ftp> get arq1.txt

Mofificando o diretrio atual para /dados:

ftp> lcd /dados

Fazendo upload de todos os arquivos do diretrio local para o diretrio atual no servidor:

ftp> mput *

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 198
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

25.3 - DNS

O Domain Name System o servio TCP/UDP que resolve nomes de hosts para os clientes. pela
atuao deste servio que sites na Web podem ser acessados pelo nome, e no apenas por IP. Geralmente,
estes nomes de domnio so separados por pontos indicar subdivises de um domnio ou parametrizar tipos de
segmentos ou localidades, exemplos:

.br : sites brasileiros.


.gov : sites do governo.
.mil : sites militares.
.edu : sites educacionais.

O servidor DNS mais utilizado pelo Linux o BIND (Berkeley Internet Named), mas o que vamos
estudar neste material o uso de um servidor DNS pelo cliente.

Ordem de consultas de nomes

Nem todo nome consultado pelo cliente vir de um servio DNS. O cliente pode utilizar a consulta aos
arquivos /etc/hosts e /etc/networks. O primeiro define um nome para um IP especfico e o segundo define um
nome para uma rede especfica. importante lembrar que essas configuraes so feitas por parte do cliente,
ou seja, no valero para a rede toda.

Vamos ver um exemplo de arquivo /etc/hosts:

No caso acima, o localhost (127.0.0.1) tambm responder pelo nome de MCURY e 10.12.1.1
responder pelos nomes de SERVER1, DHCP, DNS ou SMB. Isso muito til para o usurio que vai
frequentemente acessar o mesmo servidor, o cliente poder simplesmente substituir o IP do servidor em
qualquer solicitao pelo alias criado, neste caso, o sistema no vai procurar por um DNS para resolver nomes,
pois dentro do arquivo /etc/nsswitch.conf, a configurao da seo host (de busca por nomes na rede) est
indicando a prioridade de arquivos locais para esta tarefa e, s em caso de no achar o nome em um dos
arquivos, procurar um DNS configurado em /etc/resolv.conf:

No exemplo abaixo, vamos executar um teste de conexo com o comando ping utilizando um dos
aliases criados no arquivo /etc/hosts:

# ping DHCP

O arquivo /etc/nsswitch.conf no serve apenas para determinar a ordem de busca de nomes pela rede,
ele tambm busca bibliotecas de consulta de usurios, senhas e grupos do sistema, esta configurao pode

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 199
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

tanto buscar um caminho local como uma autenticao por algum protocolo de rede de que esteja em outro
servidor, como o caso de uma autenticao feita por um protocolo LDAP.

Com o arquivo /etc/networks acontece o mesmo que com o arquivo /etc/hosts, ele tambm pode
configurar nomes para redes.

Neste caso, a rede 10.12.1.0 responde tambm pelo nome rede-mcury.

Comandos de consulta de DNS

# host

Consulta o nome ou um IP de um servidor DNS.

Exemplo:

# host www.lpi.org

# dig

Consulta parmetros de configurao de um servidor DNS.

Exemplo:

Consultar servidor www.lpi.org:

# dig www.lpi.org

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 200
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# nslookup

Testa a existncia de um servidor DNS.

Exemplo:

# nslookup www.mcury.com.br

# whois

Cliente para o servio de diretrios whois, mostra detalhes de registro do Domnio.

Exemplo:

# whois www.mcury.com.br

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 201
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 202
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

26 - SERVIDOR DE LOGS

To importante quanto instalar, configurar e incrementar servios em um host monitorar os logs


referentes aos eventos acontecidos nele. Tambm no menos importante que isso tudo est o fato de que os
logs devem ter uma poltica de rotatividade, para que no cresam desordenadamente. Todos esses tens sero
estudados neste captulo.

Vejamos a lista de principais logs do sistema:

/var/log/messages : o principal log do sistema, ele registra quase todos os eventos, no sendo capaz
de registrar eventos de autenticao, mudanas de senha e eventos de e-mail.

/var/log/syslog : um log com a mesma funo do /var/log/messages, com o diferencial de registrar


tambm os eventos na prioridade mais alta possvel, ou seja: tudo sobre os eventos cobertos.

/var/log/auth.log : o nico log do sistema que registra detalhes sobre trocas de senha e
autenticao.

/var/log/dmesg : o log que contm as mensagens produzidas pelo Kernel durante o boot.

/var/log/mail.log : log que registra eventos de servidor de e-mails.

Exemplo de monitoramento de log:

# tail -f /var/log/auth.log

O daemon nativo do Linux que monitora as mensagens do Kernel o klogd, que anvia as mensagens
para o servidor Syslog, cujo daemon o sysklogd.

O arquivo de configurao do Syslog o /etc/syslog.conf. A estrutura dele consiste nos seguintes


campos:

<facilidade>.<prioridade> <arquivo de log>

As principais facilidades so:

syslog : eventos gerais de log.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 203
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

kern : eventos de Kernel.


auth : eventos de autenticao.
authpriv : eventos de trocas de senha.
security : auth + authpriv.
mail : eventos de servidor de e-mail.
cron : eventos de agendamentos.
lpr : eventos de impresso.

Alm de definir qual tipo de evento o log ir registrar, preciso informar qual nvel de informao ser
encontrada neste log, para isso existe a prioridade de um log. As prioridades existentes (em ordem) so:

Debug, info, notice, warning, err, crit, alert, emerg

debug: cobre mensagens de depurao.


info: cobre mensagens de informao reduzidas sobre evento.
notice: cobre mensagens normais.
warning: cobre mensagens de alerta.
err: cobre mensagens de erro.
alert: cobre alertas sobre eventos que podem causar danos se persistirem.
emerg: quando o evento no pode ser utlilizado por causa de um erro qualquer.

Fora da lista da ordem de prioridades, none a prioridade que instrui o evento a no criar log no
arquivo.

O syslog pode tambm ser configurado para enviar os logs para outro servidor ao invs de mant-los
localmente, basta que, no lugar de um arquivo de log esteja a seguinte sintaxe: @<host>.

26.1 - Rotatividade dos logs

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 204
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O programa que garante a rotatividade dos logs do sistema o logrotate, cujo diretrio que contm os
arquivos de configurao dos servios a serem cobertos /etc/logrotate.d/. Vamos analisar o arquivos de
configurao de rotatividade do log do squid:

# vim /etc/logrotate.d/squid

Onde:

daily, mounthly ou weekly : so unidades de tempo de rotao.

compress : significa que o log vai ser compactado e um novo vazio ser criado a cada unidade de
tempo dessa.

delaycompress : No compacta o arquivo de log aps o rotacionamento, posterga para o prximo ciclo
e deve ser utilizado em conjunto com o compress. Esse tipo de ao tomada porque alguns processos ainda
escrevem neste arquivo e s depois o liberam.

rotate : mantm uma certa quantidade de cpias de logs.

missingok : caso o log no exista, nenhum aviso ser gerado para o administrador, o oposto de
nomissingok.

nocreate : o oposto de create. No cria um novo arquivo de log, mas sobrescreve o j existente.

sharedscripts : habilita o uso de scripts.

prerotate : executar script antes de rotacionar.

postrotate : executar script aps rotacionar.

# logger

O comando logger tem a funo de enviar sadas de comandos para logs.

Sintaxe:

# logger mensagem opes

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 205
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Opes:

-s : envia mensagem tambm para STDOUT.


-p ; especifica a prioridade para a mansagem.
-i : mostra o PID do evento criado.
-f : ao invs de enviar uma mensagem, envia o contedo de um arquivo.

Exemplo:

Enviar o contedo do arquivo /proc/swaps para os arquivos de log com prioridade warn:

# logger -f /proc/swaps -s -p warn

Um dos logs que atende na prioridade warn foi verificado em suas ltimas 2 linhas para verificar se o
comando funcionou.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 206
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

27 SUPERSERVIDORES

Os Superdaemons, como so tecnicamente chamados, existem para que vrios servios possam ser
gerenciados atravs de apenas um daemon, porm, nem todo servio pode ser includo em um Superdaemon.

27.1 - Inetd

O Inetd o Superservidor nativo do Linux. Ele proporciona a vantagem de o servio apenas ser alocado
em memria quando for solicitado. Sua configurao feita dentro do arquivo /etc/inetd.conf. A sintaxe do
arquivo em questo :

<nome do servio> <socket utilizado> <protocolo> <opo> <usurio> <localizao dos daemons necessrios>

No exemplo acima, o servio ftp est configurado para ser gerenciado pelo Inetd usando o socket
stream, liberando o socket logo depois de ser carregado (opo nowait), usando o usurio root para gerenci-
lo, e especificando o caminho para os binrios relativos ao daemon. Todos os nomes de servios que podem ser
utilizados esto em /etc/services, portanto, antes de comear a configurar um servio no Inetd, pesquise o
nome dele dentro de /etc/services. Note tambm que o sevio de FTP est usando outro daemon alm do
daemon dele: o tcpd, este um daemon do TCP Wrappers que realiza filtros de entrada de pacote, formando
assim uma camada de segurana, ainda que muito limitada, para o sistema, este assunto ser estudado mais
frente.

27.2 - Xinetd

Este a evoluo do Inetd, possui mais recursos de controle que o anterior e as sintaxes de seus
arquivos de configurao so totalmente diferentes. Seu arquivo de configurao o /etc/xinetd.conf, mas ele
permite que arquivos de configurao independentes dentro de /etc/xinetd.d gerenciem os servios. Vamos ver
um exemplo de configurao do arquivo /etc/xintetd.conf:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 207
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Agora vamos ver um arquivo de configurao do Superdaemon xinetd para o servio ssh:

Entendendo os campos do arquivo:


service : nome do sevio em /etc/services.

disable : configura se o servio vai ser desabilitado no ato da inicializao do Superdaemon. o oposto
de enable, ou seja: enable = yes equivale a disable = no.

id : um nome de identificao do servio. muito til para casos em que o mesmo servio possui
duas configuraes: uma para TCP e outra para UDP, como no caso acima.

socket_type : tipo de socket a ser utilizado.

protocol : tipo de protocolo a ser utilizado.

user : usurio que controla o daemon.

wait : o oposto de nowait, seguindo o mesmo conceito deste campo do servidor Inetd. nowait=yes
equivale a wait=no.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 208
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

28 TCP WRAPPERS

O TCP Wrappers existe para configurar filtros de acesso de entrada de pacotes que usam o protocolo
TCP e fazer com que essa configurao possa ser o mais simples possvel, tanto que a configurao do daemon
tcpd pode feita com a configurao de apenas 2 arquivos:

/etc/hosts.deny

Este o arquivo de configurao de negao de acesso entrada de pacotes dos sevios e hosts
especificados. Sua sintaxe de configurao funciona da seguinte forma:

<servio>: <hosts>

Onde a configurao desses campos com as opes ALL: PARANOID far com que o sevidor no aceite
nenhum tipo de conexo TCP onde o nome do servidor no confira com o seu IP e ALL: ALL far o bloqueio total
de todos os servios para todos os hosts. Para adicionar alguma execeo de acesso para o campo de servios
basta escolher a regra EXCEPT, como no exemplo abaixo:

ALL EXCEPT sshd: 10.12.1.150

Neste caso acima, todos os sevios TCP, exceto o sshd (servidor ssh), sero negados quando vindos do
host 10.12.1.150.

/etc/hosts.allow

Este arquivo s tem razo de estar com alguma configurao vlida caso exista alguma negao feita
em /etc/hosts.deny, pois o /etc/hots.allow a lista de exceo de bloqueios de pacotes TCP de entrada no
servidor. Vejamos um exemplo do arquivo /etc/hosts.allow que est atuando como lista de exceo para uma
regra ALL: ALL criada em um arquivo /etc/hosts.deny:

Neste caso acima, o sevio sshd est sendo liberado apenas para os hosts que fizerem parte da range
de IPs que vai de 10.11.0.1 at 10.11.1.254 ou 10.12.0.1 at 10.12.1.254, neste caso o ponto significa
qualquer coisa aps.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 209
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

29 SSH

O Secure Shell, como o prprio nome j diz, o shell que proporciona um nvel alto de segurana para
clientes e servidores em acessos remotos. Ele usa para conexo um terminal /dev/pts/<num>, mesmo tipo de
terminal utilizado para emuladores de terminal de interface grfica, como o xterm. Algumas partes deste
servio, que trabalha com os protocolos TCP e UDP, sero estudadas neste material:

ssh : cliente de acesso remoto.

ssh-keygen : criador de chave de criptografia.

scp : aplicao de cpias remotas via SSH.

Os arquivos de configurao do servio so /etc/ssh/ssh_config para o cliente SSH e


/etc/ssh/sshd_config para o servidor SSHD.

O trecho escolhido do arquivo de configurao do servidor SSH possui uma linha importante de ser
analisada: PermitRootLogin, pois uma falha de segurana muito grande ela estar da forma que se encontra
acima, desta forma, o usurio root tem o se acesso habilitado ao servidor SSH, quando o ideal seria que o sudo
fosse utilizado para permitir, se fosse o caso, tarefas adminstrativas selecionadas especficas para cada usurio
e o login do usuro root fosse proibido pelo servidor.

Em todo primeiro login remoto via SSH que o cliente faz, um diretrio .ssh criado e, dentro dele,
criado um arquivo que funciona com fingerprint dos servidores acessados, fingerprint esse que est
criptografado dentro do arquivo ~/.ssh/known_hosts, de forma que a cada primeira conexo feita em outro
servidor, uma pergunta ser feita sobre a aceitao ou no desta conexo.

Veja que o fingerprint do sevidor j aparece em haxadecimal, porm ele ser criptografado com
algortmo RSA e enviado para dentro do arquivo known_hosts, coforme exemplo abaixo:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 210
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# ssh

Acessa um host atravs do servio SSH.

Sintaxe:

# ssh <host>

Exemplo:

Acessando o host 10.4.1.1 com o usurio operador:

# ssh operador@10.4.1.1

Para visualizar as conexes SSH de um servidor os comandos w e who podem ser utilizados:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 211
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

No exemplo acima, o host conhecido pelo nome mcury.local fez login no servidor como root e usou o
terminal /dev/pts/1 para tal, veja que usurios locais utilizam este mesmo terminal para emuladores de
terminal.

# ssh-keygen

Gera chaves com criptografia RSA ou DSA para autenticao de usurios em um servidor. Com a
execuo deste comando, so criados 2 arquivos: id_<tipo> e id_<tipo>.pub, o primeiro de chave privada e o
segundo de chave pblica.

Exemplos:

Criando chaves com algottmo de criptografia RSA:

# ssh-keygen -t rsa

Criando chaves com algortmo de criptografia DSA:

# ssh-keygen -t dsa

Para fazer uso da chave pblica, preciso que ela seja copiada para dentro do arquivo
/.ssh/authorized_keys do usurio que se quer utilizar a chave, no servidor. Para tal, podemos utilizar a seguinte
linha de comando:

# ssh-copy-id -i <arquivo de chave> <usurio>@<host>:

Exemplo:

Copiando a chave pblica para o servidor 10.5.1.150 para o login do usurio operador:

# ssh-copy-id -i ~/.ssh/id_rsa.pub operador@10.5.1.150:

# scp

Faz cpia de arquivos e diretrios pela rede via SSH.

Sintaxe:

# scp <opes> <origem> <destino>

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 212
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Opes:

-r : modo recursivo.

-C: ativa a compactao do contedo durante a cpia.

Exemplos:

Copiando o arquivo backup.tgz para o diretrio /tmp do host 10.0.2.2 usando para este cpia o login
do usurio user1:

# scp backup.tgz user1@10.0.2.2:/tmp

Copiando o diretrio /dados do servidor 10.0.2.2 para o diretrio local /root usando o login do usurio
user1:

# scp -r user1@10.0.2.2:/dados /root

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 213
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

30 SINCRONIZAO DE DATA E HORA

O Network Time Protocol o sevio responsvel por manter a data e a hora do sevidor sincronizadas
com servidores mundiais. A lista de servidores NTP est em www.pool.ntp.org.

O arquivo de configurao do cliente NTP o /etc/ntp.conf.

Na seo server definido qual vai ser o servidor NTP a ser utilizado para a sincronizao de data e
hora, neste caso o servidor ntp.ubuntu.com, mas o administrador pode recorrer a sevidores NTP de qualquer
parte do mundo. A seo statsdir configura um diretrio onde sero armazenados os arquivos de estatsticas de
uso do servidor (logs), mais abaixo, statistics est configurando os tipos de estatsticas que sero armazenadas
nos logs. A seo driftfile aponta para o arquivo que vai servir como indicador de oscilao do relgio local: o
arquivo /var/lib/ntp/ntp.drift.

Alm do ntpd, deamon do NTP, o cliente ntpdate pode ser utilizado para sincronismo de data e hora
com servidores NTP, a nica providncia que deve ser tomada antes para o servio do NTP, pois no podem
haver dois servios de sincronizao de data e hora funcionando ao mesmo tempo no servidor.

# invoke-rc.d ntp stop

Sincronizando data e hora com o servidor ntp.ubuntu.com:

# ntpdate ntp.ubuntu.com

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 214
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Importante tambm para a manuteno de data e hora corretas no servidor configurar corretamente
o timezone do mesmo, para que ele possa ter e hora conforme o seu fuso horrio, pois um servidor em Buenos
Aires nunca pode ter a mesma hora que um na frica do Sul. O servidor NTP sempre vai enviar para os clientes
a informao do UTC (Tempo Univeral Coordenado), este informao ser cruzada com o timezone do cliente e
a este saber quantas horas a mais ou a menos sero necessrias para se chagar hora relativa ao seu fuso
horrio. A modificao do timezone pode ser feita no arquivo /etc/timezone, veja um exemplo de um:

Para modificar o timezone, o administrador pode editar o arquivo /etc/timezone ou utlilzar os


programas tzconfig e tzselect, ou ainda (para o Debian) dpkg-reconfigure tzdata.

# tzselect

# dpkg-reconfigure tzdata

# hwclock

Sincroniza data e hora do Hardware com o sistema e vice-versa.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 215
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Opes:

--hctosys : toma como referncia a data e hora do BIOS para acertar a data e hora do sistema.

--systohc : toma como referncia a data e hora do sistema para acertar a data e hora do BIOS.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 216
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

31 SERVIDOR X

As distribuies open-source tm cada vez mais desenvolvido sistemas operacionais para usurio final
(desktops) de alto nvel por todo o mundo, mas, muito antes de isso tudo acontecer, j existiam esforos para
desenvolver plataformas grficas que fossem beneficiar tanto clientes como servidores, visto que aplicaes
grficas para servidores so cada vez mais comuns hoje em dia, um grande exemplo o Wireshark (antigo
Ethereal), que uma ferramenta muito til como analisador de rede para administradores.

A plataforma grfica disponvel para distribuies Linux o Servidor X (ou Xorg), ela suporta as
aplicaes grficas disponveis para Linux, como gerenciadores de desktop, gerenciadores de logins, jogos,
aplicaes de escritrio e editores de imagens.

O Xorg totalmente free e tambm segue as regras de licenciamento da GPL, podendo o


administrador instal-lo na distro que quiser.

Assim que o servidor X instalado, importante verificar e modificar (se este for o caso) o seu arquivo
de configurao, que o /etc/X11/XF86Config ou, em algumas distribuies (como o Debian),
/etc/X11/xorg.conf. Este arquivo dividido em sees e sub-sees, vejamos algumas sees dele:

InputDevice
Esta seo responsvel pela configurao de opes de teclado, como layout, idioma e driver e
tambm de configurao de mouse.

Files
Configura o local onde esto armazenadas as fontes do servidor X. O local padro /usr/share/fonts.

Device
Configura opes da placa de vdeo, como driver e o nome do fabricante tambm.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 217
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Monitor

Opes de monitor, como frequncias horizontal e vertical, modelo e fabricante.

Screen

Esta seo se refere configurao da visualizao da interface grfica. , por exemplo, nesta seo
que as resolues de vdeo podem ser configuradas, como no exemplo abaixo:

Onde a opo Modes representa a resoluo de vdeo.

uma prtica muito comum, para que o usurio possa fazer uso do melhor de seu Hardware nas
aplicaes grficas, a gerao de um novo arquivo xorg.conf, isto pode ser providenciado pela linha de
comando X -configure -a, este comando vai gerar um arquivo ~/xorg.conf.new, que vai conter as configuraes
atualizadas de Hardware e deve ser copiado para o diretrio /etc/X11, depois de ser feito um backup do
arquivo original, claro.

O maior benefcio de criar um novo arquivo de configurao, sem dvida, o reconhecimento do


driver de vdeo original, o que habilita o uso de todos os recursos grficos do adaptador de vdeo.

A varivel DISPLAY

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 218
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Com certeza, parte integrante de alta importncia do servidor X a definio do valor da varivel
DISPLAY. Esta varivel responsvel por direcionar aplicaes grficas para o display correto e muito comum
de ela ser personalizada em caso de vrios monitores serem utilizados, neste caso, a varivel display pode
definir para qual deles a aplicao grfica ser enviada. Em caso de programas de acesso remoto, como VNC,
por exemplo, utilizarem o acesso assistido interface grfica, preciso que o cliente determine qual display ele
vai acessar. Vamos sintaxe dessa varivel:

DISPLAY=<host>:<display>.<tela>

Onde, para enviar o wireshark para o primeiro screen do segundo monitor do host MCURY, deve-se
utilizar a seguinte linha de comando:

# export DISPLAY=MCURY:1.0 && wireshark

O host padro o localhost e o uso de : obrigatrio nesta varivel, portanto, se o que o usurio quer
enviar o resultado das requisies grficas para o display e tela padro do mesmo host, basta atribuir
valor:0.0 varivel da seguinte forma:

# export DISPLAY=:0.0

O protocolo XDMCP

Este protocolo de X tem, entre outras carartersticas, o suporte a login remoto via interface grfica.
Para tal, preciso que o daemon SSHD esteja presente e que no arquivo de configurao do mesmo, o
redirecionamento para X11 esteja habilitado.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 219
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

31.1 - Gerenciadores de Desktop

Assim que o Xorg instalado, para acessar uma sesso grfica preciso utilizar o seguinte comando:

# startx

Ao iniciar uma sesso grfica apenas com o xorg instalado, o usurio vai contar apenas com um
terminal para que ele possa, por ele, executar aplicaes grficas. Isso com certeza no atende as necessidades
de um usurio final, necessrio que o Xorg tambm possar contar com um gerenciador de desktop, pois este
gerenciador vai ser o responsvel pelos menus, janelas, temas e efeitos de interface grfica. Os sistemas Linux
contam com uma grande variedade de gerenciadores de desktop disponveis para a instalao, alguns exemplos
so:

GNOME
KDE
XFCE4
LXDE
BLACKBOX
FLUXBOX
OPENBOX
AFTERSTEP

Os gerenciadores que, com certeza, ficaram com a maior fatia de percentual de adeptos so GNOME e
KDE, realmente os dois possuem estruturas de gerenciamento de diretrios e arquivos muito atrativos para o
usurio final. Os dois tambm contam com vrios aplicativos que facilitam a vida do usurio, como exemplo o
programa K3B, que grava e cria imagens de DVDs/CDs. Outro grande atrativo a quantidade de efeitos grficos
providos pelo plugin Compiz Fusion. Um grande ponto alto dos gerenciadores de desktop Linux a facilidade de
manuseio de vrias reas de trabalho ao mesmo tempo, este recurso pode ser utilizado com grande frequncia
por profissionais da rea de editorao grfica, pois invariavelmente eles precisam abrir muitas aplicaes
grficas ao mesmo tempo. Com os efeitos do Compiz, possvel tornar esta interao entre desktops muito
mais atrativa aos olhos dos usurios.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 220
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

possvel determinar qual vai ser o gerenciador de desktop padro do usurio criando o arquivo
~/.xinitrc ou ~/.xsession, que dever ter como contedo a expresso exec <sesso do desktop manager>.
Desta forma, se o usurio user1 quiser utilizar o gnome, ele deve configurar este arquivo (com qualquer um dos
nomes acima) da seguinte forma:

# vim ~/.xsession

No caso acima, o gerenciador de desktops GNOME ser iniciado cada vez que o usurio executar o
script startx ou fizer logon no gerenciador de login escolhido. Como a maioria das distribuies conta com a
possibilidade de instalao de vrios gerenciadores de desktop, este recurso pode ser utilizado para que cada
usurio trabalhe com o gerenciador que quiser.

31.2 - Gerenciadores de login

At agora percebemos que Servidor X e gerenciador de desktop so duas coisas totalmente diferentes,
a pesar de o segundo depender da existncia do primeiro para funcionar, mas em caso de o sistema precisar
iniciar j em uma interface grfica direto sem a necessidade de executar o programa startx, como pode ser
feito? a que entram os gerenciadores de login, eles atuam como servios do processo INIT e, portanto,
podem ser ativados logo aps o boot do sistema. Um gerenciador de login autentica o usurio para que possa
ser iniciada uma sesso por ele. expressamente no recomendvel o login com usurio root na interface
grfica e, por este motivo, a maioria dos gerenciadores de login vem com o login pelo root desabilitado.
Os gerenciadores de desktop mais importantes so GDM, KDM e XDM, eles tambm so free e
open-source. Para definir o gerenciador de login padro do sistema, basta incluir o caminho do binrio do
mesmo em /etc/X11/default-display-manager, como no exemplo abaixo:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 221
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Neste caso, administrador configurou o gerenciador de login para o GDM.

A troca do gerenciador de login padro pode ocorrer manualmente pelo arquivo ou tambm pode ser
feita pela linha de comando abaixo:

# dpkg-reconfigure gdm (ou kdm ou xdm)

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 222
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Se o sistema tem algum gerenciador de login mas o administrador no quer que o sistema inicialize por
ele, s remover os links simblicos do GDM/KDM/XDM de dentro dos diretrios /etc/rc<runlevel>.d, o
mtodo mais fcil de se fazer isso seria:

# update-rc.d -f gdm remove

Desta forma, o GDM fica ainda instalado, porm no carregado pelo processo INIT.

XDM

O XDM o gerenciador de login padro para distribuies Linux, ele vem com um conjunto
interessante de de arquivos de configurao que vo incrementar o uso do servidor X.

Xresources : este arquivo configura parmetros de aparncia do gerenciador de login.

Xsession : define qual gerenciador de janelas vai ser ativado aps a autenticao pelo XDM, este script
s deve ser utilizado caso o servidor X conte com mais de um gerenciador de janelas e o administrador queira
definir um window manager padro para todos os usurios, caso contrrio, o arquivo .xsession deve ser criado
dentro do diretrio home do usurio contendo o seu gerenciador de janelas (o ~/.xinitrc ter o mesmo efeito .
Xaccess: define conexes recebidas de hosts ao servidor X.

Xservers : faz o controle e a associao de displays a hosts especficos. Para acessos via SSH, a opo -
nolisten tcp no deve ser removida, pois o SSH no usa o protocolo TCP para direcionar conexes ao servidor
X.
xdm-config : arquivo de configurao de arquivos e programas utilizados palo XDM para interao com
o usurio, como por exemplo, o arquivo de log de erro de login e o arquivo de pid do processo.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 223
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

32 SERVIO DE IMPRESSO

O servidor padro para impresso em distribuies Linux ou Unix o CUPS (Common Unix Print
Server). Ele usa o servio IPP (Internet Print Protocol), na porta 631 TCP/UDP para conexes. O pacote de
instalao do CUPS o cupsys e os pacotes foomatic-* so importantes nesta composio, pois trazem alguns
programas que vo facilitar a administrao do servidor.

Os drivers para impressoras no CUPS tm extenso. PPD e praticamente todos os fabricantes j contam
com drivers de suas impressoras tambm na verso Linux (o servidorj vem com muitos deles em modo nativo).

possvel tambm que usurio do Windows utilizem impressoras compartilhadas pelo CUPS, o que
torna o servidor multi-plataforma.

Vamos prtica:

# apt-get install cupsys foomatic-* -y

Aps a instalao, preciso incluir as impressoras no arquivo /etc/cups/printers.conf, este


procedimento pode ser feito atravs do assistente, que pode ser acessado por qualquer Web Browser atravs
do endereo http://localhost:631 (a interface lo deve estar ativa).

Algumas opes ao lado podem ser utilizadas tambm, como compartilhamento de todas as
impressoras criadas pelo host, administrao remota, aceitar impresso pela rede, usar autenticao Kerberos,
etc. O arquivo de configurao do CUPS o /etc/cups/cupsd.conf.

Vamos ter uma viso geral do arquivo /etc/cups/printers.conf:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 224
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

No exemplo do arquivo acima, o nome da impressora IMPRESSORA_LINUX e ela pode ser encontrada
na URI ipp://10.12.1.1/LINUX_PRINTER, na linha 16, a expresso Shared Yes indica que ela est compartilhada
na rede, o que proporciona aos clientes Linux o mapeamento automtico da impressora, sem precisar de
interveno manual. Este arquivo proporciona ainda a limitao de impresso por pginas, por tamanho e por
tempo.

32.1 - Comandos de impresso

Linux BSD Apliacao


lp Lpr Imprime um arquivo em uma impressora
lpstat Lpq Mostra a fila de impresso de uma impressora
cancel Lprm Exclui um trabalho da fila de impresso

Exemplos:

Imprimindo o arquivo /etc/passwd na impressora IMPRESSORA_LINUX:

# lp /etc/passwd -d IMPRESSORA_LINUX

Verificando a fila:

# lpstat

Excluindo o job n1:

# cancel 1

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 225
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 226
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

33 LINGUAGEM SQL

Esta uma das linguagens de manipulao de bancos de dados mais populares do mundo e conta com
uma sintaxe simples para qualquer um programador que queira se aventurar. O banco de dados que vamos
utilizar o MYSQL-SERVER, mas o Debian tambm conta em seus repositrios com o PostgreeSQL, que tambm
um timo banco de dados. Vamos instalao do MySQL:

# apt-get install mysql-server y

Para acessar o servidor MySQL, preciso utilizar o comando mysql, especificando qual usurio vai
acessar com o parmetro -u e pedindo senha com o parmetro -p (para sesses autenticadas):

# mysql -u root p

Aps este comando, um prompt de comandos do servidor MySQL vai ser disponibilizado para que o
usurio possa digitar os comandos:

mysql>

Toda linha de comando que for digitada neste prompt deve ser finalizada apenas quando o ; for
digitado ao fim do mesmo.

33.1 - Comandos SQL

O SQL case insensitive, ou seja: no faz diferena alguma digitar os comandos em caixa alta ou baixa.
Vamos aos comandos:

SHOW DATABASES

Mostra os bancos de dados existentes.

CREATE DATABASE <NOME>

Cria um banco de dados

DROP DATABASE <NOME>

Remove um banco de dados.

USE <BANCO>

Acessa um banco de dados.

CREATE TABLE <NOME> (<CAMPO1> <TIPO>, <CAMPO2> <TIPO>)

Cria uma tabela dentro de um banco de dados.

SHOW TABLES

Mostra todas as tabelas de um banco.

DROP TABLE <NOME>

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 227
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Remove uma tabela existente.

DESCRIBE <TABELA>

Mostra os tipos de campos de uma tabela.

INSERT INTO <TABELA> (<CAMPO1>, <CAMPO2>) VALUES (<VALOR1>, <VALOR2>)

Insere registros em uma tabela especificando campos especficos.

SELECT <CAMPOS> FROM <TABELA> WHERE <CONDIO>

Seleciona campos de uma tabela especfica onde os registros atendam condio imposta pelo
WHERE. O WHERE no ser necessrio se o caso for exibir todos os registros da tabela.

UPDATE <TABELA> SET <RELAO CAMPO/VALOR> WHERE <CONDIO>


Atualiza campos de uma tabela que se encaixem nas condies impostas pelo WHERE. Neste caso, o
WHERE tambm no vai ser necessrio se o programador quiser atualizar todos os campos da tabela.

DELETE FROM <TABELA> WHERE <CONDIO>

Apaga registros de uma tabela segundo uma condio imposta pelo WHERE. Se o programador for
excluir todos os registros, basta no especificar condio alguma.

Exemplos:

Acessar o MySQL e criar o banco de dados LPI:

# mysql -u root -p
mysql> CREATE DATABASE LPI;

Acessar o banco LPI e criar uma tabela chamada LPI101:

mysql> USE LPI;


mysql> CREATE TABLE LPI101 (id INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, nome
VARCHAR(40), nota NUMERIC);

Descrever os campos da tabela LPI101:

mysql> DESCRIBE LPI101;

No caso acima, a tabela LPI101 tem como chave primria o campo id, que tambm de
preenchimento automtico e um nmero inteiro, ou seja: este campo no precisar ser preenchido. Quanto ao
campo nome, o tipo VARCHAR significa que ele um campo de, no mximo 255 caracteres.

Inserindo valores nos campos nome e NOTA da tabela LPI101 e selecionando de todos os campos
apenas o valor que for maior que 500:

mysql> INSERT INTO LPI101 (nome, NOTA) VALUES (Linus Torvalds, 800);
mysql> INSERT INTO LPI101 (nome, NOTA) VALUES (Goonie, 450);
mysql> SELECT * FROM LPI101 WHERE NOTA >= 500;

Acrescentar 50 pontos aos candidatos que tiverem nota menor que 500:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 228
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

mysql> UPDATE LPI101 SET NOTA = NOTA+50 WHERE NOTA < 500;
mysql> SELECT * FROM LPI101;

Excluir registros da tabela LPI101 que tenham nota menor que 600:

mysql> DELETE FROM LPI101 WHERE NOTA < 600;


mysql> SELECT * FROM LPI101;

importante que o administrador saiba que o diretrio onde ficam localizados os bancos de dados do
servidor MySQL-Server o /var/lib/mysql e importantssimo que haja polticas de backup e arranjos de discos
que possibilitem disponibilidade e flexibilidade aos bancos.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 229
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

34 MTA

Um Mail Transfer Agent tem a incumbncia de enviar mensagens de correio eletrnico, bem como
garantir que elas cheguem ao destinatrio e, para tal tarefa, utiliza o protocolo SMTP (Simple Mail Transport
Protocol), cuja porta 25 e, por ter que garantir a entrega de mensagens, s trabalha com o protocolo TCP.
Caso uma mensagem no possa ser enviada por algum motivo, ela ser enviada para a fila de e-mails e, assim
que for resolvido o problema, ser re-enviada. Tambm h casos em que o SMTP utiliza a porta 465, isto
acontece por causa do incremento do SSL neste protocolo, para dar mais segurana conexo. Existem vrios
MTAs disponveis em ambiente open-source, mas alguns se destacam, como Exim4, Postfix, Sendmail e Qmail.
Com certeza, o mais utilizado dos 4 o Postfix, pela baixa complexidade dos arquivos de configurao e
constante evoluo com o passar do tempo.

Um servio de e-mail completo possui trs agentes: MTA, MDA e MUA e vamos tratar aqui tambm, de
forma introdutria, os outros 2 no mencionados:

Mail Delivery Agent o responsvel por receber os e-mails e os encaminhar aos diretrios corretos. Os
protocolos que trabalham para que esta funo seja possvel so POP3 e IMAP, nas portas 110 e 143,
respectivamente. O MDA tambm responsvel por autenticar o usurio, assim como o SMTP faz se for
solicitado. A destacar como servidores MDA, o Sendmail, o Dovecot e o Postfix.

Mail User Agent a parte cliente da histria toda, ou seja: a ferramenta utilizada para leitura e envio
de e-mails por parte dos usurios. Este componente de servio de e-mails pode ser um Web Mail ou um cliente
de e-mails como Thunderbird e Evolution, por exemplo.

Sendmail
Um dos mais antigos MTAs do mundo open-source, o Sendmail tem como arquivo de configurao o
/etc/mail/sendmail.cf, que um tanto quanto hostil a qualquer administrador que no tem o conhecimento do
mesmo. Com certeza um legado muito bom do Sendmail o arquivo /etc/aliases, que funciona como um
mapeamento de diversos endereos para um alias, podendo servir para a criao de um novo grupo de
distribuio de mensagens como tambm servir para que um usurio ao invs de receber mensagens, ele seja
apenas um alias para o usurio administrador.

Quando um novo alias criado, no h nenhuma necessidade de o daemon do MTA ser reiniciado ou seu
arquivo de configurao ser carregado novamente, basta que o comando newaliases seja executado.

*Obs: A linha de comando sendmail -bi tambm reinicia um banco de dados de aliases, assim como o
comando newalises.

Postfix
Um dos mais respeitados servidores de e-mail tambm o de mais fcil compreenso para o
administrador. Seu arquivo de configurao o /etc/postfix/main.cf.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 230
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

O arquivo de configurao do Postfix possui algumas variveis que ajudam a entender o


funcionamento do mesmo:

myhostname : nome do host de do servidor, no caso do arquivo acima, ele o hostname do sevidor
mas na maioria dos casos, este campo recebe o nome de domnio designado pelo servidor DNS.

mydestination : locais para onde as mensagens podem ser enviadas.

relayhost : este campo de extrema importncia pois ele configura quais hosts pode enviar e-mails
atravs dele, possibilitando assim o uso de clientes SMTP.

alias_database : configura qual o banco de dados de aliases, geralmente o postfix usa o /etc/aliases.

mynetworks : rea de atuao do servidor. Caso o localhost no seja um componente desta varivel, o
servidor no ser capaz de enviar e-mails para o localhost.

No ato da instalao do postfix o administrador vai se deparar com uma pergunta bem interessante:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 231
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

importante que o smarthost esteja ativado, pois este tipo de host inteligente permite que o MTA no
precise de um DNS para servir como origem de e-mails, podendo ser o prprio hostname do servidor o nome do
host de origem para a mensagem.

O diretrio padro de recebimento de e-mails comum a todos os usurios o /var/mail, onde as


mensagens sero encontradas em modo de arquivos com os nomes dos usurios destinatrios.

O arquivo ~/.forward

Este arquivo, que dever estar dentro do diretrio pessoal do usurio, pode conter uma lista de
endereos para onde todo e-mail enviado pelo usurio vai ser redirecionado. Esta medida bem comum em
servidores de e-mail onde os e-mails dos usurios precisam ser monitorados por pessoas de outros
departamentos.

34.1 - Comandos de MTA

# mail

Envia e-mais em linha de comando.

Opes:

-s : subject - o assunto do e-mail.


-c : com cpia.
-b : blind copy - cpia oculta.

No caso do comando mail, tanto uma mensagem quanto um contedo de um arquivo podem ser
enviados por e-mail. Seguem os exemplos:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 232
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Neste caso acima, o e-mail vai ser enviado para aluno@mcury.com.br, com cpia para
mcury@mcury.com.br e o corpo da mensagem vai ser o texto MTA sendmail. O fim da mensagem marcado
pelo . (ponto) na ltima linha.

Neste caso acima, uma das grandes utilidades deste comando: o envio de contedo de arquivos de
texto por e-mail, o que pode facilitar muito a criao de rotinas que possam disparar e-mails em caso de
situaes adversas para o servidor, como alguns usurios estourando as suas cotas de armazenamento.

# mailq

Consulta a fila de e-mails do MTA. O uso deste comando o mesmo que o uso da linha de comando
sendmail -bp.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 233
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

35 FIREWALL IPTABLES

Um dos mais importantes componentes de uma estrutura de segurana de rede em uma estrutura de
TI o firewall, ele tem a funo tratar os pacotes de rede que vo para o host, que saem do host e que so
redirecionados pelo host, assim como realizar redirecionamentos e mascaramentos de interfaces de rede. No
caso do Linux, o Netfilter o firewall desde a concepo do cdigo, s que os programas de manipulao do
firewall foram sendo modificados em suas sintaxes, funcionalidades e nomes tambm, ficando definidos desta
forma:

Verso do Kernel Programa


2.0 IPFWADM
2.2 IPCHAINS
2.4 (ou maiores) IPTABLES

O firewall IPTABLES, assim como o seu nome j induz a pensar, funciona baseado em tabelas, as
tabelas, por sua vez so as ramificaes do firewall que determinam que tipo de uso tenha as regras a serem
criadas, dentro destas tabelas, existem as chains, que so locais dentro da tabela onde vo ser armazenadas as
regras. Geralmente as chains so interpretadas como o tipo de pacote a ser afetado pelas regras criadas,
portanto, se o administrador quiser criar uma chain, bom que mantenha o padro.

Como o IPTABLES um firewall em linha de comando que trata diretamente com protocolos e portas o
tempo todo, preciso que o administrador tenha um profundo conhecimento deste assunto antes de comear
a criar regras, para que acontecimentos indesejveis no aconteam. Neste material, vamos dar nfase tabela
Filter. Vamos s tabelas:

Tabela Filter
Esta tabela cuida de regras de filtragens feitas em pacotes, como, por exemplo, impedir que a entrada
de pacotes pela porta 23 (Telnet) ocorra no host. Esta tabela conta com as seguintes chains:

INPUT
Armazena regras de entrada de pacotes que tm o firewall como destino.

OUTPUT
Armazena regras de sada de pacotes que tm o firewall como origem.

FORWARD
Armazena regras de pacotes que so redirecionados pelo firewall para outro sevidor.

Tabela NAT
Esta tabela trata de redirecionamentos de IPs e portas para (ou de) outros servidores, sendo capaz de
trabalhar com traduo de endereos de rede (NAT) em modo SNAT (Source NAT) e DNAT (Destination NAT). As
chains da tabela NAT so PREROUTING, POSTROUTING e OUTPUT.

Tabela Mangle
Esta tabela trata de propriedades de pacotes de rede, como prioridade, por exemplo. Todas as chains
das tabelas anteriores so utilizadas pela tabela Mangle.

35.1 - Comandos do Firewall

# iptables

Manipula as regras de tabelas e chains do firewall.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 234
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Opes:

-A <CHAIN>: Cria uma regra no final da chain informada.

-I : cria uma regra prioritria em uma chain.

-D : exclui uma regra de uma chain.

-F : exclui todas as regras de uma tabela ou de uma chain.

-L : lista regras de uma chain ou de todas as chains.

-n : se utilizada em conjunto com a opo -L, habilita a consulta numrica apenas, no permitindo a
consulta de nome por parte do DNS.

--line-numbers : se utilizada em conjunto com a opo -L, numera as regras em ordem de prioridade.

-t : especifica a tabela (filter, nat, mangle), se omitida a opo a filter a tabela padro.

-P : modifica a poltica padro de uma chain.

-p : indica o protocolo.

--dport : indica porta de destino do pacote.

--sport : indica porta de origem do pacote.

-j : indica a ao a ser tomada pela regra.

-m : especifica um mdulo para a regra utilizar.

-s : host ou rede de origem.

-d : host ou rede de destino.

-i : interface de rede de entrada.

-o : interface de rede de sada.

A tabela adotada como padro pelo comando iptables a filter, portanto, desnecessrio declar-la
nas opes, mas, para os mais metdicos, a vai o primeiro exemplo:

Criando regra de negao de acesso de entrada rede 10.12.1.0/24 com destino a 10.12.1.1 na porta
22 (SSH):

# iptables -t filter -A INPUT -p tcp -s 10.12.1.0/24 -d 10.12.1.1 --dport 22 -j REJECT

Com o alvo REJECT, o remetente do pacote sempre receber um aviso de falha na entrega do pacote,
mas se o alvo for DROP, isto s acontecer quando houver timeout na conexo, ficando o terminal onde
ocorreu a solicitao travado at que este timeout ocorra, se o acesso for em um Web Browser, o mesmo vai
tentar carregar a pgina at dar o tempo limite de espera para a conexo. Outro alvo possvel o ACCEPT, onde
o pacote aceito.

Mudando a poltica padro da chain FORWARD para DROP:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 235
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# iptables -P FORWARD DROP

importante que o firewall seja o menos permissivo possvel e uma boa prtica para que isso acontea
tornar a poltica padro de tratamento de pacotes para DROP (negao de acesso) e liberar pacotes, hosts e
redes conforme a poltica individual para cada um.

Permitindo que hosts da rede 10.12.1.0/24 tenham acesso a www.mcury.com.br atravs do roteador:

# iptables -A FORWARD -p tcp -s 10.12.1.0/24 -d www.mcury.com.br --dport 80 -j ACCEPT

Listando as regras criadas:

# iptables -L -n --line-numbers

importante ressaltar que, no caso do uso da chain FORWARD preciso que o host seja um roteador,
para isso acontecer, temos que ativar o roteamento e cria as regras de redirecionamento. Vamos criar o
seguinte cenrio:

Firewall: 10.12.1.1
Gateway do Firewall: 10.12.1.254
Rede cliente: 10.12.1.0/24
DNS: 10.12.1.254

Os hosts podem ser representados pelo IP, pelo nome ou pelo MAC address, esta ltima uma tima
prtica de segurana para bloqueio ou aceitao de acesso, visto que o MAC fixo para cada interface de rede
e apenas um administrador de sistema pode emular um endereo MAC no sistema. Vamos ver um exemplo de
uma regra de aceitao de acesso porta 80 pelo MAC, na tabela filter e na chain FORWARD:

# iptables -I FORWARD -p tcp -m mac --mac-source 00:e0:42:00:04:5e -d 10.12.1.1 --dport 80 -j ACCEPT

Listando as regras:

# iptables -L -n --line-numbers

To importante quanto criar as regras de um Firewall mant-las ativas por quanto tempo for
necessrio. Acontece que o iptables no utiliza nenhum arquivo de configurao, as suas regras so

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 236
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

implementadas e salvas em memria RAM, para que as regras sejam salvas e restauradas, preciso utilizar os
comandos abaixo:

# iptables-save

Exibe as regras do iptables na sada padro.

Sintaxes:

# iptables-save > <arquivo> (para criar um novo arquivo de regras com as regras existentes)

# iptables-save >> <arquivo> (para incrementar um arquivo de regras existente com as regras criadas)

Exemplo:

Salvando as regras do Firewall em um script novo chamado ~/firewall.fw:

# iptables-save > ~/firewall.fw

Lendo o contedo do arquivo:

# cat ~/regras.fw

# iptables-restore

Restaura as regras do iptables atravs da entrada padro.

SIntaxes:

# iptables-restore < <arquivo>

Exemplo:

Instruindo o script /etc/rc.local a executar a recuperao das regras atravs do arquivo


/root/regras.fw:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 237
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# vim /etc/rc.local

Scripts personalizados de Firewall

Para dar mais praticidade ao uso do iptables, necessrio que o seu uso seja associado com um script
de Shell. Vamos criar abaixo alguns exemplos de scripts que ajudam e muito um administrador na hora de
montar as suas regras:

1 - permitir acesso a hosts pelo MAC atravs de uma lista em modo texto

Antes de tudo, vamos criar a lista de MACs que vo ser contemplados com o script:

# vim ~/lista_MAC.txt

Vamos ao script agora:

#vim ~/libera_MAC.sh

O script acima est instrundo a liberar acesso a qualquer protocolo e qualquer porta do host 10.12.1.1
para os endereos MAC da lista lida pela estrutura for (uma linha por vez). A lista contm 5 MACs, mas
poderiam ser 100 e, neste caso, ficaria cansativo digitar todas essas regras a cada aplicao de filtro.

importante lembrar tambm que a poltica padro da chain FORWARD j estava como DROP, pois se
ele estivesse como ACCEPT, no teria razo e liberar MACs, j que todos por padro j estariam liberados.

Executando o script:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 238
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# . ~/libera_MAC.sh

Vamos ver como ficaram as regras de liberao de MACs:

2 Script - Interagindo na criao de regras de aceitao de acesso SSH

# vim ~/libera_acesso.sh

No caso abaixo, como o SSH trabalha com os protocolos TCP e UDP, foram criadas 2 regras, uma para
cada protocolo para entrada de pacotes na porta 22. Antes de criao da regra foi feita um teste simples da
varivel host para que o script s fosse executado se ela tivesse um valor definido.

Executando o Script:

# . ~/libera_acesso.sh

Listando as regras:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 239
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

# iptables -L

importante reparar que no campo source sempre aparece o nome SERVER1 ao invs do IP que
escolhemos para a regra, o que acontece neste caso que o iptables l o arquivo /etc/hosts e verifica se dentro
dele h alguma assoiciao de nome com IP e nomeia o host, se for o caso.

Tambm possvel, com um aprofundamento maior dos conhecimentos em Shell Script, fazer com que
um script de um Firewall Iptables seja acessvel por um Web Browser qualquer pois, desta forma, de qualquer
distrribuio o Firewall poder ser acessado.

Vejamos um exemplo de script de firewall acessvel pelo Browser:

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 240
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR

Para construir este programa foi necessrio que fosse instalado o servidor Web Apache no host que
hospeda o programa de Firewall e, neste caso est sendo criada uma regra de bloqueio para pacotes TCP na
porta 22 que venham do host 10.12.1.2 com destino ao host 10.12.1.1.

MANUAL DE TREINAMENTO M.CURY


LINUX SYSTEM ADMINISTRATOR PGINA 241

Você também pode gostar