Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 1 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 2 
 
mailto:contato@mcury.com.br
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 3 
 
Características 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 certificação LPIC-1, oferecido pelo Linux Professional Institute (LPI). O conteúdo 
do curso é sincronizado com os objetivos listados por tópicos no site www.lpi.org e seu conteúdo 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 distribuições Linux; 
 Entender e manter a integridade dos sistemas de arquivos e diretórios do sistema; 
 Instalar, consultar e remover programas em diferentes plataformas Linux; 
 Administrar contas de usuários e grupos; 
 Criar, personalizar e fazer uso de scripts ou programas úteis para o administrador; 
 Manipular serviços de sistema e seus níveis de execução; 
 Criar a melhor estratégia de armazenamento de arquivos para serviços, usuários e grupos; 
 Criar estratégias de backups; 
 Entender e usar a documentação disponível no sistema e online; 
 Configurar, compilar e instalar o Kernel Linux na distribuição, assim como os seus módulos; 
 Entender a linguagem SQL; 
 Administrar serviços de interface gráfica; 
 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 didático é auxiliar o aprendizado do aluno sobre a matéria ministrada pelo 
instrutor em sala de aula. Quaisquer dúvidas podem ser tiradas com o mesmo em sala de aula. 
 
 
 
Sejam bem-vindos a M.Cury e ao GNU/Linux!!! 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
http://www.lpi.org/
http://www.mcury.com.br/
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 4 
 
Índice: 
 
Tópico Página 
 
1- CONCEITOS 05 
2- PROGRAMAS E COMANDOS BÁSICOS 12 
3- DISCOS E PERMISSÕES 23 
4- GERENCIAMENTO DE PACOTES 27 
5- INSTALAÇÃO DO SISTEMA OPERACIONAL 37 
6- O SHELL 41 
7- DOCUMENTAÇÃO NO LINUX 46 
8- COMANDOS DE CONTEÚDO 50 
9- EXPRESSÕES REGULARES 64 
10- USUÁRIOS E GRUPOS 71 
11- PERMISSÕES 85 
12- SISTEMA DE ARQUIVOS 89 
13- LINKS 103 
14- COMANDOS DE BUSCA 104 
15- RAID 107 
16- BACKUP E COMPACTAÇÃO 113 
17- AGENDAMENTO DE TAREFAS 121 
18- COTAS DE ARMAZENAMENTO 126 
19- GERENCIAMENTO DE PROCESSOS E INICIALIZAÇÃO 132 
20- KERNEL 144 
21- GERENCIADORES DE BOOT 155 
22- COMPILAÇÃO 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- SINCRONIZAÇÃO DE DATA E HORA 214 
31- SERVIDOR X 217 
32- SERVIÇO DE IMPRESSÃO 224 
33- LINGUAGEM SQL 227 
34- MTA 230 
35- FIREWALL IPTABLES 234 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 5 
 
1 - CONCEITOS 
 
 
Antes de começar 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 criação de softwares 
livres baseados em sistemas operacionais Unix. O nome GNU vem de 
“GNU is Not Unix”, e não somente do nome do animal Gnu, como 
muitos pensam. Este projeto é o responsável por desenvolver alguns 
softwares muito conhecidos pelo público que utilizam sistemas open-
source, como GIMP e GNOME, por exemplo. 
 É importante ressaltar que Linux também não é 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 diretórios, o núcleo 
aplicado foi desenvolvido por Linus Torvalds (que não tem nada a ver com o projeto) e, desde então, 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 
Licença Pública Geral), para que houvesse um padrão de licenciamento para os softwares livres a serem 
desenvolvidos a partir do fim da década de 80. O desenvolvedor da GPL foi Richard Stallman. 
Ela é baseada em quatro liberdades: 
 
Execução do software (liberdade nº 0); 
Estudo do software (liberdade nº 1); 
Distribuição do software (liberdade nº 2); 
Aperfeiçoamento do software (liberdade nº 3). 
 
Como integrantes da lista de softwares baseados em GPL (os chamados “open-source”) estão sistemas 
operacionais como FreeBSD, OpenSolaris e IBM-AIX (que são baseados em Unix), Debian, Red Hat, Slackware e 
Suse, que funcionam sobre Kernel Linux. 
 
1.3 – Open Source x Free 
 
Ser open-source não significa ser grátis. 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, não se opõe a GPL, já que o 
Kernel continua sendo Linux (cujo código fonte pode ser facilmente encontrado em www.kernel.org para 
download) e as outras liberdades continuam garantidas ao usuário. 
Existem sim alguns exemplos de “distribuições” que, além de ser open-source, são também “free” e 
são excelentes opções para servidores e (ou) desktops. Exemplos bem claros disso são as distribuições Debian, 
Ubuntu, CentOS e Fedora. 
 
Para maiores detalhes sobre a GPL, pode-se consultar a URL www.gnu.org/licenses. 
 
http://www.kernel.org/
http://www.gnu.org/licenses
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 6 
 
1.4 - O Linux e as Distribuições 
 
Criado pelo até então universitário Linux Torvalds em Helsinki 
(Finlândia), o Linux surgiu de um estudo de uma versão reduzida de kernel Unix 
(o Minix) em um projeto de faculdade. 
A primeira versão do Kernel foi lançada em 1991 e, a partir daí, este 
kernel Linux começou a ser utilizado por diversas distribuições open-source. 
As distribuições mais significativas são: 
Debian, Red Hat, Suse, Slackware, Gentoo, Arch Linux, Mandriva, 
Ubuntu, CentOS e Fedora. 
Algumas “distribuições” se originaram de outras, pois é bem mais 
prático e coerente desenvolver uma grande solução em cima de outra que já 
funcione muito bem nos mesmos padrões desejados. 
Exemplos: 
 
Ubuntu e Kubuntu são baseadas em Debian. 
 
 
O Ubuntu (que tem como diferença para o Kubuntu apenas o fato de utilizar GNOME enquanto o 
KUBUNTU usa KDE como interface gráfica) tem se destacado muito no cenário Desktop (usuário final) por sua 
fácil usabilidade, efeitos de interface gráfica, suporte nativo a sistemas de arquivos NTFS e FAT16/32, drivers 
para inúmeras impressoras e scanners, etc. Por este motivo, vem sendo adotado como principal distribuição 
Linux para Desktops. Sua versão Server também tem sido largamente utilizada por empresas e estudiosos na 
área de TI. 
 O Debian já é um sistema operacional muito mais focado em aplicações para servidores e é preferido 
pela maioria dos estudantesde especialistas em Linux pelo fato de ele ser 100% free e de ter o modo de 
instalação CORE, que não carrega nenhum tipo de aplicação além do próprio sistema básico, o que quer dizer 
que o sistema fica totalmente “cru” para que o próprio administrador escolha, efetivamente, que tipo de papel 
ele vai desempenhar como servidor de rede. 
 
Mandriva*, Fedora e CentOS são baseados no Red Hat. 
 
 
Assim como o Ubuntu, o Fedora tem se destacado em aplicações que dizem respeito ao usuário final e 
é uma excelente distribuição para este fim. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 7 
 
O CentOS se destaca pala sua função de servidor Red Hat 100% free, pois a Red Hat cobra suporte ao 
seu sistema operacional Red Hat Enterprise e a versão free deste sistema operacional não existe mais. 
Quando se diz que uma distribuição é baseada na outra, não quer dizer que seja a mesma coisa, mas 
sim que a construção de uma se baseou em um projeto já pronto da outra. 
Algumas diferenças entre sistemas operacionais baseados em Debian e em Red Hat são bem evidentes, 
como a instalação e o gerenciamento de pacotes instalados, a estrutura de diretórios e os arquivos de 
configuração. 
Podemos afirmar, então, que o Linux se resume ao kernel que é instalado em sistemas operacionais 
open-source que assim o desejarem. 
Outra consideração importante é que, por se tratar de um sistema que o usa o mesmo modelo POSIX 
do Unix, não haverá muitas barreiras para o administrador Linux experimentar sistemas operacionais como 
FreeBSD, Solaris, SunOS, etc. Alguns comandos e diretórios são simplesmente os mesmos. 
Algumas distribuições são protegidas pelas leis de Copyright, caso de Suse Enterprise e Red Hat 
Enterprise. 
 
*O Mandriva originou da fusão das empresas Mandrake e Conectiva. 
 
 
 
1.5 – O Kernel Linux 
 
O papel do kernel para uma distribuição é fundamental, pois é ele que provê o suporte a recursos de 
software e hardware necessários para o funcionamento do mesmo. O exemplo clássico disto é que, em alguns 
servidores, os administradores têm o costume de reconfigurar, recompilar e reinstalar o kernel para tirar mais 
proveito de recursos de um processador específico ou até habilitar o modo PAE para que um sistema 
operacional de 32 bits possa operar com mais de 4 GB de memória RAM. 
Os comandos do Linux dependem que exista algum 
programa que os interprete, assim como o este 
interpretador (Shell) precisa que algum Kernel interaja 
entre ele e o Hardware existente. Um grande exemplo disso 
é que se o kernel não der suporte a placas de rede Wireless, 
não adiantará nada o administrador tentar usar o comando 
iwconfig, pois não haverá suporte ao hardware de rede sem 
fio para manipulá-lo 
Um kernel pode ser classificado de 2 formas: 
Monolítico: carrega todos os recursos de que 
precisa na própria imagem de boot do kernel. 
Modular: carrega grande parte dos recursos de 
kernel em módulo que podem ou não ser carregados após o 
boot do sistema. A maioria dos sistemas operacionais 
prefere trabalhar com kernel modular. 
Estas definições podem ser feitas quando o 
administrador configura e compila o kernel. 
 
Versões do kernel 
A nomenclatura de uma versão de kernel segue o padrão abaixo: 
<versão maior>.<versão menor>.<compilação/patch>.<versão extra> 
 
Por definição, um kernel era considerado instável (ainda em desenvolvimento) quando a sua versão 
menor fosse ímpar, mas, desde 2004, com o lançamento da versão 2.6, isto não é mais aplicado. O que 
acontece agora é que, quando for preciso alterar parâmetros de segurança e suporte a dispositivos e 
tecnologias , as alterações serão preferencialmente feitas no terceiro campo e, quando houver a necessidade 
de um conjunto massivo de alterações, a segunda versão será afetada (de forma estável). 
 
 
HARDWARE 
KERNEL 
SHELL 
COMANDOS 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 8 
 
Exemplo de versão do kernel: 
2.6.32-2-PAE 
 
Neste caso acima, temos um kernel de revisão 32, que recebeu a versão extra de 2-PAE do 
administrador porque ele inseriu durante a configuração 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 padrão de 63 terminais disponíveis para uso. O grande problema é 
encontrar combinações possíveis de teclas de função para isso tudo. 
Cada um desses terminais funciona de forma independente, facilitando assim a execução de múltiplas 
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 Gráfica ALT+F7 
 
Estes terminais são utilizados por interpretadores de comandos, como BASH e SH, no uso dos 
comandos administrativos e de usuários. 
Para logins remotos e emulações de terminais em modo gráfico, são 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 distribuição. Ele 
pode ser usado para restringir ou permitir o uso de terminais no sistema. 
A tendência clara de um usuário final é “fugir” dos terminais do Linux, até porque sua usabilidade não 
atende às aplicações 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 são KDE e GNOME. 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 9 
 
Exemplo de terminal: 
 
 
 
 
1.6 – Interfaces gráficas 
 
 O uso de interface gráfica, como já foi dito anteriormente, é mais indicado e praticado para usuários de 
desktop, ainda que muitas aplicações gráficas para servidor sejam utilizadas para gerenciar serviços 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 gráficas disponíveis para Linux. 
 Alguns sistemas operacionais disponibilizam a instalação de mais de uma interface gráfica, enquanto 
outros são “fechados” a este tipo de opção (caso do Ubuntu, que usa o Gnome e tem no Kubuntu a sua “versão 
com KDE”). 
 
 
 
 GNOME 
 Por ser um gerenciador de janelas com muitos efeitos visuais e menus 
organizados e de fácil entendimento, este desktop-manager é preferido pelos usuários 
de desktop Linux. 
 Ele gerencia diversas áreas de trabalho com grande facilidade, propiciando o 
envio de múltiplas janelas de uma área de trabalho para outra (recurso muito útil para 
designers, por exemplo). 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 10 
 
 
 
 Exemplo de área de trabalho do Gnome no Ubuntu 
 
 
 
 Efeito de cubos do GNOME com múltiplas áreas de trabalho 
 
 
 
KDE 
 O KDE é o desktop manager preferido de alguns administradores de servidores 
(quando eles precisam utilizar interface gráfica) por causa da sua leveza. 
 A estrutura de menus do KDE é bem diferente em relação à do Gnome, se 
assemelhando um pouco com a estrutura de menus do Windows (grosso modo). 
 Ele não conta com alguns recursos especiais do Ubuntu, mas também é uma ótima 
opção, já que o que mais o usuário ou administrador do Linux tem é opção!! 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTOM.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 11 
 
 
 
 Menu do KDE no Kubuntu 
 
 
Qual distribuição, versão do kernel e desktop manager utilizarem é uma questão a ser analisada 
cuidadosamente pelo usuário/administrador, pois não é em toda distribuição que se pode utilizar um servidor 
de correio eletrônico, por exemplo, e também uma “Distribuição do tipo Servidor” não vai satisfazer o usuário 
de programas multimídia. 
 É importante lembrar que ter uma interface gráfica instalada pode significar o maior uso de memória 
RAM (em alguns casos, chegando a fazer uso de SWAP), o suporte obrigatório a recursos e resoluções de vídeo 
suportadas pelos drivers dos fabricantes de vídeo, dispositivos de áudio instalados, etc. Justamente por tudo 
isso é que o administrador Linux não instala interface gráfica no servidor ou, se for necessário, opta por instalar 
a interface mais leve possível e apenas a utiliza em caso de última necessidade. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 12 
 
2 - PROGRAMAS E COMANDOS BÁSICOS 
 
Os comandos GNU/Linux são totalmente SENSITIVE CASE. Isso significa que se uma opção de um 
comando ou um comando for minúscula, ela não funcionará se for trocada por maiúscula. 
Alguns comandos têm opções em modo curto e modo longo. Algo do tipo: -a que também pode ser 
usado como --all. 
 
# ls 
 Lista conteúdo de diretórios. 
 
Sintaxe: 
# ls <opções> <diretório> 
 
Opções: 
-l : modo longo. Lista detalhes sobre os objetos, como o dono, o grupo, as permissões, data de última 
alteração e tamanho (a unidade padrão é o byte). 
-a ou --all : lista todos os objetos contidos no diretório, inclusive os ocultos(iniciando com .). 
-i ou –inode : lista o número inode de todos os objetos (índice que o sistema de arquivos usa para 
identificar o arquivo ou diretório). 
-c : lista em ordem alfabética. 
-h ou --human-readable: lista o conteúdo no modo “mais humano”. A unidade de tamanho de cada 
objeto é a mais compreensível possível. 
-C : lista o conteúdo em colunas. 
-t : classifica o conteúdo pela data de última modificação (ctime). 
-S : classifica os arquivos pelo tamanho. 
-R: lista o conteúdo recursivamente, subdiretórios e arquivos. 
-r: classifica o conteúdo em ordem alfabética reversa. 
 
Exemplos: 
 
Listando todo o conteúdo do diretório /root/LPI, inclusive arquivos ocultos, em modo longo e “mais 
humano”: 
# ls –lha /root/LPI 
 
Listando por ordem alfabética reversa e de modo recursivo, todo o conteúdo de /etc: 
# ls –lrR /etc 
 
Listando em modo longo os arquivos e diretórios de /var/www e o número inode de cada um: 
# ls –li /var/www 
 
 
Detalhes de um arquivo: 
 
Ao listar um diretório específico com 'ls -l', foram verificados alguns itens interessantes: 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 13 
 
 
 
 
Acontece que a primeira coluna representa o tipo do arquivo e as permissões aplicadas a ele. Dessa 
primeira coluna, vamos destacar por hora o tipo (primeiro campo). 
Os arquivos estão divididos em alguns tipos: 
_ : é um arquivo regular. 
d : é um diretório. 
l : é um link simbólico. 
b: é um arquivo de bloco (um disco ou uma partição). 
c: é um arquivo de caracteres (um terminal, por exemplo). 
p: é um pipe. 
s: é um socket. 
 
As outras colunas são: 
 <arquivos contidos> <dono> <grupo> <tamanho> <data de última modificação> 
 
# file 
Mostra qual o tipo de arquivo em questão. 
 
Sintaxe: 
# file <objeto> 
 
# touch 
Cria arquivos vazios e/ou troca data de modificação de arquivos. 
 
Sintaxe: 
# touch <opções> <arquivo> 
 
Opções: 
-d : especifica data. 
-m : troca data de última modificação. 
-r : utiliza data de última modificação de outro arquivo como referência. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 14 
 
 
Exemplos: 
# touch -m -d 20100512 arq1 : troca a data de última modificação para 12/05/2010. 
# touch arq2 : cria um arquivo vazio chamado 'arq2'. 
 
# cd 
Altera o diretório atual. 
 
Sintaxes: 
# cd <diretório_destino> 
# cd .. - retorna um nível na hierarquia (pai). 
# cd ../.. - retorna 2 níveis na hierarquia. 
# cd ~ - muda para o diretório pessoal do usuário em seção. É o mesmo que cd sem argumentos. 
# cd ~user1 – muda para o diretório pessoal do usuário user1. 
# cd ../<dir1> – muda para o diretório 'dir1', que está um nível hierárquico acima. 
 
# mkdir 
Cria diretórios. 
 
Sintaxe: 
$ mkdir <opções> <diretórios> 
 
Opções: 
-v : “verbose”. Exibe detalhes do que foi feito. 
-m <perm>: cria o diretório já com as permissões determinadas. 
-p : cria subdiretórios e diretórios de uma vez só. Não há a necessidade de existir o diretório pai 
para que seja criado o subdiretório. 
 
Exemplos: 
 
Criando os diretórios linux/debian/ubuntu de uma só vez e exibindo a saída do comando: 
# mkdir -pv linux/debian/ubuntu 
 
Criando o diretório suse com permissão 733 (permissões de arquivos e diretórios serão detalhadas 
mais à frente). 
# mkdir -mv 733 suse 
 
Criando diretórios dir1, dir2, dir3 e dir4 em um só comando, exibindo também a saída do comando: 
# mkdir -v dir{1,2,3,4} 
 
Criando diretórios dir10, dir11, dir12, dir13, dir14, dir15 em um só comando, em modo “verbose”: 
# mkdir -v dir{10..15} 
 
# rmdir 
Exclui diretórios vazios. 
 
Sintaxe: 
# rmdir <diretório> 
 
# rm 
Exclui arquivos e diretórios. 
 
Sintaxe: 
# rm <opções> <arquivo/diretório> 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 15 
 
Opções: 
-v : verbose. 
-i : modo interativo. Espera confirmação do usuário para excluir. 
-r : modo recursivo. Exclui diretório e seu conteúdo. 
 
# mv 
Move ou renomeia arquivos e diretórios. 
 
Sintaxe: 
# mv <opções> <arquivo/diretório> <dir_destino/nome_destino> 
 
Opções: 
-i : modo interativo. Pergunta antes de sobrescrever um arquivo existente com o mesmo nome. 
-v : modo verbose. 
-n : não sobrescreve um arquivo de destino com o mesmo nome. 
-f : modo forçado. 
 
# cp 
Cria cópias de arquivos ou diretórios. 
 
Sintaxe: 
# cp <opções> <origem> <destino> 
 
Opções: 
-R : modo recursivo. Copia diretório e seu conteúdo. 
-v : modo verbose. 
-i : modo interativo. Pergunta antes de sobrescrever destino. 
-u : modo “update”. Apenas copia para o destino arquivos que o mesmo não tem ou que, a pesar de 
ter o mesmo nome, são diferentes em seus conteúdos. 
-f : modo forçado de cópia. 
-p : preserva os atributos originais do arquivo. 
-d : preserva ligação simbólica. 
 
 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 modificação do original em relação ao arquivo 
de destino com o mesmo nome: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 16 
 
# cp -vu /etc/passwd /tmp 
 
 # du 
 “Disk usage” - exibe o tamanho em disco ocupado por diretórios. 
 
 Sintaxe: 
 # du <opções> <diretório> 
 
 Opções: 
 -k : em KB. 
 -m : em MB. 
 -h : modo mais “humano”. Exibe o resultado no múltiplo de byte mais compreensível. 
 -s : modo simples. Só exibe o tamanho ocupado pelo diretório, não o de seu conteúdo. 
 
 Exemplos: 
 
 Exibindo o tamanho ocupado por todos os subdiretórios de /etc/network e por ele próprio em modo 
mais “humano”: 
 # du -h /etc/network 
 
 
 
 Exibindo apenas o tamanho total do diretório /etc em modo mais humano: 
 
 
 
# df 
 Exibe informações sobre armazenamento de volumes montados. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 17 
 
 
 Sintaxe: 
 # df <opções> <volume> 
 
 Opções: 
 -k : em KB. 
 -m : em MB. 
 -h : modo mais “humano”. Exibe o resultadono múltiplo de byte mais compreensível. 
 -i : ao invés de exibir informações sobre blocos, exibe informações sobre inodes. 
 -T: Exibe o tipo de sistema de arquivos utilizado por cada partição montada. 
 
 Exemplo: 
 
 Exibindo o espaço ocupado pela partição /dev/sda5, que está montada: 
 # df -h /dev/sda5 
 
 
Mostrando informações sobre a reserva de inodes da partição montada /dev/sda5: 
 # df –hi /dev/sda5 
 
 
 # cal 
 Exibe o calendário no terminal. 
 
 Opções: 
 -j : exibe calendário Juliano (dias corridos do ano). 
 -3 : exibe calendário do mês anterior, do atual e do posterior. 
 -m <num> : exibe calendário do mês específico. 
 
 Exemplo: 
 
 Exibindo o calendário dos dias corridos até hoje desde o início do ano: 
 # cal -j 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 18 
 
 
 
 
 # date 
 Exibe ou modifica a data e hora do sistema. 
 
 Opções: 
 --utc : exibe data e hora no padrão UTC(Universal Time Clock). 
 -r <arquivo>: exibe a data e hora de última modificação de um arquivo. 
 -R : exibe data e hora no formato RFC2822. 
 +<var> : utiliza variáveis do comando para exibir em formato específico. 
 
 Variáveis do date: 
 %d : dia. 
 %m : mês. 
 %y : ano com 2 dígitos. 
 %Y : ano com 4 dígitos. 
 %H : hora. 
 %M : minuto. 
 %S : segundo. 
 %e : dia do mês. 
 %b : mês por extenso. 
 
 Sintaxes: 
 $ date <opções> 
 $ date +<variáveis> 
 # date MMDDhhmmAAAA (mês,dia,hora,minuto e ano) – modificação da data. 
 
 Exemplos: 
 
 Modifica a data para 27/02/2010 e hora para 08:31. 
 # date 022708312010 
 
 3 Formas diferentes de representação de data e hora: 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 19 
 
 
 
 
 
 
 # free 
 Exibe informações sobre uso de memórias RAM e Swap. 
 
 Sintaxe: 
 # free <opções> 
 
 Opções: 
 -k : em KB. 
 -m : em MB. 
 -g : em GB. 
 -t : exibe RAM + Swap. 
 
 Exemplos: 
 
 Exibindo o tamanho total de memória 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 função de repetir a cada ‘x’ segundos um comando específico, o padrão 
é o intervalo de repetição de 2 segundos. 
 
2.1 – Comandos de desligamento 
 
 # halt e # poweoff 
 Desligam o sistema. 
 
 # shutdown 
 Desliga, reinicia ou simula desligamento. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 20 
 
 Sintaxe: 
 # shutdown <opções> 
 
 Opções: 
 -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 verificação de disco no próximo boot. 
 -F - força verificação de disco no próximo 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. 
 
 Opções internas do editor: 
 
 <insert> – modo de inserção de texto. 
 <insert>2x – modo 'replace'. Sobrescreve conteúdo posterior. 
 <esc> – entra em modo de comandos. 
 v – entra em modo 'visual'. Seleção de texto. 
 
 Comandos: 
 yy – copia linha inteira. 
 y – copia conteúdo selecionado. 
 p – cola. 
 x – recorta conteúdo selecionado. 
 dd – exclui linha inteira. 
 d – exclui conteúdo selecionado. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 21 
 
 :set number – exibe linhas numeradas. 
 :set nonumber – desliga numeração. 
 :%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> – além de executar o comando do shell dentro do vim, copia sua saída padrão 
para o arquivo. 
 :w – salva arquivo. 
 :q – sai sem salvar. 
 :wq ou :x – sai salvando. 
 :w <caminho>/<nome> – salva como... 
 :<comando>! - força o uso do comando. 
 ALT+U – desfaz alteração. 
 CTRL+R – refaz alteração 
. 
 O editor VIM é, com certeza, uma ótima ferramenta para um administrador de sistema e rede Linux, 
uma vez que muitos serviços de sistema dependem única e exclusivamente de um arquivo de configuração, 
sem contar a programação em Shell Script, que fica muito mais interessante com os recursos do VIM. O arquivo 
de configuração 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 programação, organização automática do 
script e a salva da última posição do cursor do teclado após fechar o arquivo, é preciso instalar o pacote ‘vim-
scripts’. 
 
 
 Exemplo de arquivo /etc/vim/vimrc 
 
 
 Outro recurso importantíssimo do VIM é a manutenção de um arquivo de backup para cada 
documento que está sendo redigido, protegendo o seu conteúdo contra qualquer desligamento involuntário 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 
conteúdo que está dentro dele só pode ser restaurado com o seguinte comando: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 22 
 
 
# vim -r <nome_original> 
 
 Logo após, o documento tem que ser salvo com a opção w e caso tudo esteja correto pode-se remover 
de swap, pois, se isto não 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 função disso. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 23 
 
3 - DISCOS E PARTIÇÕES 
 
3.1 - Discos 
 
 A nomenclatura de discos no Linux é bem particular. Ela consiste em, ao identificar o volume físico, 
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-mãe 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 também CDs/DVDs IDEs. Para este caso, existirá um link simbólico de 
um desses endereços para /dev/cdrom, facilitando assim a montagem por parte do usuário. 
 
 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 são reconhecidos por /dev/fd0 e /dev/fd1. 
 Drives de fita SCSI são reconhecidos como /dev/ft0(1,2,3..). 
 
 Para fazer a consulta de quais discos estão disponíveis 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 partições e discos 
que podem ser utilizados pelo sistema. Nele surgirão algumas informações importantes como o major number 
dos discos, que é o número de identificação do tipo dos mesmos. O exemplo abaixo mostra a interpretação de 
um arquivo desse: 
 
 # cat /proc/partitionsmajor 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 são SATA. 
O que indica que ele é SATA é o major number 8. 
 
 Os major numbers são assim classificados: 
 
 3 – disco IDE (ide-0). 
 7 – dispositivo de Loop(não ligado a disco físico). 
 8 – disco SATA, SAS, SCSI e discos externos. 
 9 – RAID via software. 
 22 – Disco IDE (ide-1). 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 24 
 
3.2 - Partições 
 
 Quanto à nomenclatura de partições, é preciso ter muita atenção pois o Linux as trata de maneira bem 
conceitual, a começar pelo limite de partições: 63 no total. 
 
Os minor numbers definem o tipo de cada partição: 
 
 De 1 a 4: simbolizam partições primárias ou estendidas. 
 De 5 em diante: simbolizam partições lógicas. 
 
 Se forem ocupados todos os minor numbers de 1 a 4, o restante do espaço em disco (se houver) fica 
inutilizável, por isso, é importante saber que, para que se possa utilizar mais de 4 partições em um disco, uma 
partição estendida deve ser criada. 
 
 A função da partição estendida é apenas abrigar as partições lógicas, ou seja: ela nunca vai ser 
montada em diretório algum do sistema. 
 
 Vamos conferir outra tabela de partições: 
 
 # cat /proc/partitions 
 
 
 
 No caso acima, vamos analisar a tabela de Particionamento de /dev/sda: 
 
 /dev/sda1 é uma partição primária. 
 /dev/sda2 é uma partição estendida, que foi criada com o único objetivo de serem criadas partições 
lógicas dentro dela. 
 /dev/sda5 é uma partição lógica. 
 /dev/sda6 é uma partição lógica. 
 /dev/sda7 é uma partição lógica. 
 
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 instalação em um servidor qualquer. É importante que alguns 
diretórios fiquem em partições separadas do sistema raiz, são elas: 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 25 
 
 /tmp – é o único diretório que tem permissão de escrita para qualquer usuário comum, sendo assim, 
qualquer usuário pode acabar com os blocos disponíveis da partição do sistema raiz, deixando muitos serviços 
sem funcionar mais, 
 /home – por ser o diretório onde, por padrão, irão ficar os arquivos pessoais de cada usuário, é preciso 
analisar a necessidade e o tipo de tecnologia de armazenamento que vai ser usado para a partição que será 
montada neste diretório. O recomendável para um servidor, que possui muito volume de arquivos nesse 
diretório, é que seja utilizado o sistema LVM. 
 /var – é importante deixar este diretório em outra partição, pois nele podem estar arquivos de sites de 
um servidor web, as caixas de entrada dos usuários em um servidor de e-mail, bancos de dados do MySQL-
Server, logs do sistema que têm apenas o programa logrotate para garantir sua rotatividade. 
 /usr/local – boa parte dos programas que são aqui instalados tem suas bibliotecas e arquivos 
executáveis copiados para este diretório, por isso é importante isolá-lo do sistema raiz. 
 Partição Swap – para a realidade atual, criar uma partição Swap está se tornando cada vez mais 
desnecessário. 
 Ela funciona como memória de auxílio à memória principal (RAM), mas com o crescente uso de 
memórias RAM de capacidades altíssimas de armazenamento temporário ela tornou-se cada vez mais 
desnecessária. 
 Costumava-se destinar o dobro do espaço de RAM para a criação de uma partição Swap, hoje fica a 
critério de o administrador criá-la. 2 GB estaria de bom tamanho, se necessário. 
 
3.4 - O FHS 
 
 O Filesystem Hierarchy Standard (Padrão Hierárquico de Sistema de Arquivos) é mantido pela Free 
Standards Group, que é composta por empresas como HP, IBM e Dell. 
 
 O projeto inicial foi aproveitado, porém personalizado pela maioria das distribuições, a maioria delas 
aproveita o formato original do FHS em 80%. 
 
 O FHS consiste na padronização da estrutura de diretórios do sistema, afim de que as diferenças de 
diretórios entre uns sistemas operacionais open-source e outro sejam mínimas. 
 
 A estrutura padrão de diretórios para sistemas Linux é: 
 
 / - é o sistemas raiz, o nível mais alto da hierarquia de diretórios. 
 /bin – diretório onde são armazenados programas binários de interesse de todos os usuários. 
 /boot – diretório onde estão localizados arquivos de interesse do boot do sistema, como a imagem do 
kernel e os arquivos de configuração do boot loader GRUB/GRUB2. 
 /dev – diretório onde estão os arquivos especiais que, para o Linux, podem ser discos, partições, 
memória RAM, mouse, teclado, terminais do sistema, etc. 
 /etc – é o diretório onde são armazenados arquivos de configuração e scripts de serviços em geral, 
como DHCP, FTP, LDAP e Proxy, por exemplo. É extremamente importante ter um backup completo deste 
diretório. 
 /home – diretório onde, por padrão, os usuários têm seus diretórios pessoais. 
 /lib – diretório onde se encontram bibliotecas de sistema e módulos já instalados do kernel. 
 /media – diretório onde geralmente são montadas as mídias removíveis. 
 /media/cdrom – diretório pronto para montagem de CD/DVD. 
 /media/floppy - diretório pronto para montagem de Floppy Disk. 
 /mnt – diretório pronto para servir como ponto de montagem para discos adicionais. 
 /opt – alguns programas não oficiais da distribuição utilizam este diretório para armazenar arquivos de 
instalação. 
 /proc – é um sistema de arquivos virtual, do kernel Linux, que possui arquivos e diretórios de status de 
recursos de sistema. 
 /root – é o diretório pessoal do usuário root (opcional). 
 /sbin – diretório onde são armazenados programas de interesse apenas do superusuário (comandos 
administrativos). 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 26 
 
 /srv – diretório de dados de serviços providos pelo sistema. 
 /usr – diretório de hierarquia secundária. 
 /usr/src – diretório da localização esperada do código-fonte do kernel antes da 
 compilação. 
 /usr/local – diretório de instalação de programas que não são oficiais da distribuição. 
 /usr/share/man – diretório de manuais do sistema. 
 /usr/share/doc – diretório de documentação de sistema. 
 /var – diretório de dados variáveis. 
 /var/log – diretório de logs de eventos diversos. 
 /var/mail – diretório padrão de recebimento de e-mails de todos os usuários. 
 /var/cache – diretório utilizado como cache de programas como o apt, por exemplo. 
 /tmp – diretório de arquivos temporários. É extremamente recomendável que este esteja em outra 
partição, pois ele é o único diretório da hierarquia padrão que tem permissão de gravação para todos os 
usuários do sistema. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 27 
 
4 - GERENCIAMENTO DE PACOTES 
 
 Programas no Linux são instaláveis através de pacotes, que geralmente contém os binários, as 
bibliotecas e arquivos de documentação que serão copiados para o sistema com a instalação. 
 
4.1 – Pacotes .deb (DEBIAN) 
 
 As distribuições que são baseadas em Debian e ainda o próprio Debian aceitam pacotes de extensão 
.deb como arquivos de pacotes instaláveis, além de pacotes .tar.gz ou .tar.bz2. 
 
 # dpkg 
 Instala e manipula arquivos .deb. Ele também faz operações de consultas em pacotes já instalados. 
 
 Sintaxe: 
 # dpkg <opções> <pacote> 
 
 Opções: 
 -i : instala pacote através de arquivo .deb. 
 -x : extrai conteúdo de um pacote. 
 -r : remove os arquivos binários de um pacote instalado. 
 -P : “purge” - remove os binários e todos os arquivos relativos ao pacote.-l : consulta pacotes instalados. 
 -c : exibe o conteúdo 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 após a instalação do pacote. 
 -s : exibe o status do pacote já instalado e informações reduzidas sobre o mesmo. 
 -p : exibe informações detalhadas sobre pacote já instalado. 
 
 Exemplos: 
 
 Instala o pacote 'ldap-utils' através 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 conteúdo 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 28 
 
 
 
 
A instalação de um programa no Debian pode ser feita através de um pacote de extensão .deb ou dos 
chamados repositórios, que armazenam os pacotes e suas dependências. Um repositório pode ser uma mídia 
de CD/DVD, um servidor HTTP ou um FTP. Cada distribuição costuma ter alguns repositórios oficiais espalhados 
pelo mundo, e este é o caso do Debian. 
 
 Repositórios 
 
 O arquivo de configuração de repositórios para pacotes .deb é /etc/apt/sources.list, contém a lista de 
servidores ou mídias onde podem ser encontrados os pacotes para a distribuição. Geralmente, opta-se por 
trabalhar com repositórios em rede (LAN ou WAN), pois a dinâmica de atualização dos pacotes funciona muito 
mais. 
 O uso de repositórios poupa o administrador do trabalho de procurar arquivos .deb por sites de 
download da internet ou por mídias externas. 
 Repositórios de internet são mais comuns de serem utilizados e o repositório br.debian.org é o 
repositório oficial do Debian no Brasil. Algumas universidades pelo Brasil (como Unicamp e PUC, por exemplo) 
também disponibilizam seus “mirrors” para download de pacotes .deb. 
 
 Exemplo de arquivo de repositório do Debian: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 29 
 
 
 
 
Cada linha dessas é a configuração de apontamento para um repositório diferente, sendo, por 
exemplo, a primeira de pacotes principais da distribuição 'stable'. 
 Ao invés de 'stable', o tipo da distribuição poderia muito bem se chamar 'squeeze'. Isso porque 
Squeeze é a versão estável do Debian. 
 
 Versões de Distribuições Debian: 
 
 oldstable : versão anterior estável; 
 stable : versão atual estável; 
 testing : próxima versão já em fase de testes; 
 unstable : os repositórios instáveis não são recomendáveis pois ainda estão em fase de discussão e 
desenvolvimento. 
 
 Repositórios Debian: 
 
 main : pacotes open-source; 
 contrib : pacotes open-source que dependem da contribuição de terceiros; 
 non-free: pacotes não-livres; 
 multimedia : pacotes de aplicações multimídia; 
 backports : pacotes ainda fora do repositório estável provavelmente por serem muito atuais. 
 É interessante que a instalação de um programa seja feita através de repositório, porque neste caso é 
instalado o pacote e todas as suas dependências ao mesmo tempo. 
 
APT (Advanced Packaging Tool) 
 
 Gerenciador de arquivos e dependências de pacotes através de repositórios do Debian, este 
gerenciador consulta os dados de /etc/apt/sources.list. 
 
 Comandos APT: 
 # apt-get update 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 30 
 
 Atualiza a base de dados de pacotes contida no diretório /var/lib/dpkg com os dados do repositório. 
 Este comando não tem a função de atualizar nenhum pacote já instalado. 
 
 Sintaxe: 
 
 # apt-get update 
 
 # apt-get install 
 
 Instala um pacote e suas dependências a partir de repositórios que estão listados dentro de 
/etc/apt/sources.list. 
 
 
 Sintaxe: 
 
 # apt-get install <opções> <pacote(s)> 
 
 Opções: 
 -s : simula a instalação do pacote. 
 -d : apenas faz o download dos pacotes dentro do diretório /var/cache/apt/archives/. 
 -y : assume como “Yes” todas as respostas de instalação. 
 -f : corrige uma instalação 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 configurações: 
 
 # apt-get remove <pacote> --purge 
 
 Exemplo: 
 
 Expurgando o pacote bind9: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 31 
 
 # apt-get remove --purge bind9 -y 
 
 # apt-get upgrade 
 
 Atualiza a versão de todos os pacotes que estão instalados. 
 
 Sintaxe: 
 
 # apt-get upgrade 
 
 # apt-get dist-upgrade 
 
 Atualiza toda a distribuição mediante mudança de versão em /etc/apt/sources.list. 
 
 Sintaxe: 
 
 # apt-get dist-upgrade 
 
 # apt-cache pkgnames 
 
 Exibe a lista de nomes de pacotes disponíveis nos repositórios para instalação. 
 
 Sintaxe: 
 
 # apt-cache pkgnames 
 
# apt-cache search 
 
 Busca descrição sobre programas disponíveis no repositório por assunto. 
 
 Sintaxe: 
 
 # apt-cache search <Nome> 
 
 Exemplo: 
 
 Procurar com algum pacote que tenha a ver com DNS no repositório: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 32 
 
 
 
 
# apt-cache search dns 
 
 
 No caso acima, ele buscou na lista de repositórios do Ubuntu todos os pacotes que tenham a ver com 
DNS. 
 
 # apt-cdrom add 
 
 Adiciona uma mídia de CD como um repositório em /etc/apt/sources.list. 
 
 Sintaxe: 
 
 # apt-cdrom add 
 
 # aptitude 
 
 É uma interface mais amigável para o apt. É possível visualizar a lista de pacotes disponíveis para 
instalação de uma forma muito organizada. 
 
 Sintaxe: 
 
 # aptitude <opção> 
 
 As opções do aptitude são as mesmas do apt-get. 
 
 Exemplos: 
 
 Instala o pacote samba através de um repositório: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 33 
 
 # 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) 
 
 Distribuições baseadas em Red Hat e o próprio Red Hat aceitam a instalação de pacotes .rpm e .tar.gz. 
 A questão das dependências é a mesma: um pacote sozinho pode não ter todas as dependências 
necessárias para a sua instalação e, para resolvê-las, é muito importante instalar os pacotes por repositórios. 
 
 # rpm 
 Chamado de Red Hat Package Manager, o comando rpm instala e consulta arquivos .rpm. 
 
 Sintaxe: 
 # rpm <opções> <pacote> 
 
 Opções do modo de instalação: 
 
 -i : instala um pacote através de arquivo de pacote. 
 -U : faz upgrade em um programa já instalado através de um arquivo. 
 -v : modo verbose de instalação. 
 -vv: modo verbose com mais detalhes. 
 -h : modo hash. Exibe barra de rolagem ao instalar. 
 -e : remove um programa instalado. 
 --nodeps : ignora dependências não satisfeitas do pacote na instalação. Esta opção não é 
recomendável, pois há grandes chances de o programa não funcionar. 
 
 Opções do modo de consulta: 
 
 Para o modo de consulta, a opção 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 informações detalhadas sobre um programa instalado. 
 -qd ou –-configfiles : mostra todos os arquivos de configuração do programa instalado. 
 -qd ou –-docfiles: mostra todos os arquivos de documentação do programa instalado. 
 -qpl : exibe os arquivos e diretórios contidos em um arquivo de pacote. 
 -qpd: exibe os arquivos de documentação contidos dentro de um arquivo de pacote. 
 -qpc: exibe os arquivos de configuração 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 34 
 
 # 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 configuração do pacote samba.i386 já instalado: 
 
 # rpm –qc samba.i386 
 
Consulta arquivos de documentação do arquivo do pacote de instalação 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 35 
 
 # yum update 
 Download das atualizações dos pacotes pelo YUM 
 
 # yum install 
 
 Instala pacotes e suas dependências. 
 
Sintaxe: 
 
 # yum install <opções> <pacotes> 
 
 Opções: 
 
 -y : assume como “yes” todas as respostas de instalação. 
 
 # yum upgrade 
 
 Atualiza pacotes instalados para a versão mais nova existente no repositório. 
 
 Sintaxe: 
 
 # yum upgrade <pacote1> <pacote2> ... 
 
 # yum list 
 
 Lista os nomes dos pacotes disponíveis no repositório para instalação. 
 
 Sintaxe: 
 
 # yum list 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 36 
 
 # yum Search 
 
 Busca descrição sobre pacotes pelo assunto. 
 
 Sintaxe: 
 
 # yum search <pacote> 
 
 # yum info 
 
 Exibe detalhes sobre pacotes já instalados. Exibe a mesma saída do comando ‘rpm –qi <pacote>’. 
 
 Sintaxe: 
 
 # yum info <pacote> 
 
 Exemplo: 
 
 Exibindo informações detalhadas sobre o pacote samba.i386: 
 
 
 
# yum info samba.i386 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 37 
 
5 - INSTALAÇÃO DO SISTEMA OPERACIONAL 
 
 A instalação de um sistema operacional Linux em um servidor, principalmente, deve seguir à risca os 
esquemas de Particionamento citados acima. Alguns diretórios, se mantidos juntos com a partição do sistema 
raiz ( / ) podem causar inconvenientes de estouro de reserva de inodes ou de blocos, parando por completo o 
servidor. Imagine só se um usuário qualquer resolver criar um número exagerado de arquivos vazios (que 
ocupam inodes) em /tmp e acabar com a reserva de inodes, não sobrando mais espaço no sistema raiz para a 
criação de um arquivo sequer?!?! 
 
 Seria um verdadeiro desastre criar um servidor PDC de clientes Windows se o diretório /home, que 
carrega os perfis móveis de cada usuário, estivesse na mesma partição do sistema raiz. Bastaria, neste caso, que 
um usuário sem cotas configuradas fosse ocupando espaço com arquivos fúteis à vontade para que o espaço 
em disco no servidor se reduzisse à zero, de repente e causasse a paralisação dos serviços ativos. 
 Outros pontos importantes a se analisar são: flexibilidade, redundância e desempenho de discos, para 
saber se utilizar arranjos LVM ou RAID em discos seria necessário. 
 
 A escolha da versão do sistema operacional ideal para a necessidade também é muito importante, 
assim como a arquitetura do mesmo, para que ele possa tirar o máximo de proveito dos recursos de Hardware 
do sistema. Faz toda a diferença 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 invés 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 preferência do 
administrador ou da empresa. 
 
5.1 – Particionando o disco 
 
 Um bom esquema de Particionamento para um servidor de arquivos Samba de usuários em uma rede 
com um HD de 500GB seria: 
 
 / - 10 GB 
 /usr/local – 10GB 
 /var – 10GB 
 /tmp – 2GB 
 /boot – 200MB 
 swap – 2GB (se necessário) 
 /home – 465,8GB (aproximadamente) – Utilizar LVM 
 
 Para um servidor web com o Apache, o diretório /var é quem precisaria de mais espaço em disco: 
 
 / - 10 GB 
 /usr/local – 10GB 
 /var – 475,8GB(aproximadamente) – Utilizar LVM 
 /tmp – 2GB 
 /boot – 200MB 
 swap – 2GB (se necessário) 
 
 
Pensando que, geralmente, um servidor web também conta com servidor FTP e que as contas de 
usuário são mapeadas para o diretório /var/WWW (diretório de publicação de arquivos do servidor), não seria 
preciso isolar o /home. 
 
 O uso de uma partição para uso como swap, ainda mais em servidores com quantidade grande de 
espaço em RAM, torna-se cada vez mais dispensável ao longo do tempo. Pode ter certeza que se o servidor 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 38 
 
precisar usar swap é porque alguém não planejou corretamente o hardware para o tipo de servidor que iria ser 
utilizado. 
 
5.2 – Configuração pós-instalação 
 
 Passado todo o processo de planejamento e instalação do servidor, o processo de configuração é o 
próximo passo. 
 
 É hora de configurar a rede, repositórios, configurar o login de usuários, decidir se vai ou não usar 
interface gráfica, etc.. 
 
 A primeira providência, já que se trata de um servidor, é configurar a interface de rede. Para isso, é 
preciso que o administrador conheça primeiro os conceitos de IPV4/6 necessários, e isto é realmente um pré-
requisito para que o administrador possa ter sucesso na administração dos servidores. 
 O arquivo de configuração de rede no Debian é /etc/network/interfaces. É preciso editá-lo e reiniciar o 
serviço de rede após isso para que as alterações façam efeito. 
 
 Editando o arquivo: 
 
 # vim /etc/network/interfaces 
 
 
 
 A interface lo se refere à interface de loopback e não deve ser desativada, pois alguns serviços 
dependem dela para funcionar, enquanto a interface eth0(zero) é a primeira interface de rede reconhecida pelo 
sistema (mais detalhes sobre configuração de redes será dados mais à frente). 
 
 Reiniciando o serviço 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 39 
 
 # vim /etc/resolv.conf 
 
 nameserver <ip do servidor> 
 
 Repositórios de pacotes: 
 
 A configuração de repositórios, como foi visto no capítulo anterior, é feita no arquivo 
/etc/apt/sources.list. 
 
 
 
 
# vim /etc/apt/sources.list 
 
 Neste caso, o sistema está fazendo uso de um repositório da rede interna. Para os casos de novas 
instalações, são utilizados repositórios de internet e, neste caso, é importante já na hora da instalação de 
Debian o administrador optar por utilizar um espelho de rede (mirror) da internet que seja oficial da 
distribuição, pois desta forma ele pode garantir que os pacotes que serão instalados estarão nas versões 
corretas de seu sistema. Havendo a necessidade, o administrador pode configurar depois um mirror na rede 
LAN. No caso das outras distribuições, em geral não vai ser preciso nenhuma escolha por espelho de rede na 
hora da instalação, pois isto já vai ser automático na instalação. 
 
Vejamos um exemplo de configuração onde se busca repositórios na internet (Ubuntu): 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUXSYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 40 
 
 
 
Visão 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 serviços serão utilizados. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 41 
 
6 - O SHELL 
 
 Conceitualmente, o Shell é o interpretador dos comandos que serão enviados ao sistema, afim de que 
sejam executadas as tarefas necessárias 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 disponíveis para uso no Linux, os mais importantes, sem dúvida, são sh e bash 
(Bourne Again Shell). O sh (Bourne Shell) inclusive é o shell padrão do comando useradd. Ele é usado por muitas 
distribuições baseadas em Unix, como FreeBSD e OpenBSD, por exemplo. Já o bash é o shell padrão do Linux 
em todas as distribuições. 
 
6.1 – Scripts do Shell 
 
 Alguns scripts de bash são comumente encontrados em um S.O Linux: 
 
 /etc/rc.local 
 
 Este script é executado antes do logon do usuário após o boot do sistema pela imagem do kernel. 
 
 /etc/profile 
 
 É o primeiro script a ser executado após o logon dos usuários. Ele é global, ou seja: todos os usuários 
que fazem login sofrem os efeitos deste script. Geralmente nele estão duas variáveis de bash importantíssimas: 
 
 PATH - define em quais diretórios o bash vai procurar os comandos digitados pelos usuários. 
 PS1 – define qual vai ser o rótulo de prompt dos usuários. 
 
 Exemplo: 
 
 PS1='\u@\h:\w\$' ficaria para o usuário user1 no host 'MCURY' e no diretório home dele assim: 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 42 
 
user1@MCURY:~$ 
 
 
 O arquivo acima explica o porquê de quando o usuário comum digita um comando exclusivo de root 
retorna para ele o erro: “-<comando> : command not found” . Basta verificar que a variável PATH do root (o 
que tem UID=0) contém os diretórios onde estão os comandos de administração do sistema (os ../sbin) e o 
PATH do usuário comum não. 
 
Hierarquia de scripts de usuário: 
 
 Há uma ordem de execução de scripts após o login de cada usuário. 
 
 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 usuário a ser executado e aponta para outro script 
chamado ~/.bashrc, que acaba sendo o último script de usuário a ser executado. Em shell Bash, se 
~/.bash_profile e ~/.bash_login existirem, o ~/.profile não é executado. 
Exemplo de arquivo /etc/profile 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 43 
 
 O ~/.bashrc tem uma característica muito especial em relação a outros scripts de login: ele pode ser 
executado em sessões que não requerem login. 
 
 Por padrão, este script vem com alguns campos comentados, mas que são de grande importância para 
ajudar a tornar o shell um ambiente de trabalho mais amistoso. 
 
 O script /etc/bash_completion facilita e muito a vida do usuário, 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 
usuário seja avisado antes que isso aconteça (cada alias recebe um comando com a opção 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 são providenciais. 
 
 ~/.bash_logout 
 
 Script executado no logoff do usuário. 
 
 ~/.bash_history 
 
 Arquivo que contém o histórico de comandos digitados pelo usuário. 
 
 # history 
 
 Exibe histórico de comandos digitados pelo usuário. 
 
 Limpando o histórico: 
 
 # history -c 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 44 
 
 # fc 
 
 Comando que usa o editor de textos padrão do sistema para manipular o arquivo de histórico. 
 
 
Para que o editor padrão seja modificado, basta usar a linha de comando abaixo: 
 # update-alternatives –config editor 
 
 fc usando editor nano para editar histórico de comandos recentes 
 
Impedindo login de usuários comuns 
 
 Por motivo de manutenção no sistema, por exemplo, é necessário que às vezes apenas o root tenha o 
direito de abrir uma sessão. Para que isso seja possível, é preciso que seja criado o arquivo /etc/nologin. A 
criação do arquivo, mesmo que vazio, já é o suficiente para que ninguém, além do root, possa abrir uma sessão, 
mas o arquivo pode conter um texto qualquer que será exibido para o usuário, geralmente indicando o motivo 
de não poder iniciar a sessão. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 45 
 
 Os usuários comuns só vão poder abrir alguma sessão após este arquivo ser removido. 
 
 Mensagens para o usuário: 
 
 Alguns arquivos contêm mensagens para os usuários 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 após o login do usuário. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 46 
 
7 - DOCUMENTAÇÃO NO LINUX 
 
 A difusão e aprendizado de sistemas operacionais open-source passa também pela documentação 
sempre bem organizada que estes sistemas têm. Um exemplo bem prático é que um Administrador de Redes 
que entende profundamente sobre protocolos, portas e serviços, mas que não é usuário de Linux teria uma 
dificuldade muito maior em criar regras no firewall Iptables se ele não pudesse consultar uma página de manual 
local para ajudá-lo. 
 O responsável por manter essa documentação toda funcionando é o LDP (Linux Documentation 
Project), cujo site é www.tldp.org. Ele possui links para as seções abaixo: 
 
 Wiki - detalhamento de alguns assuntos pesquisados; 
 HOWTOs - guias passo a passo de tarefas; 
 FAQs - respostas para dúvidas eventuais; 
 Manpages – páginas de manuais de comandos. 
 
 Os diretórios que contém documentação local são: 
 
 /usr/share/doc – diretório de documentação local oficial do LDP, e fornece documentação adicional de 
programas instalados; 
 /usr/share/man – diretório de páginas de manuais de comandos, arquivos e programas. 
 
7.1 - Tipos de arquivos de documentação 
 
 Dentro dos diretórios /usr/share/doc e /usr/share/man existem arquivos de documentação de diversos 
tipos: 
 README : instruções de uso relevantes ao usuário; 
 Copyright : informações de autoria e direitos sobre programa; 
 Changelog : log de modificação do programa; 
 Manpages : manuais lidos pelo comando man; 
 FAQs : perguntas e respostas frequentes sobre o assunto. 
 
7.2 – Seções de manuais 
 
 Um arquivo de configuração, um programa e um comando de root podem, coincidentemente, ter o 
mesmo nome. Isso seria a causa de uma confusão muito grande caso os mantenedores do projeto não tivessem 
pensado em separar os manuais por seções. Elas são identificadas numericamente e possui cada uma, um 
diretório dentro de /usr/share/man, como../man8, que é o diretório de manuais de seção 8. Mas por que seção 
8?!?! Basta olhar a tabela abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
http://www.tldp.org/
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATORPÁGINA 47 
 
 
Seção Descrição 
1 Programas de uso comum de todos os usuários do sistema 
2 Chamadas de sistema 
3 Chamadas de bibliotecas 
4 Arquivos especiais contidos em /dev 
5 Arquivos de configuração 
6 Games 
7 Miscelânea 
8 Comandos de administração, de interesse do administrador (root). 
 
7.3 – Comandos de documentação 
 
# <comando> --help 
 
Exibe informações reduzidas sobre opções de comando, geralmente. 
 
Exemplo: 
 
Ajuda sobre opções do comando shutdown: 
 
# shutdown --help 
 
# apropos 
 
Busca, por tópico, a descrição de cada comando ou arquivo encontrado. 
 
# whatis 
 
Busca, por nome exato, a descrição de cada comando ou arquivo encontrado. 
 
# man 
 
Exibe informações sobre manuais contidos em /usr/share/man. 
 
Sintaxe: 
 
# man <opções> <assunto> 
 
Opções: 
 
-w : busca o caminho do arquivo de manual ao invés de exibir algum tipo de ajuda sobre o tema. 
-k : busca resumo sobre um tópico específico. 
-f : busca resumo sobre um comando ou arquivo exato. 
-P : modifica o programa de paginação do man. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 48 
 
Obs.: 
 
# man -k corresponde a # apropos. 
# man -f corresponde a # whatis. 
 
Exemplos: 
 
Buscar manual do comando iptables: 
 
# man iptables 
 
 
Buscar definição sobre comandos relacionados ao assunto iptables: 
 
# man -k iptables 
 
Ou 
 
# apropos iptables 
 
Buscar definição sobre comando iptables em específico: 
 
# man -f iptables 
 
Ou 
 
# whatis iptables 
 
Buscar por manual de um comando na seção 5, para o caso de haver algum outro objeto de busca 
chamado interfaces: 
 
# man 5 interfaces 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 49 
 
 
 
# info 
 
Programa de leitura de manuais preferido pelo projeto GNU. Sua exibição dos manuais é mais 
organizada. 
 
# mandb 
 
Atualiza a base de dados de manuais do sistema. 
 
Se alguma modificação for feita em /etc/manpath.config, este comando precisa ser executado. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 50 
 
8 - COMANDOS DE CONTEÚDO 
 
 # less 
 
 Pagina o conteúdo de arquivos ou saídas de texto. Ele é muito versátil, pois permite o deslocamento 
para cima, para baixo, para a direita e para a esquerda quando estiver paginando um documento. Existe 
também o recurso de procurar por um texto com / no meio da paginação. 
 
 Sintaxe: 
 
 # less <arquivo> 
 
Exemplo: 
 
# less /etc/shadow 
 
 Paginando arquivo /etc/shadow: 
 
 
 
 # more 
 
 Também pagina um documento de texto ou saída em modo texto, só que de forma básica, permitindo 
apenas a paginação para baixo e pressionando a tecla ENTER. 
 
 Sintaxe: 
 
 # more <arquivo> 
 
 # zless 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 51 
 
 Usa o less para paginação de conteúdo em modo texto de arquivos compactados com o agente de 
compactação GZIP. 
 
 Sintaxe: 
 
 # zless <arquivo>.gz 
 
 # zmore 
 
 Usa o more para paginação de conteúdo em modo texto de arquivos compactados com o agente 
compactador GZIP. 
 
 Sintaxe: 
 
 # zmore <arquivo> 
 
 # head 
 
 Visualiza as primeiras linhas de um arquivo. Padrão: 10 primeiras linhas. 
 
 Sintaxe: 
 
 # head <opção> <arquivo> 
 
 Opções: 
 
 -c : mostra os primeiros bytes de um arquivo. 
 
 -n : especifica o número 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, Padrão: 10 últimas linhas. 
 
 Sintaxe: 
 
 # tail <opções> <arquivo> 
 
 Opções: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 52 
 
 -n : especifica o número 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 mudanças que estão sendo feitas no arquivo /var/log/auth.log. 
 
 # tail -f /var/log/auth.log 
 
 
# pr 
 
 Prepara um arquivo para ser impresso, mas não o imprime. 
 
 Sintaxe: 
 
 # pr <arquivo> 
 
 # nl 
 
 Exibe conteúdo de um arquivo com as linhas numeradas. 
 
 Sintaxe: 
 
 # nl <arquivo> 
 
 # wc 
 
 Conta linhas, caracteres e palavras de um arquivo. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 53 
 
 Sintaxe: 
 
 # wc <opções> <arquivo> 
 
 Opções: 
 
 -l : número 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 <opções> <arquivo> 
 
 Opções: 
 
 -o : modelo octal. 
 
 -d : decimal. 
 
 -x : hexadecimal. 
 
 # grep 
 
 Busca textos dentro de documentos. 
 
Sintaxe: 
 
 # grep <opções> <texto> <arquivos> 
 
 Opções: 
 
 -i : modo insensitivo. Não diferencia maiúsculas de minúsculas quando faz a busca. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 54 
 
 -v : exceção. Apenas não filtra o texto selecionado. 
 
 -w : busca por palavra específica. 
 
 -E : habilita o comando a trabalhar com as expressões regulares avançadas (REGEXP). 
 
 -n : exibe o número 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 não tenham /bin/bash e nem 0 como valor 
absoluto (ou seja: usuários que não usam o Shell bash e que não sejam ‘root’): 
 
 # grep -vw ‘/bin/bash*.0’ /etc/passwd 
 
 Onde *. significam E TAMBÉM. 
 
 Buscar dentro dos arquivos /etc/passwd, /etc/shadow e /etc/group e /etc/gshadow registros do 
usuário ‘root’ mostrando o nome do arquivo no início das linhas do resultado: 
 
# grep -H root /etc/passwd /etc/shadow /etc/group /etc/gshadow 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 55 
 
 
 
 
 
 # cut 
 
 Exibe apenas os campos desejados de um arquivo. 
 
 Sintaxe: 
 
 # cut <opções> <arquivo> 
 
 Opções: 
 
 -c : exibe todos os caracteres na coluna informada. 
 
 -d caractere: os campos são 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 56 
 
 
 
 # shred 
 
 Destrói o conteúdo de um arquivo. 
 
 #Sintaxe: 
 
 # shred <arquivo> 
 
 # split 
 
 Comando utilizado dividir um arquivo em pedaços. 
 
 Opções: 
 
 -b : quebra porquantidade de bytes. 
 
 -l : quebra por quantidade de linhas. 
 
 Sintaxe: 
 
 # split <opção> <arquivo> <primeiro nome do arquivo de destino> 
 
 Exemplos: 
 
 Criando arquivos com 128 bytes de /etc/passwd cada um. Neste caso, serão criados os arquivos arqaa, 
arqab, arqac, etc: 
 
 # split -b 128 /etc/passwd arq 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 57 
 
 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 não for múltipla de 4, neste 
caso: 
 # split -l 4 /etc/passwd arq 
 
 # uniq 
 
 Exibe as linhas únicas de um arquivo. 
 
 Sintaxe: 
 
 # uniq <arquivo> 
 
 # cat 
 
 Lê o conteúdo de um arquivo ou reconstrói o mesmo, se for o caso de ele estar em pedaços criados 
pelo comando split. 
 
 Sintaxe: 
 
 # cat <opção> <arquivo> 
 
 Opções: 
 
 -A : Exibe todos os caracteres não imprimíveis. 
 
 -b : lê o arquivo com as linhas não vazias numeradas. 
 
 -n : lê o arquivo com todas as linhas numeradas. 
 
 Exemplos: 
 
 Ler o conteúdo do arquivo /etc/motd: 
 
 # cat /etc/motd 
 
 Ler o conteúdo do arquivo /etc/profile com as linhas não-vazias numeradas: 
 
 # cat -b /etc/profile 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 58 
 
 
 
 Ler o conteúdo do arquivo /etc/profile com todas as linhas numeradas: 
 
 # cat -n /etc/profile 
 
 Reconstruir as cópias 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 conteúdo do arquivo. 
 
 Sintaxe: 
 
 # sort <opções> <arquivo> 
 
 Opções: 
 
 -d : ordem alfanumérica. 
 
 -n : ordem numérica. 
 
 -t : usa um delimitador. 
 
 -k : usa um campo como referência. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 59 
 
 -r : ordem reversa. 
 
 -R : ordem randômica (aleatória). 
 
 Exemplos: 
 
 Classificar o conteúdo do arquivo /etc/passwd em ordem alfabética: 
 
 # sort -d /etc/passwd 
 
 Classificar o conteúdo do arquivo /etc/shadow em ordem alfabética inversa: 
 
# sort -dr /etc/passwd 
 
 
 Usando ‘ : ’ como separador, classificar o arquivo /etc/passwd em ordem numérica, tendo como 
referência o campo 3 do arquivo: 
 
 # sort -n -t : -k 3 /etc/passwd 
 
 # sed 
 
 Substitui texto e números 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 60 
 
 
 
 
 # <comando> | tr 
 
 Comando que só pode ser utilizado em combinação com outro de leitura de arquivo através do “pipe”, 
o tr substitui caracteres em sequência. 
 
 Sintaxe: 
 
 # <comando> | tr <opção> <caracteres> 
 
 Algumas variáveis são utilizadas pelo comando: 
 
 \\ - backslash. 
 
 \b - backspace. 
 
 \\t - tabulação horizontal. 
 
 \n - nova linha (pula uma linha). 
 
 \v - tabulação vertical. 
 
 Exemplos: 
 
 Remover ‘ : ’ do arquivo /etc/passwd: 
 
 # cat /etc/passwd | tr -d : 
 
 Trocar ‘ : ‘ e ‘ , ‘ por tabulação no arquivo /etc/passwd: 
 
 # cat /etc/passwd | tr : \\t 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 61 
 
 
 
 
 Trocar letras maiúsculas do arquivo /etc/shadow por minúsculas e depois trocando ‘ : ‘ por tabulação : 
 
 # cat /etc/shadow | tr [a-z] [A-Z] | tr : \\t 
 
 
 
 # fmt 
 
 Formata um texto. 
 
 Sintaxe: 
 
 # fmt <opção> <arquivo> 
 
 Opções: 
 
 -w : limita a largura de cada linha. 
 
 -u : uniformiza os espaços dentro do arquivo. 
 
file://t
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 62 
 
 # join 
 
 Une linhas de 2 arquivos utilizando colunas em comum. 
 
 Sintaxe: 
 
 # join <arquivo1> <arquivo2> 
 
 # expand 
 
 Troca tabulação por espaço simples 
 
 Sintaxe: 
 
 # expand <opção> <arquivo> 
 
 Exemplo: 
 
 Convertendo linhas que tenham 2 tabulações para espaço 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 são: 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 63 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 64 
 
9 - EXPRESSÕES REGULARES 
 
 Sempre que houver a necessidade de procurar padrões de textos em documentos utilizaremos as 
expressões regulares, ou regex, portanto regex nada mais é do que um método formal para buscar padrões de 
textos. 
 
9.1 – Metacaracteres 
 
 Composição de símbolos, caracteres com funções especiais que, agrupados entre si e com caracteres 
literais, formam uma sequência, uma expressão. 
 
Meta Significado 
* Zero, um ou mais 
? Zero ou um 
^ Início 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 (espaço, parênteses, chaves, etc..) 
| Ou 
( ... ) Delimita um grupo 
. Qualquer caracter na posição 
 
 Exemplos: 
 
 Exibindo de /etc/passwd apenas os usuários que usem Shells BASH ou que tenham login negado: 
 
 # grep -E ‘(bash|false)’ /etc/passwd 
 
 Exibindo de /etc/shadow apenas os usuário que comecem com a,d,r,s : 
 
 # grep -E ^[adrs] /etc/shadow 
 
Exibindo de /etc/passwd apenas os usuários que usem BASH ou SH e comecem com letras que não 
sejam b a f e também os que não comecem com h: 
 
 # grep -E ‘(bash|sh)’.*^[^b-fh] /etc/passwd 
 
 Detalhe: ^ utilizado dentro de [ ] significa exceção! 
 
 Exibindo do /etc/passwd apenas os usuário que usem Shells BASH ou SH e também comecem com 
letras no intervalo de f a l : 
 
 # grep -E ^[f-l].*’(bash|sh)’ /etc/passwd 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 65 
 
 
 
 
 O grep é utilizado com E por que algumas expressões regulares fazem parte do grupo de REGEXP 
(expressões regulares avançadas), 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 expressões poderiam ser utilizadas: 
 
 # grep ^....$ Linux.txt 
 
 Ou 
 # egrep ‘^.{5}$’ Linux.txt 
 
 Onde o {5} iria ser o responsável por dizer que . repete 5 vezes e o motivo de o “ponto” estar entre ^e 
$ é dizer para a expressão regular que “entre início e fim existem 5 posições”. 
 
 Exibindo as linhas que tenham pelo menos 70 caracteres: 
 
 # egrep ‘^.{70,}$’ /etc/passwd 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 66 
 
9.2 - “Pipes”, redirecionamentos e execução de comandos em sequência 
 
 Como já se pode notar pelos capítulos anteriores, o | tem uma função importantíssima dentro de uma 
expressão regular, pois ele concatena a saída de um comando com a de outro posterior, como a seguir: 
 
 O comando cut -d : -f 1-5 /etc/passwdenvia a sua saída para o comando tail -5, possibilitando assim a 
paginação do conteúdo do arquivo apenas com os campos 1,2,3,4 e 5 : 
 
 # cut -d : -f 1-5 /etc/passwd | tail -5 
 
 Antes de redirecionar saídas ou entradas de comandos, vamos entender quais tipos de entrada/saída 
podem existir: 
 
 STDOUT - saída padrão. Quando o comando é executado com sucesso, ele produz esta saída, exceto 
para comandos que não possuem “verbose” em suas saídas. 
 
 STDERR - Saída de erros. Quando o resultado da execução é um erro, esta saída é mostrada, exceto em 
comandos que não produzem “verbose”. 
 
 STDIN - Entrada padrão. Entrada de dados em um comando. 
 
 Tipos de redirecionamento: 
 
 > - redireciona saída padrão de um comando para um arquivo novo. 
 
 >> - redireciona saída padrão de um comando para a última linha de um arquivo (append), mas se 
este não existir ele o cria. 
 
 < - redireciona entrada padrão para um comando. 
 
 << - append de entrada padrão. 
 
 2> - redireciona apenas saída de erros para um arquivo novo. 
 
 2>> - append de saída de erros. 
 
 &> - envia saída padrão e de erros para um arquivo novo. 
 
 Exemplos: 
 
 Enviando o resultado do comando de verificação de uso de discos montados para o arquivo 
/root/discos.txt : 
 
 # df -h > /root/discos.txt 
 
 Enviando mais um relatório de uso de discos para o mesmo arquivo sem sobrescrevê-lo: 
 
 # df -h >> /root/discos.txt 
 
 Enviando um e-mail com o conteúdo 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 67 
 
 # LS -L 2> erro_ls.txt 
 
 # <comando> | tee <opção> <arquivo> 
 
 Além de enviar saída do comando para um arquivo, exibe a saída no terminal. 
 
 Exemplos: 
 
 Enviar últimas 15 linhas do log /var/log/auth.log para o arquivo log_auth.txt exibindo a saída 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 execução de um comando para poder executar outro e é por isso que 
existem os caracteres “;”, “&&” e “||” . Eles permitem que isso aconteça da seguinte forma: 
 
 ; - permite que um comando posterior seja executado independentemente do resultado do 
anterior. 
 
 && - apenas permite a execução do próximo comando se o anterior foi executado com sucesso 
(código de retorno igual a zero). 
 
 || - O próximo comando só será executado se o anterior falhar (código de retorno diferente de 
zero). 
 
 Exemplos: 
 
 Esta combinação de comandos abaixo funcionaria, pois a pesar do primeiro estar com sintaxe errada, o 
segundo é válido e o ; não leva isso em consideração: 
 
 # LS -L; df –hi 
 
 
 
Fará toda a diferença se a mesma combinação for tentada com o &&: 
 
# LS -L && df –h 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 68 
 
 
 Vamos analisar então a expressão abaixo: 
 
 # mail -s “TESTE DE EXPRESSÃO” 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 69 
 
9.3 - Codificação de caracteres 
 
 Os caracteres que são escritos e lidos precisam de codificação, pois o sistema só consegue mesmo 
interpretar bits, que por sua vez são representados por números binários. A primeira tabela de codificação 
criada foi uma tabela chamada ASCII, que contava com 7 bits para representação de caracteres, que davam 
exatos 128 caracteres, esta codificação foi criada baseada na linguagem de povos de origem anglo-saxônica, 
pois os mesmos não fazem uso de acentos. Como no mundo existem muitos povos que utilizam caracteres 
diferentes dos utilizados na língua 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 esforço descrito acima, ainda faltavam caracteres para representar alfabetos de 
países 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 são destinados a 
caracteres especiais da tabela específica. As distribuições Linux podem utilizar dois tipos de tabelas para 
codificação: a UTF-8 e a ISO8859-1, sendo o primeiro mais flexível, pois dá suporte tanto a idiomas 
provenientes do Latim quanto a idiomas asiáticos e europeus. O que acontece com o UTF-8 é que, em caso de 
representação de dialetos asiáticos, por exemplo, ele assume 16 bits e não 8 (UTF-16), sendo assim compatível 
com qualquer tipo de dialeto possível. 
 
 Para configurar a codificação e a linguagem do sistema, assim como o idioma do teclado, é preciso 
atribuir esta configuração às variáveis LANG e LANGUAGE, sendo a primeira a variável que define o idioma 
padrão do sistema e a codificação de caracteres e a segunda a que define o idioma do teclado. 
 
 O arquivo onde estas configurações podem ser realizadas de forma permanente é o 
/etc/default/locale. 
 
 
 
 
O conjunto inteiro de variáveis é exibido pelo comando locale, como no exemplo abaixo: 
 
 # locale 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 70 
 
 
 
 Onde cada variável dessa recebe a linguagem e codificação atribuída à variável LANG. 
 
 Para fazer qualquer tipo de conversão 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 saída convertida para o arquivo ~/arquivo_convertido.txt. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 71 
 
10 - USUÁRIOS E GRUPOS 
 
 Uma das tarefas mais importantes para um administrador é saber gerenciar de forma segura os 
usuários e grupos do sistema. 
 
 O usuário root é o primeiro usuário criado no sistema após a instalação. Ele é o administrador do 
sistema e “pode tudo”, desde deixar o servidor com um nível de segurança altíssimo com serviços configurados 
por ele até destruir o sistema de arquivos por completo. É importante para a segurança do sistema que a senha 
do usuário root não deve ser distribuída para pessoas que não sejam habilitadas a desempenhar tarefas 
administrativas. 
 
 Os usuários comuns utilizam o rótulo de prompt $ enquanto o root utiliza o # em seu login. 
 
Qualquer outro usuário criado não tem qualquer privilégio administrativo, portanto o usuário comum 
vai continuar sendo um usuário com tarefas limitadas até que o root decida dar permissão para que ele possa 
desempenhar algumas ou até todas as tarefas do usuário root. 
 
10.1 – Arquivos importantes 
 
O banco de dados em modo texto que contém os dados dos usuários 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 usuário root, por exemplo, ou paralisarum serviço de HTTP do 
apache, que utiliza a conta do usuário www-data para tal. 
 
Abrindo o arquivo: 
 
# vim /etc/passwd 
 
 
 
Onde seus campos são: 
 
<login>:<senha>:<UID>:<GID>:<descrição>:<homedir>:<shell utilizado pelo usuário> 
 
Repare que o campo root:x:0:0:root:/root:/bin/bash da senha do usuário 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 
permissão de leitura para qualquer usuário, pois eles precisam ler suas informações de contas após logon (sua 
permissão padrão é 644 ou rw_r__r__), sendo assim, qualquer usuário poderia copiar a senha criptografada 
para outro lugar. 
 
UID 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 72 
 
O UID é o número de identificação dado a cada usuário no ato de sua criação. O UID 0 é dado para o 
usuário root e não deve ser dado a qualquer outro usuário além dele, pois se isto for feito, o usuário que 
receber o UID 0 vai assumir a identidade de root e ter os mesmos poderes que ele. 
 
Por definição padrão no arquivo /etc/login.defs, qualquer usuário novo criado em sistemas baseados 
em Debian terá um UID de 1000 para cima, começando por este. Em ambiente Red Hat, este número já é de 
500 em diante. É lógico que isso é um padrão que pode ser modificado facilmente no arquivo ou através da 
criação de um usuário com o UID especificado pelo comando useradd. 
 
GID 
É a identidade dada a cada grupo criado no sistema. A presença dele dentro desse arquivo representa 
que ele é o grupo primário do usuário. Cada arquivo ou diretório que é criado por um usuário (salvo em caso 
específico de existência de permissão especial de herança de grupo) tem o mesmo como dono e o grupo 
primário dele como grupo do arquivo ou diretório. 
 
O GID 0 também é reservado para o grupo root e, pelos mesmos motivos citados anteriormente, não 
deve ser atribuído a mais nenhum usuário. 
 
Homedir 
O diretório pessoal do usuário, ou homedir, deve ser o único diretório do sistema (além do /tmp) onde 
ele irá ter permissão de leitura, execução (se for o caso) e escrita. 
 
O diretório pessoal do usuário não precisa necessariamente ser em /home. O exemplo mais prático 
disto é que em um servidor Web Apache, que tem diretório de publicação de conteúdo /var/www por padrão, 
geralmente também é instalado um servidor FTP, como Proftpd ou Vsftpd, e a conta do web developer é feita 
com homedir /var/www/[nome_do_usuário], para que o mesmo, quando faça logon, já entre direto no 
diretório onde está publicado o conteúdo de se site hospedado pelo servidor. 
 
Shell do usuário 
O BASH é o Shell padrão para sistemas Linux mas não quer dizer que todo usuário tenha que usá-lo 
como interpretador de comandos. Alguns podem usar o SH por algum motivo específico, como por exemplo, 
um usuário que era de BSD acostumado com scripts de SH e que está ainda migrando para Linux. 
 
Quando o usuário não pode ou não precisar fazer logon em um terminal, é determinado para ele o 
SHELL /bin/false. Este recurso é utilizado com muita freqüência em usuários de e-mail e de um servidor PDC ou 
BDC Samba pelo motivo de que em nenhum destes casos o usuário vai precisar usar nenhum terminal do Linux. 
 
O arquivo /etc/shadow, como já foi dito, é o arquivo onde por padrão são armazenadas as senhas dos 
usuários. 
 
É altamente recomendável trabalhar com senhas shadow por 2 motivos: 
 
O controle de parâmetros de login de usuários (expiração de senha e conta, por exemplo) só existe 
quando este arquivo existe; 
O usuário comum não pode nem ler este arquivo, não tendo assim acesso à senha criptografada de 
todos os usuários. 
Os grupos existentes do sistema estão em /etc/group. Dentro deste, estão: 
 
<nome_do_grupo>:<senha>:<GID>:<usuários relacionados ao grupo> 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 73 
 
 
 
 
A senha de grupo está em /etc/gshadow. 
 
Como foi falado anteriormente, e existência do arquivo /etc/shadow é imprescindível para que a 
segurança de informações se autenticação possa ser garantida. Vamos agora entender o que cada campo deste 
arquivo significa: 
 
Login: o login do usuário cadastrado em /etc/passwd. 
 
Senha: a senha do usuário criptografada. Caso este campo esteja vazio, o usuário estará utilizando 
senha em branco (nada recomendável!). Caso haja neste campo o sinal !, o usuário estará com a sua conta 
travada, de forma a não conseguir nem efetuar o próximo logon. 
 
Dias entre 1 de Janeiro de 1970 e a data da última mudança de senha. 
 
Mínimo de dias entre mudanças de senhas: é a quantidade de dias que o usuário tem que esperar até 
que ele possa novamente alterar a sua própria senha. 
 
Máximo da duração da senha do usuário: é a própria informação dos dias de validade da senha do 
usuário após ele ter modificado sua senha pela última vez. Após este dia, ele será obrigado a mudar sua própria 
senha no logon. 
 
Dias anteriores à expiração da senha onde o usuário será avisado para trocar se senha: o padrão é 
sempre que 7 dias antes de a senha expirar, o usuário seja avisado a trocá-la. 
 
Número de dias após a expiração da senha onde a conta será inativada. 
 
Número de dias entre 1 de Janeiro de 1970 e a data exata de expiração da conta do usuário. 
 
Vejamos o exemplo das configurações da conta do usuário user1 dentro de /etc/shadow: 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 74 
 
 
 
 
Repare, neste caso, que a senha do usuário user1 está em branco e sua conta tem data para expirar, 
assim como a sua senha, que expirará 25 dias após ser modificada. 
 
É importante lembrar que, como todas as informações relativas aos controles de contas de usuário 
estarão dentro deste arquivo, no caso de o administrador escolher por não utilizar senhas shadow este controle 
não será possível. 
 
10.2 – Comandos de usuário e grupos 
 
# whoami 
 
Exibe qual o usuário em sessão. 
 
# id 
 
Sintaxe: 
 
#Id <usuário> 
 
Exibe UID, GID e grupos do usuário. 
 
# useradd 
 
Cria usuários. 
 
Sintaxe: 
 
# useradd <opções> <login_do_usuário> 
 
Opções: 
 
-d :homedir do usuário. 
 
-s : shell que o usuário vai usar. 
 
-c : descrição(comentários). Conhecido também como campo GECOS. 
 
-m :cria o homedir. 
 
-u : especifica um UID. 
 
-g : especifica um grupo primário. 
 
-G : relaciona o usuário a grupos. 
 
-k : escolhe um diretório de skel alternativo. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 75 
 
-e : cria o usuário com data para sua conta expirar. 
 
*Obs1 
 
O Shell padrão do comando useradd é o SH, ou seja: se não for especificado outro shell, o usuário vai 
utilizar o SH como interpretador de comandos. 
 
*Obs2: 
 
O diretório de skel é de onde são tirados os arquivos e diretórios que vão para o homedir do usuário na 
hora que ele é criado. 
 
O diretório de skel padrão é o /etc/skel e por padrão ele contém os scripts de logon do usuário. 
 
Exemplos: 
 
Criando um usuário 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 usuário webmaster com UID 1400, grupo primário 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 usuário user2 com data de expiração da conta para 10/12/2010, sem uso de shell e com 
diretório de skel alternativo /dados: 
 
# useradd –m –s /bin/false –e 2010-12-10 –k /dados user2 
 
# adduser 
 
Cria usuários conforme as configurações do arquivo /etc/adduser.conf.A grande vantagem é que em um simples comando, sem argumentos, pode-se criar um usuário de 
forma pré-configurada no arquivo do comando adduser. 
 
Exemplo: 
 
Adicionando o usuário bsd: 
 
# adduser bsd 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 76 
 
 
 
# addgroup 
 
Também consulta /etc/adduser.conf, mas só que para criar grupos. 
 
Exemplo: 
 
Criando o grupo mcury: 
 
# addgroup mcury 
 
 
# usermod 
 
Modifica parâmetros de contas de usuários. As opções são bem parecidas com as opções do comando 
anterior. 
 
Sintaxe: 
 
# usermod <opções> <login> 
 
Opções: 
 
-d : modifica o diretório pessoal (homedir). 
 
-s : modifica o shell utilizado. 
 
-c : modifica a descrição. 
 
-g : modifica o grupo primário. 
 
-G : relaciona o usuário com outros grupos. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 77 
 
-a : se for utilizado junto com o ‘–G’, adiciona usuário nos grupos sem desfazer as relações que ele tem 
com outros grupos. 
 
-l : modifica o login do usuário. 
 
-u : modifica o UID do usuário. 
 
-L : trava a conta do usuário. 
 
-U : destrava o usuário. 
 
-e : especifica uma data para a expiração da conta do usuário. 
 
Exemplos: 
 
Modificando o homedir do usuário user1 para /var/www: 
 
# usermod –d /var/www user1 
 
Modificando o shell do usuário user1 para /bin/sh: 
 
# usermod –s /bin/sh 
 
Travando a conta do usuário user1: 
 
# usermod –L user1 
 
Destravando a conta do usuário user1: 
 
# usermod –U user1 
 
Modificando o login de user1 para usuario1: 
 
# usermod –l usuario1 user1 
 
Mudando o grupo primário de user1 para ‘unix’: 
 
# usermod -g unix user1 
 
 Adicionando o usuário user1 ao grupo cpd: 
 
 # usermod -G cpd -a user1 
 
# chfn 
 
Modifica o campo de descrição do usuário. 
 
Sintaxe: 
 
# chfn <usuário> 
 
Exemplo: 
 
Modificando a descrição do usuário user1: 
 
# chfn user1 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 78 
 
 
 
# passwd 
 
Cria, consulta e modifica parâmetros de autenticação de usuário. 
 
Sintaxe: 
 
# passwd <opções> <usuário> 
 
Opções: 
 
-S : consulta parâmetros de logon fornecidos por /etc/shadow. 
 
-d : cria senha e branco para o usuário. 
 
-l : trava usuário. 
 
-u : destrava usuário. 
 
Exemplos: 
 
Criando senha em branco para o usuário operador: 
 
# passwd –d operador 
 
Travando a conta do usuário operador: 
 
# passwd –l operador 
 
Destravando a conta do usuário operador: 
 
# passwd -u operador 
 
 
Conferindo o status da conta: 
 
# passwd –S operador 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 79 
 
 
 
 
 
# chage 
 
Modifica parâmetros de logon de usuários. 
 
Sintaxe: 
 
# chage <opções> <usuário> 
 
Opções: 
 
-l : lista parâmetros de logon. 
 
-M : modifica o tempo (em dias) da validade da senha do usuário após a última modificação 
(MAX_DAYS) 
 
-m : modifica o tempo mínimo (em dias) entre mudanças de senha (MIN_DAYS). 
 
-W : modifica a quantidade de dias anteriores à expiração as senha do usuário onde ele será avisado a 
trocar a senha (WARN_DAYS). 
 
-e : informa uma data específica para a expiração da conta do usuário. 
 
-I : informa em quantos dias após a expiração da senha do usuário a conta do mesmo será inativada. 
 
Exemplos: 
 
Informando que a conta do usuário user1 irá expirar exatamente dia 31/12/2010: 
 
# chage -e 2010-12-31 user1 
 
Mudando para 5 dias o tempo anterior à expiração da senha onde o usuário user1 será avisado a trocá-
la: 
# chage -W 5 user1 
 
Modificando a validade da senha do usuário user1 para 60 dias (2 meses) após ser modificada: 
 
# chage –M 60 user1 
 
Listando parâmetros de login de user1: 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 80 
 
# chage –l user1 
 
A interpretação do comando acima é a seguinte: a senha do usuário user1 irá expirar dia 11/10/2010, 
pois é o 20º dia depois da última alteração da mesma, que foi definido pelo PASS_MAX_DAYS. Sua conta expira 
dia 12/12/2010. 
 
Informando que após, a mudança de senha, o usuário 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 usuário em sessão por terminal. 
 
# w 
 
Exibe a lista de usuários em sessão por terminal e os programas que eles estão utilizando. 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 81 
 
 
 
 
 
 
# last 
 
Exibe todas as conexões feitas pelos usuários no sistema. 
 
 
# lastlog 
 
Exibe o último login de todos os usuários cadastrados no sistema. 
 
# groupadd 
 
Cria um grupo no arquivo /etc/group. 
 
Sintaxe: 
 
# groupadd <opções> <grupo> 
 
Opções: 
 
-g : especifica um GID para o novo grupo. 
 
-o : cria o grupo com o GID não-único. 
 
# users 
 
Exibe os logins de usuários em sessão. 
 
# userdel 
 
Resultado dos 2 comandos (diferenças) 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 82 
 
Exclui uma conta de usuário. 
 
Exemplos: 
 
Excluindo a conta do usuário user1 sem excluir o seu homedir: 
 
# userdel user1 
 
Excluindo a conta do usuário user1, seu diretório 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 usuário sem fazer logoff da sessão atual 
 
Sintaxe: 
 
# su <login> 
 
 
10.3 - SUDO 
 
# sudo 
 
Permite que o usuário comum execute comandos de root caso os comandos que ele queira executar 
estejam permitidos a ele dentro de /etc/sudoers. Esta é uma ótima prática para casos em que é necessário ter 
um ou outro usuário usando alguns comandos de root. Exemplo: se em uma empresa existe um usuário que 
deve administrar o Firewall Iptables e outro que deve monitorar e fazer modificações nos discos do servidor 
apenas, não teria nenhum motivo para nenhum dos dois ter a senha do usuário root, bastaria que seus nomes 
fossem incluídos em /etc/sudoers e, neste arquivo, fossem habilitados a executar apenas comandos relativos às 
tarefas descritas acima, em algumas distribuições, inclusive, o usuário root é travado por medida de segurança, 
neste caso, o /etc/sudoers foi configurado previamente para dar acesso de root ao usuário em qualquer 
comando que ele digitar (isso não é o mesmo que ser root, pois o sudo não dá permissão nenhuma ao usuário 
comum de ter as mesmas permissões de acesso a arquivos e diretórios que o root). 
 
Sintaxe do comando sudo: 
 
# sudo <comandos> 
 
O arquivo de configuração dos usuários do sudo tem permissão R--R-- ---, o que quer dizer que nem o 
usuário root teria permissão de editá-lo, só que o diretório /etc é de propriedade do root e ele tem permissão 
de escrita sobre ele, o que também garante permissão de escrita sobre todos os arquivos do diretório. Basta 
forçar a gravação para escrever nesse arquivo, isto pode ser feito no editor vim (com ! após a opção) ou no 
editor visudo, que já força a gravação por padrão. É bom lembrar que o editor padrão do sistema é o nano, mas 
por causa de suas funcionalidades, vamos usar o vim, mudando o editor padrão: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 83 
 
# update-alternatives --config editor 
 
Editando o arquivo: 
 
# visudoNo caso acima, temos a representação do seguinte cenário: 
 
O usuário user1 pode executar comandos como qualquer usuário, sem precisar lançar a sua própria 
senha para isso, e ele apenas pode executar como root os comandos fdisk e mkfs. Já o grupo adm, pode 
executar comando como qualquer usuário, menos o usuário dba, também sem senha, e pode também executar 
todos os comandos de root. 
 
Feitas todas as configurações, vamos à prática: 
 
Se o comando administrativo for executado em o sudo, a operação não 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 diretórios. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 84 
 
Sintaxes: 
 
# chown <opções> <dono> <diretório/arquivo> 
 
# chown <opções> <dono>.<grupo> <diretório/arquivo> 
 
# chown <opções> <dono>:<grupo> <diretório/arquivo> 
 
Exemplos: 
 
Modificando o dono do arquivo ~/arquivo1.txt para o usuário operador: 
 
# chown operador ~/arquivo1.txt 
 
Modificando o dono do arquivo ~/arquivo1.txt para o usuário operador e o grupo para cpd: 
 
# chown operador.cpd ~/arquivo1.txt 
 
Modificando o dono do diretório /backups, todos os seus subdiretórios e arquivos para o usuário 
operador e o grupo para cpd: 
 
# chown –R operador:cpd /backups 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 85 
 
11 - PERMISSÕES 
 
Entender e saber aplicar as permissões necessárias é essencial para um administrador de qualquer 
distribuição Linux. Uma política permissiva demais em arquivos ou diretórios pode levar todo um projeto de TI 
por água abaixo em questão de segundos. Basta imaginar um servidor de arquivos com permissões de leitura, 
gravação e escrita para todos os usuários em todos os compartilhamentos, quando na verdade existem 
diretórios que não devem ser nem lidos por mais de um grupo de usuários. 
 
11.1 – Tipos e aplicações 
 
Leitura 
 
Representada em modo literal por R, a permissão de leitura concede ao usuário ao usuário copiar e ler 
o conteúdo de arquivos ou diretórios. 
Gravação 
 
Representada em modo literal por W, está permissão concede ao usuário mover, renomear e modificar 
o conteúdo de um arquivo ou diretório. 
 
Execução 
 
Esta com certeza merece uma atenção muito especial, pois sua aplicação em arquivos e diretórios é 
totalmente diferente. 
 
Ela só é aplicada a um arquivo quando o mesmo for um programa executável (exemplo: programa de 
Shell Script). Já em diretórios ela é essencial se o objetivo for permitir o acesso a um usuário qualquer. Sem tal 
permissão, não haverá como o usuário executar o comando cd no diretório. 
 
A permissão de execução é representada em modo literal por X. 
 
11.2 - Permissões especiais 
 
 SUID 
 
Permite que qualquer usuário tenha a mesma permissão de execução que o dono sobre o arquivo. 
Em modo literal, é representada no campo de dono por s. 
 
SGID 
 
Faz com que cada arquivo ou subdiretório criado em um diretório seja do grupo do “diretório pai” 
(herança de grupo). 
Em modo literal, é representada no campo de grupo por s. 
 
Sticky Bit 
 
Proíbe que qualquer usuário que não seja o dono do objeto ou o próprio root exclua o mesmo, mesmo 
que tenha permissão para isso. 
 
Em modo literal, é representada no campo de outros por t. 
 
11.3 – Campos de permissões 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 86 
 
 Dono (USER) 
 
São permissões relativas ao dono do arquivo ou diretório. 
 
Grupo (GROUP) 
 
Toda vez que um arquivo ou diretório é criado, o dono do mesmo fica sendo o usuário que cria e o 
grupo proprietário acaba ficando aquele que é o grupo primário do usuário que criou. 
Este campo se refere às permissões aplicadas àquele que fazem parte do grupo do objeto. 
 
Outros (OTHERS) 
 
É o nível de permissão para usuário que não são o dono do objeto e também não fazem parte do grupo 
do mesmo. 
 
11.4 – Modo octal de permissões 
 
Além de poderem ser representadas por letras (R,W e X), as permissões também podem ser 
representadas por números no modelo octal: 
 
Número Tipos de permissão 
4 Leitura ou SUID. 
2 Gravação ou SGID. 
1 Execução ou Sticky bit 
0 Sem permissão alguma. 
 
Para agregar mais de uma permissão, pode-se somar os números, como no exemplo: 
 
Leitura, gravação e execução para dono e leitura e execução para grupo e outros: 
 
RWXR-XR-X = 755 
 
Leitura e gravação para o dono e apenas leitura para grupo e outros: 
 
RW-R--R-- = 644 
 
Leitura, gravação e execução para dono e leitura e execução para grupo e outros mais SGID e Sticky bit: 
 
RWXR-sR-t = 3755 
 
Como se pode perceber, no modo octal de permissões especiais, o número referente a elas vem antes 
das outras permissões. 
 
Outro detalhe: quando o campo de execução do nível onde se aplica as permissões especiais estiver 
sem permissão de execução, estas letras referentes a essas permissões ficaram em caixa alta. 
 
 
11.4 – Aplicação 
 
# chmod 
 
Modifica permissões de arquivos e diretórios. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 87 
 
Sintaxe: 
 
# chmod <opções> <permissões> <arquivo/diretório> 
 
Opções: 
 
-R : modo recursivo. 
 
-v : modo verbose. 
 
Exemplos: 
 
Aplicando permissão para dono de RWX, adicionando permissão de gravação para o grupo e 
especificando permissão 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 permissão de execução de todos os níveis no arquivo do exemplo acima: 
 
# chmod –x ~/arq1.txt 
 
Adicionando permissão de gravação 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 permissões RWXRWXR__ ao diretório /backups e a todo o seu conteúdo em modo octal: 
 
# chmod -R 774 /backups 
 
Aplicando SGID e Sticky bit, e permissão RWX para todos os níveis no diretório /backups em modo 
octal: 
# chmod 3777 /backups 
 
 
11.5 – Umask 
 
Ao serem criados, por padrão, arquivos e diretórios ganham as permissões 644 e 755, 
respectivamente. Este fato só ocorre por causa de um número chamado de Umask. Este número, subtraído de 
666 para arquivos e 777 para diretórios, vai determinar as permissões padronizadas para os novos objetos a 
serem criados pelo usuário. 
 
Exemplos: 
 
Umask : 022 (padrão) 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 88 
 
Permissão padrão para arquivos novos: 644 
 
Permissão padrão para diretórios novos: 755 
 
Umask : 024 
 
Permissão padrão para arquivos novos: 642 
 
Permissão padrão para diretórios novos: 753 
 
*Obs: 
 
 Quando o valor de Umask configurar permissão padrão de execução em qualquer nível para arquivo, 
esta não será aplicada. No lugar dela, será aplicada a permissão de gravação. 
 
Geralmente, o valor de Umask é definido em algum dos scripts de logon de usuário pelo comando 
umask. 
 
# umask 
 
Comando que define e consulta a umask do usuário. 
 
Sintaxe: 
 
# umask <valor> 
 
Exemplo: 
 
Transformando Umask do usuário para 020: 
 
# umask 020 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 89 
 
12 - SISTEMAS DE ARQUIVOS 
 
Alguns conceitos são imprescindíveis antes que o estudo deste assunto seja iniciado: 
 
INODES 
São números que servem como índices para arquivos e diretórios. Cada arquivo terá um número 
reservado para ele, isto acontece por causa da reserva de inodes existente no file system (que, por padrão, é de 
5%). A reserva de inodes deve sersempre verificada com a linha de comando df –hi, pois o estouro desta 
reserva causa a incapacidade de criação de novos arquivos ou diretórios no sistema de arquivos em questão. 
 
JOURNALING 
Este recurso é encontrado em sistemas de arquivos diversos suportados pelo Linux, como EXT3, EXT4 e 
ReiserFS. Ele consiste na criação de um log de atividades recentes do sistema, que podem ser recuperadas em 
um próximo boot, caso ocorra um desligamento não programado, por exemplo, proporcionando maior 
segurança e estabilidade do sistema e permitindo a recuperação do sistema após problemas. 
 
SUPERBLOCO 
São cópias de blocos que armazenam informações detalhadas sobre um sistema de arquivos. Estas 
cópias, por padrão, são feitas a cada 8192 blocos e elas sevem para auxiliar a recuperação de um file system 
que esteja com inconsistência. 
 
São muitos sistemas de arquivos suportados pelo Linux e é sempre importante estar sincronizado com 
o suporte oferecido pelo Kernel a eles, para que não haja nenhum tipo de perda de tempo ao tentar usar um 
sistema de arquivos que não é suportado. 
 
Os mais importantes sistemas de arquivos suportados pelo Linux são: 
 
EXT2 
Sistema de arquivo padrão de distribuições antigas. É adotado muito comumente como padrão por 
programas como o tune2fs, o mke2fs e o e2fsck. Seu limite de criação de blocos é de 8TB e o tamanho de cada 
bloco pode chegar a 4096 bytes. 
 
EXT3 
Este sistema de arquivos possui limitação por tamanho de arquivo de 2TB e limite de criação de blocos 
de 32TB. Ele também possui o recurso de Journaling, diferença 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 próprio 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 verificação de integridade de Journaling, 
o que incrementa mais confiabilidade para o recurso, que foi melhorado. A gravação atrasada de dados 
também pode ser considerada como um recurso muito útil deste sistema de arquivos, pois aumenta a 
velocidade de leitura e gravação, apenas gravando um dado quando ele realmente for sair de cache. O tamanho 
do inode também é maior do que no EXT3 (256bytes ao invés de 128bytes de EXT3), isso é necessário para que 
o inode possa armazenar informações extras, como versão do inode ou data de modificação do mesmo. 
 
ReiserFS 
Sistema de arquivos desenvolvido por Hans Reiser, este sistema de arquivos proporciona de vantagem 
em relação aos outros o fato de garantir maior recuperação de danos à estrutura existente de dados. A grande 
desvantagem é que ele já não garante um Journaling tão eficiente assim para arquivos que estiverem sendo 
utilizados no ato de um “crash”. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 90 
 
UFS 
O Unix File System é o sistema de arquivos padrão de distribuições 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 memória virtual para o sistema. 
Costumava-se destinar o dobro do espaço da memória RAM para uma memória Swap em versões 
antigas de distribuições Linux. Hoje esta prática está em desuso por causa do crescente desenvolvimento de 
tecnologias de armazenamento temporário. Hoje em dia, é muito comum encontrar um servidor com até 64GB 
de memória RAM. 
 
Proc 
Este sistema de arquivos na verdade contém pseudo-arquivos, que são criados pelo Kernel Linux 
conforme haja necessidade de manipular algum recurso de sistema. Estes arquivos são 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 não pode interagir com o 
sistema operacional. 
 
Alguns exemplos de pseudo-arquivos de processos do Kernel: 
 
/proc/partitions – arquivo de partições disponíveis para uso. 
 
/proc/cpuinfo – arquivo de informações detalhadas sobre CPU. 
 
/proc/meminfo – arquivo de informações detalhadas sobre memória RAM. 
 
/proc/swaps – arquivo de reconhecimento de sistemas de arquivo SWAP. 
 
/proc/mounts – arquivo de reconhecimento de sistemas de arquivos montados (mesma informação de 
/etc/mtab) 
 
/proc/version – arquivo de informações sobre versão do sistema operacional e do kernel. 
 
ISO9660 
 
Sistema de arquivos padrão para mídias de CD ou DVD. 
 
FAT16 e FAT32 são tratados em Linux como MSDOS e VFAT, enquanto NTFS é tratado como NTFS 
mesmo. 
 
12.1 – Comandos administrativos de file systems 
 
# fdisk 
 
Particionador modo texto padrão para distribuições Linux. 
 
Sintaxe: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 91 
 
# fdisk <opções> <disco> 
 
Exemplos: 
 
Exibindo a tabela de partições do disco /dev/sda: 
 
# fdisk –l /dev/das 
 
 
No caso acima, o disco /dev/sda tem 1 partição primária, 1 estendida e 3 lógicas. 
 
Particionando /dev/sda: 
 
# fdisk /dev/sdb 
 
As principais opções do prompt do fdisk são: 
 
P : exibe a tabela de partições do volume. 
 
T : muda o tipo da partição. 
 
C : cria uma partição. 
 
D : exclui uma partição. 
 
A : torna a partição ativa. 
 
W : sai salvando as alterações na tabela de partições. 
 
Q : sai sem salvar qualquer mudança feita na tabela de partições. 
 
# cfdisk 
 
Particionador modo texto com interface mais amigável. 
 
Sintaxe: 
 
# cfdisk <disco> 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 92 
 
 
 
 
# mkfs 
 
Cria sistemas de arquivos em volumes. 
 
Sintaxe: 
 
# mkfs <opções> <volume> 
 
Opções: 
 
-t : especifica o tipo do sistema de arquivos (na verdade, o programa que será utilizado na formatação). 
 
-L : aplica um rótulo em volumes EXT2 e EXT3. 
 
-c : faz a verificação de disco antes de formatar o volume. 
 
-V ou –v : modo verbose. 
 
-n : cria rótulos em filesystems VFAT e MSDOS. 
 
*Obs: 
 
Os comandos abaixo são equivalentes: 
 
# mkfs –t ext3 <volume> 
 
# mkfs.ext3 <volume> 
 
# mke2fs –j <volume> 
 
Exemplos: 
 
Criando sistema de arquivos ext3 em partição /dev/sda5, com aplicação de rótulo “Backups” e 
verificação de integridade de disco: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 93 
 
# mkfs –t ext3 –L “Backups” –c /dev/sda5 
 
Criando sistema de arquivos ext2 em /dev/sda6: 
 
# mkfs /dev/sda6 
 
# tune2fs 
 
Verifica e modifica parâmetros ajustáveis de sistemas de arquivos EXT2 e EXT3. 
 
Sintaxe: 
 
# tune2fs <opções> <volume> 
 
Opções: 
 
-l : lista os parâmetros do file system. 
 
-j : aplica recurso de Journaling em sistemas de arquivos ext2 (converte para ext3). 
 
-L : aplica um rótulo ao volume. 
 
-m : modifica o percentual de blocos reservados para inodes. 
 
-r : modifica o número de blocos reservados para inodes. 
 
-c : configura o número 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 parâmetros de volume /dev/sda7: 
 
# tune2fs –l /dev/sda7 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 94 
 
 
Na figura acima, que é o resultado do comando em questão, pode-se observar que o parâmetro 
hás_journal está presente, o que caracteriza um sistema de arquivos com recurso de Journaling ativado. 
 
# fsck 
 
Verifica aintegridade de sistemas de arquivos. 
 
Sintaxe: 
 
# fsck <opções> <volume> 
 
Opções: 
 
-t : especifica o tipo do sistema de arquivos que vai ser verificado. 
 
-f : força o a checagem mesmo em sistemas de arquivos aparentemente “limpos”. 
 
-p : repara automaticamente inconsistências no sistema de arquivos. 
 
-c : verifica badblocks. 
 
-N : não executa. Apenas simula o que seria feito. 
 
-M : não 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 verificação em /dev/sdb6: 
 
# fsck –N /dev/sdb6 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 95 
 
*Obs: 
 
É muito importante ressaltar que uma verificação de disco feita em um volume montado pode causar 
inconsistência no sistema de arquivos do mesmo. 
 
# badblocks 
 
Verifica a existência de badblocks em um disco. 
 
Sintaxe: 
 
# badblocks <opções> <volume> 
 
# hdparm 
 
Ajusta parâmetros de configuração de HDs. 
 
Sintaxe: 
# hdparm <opções> <disco> 
 
Opções: 
 
-d : ativa o modo DMA. 
 
-c : ativa o I/O de 32 bits. 
 
-i : exibe identificação do disco. 
 
Exemplos: 
 
# hdparm –i /dev/sda 
 
# dumpe2fs 
 
Exibe informações sobre blocos e superblocos de um sistema de arquivos. 
 
Sintaxe: 
 
# dumpe2fs <volume> 
 
 
# dd 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 96 
 
Cria imagens “bit a bit” de sistemas de arquivos. 
 
Sintaxe: 
 
# dd if=<origem> of=<destino> <opções> 
 
Opções: 
 
bs : “block size” – é o tamanho do bloco a ser criado. 
 
count : define quantos blocos serão criados. 
 
notrunc : não truncar arquivo de destino. 
 
Exemplos: 
 
Criando um clone da partição /dev/sda1 em /dev/sdb1: 
 
# dd if=/dev/sda1 of=/dev/sdb1 
 
Criando um arquivo de imagem /root/part2 da partição /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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 97 
 
12.2 – Sistema de arquivos SWAP 
 
 O sistema de arquivos SWAP (ou área de troca) funciona como memória virtual para o sistema (auxiliar 
a memória RAM). 
 
 Este sistema de arquivos pode ser um arquivo propriamente dito ou pode ser também uma partição 
separada para este fim, o que leva o administrador a seguinte conclusão: em qualquer caso, para utilizar SWAP 
o sistema vai ter que utilizar o disco rígido, o que diminui bruscamente a performance do sistema. Por esse 
motivo específico é que apenas em último caso é recomendado o uso deste recurso. 
 
 Era comum em sistemas antigos (pela falta de memória RAM) a atribuição 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 criação da SWAP. Hoje em dia essa prática é cada vez mais desnecessária, uma vez que as 
tecnologias de armazenamento em RAM já proporcionam a capacidade de armazenamento temporário 
necessária para qualquer servidor. 
 
 Criando sistemas de arquivos SWAP: 
 
 Levando em consideração que foi criada uma partição tipo 82 para abrigar um sistema de arquivos 
SWAP e o seu caminho é /dev/sda2, o que, primeiro deve ser feito é a criação do sistema de arquivos SWAP: 
 
 Cria o sistema de arquivos SWAP em /dev/sda2 (não existe ‘mkfs –t swap’): 
 
 # mkswap /dev/sda2 
 
 O próximo 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 não precisa de ponto de montagem, este deve ser definido como ‘none’ no campo de 
opções. 
 Se for necessário desativar o SWAP, pode-se usar a linha de comando abaixo: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 98 
 
 # swapoff /dev/sda2 
 
12.3 – Diretório /dev e gerenciador UDEV 
 
O diretório /dev tem em seu conteúdo arquivos especiais, que podem ser arquivos de blocos (discos ou 
partições, por exemplo), arquivos de caracteres (terminais de controle, memórias RAM, placas de som, por 
exemplo). 
 
O gerenciador de dispositivos UDEV cuida de atualizar os dispositivos disponíveis dentro de /dev de 
forma em dinâmica. Assim que um dispositivo for conectado fisicamente, o UDEV cria o arquivo correspondente 
ao mesmo em /dev. 
 
Quando a interface gráfica está instalada em distribuições que contam com o Kernel 2.6 do Linux 
instalado, UDEV monta automaticamente todo volume novo em /media/<rótulo do volume> assim que o 
reconhece. Isto facilita e muito a vida do usuário de desktop Linux à medida que o mesmo não 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 99 
 
12.4 – Montagem de volumes 
 
Para que um volume seja utilizado como sistema de arquivos no sistema, é preciso montá-lo em algum 
dos diretórios existentes, pois, a princípio, ele é um arquivo de blocos qualquer antes que isso ocorra. 
 
O diretório onde este volume vai ser acessado é chamado de ponto de montagem, ou mount point. 
 
Este mount point pode ser um diretório já existente do modelo FHS (/mnt ou /media, por exemplo) ou 
pode ser um diretório criado pelo usuário. 
 
É bom lembrar também o seguinte: as permissões do mount point são mandatórias sobre as 
permissões de montagem do volume, ou seja: um volume pode ter sido montado com permissão de gravação, 
mas se o diretório onde ele foi montado não tiver permissão para que o usuário que vai acessar possa escrever 
o mesmo não o fará. 
 
O arquivo /etc/fstab contém as configurações de montagem de volumes. Sua sintaxe interna é a 
seguinte: 
 
<sistema de arquivos> <ponto de montagem> <tipo do sistema de arquivos> <opções de montagem> <uso de 
dump> <flag de checagem de disco no boot> 
 
É importante reparar que também é possível montar um volume neste arquivo de configuração através 
do UUID do seu sistema de arquivos, este número de identificação pode ser obtido através do comando 
‘tune2fs -l <volume>’ ou com o comando ‘blkid <volume>’. 
 
 
 
No caso deste arquivo /etc/fstab acima, ao invés de montar o sistema de arquivos pelo seu nome em 
/dev, ele esta configurado para montar o volume pelo o UUID (ID de partição). 
 
Opções de montagem 
 
ro : monta o volume com permissão de apenas leitura para todos. 
 
rw : monta o volume com permissão de leitura e gravação para todos. 
 
auto : pode ser montado automanticamente com a opção ‘–a’. 
 
noauto : neste caso, o volume precisaria ser montado manualmente através do comando mount. 
 
dev : o volume pode abrigar arquivos especiais. 
 
nodev : o contrário de dev. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 100 
 
exec : o volume permite que sejam executados programas dentro do volume (permissão x em 
arquivos). 
 
noexec : o contrário de exec. 
 
suid : permite que permissões especiais aplicadas a arquivos e diretórios tenham efeito. 
 
nosuid : o contrário de suid. 
 
user : permite que o usuário comummonte o volume e apenas aquele que montou pode desmontar o 
mesmo. 
 
users : qualquer usuário monta e desmonta o volume. 
 
nouser: proíbe que qualquer usuário não-root monte ou desmonte o volume. 
 
async : entrada e saída assíncrona de gravação e escrita no volume. 
 
sync : o contrário de async. 
 
defaults : é o mesmo que as opções 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 opções de montagem 
dele dentro de /etc/fstab deve constar a opção ‘auto’. 
 
Comandos de montagem 
 
# mount 
 
Monta manualmente um sistema de arquivos. 
 
Sintaxe: 
 
# mount <opções> <volume> <ponto de montagem> 
 
Opções: 
 
-a : monta todo volume com opção ‘auto’ em /etc/fstab. 
 
-v : verbose. 
 
-r : monta como apenas leitura. 
 
-w : monta como leitura e gravação. 
 
-o : especifica as opções de montagem. 
 
Exemplos: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 101 
 
 
Montando o volume /dev/fd0, que está com opção ‘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 gravação, sem verbose: 
 
# mount –t ext3 –w /dev/sdb2 /backup 
 
Montando todos os volumes com opção ‘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 <opções> <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 não estiver um 
uso. 
Toda vez que um volume está montado, todos os seus parâmetros de montagem e seu caminho são 
enviados o arquivo de tabelas de volumes montados, o /etc/mtab, que recebe informações de /proc/mounts. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 102 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 103 
 
13 – LINKS 
 
Criar ligações entre arquivos e diretórios não é uma tarefa tão fácil quanto parece, existem regras e 
conceitos que precisam ser respeitados. 
 
Primeiramente, vamos entender os tipos de links existentes: 
 
Hardlink (link físico) 
 
Um hardlink é a ligação entre arquivos onde o arquivo original é praticamente o mesmo que o link, 
tanto que os dois possuem o mesmo número inode e, por isso, não podem estar em sistemas de arquivos 
diferentes. 
 
Em uma ligação física 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 
cópias de segurança de arquivos em tempo real. 
 
Softlink (link simbólico) 
 
Um softlink assume o papel de “simples atalho”, como o usuário costuma chamar. Ele assume um 
número inode diferente do arquivo original, podendo assim, ser implementado entre sistemas de arquivos 
diferentes. 
 
Em uma ligação simbólica entre arquivos, se o arquivo original for movido, excluído ou renomeado, a 
ligação fica quebrada (não existe mais). 
 
# ln 
 
Cria links entre arquivos (hardlink, por padrão). 
 
Sintaxe: 
 
# ln <opção> <origem> <link> 
 
Exemplos: 
 
Cria ligação física entre os arquivos /etc/passwd e /etc/users: 
 
# ln /etc/passwd /etc/users 
 
Cria ligação simbólica entre /etc/shadow e /mnt/senhas: 
 
# ln –s /etc/shadow /mnt/senhas 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 104 
 
14 – COMANDOS DE BUSCA 
 
# type 
 
Exibe informação sobre o tipo de comando. 
 
Sintaxe: 
 
# type <nome> 
 
# which 
 
Localiza um comando do sistema que esteja definido na variável PATH do usuário. 
 
Sintaxe: 
 
# which <comando> 
 
# whereis 
 
Busca por arquivos e diretórios de manuais, de configuração de binários de um programa qualquer. 
 
Sintaxe: 
 
# whereis <programa> 
 
# locate 
 
Procura por arquivos e diretórios em todo o sistema mediante atualização em sua própria base de 
dados pelo comando ‘updatedb’. 
 
Sintaxe: 
 
# updatedb 
 
# locate <arquivo/diretório> 
 
Exemplo: 
 
Procurando por ‘samba’ no sistema inteiro: 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 105 
 
 
 # find 
 
 Faz a busca avançada em uma árvore de diretórios específica. 
 
 Sintaxe: 
 
 # find <diretório> <opções> 
 
 Opções: 
 
 -type : procura por tipo de arquivo. 
 
 -name : procura por nome. 
 
 -iname: procura por nome em modo insensitivo (ignora diferenças entre maiúsculas minúsculas). 
 
 -fstype : procura por sistema de arquivos do um tipo específico. 
 
 -maxdepth : máximo de profundidade da busca em diretórios (máximo de subdiretórios buscados). 
 
 -mindepth : mínimo de profundidade da busca em diretórios. 
 
 -executable : procura por objeto executável. 
 
 -perm : especifica qual a permissão exata do objeto que vai ser buscado. 
 
 -size : busca por tamanho. 
 
 -amin : procura por objetos acessados a minutos atrás. 
 
 -atime : procura por objetos que tenham sido acessados dias atrás. 
 
 -mmin : procura por objetos que tenham sido modificados a minutos atrás. 
 
 -mtime : procura por arquivos que tenham sido modificados a dias atrás. 
 
 Exemplos: 
 
 Buscando apenas por links simbólicos dentro de /etc, de 4 subdiretórios em diante: 
 
 # find /etc -mindepth 4 -type l 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 106 
 
 
 Busca apenas por arquivos regulares com permissão 644 em /var/log: 
 
 # find /var/log –perm 644 –type f 
 
 
 Busca apenas por arquivos executáveis em /usr/local: 
 
 # find /usr/local –executable 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 107 
 
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 sério, pois nem todos os tipos de 
arranjos proporcionam a redundância anunciada. 
 
 A tecnologia permite agregar recursos diversos de disponibilidade e desempenho com diversos discos 
fazendo parte de um “bloco” só. 
 
 O RAID é aplicável através de controladas RAID ou de software. Vamos tratar aqui neste capítulo a 
prática 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 níveis de RAID são: 
 
 RAID0 (Stripping) 
 
 Em RAID0, não existe redundância alguma entre discos. O que 
acontece no arranjo é que o desempenho de leitura e gravação melhora 
significativamente, à medida que dois discos, no mínimo dividem esta 
tarefa, pois os dados ficam fragmentados entre os discos. 
 Esta prática não proporciona qualquer tipo de segurança aos 
dados, uma vez que não há tolerância a falhas de nenhum dos discos (se 
isto ocorrer, os dados serão perdidos completamente). A pesardisso, é 
uma prática 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 transferência. 
 
 RAID1 (Mirroring) 
 
 Em RAID1, o desempenho de I/O cai significativamente mas, 
em compensação, a segurança dos dados (disponibilidade, na verdade) 
é garantida em caso de problemas com um dos discos do arranjo. Isso 
porque o RAID1 é o nível que proporciona redundância completa de 
dados. Acontece que um dos discos serve de “espelho” para os dados do 
outro. É preciso pensar muito antes de pôr em prática o RAID neste 
nível o desempenho, como foi dito antes, cairá significativamente por 
causa da sincronização em tempo real dos dados de um disco para o 
outro. 
 
 RAID10 (0 + 1) 
 
 Neste caso, os dói níveis acima são combinado para 
poder proporcionar redundância e desempenho ao mesmo 
tempo. O mínimo é de 4 discos para este arranjo. 
 Primeiro são implementados dois arranjos RAID0 
independentes e após estes serem criados, é criado um RAID1 
com esses dois arranjos. 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 108 
 
RAID5 
 
 O RAID5 pode ser implementado com, no mínimo, 3 
discos e é uma ótima solução para aliar disponibilidade, 
segurança e maior aproveitamento da capacidade de 
armazenamento dos discos. 
 Neste nível, 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 espaço referente a um 
dos discos do arranjo, fazendo assim com que a tolerância a 
falhas do arranjo seja de um disco. A diferença 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 espaço 
igual para todos os discos, diminuindo a perda de espaço no arranjo. 
 Um arranjo RAID5 com 6 HDS de 1TB cada um ficaria com 5TB de espaço total e ainda teria tolerância à 
falha de 1 dos discos. 
 
 RAID6 
 
 Este nível é bem parecido com o RAID5, só que o mínimo é 
de 4 discos no arranjo. 
 A área de paridade é distribuída entre os discos de forma 
que o total de espaço no arranjo fique com o espaço referente a 
dois discos reservado para redundância, proporcionando tolerância 
a falhas de 2 discos. 
 Em um arranjo RAID6 com 8 discos de 1TB cada, o 
tamanho final do arranjo ficaria de 6TB, com tolerância 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 partições. 
 
 Primeiro vamos criá-las: 
 
 cfdisk /dev/sda 
 
 As partições para integrar o arranjo têm que ser do tipo “fd” (detecção automática de RAID). 
 
 Vamos fazer o laboratório com 5 partições lógicas, onde 3 irão ficar no arranjo, compondo um RAID5, e 
2 ficarão de disco reserva (spare disk). 
 
 Criando o arquivo de bloco do arranjo: 
 
 # mknod /dev/md0 b 9 0 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 109 
 
 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 não exista. 
 
 -l : indica qual o nível de RAID a ser criado. 
 
 -n : indica quantos e quais discos farão parte do arranjo (não conta com os reservas). 
 
 -x : indica quantos e quais discos vão ficar de “spare disks”. 
 
 Os metacaracteres [-] e {,} foram utilizados para facilitar a declaração desses discos, pois se não fosse 
assim, o administrador teria que digitar disco por disco separado por espaço. 
 
 
15.2 – Verificando funcionamento do arranjo 
 
 O arquivo /proc/mdstat pode ser consultado caso o administrador queira ver como está à 
sincronização do arranjo: 
 
 # watch –n1 cat /proc/mdstat 
 
 O comando watch repete de ‘n’ em ‘n’ segundos um comando específico. Desta forma, o arquivo será 
lido de 1 em 1 segundo, proporcionando ao administrador monitorar em tempo real a criação do arranjo. 
 
 Para mais detalhes sobre o mesmo, pode ser utilizada a seguinte linha de comando: 
 
 # mdadm –D /dev/md0 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 110 
 
 Onde: 
 
 -D : descreve detalhes sobre o arranjo. 
 
 
15.5 – Formatando e montando o arranjo 
 
 RAID não é sistema de arquivos, mas sim um arranjo de discos, como já foi visto. Por esse motivo, não 
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 não cada disco individualmente: 
 
 # mkfs –t ext3 –L “RAID5” –c /dev/md0 
 
 Se for necessário 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 forçar uma falha em um dos discos do arranjo para testar a participação dos discos reservas: 
 
 # mdadm /dev/md0 –f /dev/sda5 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 111 
 
 
 
 
Observa-se que o disco fica marcado como falhado, enquanto o reserva entra em seu lugar e faz 
novamente a sincronização 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 112 
 
 Para parar todo o arranjo: 
 
 # mdadm –S /dev/md0 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 113 
 
16 – BACKUP E COMPACTAÇÃO 
 
 Em todo servidor instalado, uma boa prática de backup é sempre requerida. Manter estratégias de 
backup eficientes não é uma tarefa simples, com às vezes se imagina. O administrador deve analisar vários 
pontos antes de montar estas estratégias, como por exemplo: tipo do backup, frequência com que vai ser feito, 
dados a serem copiados, mídias 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 são copiados para 
outra mídia, 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. 
 
 Diretórios importantes 
 
 Fazer um backup completo, diferencial ou incremental do sistema todo implica em incluir estes 
diretórios abaixo na lista: 
 
 /etc – por ter todos os arquivos de configuração de serviços de sistema a servidores instalados, este 
diretório nunca deve ser esquecido em um alista de backup. 
 
 /home – dependendo do tipo de servidor, será importante fazer backup dos arquivos pessoais de 
usuários. Na verdade, como nem todo usuário precisa usar /home como diretório de arquivos pessoais, o ideal 
primeiro seria verificar em /etc/passwd antes a lista de diretórios ‘home’ de usuários antes de montar este 
backup ou fazer com que isso seja feito por um script cheio de expressões regulares (muito melhor!!). 
 
 /var/mail – para um servidor de correio que trabalhe com os padrões de armazenamento de 
mensagens de usuários, este diretório écrucial, pois nele estão os e-mails recebidos pelos usuários. 
 
 /var /www – para um servidor web que também opere nos padrões, este diretório é fundamental, pois 
é nele que se encontram os arquivos de publicação de sites no servidor. 
 
 /var/lib/mysql – diretório de banco de dados do MySql-Server. 
 
 
16.1 – Arquivamento de backups 
 
 # tar 
 
 Arquiva dados de diretórios em um arquivo apenas. É padrão para todas as distribuições Linux. Ele é 
muito versátil para backups, podendo corresponder a qualquer tipo de backup citado acima. 
 
 Sintaxe: 
 
 # tar <opções> <arquivo de backup> <origens dos dados> 
 
 Opções: 
 
 -c : cria uma arquivo da backup. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 114 
 
 -t : consulta o conteúdo de arquivos tar. 
 
 -v : verbose. 
 
 -x : extrai conteúdo de arquivo tar. 
 
 -u : modo “update”. Apenas atualiza o conteúdo de um arquivo tar. 
 
 -M : habilita backup em múltiplos volumes. 
 
 -C : muda o destino da extração de conteúdo de arquivo tar. 
 
 -z : utiliza o agente de compactação gzip. 
 
 -j : utiliza o agente de compactação bzip2. 
 
 -a : adiciona conteúdo a um arquivo tar. 
 
 -f : toda a saída deve ser redirecionada para um arquivo, dispositivo, uma entrada (stdin) ou uma saída 
(stdout) padrão. 
 
 Exemplos: 
 
 Criando um arquivo de backup do diretório /etc inteiro em /backups/bkp.tar 
 
 # tar –cvf /backups/bkp.tar /etc 
 
 Adicionando ao arquivo de backup anterior os diretórios /var/mail, /var/mysql e /home: 
 
 # tar –uvf /backups/bkp.tar –a /var/mail /var/mysql /home 
 
 Conferindo conteúdo do arquivo da backup: 
 
 # tar –tf /backups/bkp.tar 
 
 Atualizando o conteúdo do backup com o que foi modificado nesses diretórios: 
 
 # tar –uvf /backups/bkp.tar /etc /var/mysql /var/mail /home 
 
 Criando arquivo de backup /backups/homedir.tar.gz (arquivo também compactado com gzip) do 
diretório /home/user1: 
 
 # tar –czvf /backups/homedir.tar.gz /home/user1 
 
 
 Criando arquivo de backup /backups/mails.tar.bz2 (arquivo também compactado com o bzip2) do 
diretório /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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 115 
 
 
 
Extraindo todo o conteúdo 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 diretórios pronta chamada lista.txt: 
 
 # cpio –o < lista.txt > /backups/backup_lista.bin 
 
 Verificando o conteúdo deste backup: 
 
 # cpio –t < lista.txt 
 
 Combinando o comando find com cpio para obter o backup de todos os arquivos com permissão de 
execução contidos em /etc: 
 
 # find /etc –type f –executable | cpio –o > backup_etc.bin 
 
 
 Restaurando este backup: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 116 
 
 # cpio –i –F backup_etc.bin 
 
 As opções mais usadas do cpio são: 
 
 -o : cria um arquivo cpio. 
 
 -t : verifica um arquivo de backup. 
 
 -i : extrai o conteúdo de um arquivo cpio. 
 
 -F : aponta para um arquivo de backup, eliminando a necessidade de se utilizar redirecionamentos (< 
ou >). 
 
16.2 – Criação de scripts de backup 
 
 É claro que, para agilizar e facilitar as operações de backup, o administrador pode criar alguns scripts 
de backup e agendamentos (se for o caso), pois o Linux proporciona este tipo de prática 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 variável. 
 
 Levando em consideração que o assunto de scripts de Shell será abordado com muito mais 
profundidade mais à frente, vamos à edição do primeiro script de backup: 
 
 # vim /backups/backup_dia.sh 
 
 
 É sempre importante dar permissão de execução para o script que foi construído: 
 
 # 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 prática 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 117 
 
 O segundo script será feito para atualizar o conteúdo de um arquivo de backup completo existente 
com os dados de uma lista de diretórios bkp_lista.txt: 
 
 # vim /backups/backup_lista.sh 
 
 Criando a lista de diretórios: 
 
 # vim /backups/bkp_lista.txt 
 
 Executando o script: 
 
 # . /backups/backup_lista.sh 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 118 
 
16.3 – Agentes compactadores 
 
 O tar não é capaz de compactar o conteúdo de arquivos de backup sozinho. Agentes compactadores 
precisam ser utilizados em conjunto com ele, caso de gzip e bzip2. 
 
 Os agente mais importantes de compactação são: 
 
 # gzip 
 
 Gera arquivos de extensão .gz e tem taxa de compactação média quando o arquivo a ser compactado 
é grande. 
 
 Este agente compactador não mantém o arquivo original compactado. A única versão que vai estar 
disponível desde então será a versão compactada. 
 
 Sintaxe: 
 
 # gzip <opção> <arquivo> 
 
 Exemplos: 
 
 Compactando o arquivo arq1.txt em modo forçado: 
 
 # gzip –f arq1.txt 
 
 Listando o conteúdo 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 extensão .tgz é o mesmo que representá-lo como .tar.gz. 
 
 # bzip2 
 
 Agente compactador que possui uma alta taxa de compressão de arquivos grandes, podendo 
compactar em até 10% do tamanho original. Arquivo manipulados pelo agente bzip2 têm extensão .bz2. 
 
 Sintaxe: 
 
 # bzip2 <opção> <arquivo> 
 
 Exemplos: 
 
 Compactar arquivo disco.iso, mantendo o arquivo original: 
 
# bzip2 –k disco.iso 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 119 
 
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 compatível 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 subdiretórios de /etc em /backups/etc.zip: 
 
# zip –r /backups/etc.zip /etc 
 
# rar 
 
Compactador proprietário que tem versões para sistemas GNU/Linux, MacOS, Windows e outros. 
 
Sintaxe: 
 
# rar <ações> <opções> <arquivo rar> <origem> 
 
Ações: 
 
a : cria arquivo rar com conteúdo selecionado. 
 
x : extrai conteúdo de arquivo rar. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 120 
 
l : lista conteúdo de um arquivo rar. 
 
r : repara arquivo danificado. 
 
m : apaga conteúdo de origem após compactar. 
 
r : inclui subdiretórios no arquivo rar. 
 
Exemplos: 
 
Criando arquivo logs.rar contendo todosos arquivos do diretório /var/log: 
 
# rar a mail.rar /var/mail 
 
Extraindo o conteúdo deste arquivo: 
 
# rar x mail.rar 
 
Criando um arquivo chamado etc.rar do todos os subdiretórios de /etc: 
 
# rar r etc.rar /etc 
 
listando os arquivos existentes dentro do arquivo compactado logs.rar: 
 
# rar l mail.rar 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 121 
 
17 – AGENDAMENTO DE TAREFAS 
 
 Automatizar tarefas é uma prática muito comum entre administradores de servidores Linux. Um 
backup “full” que deve sempre ser feito de um diretório de publicação de sites, por exemplo, toda sexta-feira, 
precisaria de intervenção manual do administrador se não houvesse a possibilidade de agendá-lo para executar 
neste dia em um horário específico. 
 
 Os daemons que gerenciam todos os agendamentos do sistema são o cron e o atd, mas eles não são os 
programas que configuram a instalam os agendamentos de tarefas no Linux. Para esta tarefa, são utilizados o at 
ou o crontab, sendo o mais “expert” dos 2 o crontab. 
 
17.1 – Diretórios importantes 
 
 /var/spool/cron/crontabs : diretório de agendamentos de usuários que foram produzidos com o 
crontab. 
 
 /var/spool/cron/atjobs : diretório de agendamentos de usuários que foram produzidos com o at. 
 
 /etc/cron.hourly : diretório de scripts que serão executados de hora em hora podem ser 
armazenados. 
 
/etc/cron.daily : diretório onde scripts que serão executados diariamente podem ser armazenados. 
 
 /etc/cron.weekly : diretório onde scripts que serão executados semanalmente podem ser 
armazenados. 
 
 /etc/cron.mounthly : diretório onde scripts que serão executados mensalmente podem ser 
armazenados. 
 
 Os scripts contidos nos diretórios acima são executados pelo comando run-parts, que tem a função de 
executar scripts de diretórios em demanda. O agendamento da execução deste comando nos diretórios está 
dentro do arquivo /etc/crontab, como no exemplo abaixo: 
 
 
 
É importante que estes diretórios sejam lembrados em um backup de dados ou em uma migração de 
um servidor para outro, pois os agendamentos, em muitos casos, fazem parte da “vida funcional” de um 
sistema, uma vez que tarefas imprescindíveis podem já estar agendadas, como por exemplo, uma aplicação que 
faz cache de arquivos pesados e que são excluídos de 30 em 30 minutos para não estourar o espaço de uma 
determinada partição. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 122 
 
17.2 – Programas de agendamento 
 
 # at 
 
 Cria agendamento para executar uma única vez e depois ser excluído. 
 
 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 vão ser executados. 
 
 Sintaxe: 
 
 # at <opções> <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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 123 
 
Agenda tarefas de forma muito mais versátil e dinâmica. Com ele, a mesma tarefa pode se repetir 
várias vezes e é possível criar tarefas com intervalos de tempos diversos. Ele é nativo de todas as distribuições 
GNU/Linux. 
 
É importante ressaltar que nem o cron e nem o atd precisam ser reiniciados, basta editar os arquivos e 
pronto! 
 
Sintaxe: 
 
# crontab <opção> <usuário> <opção> 
 
Opções: 
 
-u : especifica o usuário. 
 
-l : lista agendamentos de usuários. 
 
-e : edita agendamentos do usuário. 
 
-r : remove todos os agendamentos de um usuário. 
 
Intervalos de agendamentos 
 
Os intervalos são peça 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 também x. 
 
Campos do arquivo de agendamentos 
 
A visão destes campos é horizontal, e é assim representada: 
 
<MINUTO> <HORA> <DIA/MÊS> <MÊS> <DIA/SEMANA> <COMANDO> 
 
Onde: 
 
Minuto vai de 0 a 59. 
Hora vai de 0 a 23. 
Dia do mês 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 padrão para a nossa edição de agendamentos seja o vim vamos trocá-lo, pois os 
recursos de sintaxe dele nos ajudarão a entender melhor os campos. 
 
# update-alternatives –config editor 
 
Exemplos: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 124 
 
Criando tarefa para o root executar o script de backup /backups/backup_lista.sh todo dia 15 do mês, às 
17 horas e 30 minutos: 
 
# crontab –u root –e 
 
 
Os campos do mês e do dia da semana ficaram com *, pois o agendamento vai mesmo ser executado 
todo dia da semana e todo mês. 
 
Criando um agendamento para o usuário user1, de 10 em 10 minutos, nos meses de abril a junho e 
também dezembro, toda 2ª e 4ª-feira, remover os arquivos .mp3 de seu diretório pessoal: 
 
# crontab –u user1 –e 
 
(não seria necessário que o root agendasse tarefas para o usuário, pois todos eles, por padrão, podem 
criar e administrar os seus agendamentos). 
 
 
Listando todos os agendamentos do usuário user1: 
 
# crontab –u user1 –l 
 
Removendo todos os agendamentos do usuário user1: 
 
# crontab –u user1 –r 
 
 
17.3 – Controle de acesso a agendamentos 
 
 É possível controlar o acesso de usuários ao crontab e ao at. 
 
 Os arquivos que o administrador pode criar para fazer este tipo de controle são: 
 
 /etc/at.deny : lista de negação de acesso dos usuários que estão nesta lista ao programa at. 
 
 /etc/at.allow : lista de únicos usuários que podem acessar agendamentos próprios no at. 
 
 /etc/cron.deny : lista de negação de acesso de usuários ao programa crontab. 
 
 /etc/cron.allow : lista de únicos usuários que podem acessar os agendamentos próprios no crontab. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 125 
 
Basta incluir o nome dos usuários (um em cada linha) e salvar o arquivo criado para que possa passar a 
valer o bloqueio/aceitação de acesso dos usuários. 
 
Nenhum dos agendamentos já criados pelo usuário é afetado por este bloqueio, eles persistem. 
 
Exemplo: 
 
Criando lista de negação de acesso a agendamentos dos usuários user1, operador e cpd: 
 
# vim /etc/cron.deny 
 
 
Tentando agendar tarefas com o usuário user1: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 126 
 
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 publicação de sites de diversos 
clientes e que um deles resolve hospedar vídeos a vontade e estoura a capacidade de espaço em disco em 3 
meses, parando o serviço de hospedagem até que o administrador, manualmente, remova os arquivos que 
estão excedendo o limite de blocos disponíveis do volume, causando constrangimento e desconfiança em seus 
usuários. 
 Este acontecimento catastrófico citado acima com certeza seria evitado com a configuração bem 
planejada de cotas de armazenamento para usuários e (ou) grupos, onde cada um teria seu limite de espaço ou 
quantidade de arquivos em disco, estando este limite bem longe dos limites reais de armazenamento do disco. 
 
 Alguns conceitos sobre cotas emLinux devem ser muito bem assimilados pelo administrador antes que 
ele pense em criar cotas: 
 
 Cotas em volumes 
 Não é possível criar cotas em diretórios de um sistema de arquivos qualquer. Elas só podem ser criadas 
em sistemas de arquivos. 
 
 Cotas para usuários 
 As cotas para usuários dizem respeito aos diretórios ou arquivos de propriedade deles em um volume, 
ou seja: se o usuário 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 usuários se aplica a grupos. Só que se, por exemplo, o usuário user1 tem 
limite de cota de 1GB livres para utilização, mas algum outro usuário do grupo criou uma imagem ISO de 2GB e 
estourou a cota de grupos para o volume, user1 fica sem ter permissão de escrita no volume do mesmo jeito, 
por esse motivo é que toda cota deve ser bem planejada antes de criada. 
 
 Permissões 
 Nunca se pode esquecer que a permissão de execução e escrita em diretórios é essencial para que se 
possa garantir que os usuários possam ter acesso à gravação no volume. Não há motivo para se criar cotas de 
armazenamento para um volume montado como apenas leitura ou montado em algum diretório que não tenha 
permissão de gravação. 
 
18.1 – Limites de cotas 
 
 Limite Soft 
 É o primeiro limite a ser estabelecido para cota de usuários ou grupos. Quando o usuário chega a este 
limite, ele passa a ficar em grace time, que é o período de tolerância dado ao usuário ou grupo para que eles 
possam remover o conteúdo excedente e continuem tendo permissão de escrita no volume. Caso eles não o 
façam durante este período, terão a permissão de escrita negada no volume. 
 
 Limite Hard 
 Este é o último limite de cotas possível. Atingindo este nível, o usuário vai ter a permissão de escrita no 
volume negada automaticamente. Se o limite Soft for igual ao limite Hard, o primeiro vale como último nível de 
cotas no volume. 
 
18.2 – Aplicação 
 
 Primeiramente, é importante instalar os pacotes necessários para administração de cotas: 
 
 # apt-get install quota quotatool –y 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 127 
 
 Levando em consideração que já existe um sistema de arquivos ext3 criado e montado em /home, o 
próximo passo é ativar o uso de cotas para usuário e grupos neste volume. Isso é possível adicionando as 
opções usrquota e grpquota (separadas por vírgula) no campo de opções de montagem do volume em 
/etc/fstab: 
 
 # vim /etc/fstab 
 
 
 A habilitação de sistemas de cotas para usuários e grupos vai implicar na criação de 2 arquivos, que vão 
funcionar como bancos de dados de cotas (aquota.user e aquota.group) na raiz do sistema de arquivos com 
cota. Estes arquivos não podem ser apagados nem pelo usuário root. 
 
 É ideal, para pleno funcionamento do sistema de cotas, que o sistema seja reiniciado após a 
configuração do arquivo /etc/fstab. 
 
 Após este passo ter sido dado, o próximo é editar as cotas: 
 
 # edquota 
 
 Edita cotas em volumes para usuários ou grupos. 
 
 Sintaxe: 
 
 # edquota <opção> 
 
 Opções: 
 
 -u : edita cotas de usuários. 
 
 -g : edita cotas de grupos. 
 
 -T : edita o “grace time” individual de usuário ou grupo. 
 
 -p : replica as cotas de um usuário 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 usuário 
user1 no volume /dev/sdb1: 
 
# edquota –u user1 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 128 
 
 
 
 
 
 Replicando as cotas de user1 para user2, user3 e user4: 
 
 # edquota –p user1 user{2..4} 
 
 Editando o “grace time” do usuário user2: 
 
 # edquota –T user2 
 
 # repquota 
 
 Emite relatório de cotas de usuários ou grupos. 
 
 Sintaxe: 
 
 # repquota <opção> <volume> 
 
 Opções: 
 -a : lista cotas de todos os volumes. 
 
 -u : se refere a cotas de usuários. 
 
 -g ; se refere a cotas de grupos. 
 
 -v : modo verbose. 
 
 Exemplos: 
 
Emitindo relatório de cotas de todos os volumes e usuários: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 129 
 
 
 
 
 
 Deste relatório pode-se chegar à conclusão de que o usuário user1, por ter criado 155 arquivos, 
ultrapassou a sua cota soft de inodes, o que o deixa em período “grace” de 7 dias (padrão), porém, sua cota de 
blocos continua praticamente inalterada, pois 150 dos 155 arquivos são vazios, ou seja: não ocupam blocos mas 
ocupam inodes. 
 
 # quotacheck 
 
 Verifica existência sistemas de arquivos com cotas habilitadas e aplica configurações de cotas já 
definidas. 
 
 Sintaxe: 
 
 # quotacheck <opções> <volume> 
 
 Opções: 
 
 -a : aplica a todos os volumes montados (verifica /etc/mtab) 
 
 -f : força a aplicação de novas cotas criadas. 
 
 -m : não tenta remontar sistemas de arquivos como “read only”. 
 
 -u : aplica cotas a usuários. 
 
 -g : aplica cotas a grupos. 
 
 -v : verbose. 
 
 Exemplo: 
 
 Aplicando cotas a todos os sistemas de arquivos com suporte a cotas para usuários: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 130 
 
 # quotacheck –aufmv 
 
 # quotaon 
 
 Ativa cotas em um volume específico. 
 
 Sintaxe: 
 
 # quotaon <opção> <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 <opção> <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 usuário comum pode executar. Ele emite um resumo da situação de 
cotas do usuário. 
 
 Sintaxe: 
 
 $ quota <opções> <usuário/grupo> 
 
 Opções: 
 
 -u : emite relatório de cotas de usuário. 
 
 -g : emite relatório de cotas de grupo. 
 
 -s : modo mais legível (mais humano). 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 131 
 
 Exemplo: 
 
 Verificando a situação das cotas do usuário user1 no modo mais legível possível: 
 
 # quota –us user1 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 132 
 
19 – GERENCIAMENTO DE PROCESSOS E INICIALIZAÇÃO 
 
 O administrador precisa ter muito conhecimento sobre este assunto antes de chegar a gerenciar algum 
servidor Linux. O usuário root tem poderes ilimitados sobre o sistema e, por isso mesmo, ele tanto pode 
executar uma operação de término de um processo de forma a não danificar os arquivos envolvidos no mesmo 
como pode também o interromper de forma brusca e danificar um arquivo importante nesta ação apenas pelo 
fato de não ter escolhido o sinal certo a envia para o processo. Pode o administrador também escolhe mal a 
prioridade de execução de um processo pesado e paralisar todo o sistema por causa disso. Justamente por esse 
fato, é que é preciso dominar os conceitos e comandos que vão ser ministrados neste capítulo. 
 
 PID 
 É o “Process ID”, o número de identificação que cada processo recebe. O único PID fixo existente é o 
PID do processo INIT, que é o de nº 1. 
 
 NICE NUMBERS 
 É o número de prioridade de execução de um processo. Se um processo é executado com maior 
prioridade, ele usa os melhores recursos de processamento para sua execução, enquanto se for prioridade 
baixa, ele depende que outros processo não estejam utilizando estes recursos para que ele também possa fazer 
uso. OS NICE NUMBERS vão de -20 até 19, sendo a maior a prioridade negativa. 
 
 SINAIS DE PROCESSOS 
 Para saber o que se pode fazer comcada processo que está em execução é preciso entender os sinais 
de processos. 
 
 Os mais importantes são: 
 
 1 - HUP ou SIGHUP : instrui o serviço a reler o seu arquivo de configuração (operação 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 usuário 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, não causando 
nenhum tipo de dano a eles. Este é o sinal padrão da maioria dos comandos e programas que terminam 
processos justamente pela sua “elegância”. 
 
 18 – CONT ou SIGCONT : continua processos que foram parados pelo sinal 20, enviando-os para 
background. 
 
 20 – TSTP ou SIGTSTP : pára processos de forma que eles possam ser reiniciados depois pelo sinal 18. É 
o mesmo que a combinação 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 manutenção do sistema, pois apenas uma instância de 
logon e terminal serão permitidos. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 133 
 
 2 – é o Runlevel padrão do sistema. Este é o nível multi-user, onde múltiplos logons podem ser 
efetuados e todos os terminais podem ser utilizados. 
 
 3 – o mesmo que o Runlevel 2. 
 
 4 – em desuso. 
 
 5 – “GUI”. Interface gráfica. 
 
 6 – sistema em reinicialização. 
 
19.1 – Comandos de gerenciamento de processos 
 
 # ps 
 
 Exibe os processos do sistema. 
 
 Sintaxe: 
 
 # ps <opções> 
 
 Opções: 
 
 -a : mostra processos de todos os terminais. 
 
 -x : mostra processos que não precisam de terminal de controle. 
 
 -u : exibe o nome do usuário responsável pelo processo ao lado do mesmo. 
 
 -U : exibe apenas processos de um usuário específico. 
 
 -f : modo “floresta”. Exibe “processos pai” e “processos filho”. 
 
 -w : exibe na linha de baixo o conteúdo que não coube na linha de cima. 
 
 Exemplos: 
 
 Exibindo os processos de todos os terminais, incluindo aqueles que não usam terminal, com o nome de 
cada usuário responsável pelo processo: 
 
 # ps –aux 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 134 
 
Os campos mais importantes desta saída de comando são: 
 
 %CPU – percentual de CPU consumido com o processo. 
 
 %MEM – percentual de memória consumida no processo. 
 
 STAT – Status do processo. 
 R : em execução. 
 S : aguardando outro evento para continuação. 
 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 : líder de sessão. 
 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 padrão 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 135 
 
 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 136 
 
 Como pudemos perceber acima, o comando kill não serve apenas para ‘matar’ processos, como o 
próprio nome sugere. Ele é um gerenciador de processos que envia o sinal necessário para eles via linha de 
comando. Outro detalhe importante é que o sinal padrão do comando kill é 15, pois é o sinal mais aconselhável 
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 próximo comando também gerencia processos, só que pelo nome, ao invés de pelo PID. 
 
 # killall 
 
 Gerencia processos pelos nomes deles. 
 
 Sintaxe: 
 
 # killall -<sinal> <nome_do_processo> 
 
 Exemplos: 
 
 Listando os nomes de todos os sinais disponíveis: 
 
 # 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 execução. 
 
 Sintaxe: 
 
 # killall5 
 
 Ou 
 
 # killall5 –o <PID> (para fazer um PID ser omitido). 
 
 # fuser 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 137 
 
 Fecha processos e seus arquivos. 
 
 Sintaxe: 
 
 # fuser <opções> <arquivo> 
 
 Opções: 
 
 -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 várias 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 verificação 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 estão em background no terminal atual. 
 
 # nohup 
 
Executa processos em background, tornando-os insensíveis a logout da sessão de usuário. A saída do 
comando será enviada para o arquivo nohup.out. 
 
Sintaxe: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 138 
 
# 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 específica. 
 
 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 diretório /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, não tem nada a ver com o Nice 
Number a ser aplicado. 
 
 Devemos sempre lembrar também 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 execução. 
 
 Sintaxe: 
 
 # renice <Nice Number> <PID> 
 
 Exemplos: 
 
 Mudando a prioridade do processo de PID 1811 para -16: 
 
 # renice -161811 
 
 Mudando para 4 a prioridade do processo de PID 1902: 
 
 # renice 4 1902 
 
 Mudando a prioridade de todos os processos do usuário operador para -17: 
 
 # renice -17 –u operador 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 139 
 
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 (serviços/sevidores) referentes ao Runlevel escolhido para boot 
que são executados na inicialização, como por exemplo, serviço de rede e servidor Web. Para executar estes 
serviços, o processo INIT usa os diretórios abaixo: 
 
 /etc/init.d – é o diretório que contém os scripts que gerenciam os daemons do processo INIT no 
Debian (e distribuições afins). Para que estes scripts sejam executados no boot, é preciso que eles tenham link 
simbólico para os diretórios abaixo: 
 
 /etc/rc0.d – diretório de links simbólicos para scripts de Runlevel 0. 
 
 /etc/rc1.d – diretório de links simbólicos para scripts de Runlevel 1. 
 
 /etc/rc2.d – diretório de links simbólicos para scripts de Runlevel 2 (este é o Runlevel padrão dos 
sistemas GNU/Linux em geral). 
 
 /etc/rc3.d – diretório de links simbólicos para scripts de Runlevel 3. 
 
 /etc/rc5.d – diretório de links simbólicos para scripts de Runlevel 5. 
 
 /etc/rc6.d – diretório de links simbólicos para scripts de Runlevel 6. 
 
 Em Red Hat o padrão muda um pouco, na verdade, o que passa a acontecer é que os diretórios “rc” e o 
“init.d” ficam como subdiretório do diretório /etc/rc.d. 
 
Exemplos: 
 
 /etc/rc.d/rc2.d – diretório de links simbólicos de scripts de Runlevel 2. 
 
 /etc/rc.d/init.d – diretórios dos scripts de gerenciamento dos daemons. 
 
 Obs: é importante ressaltar que existe no Red Hat o link simbólico /etc/init.d, que aponta para o 
diretório /etc/rc.d/init.d. 
 
 O gerenciamento desses daemons é feito com os comandos abaixo: 
 
 No Debian: 
 
 # /etc/init.d/<serviço> <ação> 
 
 Ou 
 
 # invoke-rc.d <serviço> <ação> 
 
 No Red Hat: 
 
 # /etc/rc.d/init.d/<serviço> <ação> 
 
 Ou 
 
 # service <serviço> <ação> 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 140 
 
 Ações: 
 
 start: inicia um daemon. 
 restart: reinicia um daemon. 
 reload : apenas relê o arquivo de configuração do daemon. 
 force-reload : força esta releitura do arquivo de configuração. 
 
 Exemplos: 
 
 Reiniciando o serviço de rede no Debian: 
 
 # /etc/init.d/networking restart 
 
 Ou 
 
 # invoke-rc.d networking restart 
 
 Relendo o arquivo de configuração do samba para aplicar as alterações 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 diretório “init.d” para o “rc” correspondente quanto 
com o uso dos comandos abaixo: 
 
 # update-rc.d 
 
 Cria ou remove uma execução de script em um Runlevel específico. Ele cria os links simbólicos 
necessários 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 forçadamente os links do daemon rsync de todos os diretórios “rc”: 
 
 # update-rc.d –f rsync remove 
 
 # chkconfig 
 
 Faz o mesmo que o comando update-rc.d, porém este não é padrão da distro Debian e sim do Red Hat: 
 
 Sintaxe: 
 
 # chkconfig <opção> <daemon> <runlevels> <on/off> 
 
 Opções: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 141 
 
 --list : lista em quais Runlevels o daemon vai ser executado. 
 --level : especifica o Runlevel. 
 on : ativa execução do daemon em um Runlevel. 
 off: desativa execução 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 142 
 
 
 
 
O Runlevel padrão de um sistema pode ser modificado em um arquivo chamado /etc/inittab. É preciso 
tocar cuidado ao fazê-lo, pois sistema tiver como Runlevel padrão o Runlevel 6, por exemplo, ele ficará em um 
constante loop de reinicialização, que só poderá ser resolvido com o início forçado do sistema em outro 
Runlevel, processo que só poderia ser feito no arquivo de configuração do boot loader. 
 
A estrutura deste arquivo é constiuída da seguinte forma: 
 
<ID>:<RUNLEVELS>:<AÇÃO>:<COMANDOS> 
 
As ações mais importantes são: 
 
Initdefault : define qual vai ser o runlevel padrão do sistema. 
 
sysinit : define qual é o script principal de inicialização 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 responsável pela execução dos links simbólicos que apontam para o 
diretório /etc/init.d ou /etc/rc.d/init (Red Hat). 
 
wait : define que um programa inicia ou termina sempre após o de ordem anterior ser executado. 
 
respawn : indica que quando terminar a execução de um processo, o mesmo será iniciado novamente. 
 
ctrlaltdel : define a qual comando a combinação de teclas CTRL+ALT+DEL irá corresponder. 
 
 # runlevel 
 
 Exibe o Runlevel atual do sistema. 
 
 # init 
 
 Troca o Runlevel do sistema. 
 
Sintaxe: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 143 
 
# init <runlevel> 
 
Exemplo: 
 
Mudando o Runlevel atual para 1: 
 
# init 1 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 144 
 
20 – KERNEL 
 
Como visto de maneira resumida na introdução deste material, o Kernel é o responsável por suportar e 
interagir com os recursos lógicos e físicos que podem ser oferecidos pelo sistema. Uma placa de rede Wireless 
só funciona se o Kernel der suporte a ela, assim como também o protocolo ipv6 só funciona se o Kernel o 
suportar. Para saber das modificações que estão sendo feitas no código-fonte do Kernel, basta observar a seção 
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 são: 
 
Kernel Monolítico 
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 inicialização do sistema um pouco mais demorada. 
 
Kernel Modular 
Neste caso em específico, uma grande quantidade de recursos fica em módulos, que são instalados a 
parte e não precisam serem carregados juntos com o sistema. Neste caso, há mais facilidade em gerenciar 
recursos, uma vez que, se não quiser um recurso, basta adicioná-lo a uma “blacklist” de módulos. 
É importante destacar também que nem todos os recursos podem ser colocados em módulos, alguns 
têm que ser “built-in” mesmo, por exigência do Kernel, sendo assim, nenhum Kernel é totalmente modular. 
 
 Versões do Kernel 
 A sintaxe de versão do Kernel é: 
 
 <versão maior>. <versão menor> .<correção/patch/atualização>.<verso extra> 
 
 Antes do Kernel 2.4 ser lançado, as versões aumentavam de forma que uma versão menor que fosse 
ímpar representava um Kernel instável ainda, enquanto uma versão menor que fosse par significavaem Kernel 
estável. Hoje isso não é mais uma realidade, uma vez que Linus Torvalds decidiu que as alterações seriam feitas 
no terceiro campo. A versão menor só será alterada se for uma mudança muito brusca na estrutura do Kernel. 
 
 Exemplo: 
 
 Uma versão recompilada para dar suporte a Paravirtualização, no Kernel 2.6.35, teria a nomenclatura: 
 2.6.35-Virt 
 
20.1 – Compilação de Kernel 
 
 A possibilidade de download, reconfiguração e reinstalação 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 são muito simples de se explicar: obter melhor desempenho de recursos de hardware do 
sistema, como processador, memória RAM, placas de vídeo e rede, por exemplo; ter que habilitar suporte a 
recursos adicionais, como paravirtualização e PAE (para sistemas de 32 bits poderem reconhecer memórias 
RAM de mais de 4GB); personalizar uma distro para que ela possa ter um fim específico, como uma distro 
exclusiva para Firewall, como o SmothWall, por exemplo, que tem suporte a muitos adaptadores de rede mas 
não suporta placas aceleradoras gráficas funcionando em modo pleno, já que o Kernel desta distro está 
compilad para ser um Firewall e não uma estação de jogos, ou de edição gráfica. 
 
 O procedimento para a sua recompilação consiste em algumas etapas: 
 
 Configuração 
 Nesta etapa ocorre a escolha de quais recursos serão 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 145 
 
opções de configuração do Kernel são muitas e escolher a opção errada pode custar o não reconhecimento de 
alguns recursos desejados. 
 
 Compilação 
 A compilação de um software qualquer consiste em converter os códigos-fonte dele para arquivos 
binários (linguagem de máquina). Numa compilação de Kernel não é diferente, uma vez que existe a 
necessidade de os módulos e recursos “Built-in” interagirem com os hardwares de sistema. 
 
 Instalação 
 O conceito de instalação é a cópia de binários do um programa para um diretório de instalação. 
 
 Procedimentos para compilação de instalação de um novo Kernel 
 
 Para este procedimento, vamos utilizar a versão 2.6.35.4 do Kernel obtida em www.kernel.org. 
 
 Descompactar o diretório de código-fonte do Kernel em /usr/src: 
 
 # tar –xjf linux-2.6.35.4.tar.bz2 –C /usr/src 
 
 Criar um link simbólico do diretório de compilação (apenas para facilitar o procedimento): 
 
 # ln –s /usr/src/linux-2.6.35.4 /usr/src/Linux 
 
 Instalar programas necessários, entrar no diretório do código-fonte e começar a configuração do 
Kernel: 
 
 # apt-get install libncurses5-dev gcc build-essential make –y 
 
 # cd /usr/src/linux 
 
 # make menuconfig 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 146 
 
 
 
Os métodos de configuração de Kernel são os seguintes: 
 
 # make config : método de configuração em modo texto. Não tem menu nenhum e confirma opção 
por opção, exigindo que o usuário diga obrigatoriamente a qual recurso ele não quer dar suporte. 
 
 # make menuconfig : esta opção conta com um menu para terminal que dinamiza muito mais a 
escolha das opções, uma vez que o administrador só precisa configurar os recursos que ele quer. 
 
 # make oldconfig : restaura a configuração de um arquivo .config já pronto. 
 
 # make xconfig : configuração através de interface gráfica do servidor X. 
 
 É importante, antes de fazer a configuração do Kernel, definir qual vai ser a versão 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 147 
 
 
 
 
Depois de configurada a versão do Kernel, vamos partir para a configuração do mesmo. A figura abaixo 
é de uma configuração feita com o comando # make menuconfig. Após a conclusão deste passo, Serpa gerado 
um arquivo chamado .config, que irá conter as escolhas feitas na configuração realizada com o comando em 
questão. 
 Os recursos que podem ser adicionados como “Built-in” ou como “Modulares” estão com < >, 
enquanto aqueles que só podem ser implementados em Built-in estão com [ ]. 
 
 Resolvendo dependências antes de começar a compilação: 
 
 # make dep 
 
 No caso abaixo, todas as dependências estão satisfeitas, tornando assim o uso de make dep 
desnecessário. 
 
 
Removendo arquivos de compilações anteriores: 
 
 # make clean 
 
 Criando a imagem de boot do Kernel no diretório arch/<arquitetura_do_kernel>/boot: 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 148 
 
 # make bzImage 
 
 
 É importante lembrar que até este momento nenhuma ação foi tomada em relação aos módulos, já 
que a imagem de boot é totalmente independente dos módulos 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 
também pode ser carregada em memória estendida, enquanto # make zImage usa o agente COMPRESS e só 
pode compactar imagens pequenas de Kernel (até 500KB). É justamente por causa desta diferença que em 
grande maioria das compilações é escolhido o método # make bzImage. 
 
 Compilando os módulos: 
 
 # make modules 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 149 
 
Instalando os módulos em /lib/modules/<versão do kernel>: 
 
 # make modules_install 
 
 Criando uma imagem INITRD dos módulos instalados: 
 
 # cd /lib/modules 
 
 # mkinitramfs -o /boot/initrd.img-2.6.35-VIRTUAL 2.6.35-VIRTUAL 
 
 Os módulos instalados não são carregados durante o boot, a não 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 diretório de boot: 
 
 # cp -p arch/<arquitetura do kernel>/boot/bzImage /boot/vmlinuz-2.6.35-VIRTUAL 
 
 Para manter o padrão 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 informações sobre o Kernel em execução. 
 
 Opções: 
 -a : exibe todas as informações sobre o Kernel instalado. 
 -n : exibe o hostname. 
 -r : exibe a versão 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 módulos que foram carregados 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 150 
 
 
 
# modinfo 
 
 Exibe informações detalhadas sobre um módulo específico, como informações sobre autoria, versão, 
arquitetura, dependências, etc. 
 
 Sintaxe: 
 
 # modinfo <módulo> 
 
 Exemplo: 
 
 Obtendo informações sobre o módulo iptable_nat: 
 
 # modinfo iptable_nat 
 
 # depmod 
 
 Atualiza o aquivo de dependências de módulos em /lib/modules/<versão>/modules.dep com novos 
módulos instalados. 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 151 
 
 
 
 
# modprobe 
 
 Insere os módulos e suas depoendências no Kernel em execução. Também tem opções de consulta e 
exclusão de módulos. 
 
 Sintaxe: 
 
 # modprobe<opções> <módulo> 
 
 Opções: 
 
 -l : lista localização dos módulos. 
 -t : indica o tipo dos módulos (seção de módulos). 
 
 Seções: 
 
 arch : módulos de arquitetura do Kernel. 
 crypto : módulos de criptografia. 
 drivers: módulos de drivers de dispositivos de hardware. 
 net: módulos de dispositivos de rede. 
 sound: módulos de recursos de som. 
 fs : módulos de filesystems. 
 lib : módulos de bibliotecas. 
 
 
 
 -r : remove um módulo. 
 
 Exemplos: 
 
 Inserindo o módulo tun no Kernel: 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 152 
 
 # modprobe tun 
 
 Removendo o módulo tun do Kernel: 
 
 # modprobe -r tun 
 
 Mostrando a localização do arquivo de módulo do módulo ip_conntrack: 
 
 # modprobe -l ip_conntrack 
 
 Mostrando os 10 primeiros arquivos de módulos da seção de drivers de dispositivos de rede: 
 
 # modprobe -l -t net | head -10 
 
 
 
 # insmod 
 
 Isere um módulo no Kernel em execução, mas não resolve dependências de módulos. 
 
 Sintaxe: 
 
 # insmod <módulo> 
 
 # rmmod 
 
 Remove módulos de um Kernel em execução. 
 
 Sintaxe: 
 
 # rmmod <opção> <módulo> 
 
 Opções: 
 
 -a : remove todos os módulos que não estão sendo usados. 
 -f : força a remoção do módulo. 
 -v : verbose. 
 
20.3 - Comandos de Hardware 
 
 # lspci 
 
 Mostra os dispositivos de hardware que utilizam o barramento PCI. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 153 
 
 
 
 
 # lsusb 
 
 Mostra todos os dispositivos conectados à porta USB. 
 
 
 
 # lshw 
 
Este programa exibe toda a configuração de Hardware do sistema. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 154 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 155 
 
21 – GERENCIADORES DE BOOT 
 
 Os carregadores de boot são peça fundamental em uma configuração de sevidor Linux, visto que são 
eles que cuidam de tornar a imagem do Kernel inicializável e dizer qual a partição será usada como sistema raiz. 
Os dois gerenciadores de boot padrões do Linux são o GRUB e o LILO, o primeiro é amplamente utilizado pelos 
sistemas operacionais e o segundo está subutilizado pela maioria das distribuições (está disponível na maioria 
dos repositóriosmas não é o padrão). Uma das únicas exceções é 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 partição ou no MBR (Master Boot Recording)? 
 
 Os primeiros 512 bytes do HD são destinados a um setor específico 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 serão 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 partição, e não no disco, lembrando que essa não é uma prática comum em 
servidores, pois não há razão para “dual boot” em servidor, já que ele foi concebido para prover alta 
disponibilidade de serviço. 
 
21.1 – LILO (Linux Loader) 
 
 Gerenciador de boot mais antigo do Linux, o LILO está em crescente desuso entre as distribuições em 
geral, salvo algumas exceções, como o Slackware, por exemplo. 
 
 
 
 
 Por não ser o boot loader padrão do Debian, o LILO precisa ser instalado no mesmo: 
 
 # apt-get install lilo –y 
 
 O arquivo de configuração 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 156 
 
 # liloconfig 
 
 
 Neste exemplo acima, o LILO está sendo instalado no MBR (HD /dev/sda). Este comando apenas cria o 
aquivo de configuração, mas não 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 segurança é que ele depende de instalação manual toda vez 
que é modificado, evitando assim que alguns acidentes, como edição errada do arquivo, por exemplo, possam 
causar o constrangimento de o sistema ficar sem inicialização. 
 
 O arquivo de configuração do LILO (/etc/lilo.conf) é divido em duas seções: global e image. A primeira 
vai tratar de assuntos genéricos do boot loader, enquanto a segunda vai tratar de questões relacionadas às 
opções de boot pela imagem do Kernel. 
 
 Opções da seção global do arquivo: 
 
 boot : configura o disco ou partição onde vai ser instalado o LILO. 
 
 delay : tempo de espera por opção do usuário até que seja escolhida a primera imagem de boot. 
 
 timeout : tecnicamente, faz a mesma coisa que a opção acima. Detalhe: a unidade de medida dos dois 
é o décimo de segundo, portanto, configurar timeout=100 significa esperar 10 segundos até que o usuário 
decida por qual imagem ele vai inicializar, não ocorrendo isso, ele inicia com a primeira. 
 
 prompt : para que o prompt boot: seja exibido, é preciso que seja utilizada esta opção. 
 
 install : tipo de interface do menu do LILO. As opções podem ser: 
 text : boot em modo texto simples. 
 menu : menu básico. 
 bmp : imagem bitmap. 
 
 password : define uma senha de boot para o LILO. 
 
 vga : resolução de vídeo do terminal, elas são representadas por códigos. Os mais importantes são: 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 157 
 
 normal : 640x480 
 788 : 800x600 
 791 : 1024x768 
 794 : 1280x1024 
 
 map : especifica o caminho do mapa de dispositivos. 
 
 Opções da seção image do arquivo: 
 
 label : especifica um rótulo para a opção de boot. 
 initrd : aponta para o caminho da imagem dos módulos que serão carregados no boot após a imagem 
do Kernel ser descompactada. 
 read-only : configura descompactação do Kernel no boot como apenas leitura. 
 read-write : configura descompactação do Kernel no boot como leitura e gravação. 
 other : aponta para outro sistema operacional como uma das opções 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 partições do sistema operacional estrangeiro. 
 
 Toda vez que alguma mudança for feita em /etc/lilo.conf, o LILO deve ser reinstalado e o sistema deve 
ser reiniciado: 
 
 # lilo 
 # shutdown –r now 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 158 
 
 
 
 
 
21.2 – GRUB (Gran Unified Boot Loader) 
 
 O GRUB é o boot loader usado pela maioria das distribuições para desktops e servers justamente pelo 
fato de ele ser um gerenciador dinâmico (não precisa ser reinstalado após cada mudança em seu arquivo de 
configuração) e cheio de recursos, como boot por diversos sistemas operacionais e filesystems diferentes, por 
discos de qualquer tipo (inclusive ISCSI), por múltiplas imagens, por ter um menu que disponibiliza o modo de 
comando (para emergências) e a possibilidade de criptografação de senha se boot. 
 
 O grub também pode ser instalado no MBR ou na partição pelo comando grub-install. 
 
 Exemplo: 
 
 Instalando o GRUB no disco /dev/sdc: 
 
 # grub-install /dev/sdc 
 
 Os arquivos dos quais o GRUB precisa estão em /boot (imagem do Kernel, initrd, mapas de dispositivos, 
etc), portanto,em cada alteração de conteúdo deste diretório, como em uma instalação de um novo Kernel, 
não é necessário editar seu arquivo de configuração em /boot/grub/menu.lst, basta executar o comando 
update-grub. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 159 
 
 
 
 
O arquivo de configuração do GRUB tem, em tese, opções parecidas com as do arquivo de 
configuração do LILO, o que difere bastante é a sintaxe dessas opções. Os campos mais importantes desse 
arquivo são: 
 
 default : configura qual vai ser a imagem de boot padrão. Geralmente este número é 1. 
 
 timeout : configura o tempo de espera (em segundos) por uma escolha de boot por parte do usuário. 
Se esta escolha não 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 edição pelo menu do 
GRUB. Esta é uma ótima prática de segurança, principalmente se o acesso físico ao servidor por múltiplos 
usuários é inevitável. 
 
 hiddenmenu : esta opção esconde o menu do GRUB até que o usuário presione <ESC>, dentro do 
limite de tempo (timeout). Caso isto não seja feito, o boot será feito com a imagem escolhida na opção default. 
 
 root : especifica por qual partição será o sistema raiz do sistema. 
 
 makeactive : aplicar o flag inicializável à partição. 
 
 chainloader : entrega a responsabilidade de iniciar um outro sistema operacional ao seu boot loader 
instalado. Esta opção é muito utilizada em dual-boots Linux/Windows. 
 
kernel : configurações de boot pela imagem do Kernel. Nesta seção, é configurada a resolução de 
vídeo, seguindo o padrão vga=<código>, sendo os mesmos códigos que são utilizados no LILO. Também, 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). Também podem ser passados alguns parâmetros especiais, como o boot forçado 
por um runlevel específico e a inicialização direta pelo Shell BASH, para caso de ter que “pular” o processo INIT 
e fazer login como root (sem senha alguma). 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 160 
 
title : especifica um rótulo para a opção de boot. 
 
initrd ; aponta o caminho da imagem INITRD que vai carregar os módulos na inicialização do sistema. 
 Outro detalhe a ser observado é a declaração de nomenclarura de discos e partições no GRUB é bem 
particular, tornando-se uma preocupação para quem não domina o assunto e é obrigado a configurá-lo. Esta 
nomenclatura segue a seguinte sintaxe, com a contagem de discos começando 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 parâmetros no menu do GRUB deve ser controlada ao 
máximo para que não aconteçam desastres, como um usuário comum com acesso físico ao servidor conseguir 
entrar no sistema direto pelo Shell Bash e não precisar de senha de root para acesso ao terminal. Uma grande 
estratégia de proteção contra esta ameaça de segurança é criar uma senha para passagens de parâmetros no 
boot do GRUB. Para isso, vamos criar uma senha primeiro e redirecionar a sua criotografia para o arquivo se 
configuração 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 opção de boot se seguinte forma: 
 
 Lock 
 
 passwd --md5 <chave criptografada> 
 
 Se, após o sistema reiniciado o usuário quiser editar o menu do GRUB, esta senha criptografada será 
pedida a ele para que o procedimento possa ser realizado. 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 161 
 
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 distribuições GNU/Linux. As melhorias em relação ao GRUB incluem: 
 - apoio de scripts; 
 - módulo de carregamento dinâmico; 
 - modo de recuperação; 
 - 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 inicialização, sendo exibido ao usuário na forma de menu do GRUB. 
 
O Grub2 desmembra em uma nova hierarquia de arquivos e diretórios: 
 
 /boot/grub/grub.cfg – Este é o principal arquivo de configuração que substitui o menu.lst, e o mesmo 
não pode ser editado diretamente. 
 
 Por padrão, sempre que o comando update-grub é executado, este arquivo é refeito como “somente 
leitura”. Isto porque a intenção é que o arquivo não seja editado manualmente. O usuário também verá uma 
infinidade de arquivos *. mod na pasta /boot/grub. Esses arquivos são de natureza modular do GRUB 2 e são 
carregados pelo mesmo durante a inicialização. 
 
 
 
 /etc/grub.d/ – Este novo diretório contém os scripts do GRUB. Esses scripts são blocos de construção a 
partir do qual o arquivo grub.cfg é construído. Arquivos com numeral no início são executados primeiro 
começando 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 recém-criado. 
 
 /etc/default/grub – Este arquivo contém as configurações do menu do GRUB que são lidos pelos scripts 
do GRUB e escritos em grub.cfg. É a famosa parte de “personalização” do GRUB. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 162 
 
22 – COMPILAÇÃO DE PACOTES E BIBLIOTECAS 
 
 A instalação de alguns pacotes pode ser feita também através de seu código-fonte disponibilizado em 
alguma mídia de download. Este código-fonte geralmente vem compactado no formato .tar.gz (ou .tgz, que dá 
no mesmo) ou em formato .tar.bz2 e é modo mais open-source possível de instalação de pacote, visto que o 
código-fonte é a própria linguagem utilizada para a construção dos programas que integram o pacote a ser 
instalado. 
 
 Compilação 
 
 O computador trabalha com interpretação de linguagem binária (“zeros” e “uns”) mas os programas 
são construídos em linguagens mais compreensíveis para seres humanos: as linguagens de programação (C, C#, 
C++, Java, Shell Script, etc). Por este motivo é que, depois antes de ser instalado, um programa tem que ser 
compilado para linguagem binária, 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 diretórios que são destinos de instalação). 
 
 Para que um pacote possa ser comipilado, é necessário um compilador de código fonte, portanto, deve 
ser a primeira atitude a ser tomada pelo administrador instalar todos os softwares necessários para este 
procedimento: 
 
 # apt-get install make gcc libncurses5 –y 
 
 Tendo em mãos o arquivo de pacote, o próximo passo é descompactá-lo, levando em consideração 
que o nome do arquivo é aalib-1.4rc5.tar.gz : 
 
 # tar -xzvf aalib-1.4rc5.tar.gz 
 
 
 
 Todos os outros passos têm que ser executados de dentro do diretório do código-fonte, dentro dele 
estará o arquivo Makefile assim que ele for criado por um script quase que genérico para todas as compilações 
de pacotes, o configure, que também fica dentro do diretório do código-fonte: 
 
 Executando o script configure: 
 
 # ./configure 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA163 
 
 
 
 
 O arquivo Makefile possui alguns campos que devem ser observados primordialmente: 
 
 prefix : é o local para onde vão ser copiados os arquivos todos os arquivos de instalação. A maioria dos 
pacotes “tgz” utilizam /usr/local mas este diretório pode ser outro, se o administrador modificar este campo ou 
executar o script configura coma s opções: 
 
 # ./configure --prefix=<diretório> 
 
 bindir : indica qual será o diretório de arquivos binários comum a todos os usuários. 
 
 sbindir : indica qual será o diretório de arquivos binários de superusuários. 
 
 libdir : diretório de bibliotecas do pacote. 
 
 mandir : diretório de manuais do comando ‘man’. 
 
 infodir : diretório de manuais do comando ‘info’. 
 
 sysconfdir : diretório de arquivos de configuração do pacote. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 164 
 
 
 O próximo passo é a compilação do código-fonte: 
 
 # make 
 
 Agora, a instalação propriamente dita: 
 
 # make install 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 165 
 
 
 
 Após executada a instalação, o administrador deve se preocupar em saber se os comandos e 
bibliotecas relativas ao pacote estão no path do usuário. Em relação aos binários, é só observar o valor da 
variável PATH, se os diretórios de binários estiverem lá, o próximo passo será verificar se no path de bibliotecas 
está o diretório de biliotecas do pacote. O aquivo de configuração de paths de bibliotecas é o /etc/ld.so.conf, 
porém, o que ele faz é apenas um “include” para o diretório /etc/ld.so.conf.d/, onde estão os arquivos de 
configuração individuais de path com extensão. conf, sendo assim, todo arquivo com esta extensão dentro 
desse diretório será um arquivo de configuração de path de biblioteca, basta incluir em seu interior o caminho 
de path desejado. 
 
 # ldconfig 
 
 Este comando aplica as modificações feitas em todos os arquivos de configuração de paths. Ele grava 
estas mudanças em /etc/ld.so.cache, que é o aquivo que armazena estas informações de busca. 
 
 # ldd <programa> 
 
 Lista de quais bibliotecas compartilhadas pelo sistema um programa depende, geralmente estas 
bibliotecas estarão em /lib, pois este é o diretório de bibliotecas do sistema. 
 
 O resultado deste comando utilizado contra o binário /usr/local/bin/aafire é o da figura abaixo: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 166 
 
23 – SHELL SCRIPT 
 
 A linguagem de programação Shell é um kit de ferramentas versáteis e de grande utilidade para o 
administrador, pois esta linguagem utiliza como interpretador de comando o próprio Shell do sistema e, sendo 
assim, pode executar todos os comandos de um terminal do Linux ou do Unix e ainda mais as suas próprias 
estruturas de análises lógicas, seus comandos próprios, interfaces gráficas, etc. Estas características todas 
fazem de um programa de Shell uma parte integrante do próprio sistema em si, uma vez que diversas rotinas 
administrativas podem ser interfaceadas por ele, como backups, regras de firewall, criação e administração de 
usuários em demanda, etc. Enfim, o Shell Script é totalmente aplicável 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 são armazenados em memória e 
removidos dela no momento em que o usuário não está mais usando o terminal (logoff), por causa disto, para 
que haja persistência dos aliases, é preciso declará-los em algum arquivo de script de login de usuário, como foi 
visto em capítulo anterior. 
 
 A sintaxe de criação 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 também: 
 
 # <nome do alias> 
 
 Exemplos: 
 
 Criando e executando o alias backup para fazer backup de todo o diretório /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 padrão o modo interativo do comando rm quando ele for digitado: 
 
 # alias rm=’rm –i’ 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 167 
 
 Neste caso, quando o comando for executado com qualquer que seja a opção, será perguntado ao 
usuário se ele quer mesmo excluir o objeto. 
 
23.2 - Funções 
 
 Ao contrário dos aliases, as funções só conseguem armazenar comandos completos, ou seja: não 
aceitam argumentos na hora da execução. 
 
 As duas sintaxes possíveis para uma função são: 
 
 # function <nome> { comandos; }; 
 
 Ou 
 
 # <nome> () { comandos; }; 
 
 É preciso tomar muito cuidado com os espaços entre as chaves e os outros caracteres, pois se esta 
sintaxe não for mantida à risca, a função não funcionará. 
 
 Exemplos: 
 
 Criando e executando uma função 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 função, basta usar o comando unset: 
 
 # unset <função> 
 
 Para exibir todas as funções criadas: 
 
 # declare –f 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 168 
 
 
 
 
23.3 – Variáveis do Shell 
 
 O Shell do sistema trabalha o tempo inteiro lendo e gravando variáveis que vão ajudá-lo a interpretar 
melhor os comandos e as configurações existentes. Um exemplo sismples é a variável HOME do usuário, que é 
lida pela linha de comando cd ~ para que seja possível entender que ‘ ~ ‘ é o homedir do usuário em sessão, a 
cada vez que um usuário faz logon é criada esta variável com o caminho do diretório pessoal dele 
(independente de qual seja este usuário).Existem dois tipos de variáveis no Linux: 
 
 Variáveis Globais 
 
 São as variáveis que não dependem de sessão de usuário para existirem. Estas variáveis podem ser 
consultadas através do comando set. 
 
 Exemplos: 
 
 LANG : variável que recebe o idioma do sistema e a codificação de caracteres. 
 
 LANGUAGE: variável de idiomas de teclado. 
 
 HOSTNAME : hostname da máquina. 
 
 Variáveis de ambiente 
 
 São aquelas que dependem do usuário para serem criadas, pois, dependendo de quem seja o usuário, 
a variável não será a mesma, como as variáveis abaixo: 
 
 PATH : indica o caminho de busca dos comandos que são digitados pelo usuário. A variável PATH do 
usuário root contém os diretórios “sbin”, que a mesma variável para um usuário comum não tem, por padrão, 
pois os programas contidos em dietórios “sbin” são de uso exclusivo de root. 
 
 SHELL : aponta para a localização do arquivo binário do Shell do usuário. 
 
 PWD : diretório atual do usuário. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 169 
 
 OLDPWD : diretório acessado anteriormente pelo usuário. 
 
 HOME : diretório pessoal do usuário. 
 
 A lista de variáveis 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 variável PATH do usuário root: 
 
 
 Criação e manipulação de variáveis 
 
 Dependendo do motivo do script, o usuário vai precisar que a variável que ele esteja usando não sirva 
apenas para o seu próprio programa, mas seja também uma variável exportada para o sistema, então, a 
primeira providência que deve ser tomada é exportar esta variável com o comando abaixo: 
 
 # export <variável>=<valor> 
 
 Este processo tambémpode ser feito em duas etapas: a criação e depois a exportação da variável. Para 
isso, podemos usar as seguintes linhas de comando: 
 
 # <variável>=<valor> 
 
 # export <variável> 
 
 Toda vez que uma variável for utilizada, o $ deve vir antes do nome dela, como no exemplo abaixo: 
 
 # export LOGS=/var/log 
 
 # cd $LOGS 
 
 
 Outro exemplo de manipulação de variável é a adição do diretório /programas na variável PATH do 
usuário para que comandos que estejam neste diretório possam ser executados de forma mais simples por ele: 
 
 # export PATH=$PATH:/programas 
 
 Mostrando o valor da variável: 
 
 # echo $PATH 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 170 
 
 
 Para excluir uma variável que foi criada, basta utilizar também o comando unset, como no exemplo 
abaixo: 
 
 # unset LOGS 
 
23.4 – Criação de scripts 
 
 Um aquivo de script é um arquivo comum de texto e pode ser executado com qualquer extensão 
(.txt,.mp3,.ppt, etc..), até porque as extensões em Linux não têm funcionalidade nenhuma para execução ou 
leitura ou gravação em arquivos. Ainda que não utilizemos as extensões, para que o script de Shell possa ser 
lido pelo edito vim com cores de sintaxe é preciso que o arquivo de script tenha alguma extensão, mais 
especificamente a extensão .sh. 
 
 Como os scripts de Shell serão utilizados em administração de sistema Linux como caixa de 
ferramentas, vamos já começar aplicando o seu uso para este fim, com o primeiro script abaixo, que será um 
programa para criar usuários: 
 
 # vim ~/cria_users.sh 
 
 
Neste script, já se podem notar algumas características de Shell Script, como a inserção de 
comentários, que pode ser feita com o ‘#’. Eles são primordiais para a boa documentação dos scripts criados, 
pois podem ser usados para marcar a versão do script, as datas de criação e última modificação, o autor e a 
descrição do script que está sendo criado, como foi feito no exemplo acima. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 171 
 
 É importante também que a informação de qual Shell vai interpretar os comandos esteja no cabeçalho 
com a seguinte sintaxe: #!<caminho do Shell>. No exemplo acima foi utilizado o Shell BASH, cujo binário está 
em /bin/bash. Poderia ter sido utilizado outro Shell disponível em /etc/shells, sem nenhum problema, mas 
como o BASH é o Shell padrão para comandos no Linux, é sempre melhor utilizá-lo como interpretador para os 
comandos que vão ser usados. 
 
 Alguns outros recursos usados acima serão analisados agora: 
 
 # echo 
 
 Este comando é responsável por produzir tanto STDIN (saída padrão de comando) como STDERR (saída 
de erros de comando). Suas sintaxes são: 
 
 # echo <valor de variável, saída de comando ou texto> 
 
 # echo ”<valor de variável, saída de comando ou texto>” 
 
 # echo ‘<texto>’ 
 
 Exemplos: 
 
 Produzindo como saída o valor da variável SHELL: 
 
 # echo $SHELL 
 
 Ou 
 
 # echo “$SHELL” 
 
 Produzindo o texto $SHELL: 
 
 # echo ‘$SHELL’ 
 
 Outro detalhe importante sobre o comando echo são as opções de posicionamento do texto, utilizadas 
em conjunto com o parâmetro -e do mesmo: 
 
 \\n : insere nova linha. 
 \\t : insere tabulação horizontal (padrão para documentos de texto em geral). 
 \\v : insere tabulação 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 172 
 
 Agora, o mesmo tabulado horizontalmente e verticalmente (espeçamento entre linhas): 
 
 # echo -e “\\v\\tLinux \\n\\v\\tSystem \\n\\v\\tAdministrator” 
 
 
 # read 
 
 Atribui a uma variável o valor digitado pelo usuário. 
 
 Exemplos: 
 
 Lendo o valor da variável IP, que será lançado como 172.16.0.1 pelo usuário, e exportando a variável: 
 
 # read IP; export IP 
 
 
 Lendo, exportando e exibindo o valor da variável DSK_BKP com mensagem para o usuário: 
 
 # read -p “Digite o disco desejado para backup:” DSK_BKP 
 
 # export DSK_BKP 
 
 #echo $DSK_BKP 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 173 
 
 É lógico que o uso do read só é viável para um script, pois é a única forma de pedir para que o usuário 
lance um valor para uma variável. 
 
 Sub-Shells 
 
 Quando a saída 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 saída de um outro comando ou de uma 
variável 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` 
 
 
 
 Execução de um script 
 
 É importante que um script tenha permissão de execução para o usuário 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 diretório do path do usuário é só executá-lo como um comando qualquer, apenas digitando o seu 
nome. 
 Outras formas de execução: 
 
 # sh <script> (neste caso, o script não precisa ter permissão de execução). 
 
 # . <script> 
 
 # ./<script> 
 
 # source <script> 
 
 # bash <script> 
 
 Exemplos: 
 
 Executando o script cria_users.sh criado acima como um comando no path do usuário: 
 
 # chmod +x ~/cria_users.sh && ln -s /root/cria_uses.sh /sbin/cria_users 
 
 # cria_users 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 174 
 
 
 
 Executando ~/cria_users.sh, que não está no path do usuário: 
 
 # sh ~/cria_users.sh 
 
 23.4.1 – Estruturas de análise lógica 
 
 As estruturas funcionam no Shell Script como na maioria das linguagens de programação, só que com 
sintaxes diferentes. É sempre recomendável para um programador Shell conheça pelo menos um pouco de 
algoritmos (o máximo possível), pois é preciso antes de implementar uma estrutura dessas, saber muito bem 
qual será o intuito, uma análise condicional, uma execução com “n” passos, uma estrutura de repetição ou uma 
análise de caso para um menu, por exemplo. 
 
 O uso de cada uma dessas estruturas é bem didático e bem simples, mesmo para o administrador de 
sistema Linux que nunca teve contato com lógica de programação. 
 
 Antes de conhecer cada uma das estruturas, é importante conhecer o comando abaixo: 
 
 Test 
 
 Testa arquivos, diretórios, números e strings (textos). 
 
 Testes numéricos: 
 
 -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 : não-vazia. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 175 
 
 Testes em aquivos: 
 -d : é um diretório. 
 -f : é um arquivo. 
 -s : é um aquivo e não é vazio. 
 -ef : é o mesmo arquivo. 
 -nt : arquivo mais novo. 
 -ot : arquivo mais velho. 
 
 Estrutura if (condicional) 
 
 Analisa uma condição verdadeira e, para ela, executa uma série de comandos. Também é possível 
adicionar uma condição para se teste for falso (else), mas esta não é imprescindível. 
 
 Sintaxe1: 
 
 if <condição verdadeira> 
 then <comandos> 
 fi 
 
 Onde fi finaliza a estrutura. 
 
 Sintaxe2: 
 
 if <condição verdadeira> 
 then <comandos> 
 else <comandos> 
 fi 
 
 Sintaxe3: 
 
 if <condição verdadeira> 
 then <comandos>else if <condição verdadeira> 
 then <comandos> 
 fi 
 fi 
 
 No modelo de sintaxe acima, temos uma estrutura if composta, onde a análise de condição falsa (else) 
pode receber uma outra estrutura if. Outro detalhe é que, como foram utilizadas 2 estruturas if, foram também 
finalizadas as duas com fi. 
 
Exemplo1: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 176 
 
 
 
 
 No caso acima, o script acim testa a existência do arquivo /etc/nologin. Caso este exista, a mensagem 
‘O login não será possível agora!!’ será exibida, caso contrário, a mensagem ‘Login liberado’ será exibida. 
 
Exemplo2: 
 
 
 No caso acima, mais uma condição foi analisada: a de existir /etc/nologin, mas ele ser um diretório, e 
não um arquivo, neste caso, a mensagem ‘/etc/nologin é um diretório, não um arquivo’ será exibida. 
 
Para estruturas if compostas com muitas condições, é utilizada a avaliação booleana (E e OU). Em um 
exemplo abaixo, podemos testar a existência de /etc/network/interfaces e se este arquivo está vazio ou não 
antes de configurar a rede via script: 
 
 #!/bin/bash 
 configura () { 
 read -p “Qual a sua sala?” sala 
 read -p “Qual a sua máquina?” maq 
 echo -e “ 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 177 
 
 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 avaliação booleana ocorre abaixo, onde somente se o arquivo de configuração das interfaces 
de rede existir e não for vazio, os comandos serão 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 não)?’ 
 read resp 
function avalia { 
case $resp in 
 sim|s|yes|y) 
 configura 
não|nao|n|no) 
 exit 0 ;; 
*) 
read -p “Por favor, responda sim ou não. Pressione ENTER para voltar à pergunta” 
avalia 
esac 
} 
avalia 
else 
configura 
fi 
#########FIM DO SCRIPT############# 
 
Para avaliação booleana, podem ser utilizados em conjunto com o comando test: 
 
&& : apenas se todas as condições forem satisfeitas é que os comandos são executados. 
 
|| : neste caso, basta que alguma das opções esteja correta para que os comados sejam executados. 
 
 Estruturas while e until 
 
 Estras estruturas têm sintaxes diferentes, porém têm a mesma função: a de executar tarefas em 
repetição (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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 178 
 
 No caso de uma estrutura while, serão repetidos comandos enquanto aquele teste for verdadeiro, 
enquanto que na estrutura until é justamente o contrário: apenas quando o teste falso for satisfeito a repetição 
dos comandos vai parar de ser realizada. 
 
 Exemplos: 
 
 No caso acima, foi criado um “loop” de criação de diretórios onde, cada vez que este loop for 
executado, ele vai verificar se a variável qtd (quantidade de diretórios) ainda é maior que cont (um contador 
que foi criado para servir de referência), caso seja, cont vai ter o seu valor acrescido de 1 e vai servir de rótulo 
para a criação de um diretório com o nome dir-$cont, quando cont for igual à qtd, o loop acaba. 
 
 Neste script foram utilizados operadores matemáticos. Os operadores para Shell Script são: 
 
 + : soma 
 - : subtração. 
 * : multiplicação. 
 / : divisão. 
 ** : exponenciação. 
 
 Para o caso de precisar fazer alguma operação aritmética, ela deve ser deve ser realizada entre (( )) ou 
$(( )), como foi mostrado no exemplos acima. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 179 
 
 
 
 
Neste caso acima, foi utilizada a estrutura de repetição until, que testou o valor da variável qtd até que 
ele fosse igual ao valor da variável cont, que, na verdade, agiu como uma constante neste script, já que o seu 
valor apenas serviu como parâmetro de comparação para a variável qtd, que permaneceu sendo subtraída de 1 
a cada “loop” desses. 
 
 Estrutura for 
 
 A estrutura for atribui para uma variável um valor de uma lista por vez. Para cada passo dessa lista 
serão executados comandos que estiverem abaixo de “do”. Esta é uma ferramenta importantíssima para 
programas que precisam executar passos em sequência. 
 
 Sintaxe: 
 
 for <variável> in <lista> 
 do 
 <comandos> 
 done 
 
 Exemplo: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 180 
 
 No programa acima, para cada diretório da lista extraída do arquivo /etc/passwd foi criado um arquivo 
de backup. Supondo que haja 20 usuários nesta lista, os comandos serão executados 20 vezes, portanto 
teremos 20 arquivos de backup, um para cada homedir de usuário, pois a cada passo desses, a variável home 
receberá um desses diretórios como valor. 
 
 O uso de for em scripts é útil também para criação de diretórios em demanda, utilizando o comando 
seq. 
 # seq 
 
 Exibe uma sequência numérica. 
 
 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 parâmetro para qualquer comando, este parâmetro é guardado na variável 
1, por isso ela foi analisada sem ser solicitada pelo comando read. 
 
 No programa acima, a variável num, utilizada pela estrutura for, recebe cada um desses números que 
foram resultado do comando seq de cada vez e, para cada um deles, cria um diretório. Detalhe: tudo foi feito 
com apenas 4 linhas de script. 
 
 Vamos à execução do script (que vai criar 10 diretórios): 
 
 # chmod +x ~/criadir_for.sh 
 
 # ln -s ~/criadir_for.sh /sbin/criadir_for 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 181 
 
 # criadir_for 10 
 
 
 
 Estrutura case 
 
 Analisa se a variável se encontra em cada caso e, para cada um, executa os comandos escolhidos pelo 
programador. Esta estrutura é muito útil na criação de programas com menu e também na criação de 
comandos que possuem argumentos. 
 
 Sintaxe: 
 
 case <variável> in 
 <opção1>) <comandos> ;; 
 <opção2>) <comandos> ;; 
 <opção3>) <comandos> 
 esac 
 
 Em tese, este estrutura é uma ferramenta de substituição à estrutura if em análises muito grandes, 
como uma que precisasse de 10 condições, com o if este código ficaria enorme e, em qualquer linguagem de 
programação, é primordial que o programador prime pela boa organização 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 
comentários e, se necessário, manuais), bem indentado e com as versões bem atualizadas, levando em 
consideração a freqüência com que elas são atualizadas para decidir se será uma versão com 2,3 ou até 4 
dígitos. 
 Voltando à estrutura, cada opção 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 opções significando “nenhuma 
das alternativas acima”. 
 
 Vamos ver um exemplo de case usado para analisar um menu de opções em um programa para 
gerenciamento de pacotes: 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 182 
 
 
 
 
 A funçãomenu, 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 específico, neste caso a função não terá como ser interrompida com CTRL+C. 
 
 Quanto às opções, o | quer dizer “ou”, para o caso de o número ser digitado por extenso. 
 
 O uso do shift 
 
 Quando o usuário digita vários argumentos de um comando após o mesmo, a mesma variável 1 tem 
que receber várias opções, uma de cada vez, para que as opções do comando sejam processadas corretamente. 
Pois então, o comando shift faz a função de fazer com que um valor atribuído à variável seja processado após o 
anterior já ter sido, fazendo com que a variável sempre receba valores em sequência. 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 183 
 
 
 
 
 A execução deste programa vai acarretar no backup de todos os diretórios dos usuários que forem 
digitados como argumentos do comando bkpusr (nome do porgrama), como no exemplo do backup dos 
diretórios pessoais dos usuários user1, operador e dba: 
 
 # bkpusr user1 operador dba 
 
 
 
Ficou assim o diretório de destino dos backup: 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 184 
 
24 – REDES EM LINUX 
 
 Ao longo dos anos, por conta de sua estabilidade, segurança, flexibilidade, escalabilidade, e outras 
características, o Kernel Linux esteve assumindo o posto de excelente servidor de rede em muitas aplicações, 
como serviços de LDAP, servidor de arquivos, firewall, DHCP, proxy, servidor de uma VPN, etc. Por causa dessa 
vocação que o Linux tem para este mercado é que o seu administrador deve ter um profundo conhecimento de 
técnicas de configuração, planejamento e manutenção de uma rede. 
 
 O servidor de rede Linux deve ser capaz de se manter disponível 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 aconteça, é preciso providenciar que o Hardware esteja condizente com o serviço que será 
prestado, podemos citar como exemplo a diferença de espaço 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 espaço em disco maior. Outra diferença que 
pode ser analisada é a existente entre o Hardware requerido para um servidor de máquinas virtuais e o 
requerido para um servidor de arquivos apenas, neste caso, a diferença maior fica por conta do tipo de CPU que 
terá que ser adotado: o primeiro usa instrução de virtualização e o segundo não tem obrigação de ter tal 
tecnologia. É igualmente importante, é lógico, atentar para o Hardware de rede a ser utilizado, com o advento 
de redes de até 1Gb/s de taxa de transferência de dados, fica a cargo do administrador então 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 são conjuntos de regras de funcionamento que regem as conexões que vão ser 
estabelecidas. Cada protocolo de rede tem a definição de seu padrão em um documento chamado de RFC. 
 
 TCP/IP 
 
 De todos os protocolos, 2 se destacaram bastante no processo de difusão e desenvolvimento da 
Internet, assim com das grandes LANs: TCP e IP, tanto que, na maioria dos casos, são pronunciados juntos 
(TCP/IP). O primeiro é o Protocolo de Controle de Transferência (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 destinatário, tornando-se um protocolo confiável, pois confere a integridade da 
informação antes de ela ser enviada. Este protocolo é utilizado para serviços onde a entrega dos dados em 
perfeito estado é essencial, um grande exemplo é um download de um arquivo: é lógica que nenhum usuário 
ficaria satisfeito de receber este arquivo com vários pedaços faltando (pois, na maioria dos casos nem 
funcionaria) e, por isso, a transferência do mesmo é feita no protocolo TCP por intermédio de alguma porta que 
possa prover o serviço de transporte usado, como a porta 21 do serviço de FTP. 
 Para que os serviços possam ser criados e não haja conflitos entre as funcionalidades deles, são 
designadas as portas para os mesmos. A lista de portas para serviços disponíveis para protocolo o TCP estão em 
/etc/services. As mais comuns são: 
 
 20 : Dados FTP 
21 : Comandos e autenticação FTP 
 22 : SSH 
 23 : Telnet 
 25 : SMTP 
 53 : DNS 
 80 : HTTP(WWW) 
 110 : POP3 
 143 : IMAP 
 443 : HTTPS 
 465 : SMTPS 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 185 
 
 514 : Log Remoto 
 995 : POP3S 
 
 O Internet Protocol se preocupa somente com os critérios e as características de conectividade dos 
sistemas. Ele garante que hosts que estejam em uma mesma rede tenham conectividade direta e também que 
possam ser feitas várias segmentações dentro de uma rede só, recurso chamado de sub-rede. A versão deste 
protocolo que vai ser analisada é a versão 4 (IPV4), que conta com as seguintes características de 
endereçamento de hosts: 
 
 Endereço IP 
 
 Um endereço IP em IPV4 é constituído de 4 blocos de 8 bits no máximo cada um, sendo chamado cada 
bloco de octeto, por causa disso. Em cada octeto desses, os bits são representados em números decimais, pois 
assim fica mais humanamente possível de ser implementado. Os números decimais disponíveis para compor 
esse modelo de endereçamento de rede vão de 0 a 255 (estando disponíveis para uso 256 números, contando 
com o 0, é claro). Um exemplo de endereço IP é de um host é 10.0.0.1. 
 
 O endereço IP também pode ser utilizado por ume rede, definido com ele quantos hosts poderão 
integrar a mesma rede. Um exemplo de endereço IP de rede é 172.16.0.0/16, onde o primeiro critério de 
conectividade plena entre hosts que façam parte desta rede será cada host estar na mesma classe, que está 
sempre definida pelo primeiro octeto, o segundo critério será a igualdade do segundo octeto entre os hosts: 16 
é o que está definido no endereço de rede e ele deve ser mantido porque o octeto onde ele está se encontra 
com os 8 bits “fechados” para alteração. 
 
 Os endereços IP estão 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 são as A,B e C, pois a C é utilizada para comunicação em 
multicast, onde múltiplos endereços 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 não se confundissem com IPs 
de servidores externos da grande rede mundial de computadores, ficando assim constituído o termo “IP 
privado” para IPs de redes LAN. As classes de IP privado são: 
 
 Classe A: 10.0.0.0 até 10.255.255.255, tendo como representação CIDR 10.0.0.0/8. 
 Classe B: 172.16.0.0 até 176.31.255.255, tendo como representação CIDR 172.16.0.0/16. 
 Classe C: 192.168.0.0 até 192.168.255.255, tendo como representação CIDR 192.168.0.0/24. 
 
 A definição de quantos hosts uma rede pode suportar é feita com a seguinte fórmula: 
 
 32 - BITS DA REDE 
 
 
 Deste resultado acima iremos extrair a informação de quantos bits faltam para completar todosos 
endereços dos octetos, o número 2 deve ser elevado a este número obtido e o resultado subtraído de 2 (que 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 186 
 
são os endereços de rede e broadcast, que não podem ser utilizados). Em uma rede 192.168.0.0/24 teríamos o 
seguinte cálculo: 
 
 32 - 24 = 8 (bits que faltam ser preenchidos) 
 2⁸ = 256 -2 = 254 hosts 
 
 Protocolo ARP (Address Resolution Protocol) 
 
 Este protocolo é encarregado de garantir a interpretação de um endereço físico de rede (MAC address) 
através de um endereço lógico (IP). Endereço MAC é o endereço físico que toda interface de rede possui, sendo 
único para todas elas espalhadas pelo mundo. Este endereço é construído com números hexadecimais 
(números e letras) e é representado por 6 blocos de 2 números hexadecimais cada um, sendo os 3 primeiros, 
geralmente, reservados à especificação do fabricante da interface. 
 
 Exemplo: 
 
 00:0f:e0:42:27:0d 
 
 Este protocolo é de extrema importância para aplicações de Firewall e servidores DHCP, que serão 
explicados em capítulos posteriores. 
 
 O protocolo RARP faz justamente o contrário: resolve IP através de endereço MAC. 
 
 UDP (User Datagram Protocol) 
 O uso deste protocolo também é para tráfego de dados, porém ele não garante a entrega dos mesmos, 
visto que é um protocolo de transporte simples. Ele pode ser utilizado para troca de dados que não têm a 
obrigação de chegarem em perfeito estado mas precisam chegar o mais rápido possível, como por exemplo a 
transmissão de uma rádio online, onde a qualidade sonora não seria mais importante do que a velocidade de 
chegada da mensagem. Pelo fato de não garantir esta entrega dos dados, o serviços SMTP e FTP não trabalham 
com este protocolo, porém, alguns serviços têm também funcionalidade com o protocolo UDP, como HTTP, 
DNS e LDAP. 
 
 ICMP (Internet Control Massage Protocol) 
 Este protocolo é encarregado de emitir relatórios 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 conexão e recebem, na mesma proporção, a resposta 
do destino ou gateway consultado, caso ocorra algum erro nesta comunicação, este erro será reportado ao host 
que enviou a requisição, salvo em caso de bloqueio por política DROP de um Firewall Iptables. É importante 
ressaltar que quando uma requisição so protocolo ICMP é enviada, o MAC do remetente fica registrado na 
tabela ARP do destinatário, e vice-versa. 
 
 É imprescindível que um administrador de servidor Linux entenda os protocolos e as portas disponíveis 
para uso no servidor. Estas duas informações estão dentro dos arquivos /etc/services e /etc/protocols, como 
mostram as figuras abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 187 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 188 
 
24.2 - Configuração de rede 
 
 As interfaces de rede no Linux seguem, geralmente, padrões 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 configuração dos endereços IP para estas interfaces são diferentes para algumas 
distribuições: 
 
 No Debian 
 
 O arquivo /etc/network/interfaces é o concentrador da configuração de endereço 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 serviço networking é iniciado (no boot, 
por exemplo), a opção iface se refere à interface de rede em questão, inet é o tipo de endereço de rede a ser 
utilizado: static para endereço IP definido manualmente e dhcp para IP dinâmico (que depende de um servidor 
DHCP ativo na rede), address é o endereço IP, netmask a máscara de sub-rede, gateway neste arquivo é o 
gateway padrão (um host pode ter apenas um default gateway). Vale lembrar que, para uma definição de IP 
por dinâmico (por DHCP), nenhum campo de endereço deve ser preenchido, já que o servidor ficará 
encarregado da função de fornecer o endereço. 
 
 No caso da figura apresentada, temos três interfaces de rede: lo com seu endereço de loopback para o 
localhost (127.0.0.1), eth0 com IP estático e eth1 com IP dinâmico. A interface lo não deve ser desabilitada em 
hipótese alguma, pois ela poderá servir para testes em Web Server, por exemplo. 
 
 Depois que toda alteração necessária é feita nesse arquivo, o serviço networking tem que ser 
reiniciado para que as interfaces possam fazer uso da nova configuração: 
 
 # invoke-rc.d networking restart 
 
 No Red Hat 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 189 
 
 No caso desta distro, e das distribuições baseadas nela, existe, para cada interface de rede um arquivo 
de configuração será criado assim que o Kernel reconhecer a interface, que pode ser encontrado dentro do 
diretório /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 à configuração: 
 
 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 
 
 
 
Onde: 
 
 DEVICE é o nome da interface de rede. 
 BOOTPROTO é tipo de endereço que essa interface vai ter. 
 IPADDR é o endereço IP para caso de escolha de endereço estático. 
 NETMASK é a máscara de sub-rede. 
 GATEWAY é o gateway padrão do host. 
 HWADDR é o endereço MAC da interface (que não deve ser modificado em hipótese alguma neste 
arquivo). 
 ONBOOT é a flag que ativa (ou não, dependendo da resposta) a interface no boot. 
 
 Em comum, os dois sistemas operacionais têm a configuração 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 primário e 10.12.1.150 
o secundário (que só é consultado caso o primeiro não responda). Este arquivo pode conter os seguintes 
campos: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 190 
 
 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 domínio local a ser usado pelo host. Se nada for definido, este nome fica 
localhost.localdomain. 
 
 search <NOME> <NOME> 
 
 É a lista de domínios, separados por espaço, que podem também serem consultados na busca por 
algum host. Quanto mais domínios forem escolhidos nesta opção, 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 são: 
 
 # ifconfig 
 
 Exibe configuração IP de uma interface de rede e também modifica o seu endereço. 
 
 Sintaxe: 
 
 # ifconfig <opção> <interface> <opções> 
 
 Opções: 
 
 -a : exibe a configuração das interfaces ativas e desativadas. 
 up : ativa uma interface. 
 down : desativa uma interface. 
 netmask : define máscara 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 191 
 
 
 
 
Repare que o comando ifconfig, sem mais argumentos, é capaz de retornar o endereço MAC dainterface 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 através do protocolo ICMP. 
 
 Sintaxe: 
 
 # ping <opções> <host> 
 
 Opções: 
 
 -c : especifica quantas tentativas vão ser feitas. O padrão é testar continuamente. 
 
 -s : muda o tamanho do pacote a ser enviado (o padrão é 64 bytes). 
 
 -I : especifica a interface para o teste. 
 
 Exemplos: 
 
 Testando a conectividade com o host 10.12.1.254 com 5 tentativas, no máximo: 
 
 # ping -c5 10.12.1.254 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 192 
 
 Testando a conectividade com o host www.mcury.com.br através 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 estão marcadas como OPEN estão receptivas à conexões que possam ser feitas nela, 
porém as que estão marcadas como FILTERED têm o acesso filtrado por algum firewall do servidor. 
 
 # lsof 
 
 Exibe a lista de arquivos abertos no sistema, inclusive os utilizados por serviços de rede. 
 
 # arp 
 
 Exibe informações sobre a tabela ARP. 
 
 Opções: 
 -v : modo verbose. 
 -n : ao invés de exibir nomes, exibe números IP. 
 
http://www.mcury.com.br/
http://www.mcury.com.br/
http://www.lpi.org/
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 193 
 
 -i : especifica a interface. 
 
 Exemplos: 
 
 Listando a tabela ARP de conexões ocorridas na interface de rede eth2 em modo numérico: 
 
 # arp -ni eth2 
 
 
 
Esta tabela ARP é armazenada dentro do arquivo /proc/net/arp. 
 
 # hostname 
 
 Exibe ou modifica temporariamente o hostname do sistema. A modificação definitiva só pode ser feita 
em /etc/hostname. 
 
 # netstat 
 
 Exibe o status das conexões de rede estabelecidas. Conexões STREAM são de protocolo TCP e DGRAM 
são conexões de protocolo UDP. 
 
 Opções: 
 
 -n : exibe apenas hosts em modo numérico, não em nomes. 
 -l : mostra apenas sockets em escuta. 
 -r : mostra a tabela de roteamento. 
 -c : monitoramento contínuo de conexões. 
 
 Exemplo: 
 
 Verificando a tabela de roteamento (apenas IPs): 
 
 
 
24.4 - Interfaces de rede virtuais 
 
 Em uma interface de rede pode haver mais de um endereço IP configurado e isso só é possível através 
da criação de interfaces de rede virtuais. 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 194 
 
 Elas podem ser criadas com os nomes seguindo a seguinte sintaxe: <interface>:<nome> e vão 
responder normalmente às solicitações requeridas em uma rede. Quanto á performance, é preciso analisar qual 
o tipo de serviço será prestado pelo host e se a interface física 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, serviços 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 físico e na mesma interface física. 
 
 A definição de uma interface de rede virtual pode ser feita temporariamente através do comando 
ifconfig ou pode também ser feita de forma permanente, dentro do arquivo /etc/network/interfaces, no 
Debian. Vamos ver no exemplo abaixo a criação 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 configuração definitiva de uma interface de rede virtual com o 
mesmo endereço: 
 
 # vim /etc/network/interfaces 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 195 
 
24.5 - Rotas 
 
 Quando uma solicitação é feita por qualquer protocolo e ela não 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 solicitação terá sucesso, se não for, o protocolo ICMP se encarregará de dar a 
mensagem de que não há rota para o host. O maior exemplo de uso de roteadores é a Internet, pois antes de 
chegar a um site específico, o pacote passa por vários roteadores, que não 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 padrão: o roteador padrão é chamado de default gateway e ele fica como opção genérica de rota 
para todas as interfaces de rede (virtuais ou não). É sempre importante ressaltar que pode existir apenas um 
default gateway em um servidor, pois o mesmo responde ao endereço de rede 0.0.0.0/0.0.0.0, ou seja: 
qualquer rede com qualquer máscara de sub-rede. 
 
 Rota para host: uma rota para um host ela é definida apenas para um IP, onde apenas requisições 
daquele host irão ser roteadas. 
 
 Rota para rede: é o tipo de roteamento onde uma rede inteira é atendida. 
 
 # route 
 
 Verifica ou cria rotas em um servidor. 
 
 Opções do modo de consulta: 
 
 -n : exibe o resultado da tabela de roteamento em modo numérico (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 numérico e verbose: 
 
 # route -nv 
 
 
 
No caso acima, podemos concluir que o único roteador existente é o 189.32.128.1, que é também o 
default gateway, pois está respondendo ao destino 0.0.0.0 com máscara 0.0.0.0, ou seja: responde como 
roteador de todos os outros IPs. 
 
 O campo opções da tabela de roteamento pode ser interpretado da seguinte forma: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 196 
 
 U : roteador em uso. 
 ! : a rota não foi aceita. 
 G : um gateway está sendo usado. 
 H : é uma rota para um host. 
 
 Opções do modo de alteração: 
 
 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 máscara 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 estática 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 padrão 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 
também utiliza o protocolo ICMP para este tipo de teste. Por padrão 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 
 
 
 
http://www.mcury.com.br/
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 197 
 
25 – CLIENTES DE SEVIDORES LINUX 
 
 Em muitos casos, os clientes de servidores Linux são distribuições Linux. Já vimos a configuração de um 
cliente DNS, agora vamos ver como outras aplicações de cliente podem ser utilizadas em distribuições 
GNU/Linux. 
 
25.1- DHCP 
 
 O Dinamic Host Configuration Protocol, substituto do protocolo BOOTP, é o protocolo que provê 
configurações automáticas de endereço de rede para os clientes que solicitarem, esta solicitação é feita pelo 
cliente em broadcast por protocolo UDP e, sendo assim, o primeiro servidor que responder analisará se o 
cliente se encaixa nos critérios que o próprio servidor estabeleceu. Um servidor DHCP pode também fornecer, 
além do endereço IP e da máscara de sub-rede, o nome de domínio, o gateway e os endereços IP dos servidores 
DNS a serem utilizados pelo cliente. Estas concessões de endereço têm um tempo de duração determinado 
pelo servidor e, após este tempo ter se esgotado, será feita uma nova negociação de endereço entre o MAC 
address da interface de rede do cliente e o servidor, podendo assim, o cliente receber um endereço totalmente 
diferente do anterior. 
 
 É sempre importante lembrar que requisições DHCP sendo feitas em uma rede com muitos hosts 
podem causar a queda de rendimento significativa, pois as requisições sempre são enviadas em broadcast pelos 
clientes. Para o caso de redes de grande porte que precisem usar DHCP, é recomendável utilizar um lease time 
(tempo de concessão) maior, para que os intervalos de solicitação de IP possam ser cada vez maiores. 
 
 # dhclient 
 
 Este comando faz a requisição de endereço para um servidor DHCP qualquer em uma rede. 
 
 Sintaxe: 
 
 # dhclient <interface> 
 
 Exemplo: 
 
 Requisitando IP dinâmico para eth0: 
 
 # dhclient eth0 
 
 -r : Libera a configuração e para o dhclient que está em 2º. Plano. 
 
 Para a configuração de uma interface de rede permanecer solicitando endereço 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 configurações de endereço de rede. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 198 
 
25.2 - FTP 
 
 O File Transfer Protocol, como o próprio nome já diz, é um protocolo desenvolvido para transferir 
arquivos pela rede. Ele utiliza duas portas TCP para tal conexão: 20 e 21. Na maioria dos casos dos servidores 
FTP espalhados pela Internet, o acesso ao servidor FTP é autenticado, porém, existem os casos em que este 
login é feito de forma anônima. O acesso do cliente ao servidor FTP é feito através do comando ftp: 
 
 Sintaxe: 
 
 # ftp <host> 
 
 Logo após o acesso, o usuário terá á sua disposição o prompt do ftp para digitar os comandos (muito 
destes comandos são comandos de shell sh). Vamos ver alguns comandos de FTP: 
 
 ftp> lcd - exibe ou modifica o diretório local do usuário (diretório do cliente). 
 ftp> put - faz o upload de um arquivo apenas. 
 ftp> mput - faz o upload de múltiplos arquivos. 
 ftp> get - faz o download de um arquivos apenas. 
 ftp> mget - faz o download de múltiplos arquivos. 
 
 Exemplos: 
 
 Fazendo download do arquivo arq1.txt: 
 
 ftp> get arq1.txt 
 
 Mofificando o diretório atual para /dados: 
 
 ftp> lcd /dados 
 
 Fazendo upload de todos os arquivos do diretório local para o diretório atual no servidor: 
 
 ftp> mput * 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 199 
 
25.3 - DNS 
 
 O Domain Name System é o serviço TCP/UDP que resolve nomes de hosts para os clientes. É pela 
atuação deste serviço que sites na Web podem ser acessados pelo nome, e não apenas por IP. Geralmente, 
estes nomes de domínio são separados por pontos indicar subdivisões de um domínio 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 serviço DNS. O cliente pode utilizar a consulta aos 
arquivos /etc/hosts e /etc/networks. O primeiro define um nome para um IP específico e o segundo define um 
nome para uma rede específica. É importante lembrar que essas configurações são feitas por parte do cliente, 
ou seja, não valerão para a rede toda. 
 
 Vamos ver um exemplo de arquivo /etc/hosts: 
 
 No caso acima, o localhost (127.0.0.1) também responderá pelo nome de MCURY e 10.12.1.1 
responderá pelos nomes de SERVER1, DHCP, DNS ou SMB. Isso é muito útil para o usuário que vai 
frequentemente acessar o mesmo servidor, o cliente poderá simplesmente substituir o IP do servidor em 
qualquer solicitação pelo alias criado, neste caso, o sistema não vai procurar por um DNS para resolver nomes, 
pois dentro do arquivo /etc/nsswitch.conf, a configuração da seção host (de busca por nomes na rede) está 
indicando a prioridade de arquivos locais para esta tarefa e, só em caso de não achar o nome em um dos 
arquivos, procurar um DNS configurado em /etc/resolv.conf: 
 
 No exemplo abaixo, vamos executar um teste de conexão com o comando ping utilizando um dos 
aliases criados no arquivo /etc/hosts: 
 
 # ping DHCP 
 
 
 
 O arquivo /etc/nsswitch.conf não serve apenas para determinar a ordem de busca de nomes pela rede, 
ele também busca bibliotecas de consulta de usuários, senhas e grupos do sistema, esta configuração pode 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 200 
 
tanto buscar um caminho local como uma autenticação por algum protocolo de rede de que esteja em outro 
servidor, como é o caso de uma autenticação feita por um protocolo LDAP. 
 
 
 
 Com o arquivo /etc/networks acontece o mesmo que com o arquivo /etc/hosts, ele também pode 
configurar nomes para redes. 
 
 
 
Neste caso, a rede 10.12.1.0 responde também 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 parâmetros de configuração de um servidor DNS. 
 
 Exemplo: 
 
 Consultar servidor www.lpi.org: 
 
 # dig www.lpi.org 
 
 
http://www.lpi.org/
http://www.lpi.org/
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 201 
 
 
 
 
 # nslookup 
 
 Testa a existência de um servidor DNS. 
 
 Exemplo: 
 
 # nslookup www.mcury.com.br 
 
 # whois 
 
 Cliente para o serviço de diretórios whois, mostra detalhes de registro do Domínio. 
 
 Exemplo: 
 
 # whois www.mcury.com.br 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
http://www.mcury.com.br/
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 202 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 203 
 
26 - SERVIDOR DE LOGS 
 
 Tão importante quanto instalar, configurar e incrementar serviços em um host é monitorar os logs 
referentes aos eventos acontecidos nele. Também não menos importante que isso tudo está o fato de que os 
logs devem ter uma política de rotatividade, para que não cresçam desordenadamente. Todos esses ítens serão 
estudados neste capítulo. 
 
 Vejamos a lista de principais logs do sistema: 
 
 /var/log/messages : é o principal log do sistema, ele registra quase todos os eventos, não sendo capaz 
de registrar eventos de autenticação, mudanças de senha e eventos de e-mail. 
 
 /var/log/syslog : é um log com a mesma função do /var/log/messages, com o diferencial de registrar 
também os eventos na prioridade mais alta possível, ou seja: tudo sobre os eventos cobertos. 
 
 /var/log/auth.log : é o único log do sistema que registra detalhes sobre trocas de senha e 
autenticação. 
 
 /var/log/dmesg : é o log que contém 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 configuração do Syslog é o /etc/syslog.conf. A estrutura dele consiste nos seguintes 
campos: 
 
 <facilidade>.<prioridade> <arquivo de log> 
 
 As principais facilidades são: 
 
 syslog : eventos gerais de log. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 204 
 
 kern : eventos de Kernel. 
 auth : eventos de autenticação. 
 authpriv : eventos de trocas de senha. 
 security : auth + authpriv. 
 mail : eventos de servidor de e-mail. 
 cron : eventos de agendamentos. 
 lpr : eventos de impressão. 
 
 Além de definir qual tipo de evento o log irá registrar, é preciso informar qual nível de informação será 
encontrada neste log, para isso existe a prioridade de um log. As prioridades existentes (em ordem) são: 
 
 Debug, info, notice, warning, err, crit, alert, emerg 
 
 debug: cobre mensagens de depuração. 
 info: cobre mensagens de informação 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 não pode ser utlilizado por causa de um erro qualquer. 
 
 Fora da lista da ordem de prioridades, none é a prioridade que instrui o evento a não criar log no 
arquivo. 
 
 
 
 O syslog pode também ser configurado para enviar os logs para outro servidor ao invés 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 205 
 
 O programa que garante a rotatividade dos logs do sistema é o logrotate, cujo diretório que contém os 
arquivos de configuração dos serviços a serem cobertos é /etc/logrotate.d/. Vamos analisar o arquivos de 
configuração de rotatividade do log do squid: 
 
 # vim /etc/logrotate.d/squid 
 
 
 
Onde: 
 
 daily, mounthly ou weekly : são unidades de tempo de rotação. 
 
 compress : significa que o log vai ser compactado e um novo vazio será criado a cada unidade de 
tempo dessa. 
 
 delaycompress : Não compacta o arquivo de log após o rotacionamento, posterga para o próximo ciclo 
e deve ser utilizado em conjunto com o compress. Esse tipo de ação é tomada porque alguns processos ainda 
escrevem neste arquivo e só depois o liberam. 
 
 rotate : mantém uma certa quantidade de cópias de logs. 
 
 missingok : caso o log não exista, nenhum aviso será gerado para o administrador, é o oposto de 
nomissingok. 
 
 nocreate : é o oposto de create. Não 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 após rotacionar. 
 
 # logger 
 
 O comando logger tem a função de enviar saídas de comandos para logs. 
 
 Sintaxe: 
 
 # logger ”mensagem” opções 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 206 
 
 Opções: 
 
 -s : envia mensagem também para STDOUT. 
 -p ; especifica a prioridade para a mansagem. 
 -i : mostra o PID do evento criado. 
 -f : ao invés de enviar uma mensagem, envia o conteúdo de um arquivo. 
 
 Exemplo: 
 
 Enviar o conteúdo 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 207 
 
27 – SUPERSERVIDORES 
 
 Os Superdaemons, como são tecnicamente chamados, existem para que vários serviços possam ser 
gerenciados através de apenas um daemon, porém, nem todo serviço pode ser incluído em um Superdaemon. 
 
27.1 - Inetd 
 
 O Inetd é o Superservidor nativo do Linux. Ele proporciona a vantagem de o serviço apenas ser alocado 
em memória quando for solicitado. Sua configuração é feita dentro do arquivo /etc/inetd.conf. A sintaxe do 
arquivo em questão é: 
 
<nome do serviço> <socket utilizado> <protocolo> <opção> <usuário> <localização dos daemons necessários> 
 
 
 
 
 No exemplo acima, o serviço ftp está configurado para ser gerenciado pelo Inetd usando o socket 
stream, liberando o socket logo depois de ser carregado (opção nowait), usando o usuário root para gerenciá-
lo, e especificando o caminho para os binários relativos ao daemon. Todos os nomes de serviços que podem ser 
utilizados estão em /etc/services, portanto, antes de começar a configurar um serviço no Inetd, pesquise o 
nome dele dentro de /etc/services. Note também que o seviço de FTP está usando outro daemon além do 
daemon dele: o tcpd, este é um daemon do TCP Wrappers que realiza filtros de entrada de pacote, formando 
assim uma camada de segurança, ainda que muito limitada, para o sistema, este assunto será estudado mais à 
frente. 
 
27.2 - Xinetd 
 
 Este é a evolução do Inetd, possui mais recursos de controle que o anterior e as sintaxes de seus 
arquivos de configuração são totalmente diferentes. Seu arquivo de configuração é o /etc/xinetd.conf, mas ele 
permite que arquivos de configuração independentes dentro de /etc/xinetd.d gerenciem os serviços. Vamos ver 
um exemplo de configuração do arquivo /etc/xintetd.conf: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 208 
 
 
 
 
 Agora vamos ver um arquivo de configuração do Superdaemon xinetd para o serviço ssh: 
 
 
 
 Entendendo os campos do arquivo: 
 service : nome do seviço em /etc/services. 
 
 disable : configura se o serviço vai ser desabilitado no ato da inicialização do Superdaemon. É o oposto 
de enable, ou seja: enable = yes equivale a disable = no. 
 
 id : é um nome de identificação do serviço. É muito útil para casos em que o mesmo serviço possui 
duas configurações: 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 : usuário 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 209 
 
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 configuração possa ser o mais simples possível, tanto que a configuração do daemon 
tcpd pode feita com a configuração de apenas 2 arquivos: 
 
 /etc/hosts.deny 
 
 Este é o arquivo de configuração de negação de acesso à entrada de pacotes dos seviços e hosts 
especificados. Sua sintaxe de configuração funciona da seguinte forma: 
 
 <serviço>: <hosts> 
 
 Onde a configuração desses campos com as opções ALL: PARANOID fará com que o sevidor não aceite 
nenhum tipo de conexão TCP onde o nome do servidor não confira com o seu IP e ALL: ALL fará o bloqueio total 
de todos os serviços para todos os hosts. Para adicionar alguma execeção de acesso para o campo de serviços 
basta escolher a regra EXCEPT, como no exemplo abaixo: 
 
 ALL EXCEPT sshd: 10.12.1.150 
 
 Neste caso acima, todos os seviços TCP, exceto o sshd (servidor ssh), serão negados quando vindos do 
host 10.12.1.150. 
 
 /etc/hosts.allow 
 
 Este arquivo só tem razão de estar com alguma configuração válida caso existaalguma negação feita 
em /etc/hosts.deny, pois o /etc/hots.allow é a lista de exceção de bloqueios de pacotes TCP de entrada no 
servidor. Vejamos um exemplo do arquivo /etc/hosts.allow que está atuando como lista de exceção para uma 
regra ALL: ALL criada em um arquivo /etc/hosts.deny: 
 
 
 
 Neste caso acima, o seviço 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 após”. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 210 
 
29 – SSH 
 
 O Secure Shell, como o próprio nome já diz, é o shell que proporciona um nível alto de segurança para 
clientes e servidores em acessos remotos. Ele usa para conexão um terminal /dev/pts/<num>, mesmo tipo de 
terminal utilizado para emuladores de terminal de interface gráfica, como o xterm. Algumas partes deste 
serviço, que trabalha com os protocolos TCP e UDP, serão estudadas neste material: 
 
 ssh : cliente de acesso remoto. 
 
 ssh-keygen : criador de chave de criptografia. 
 
 scp : aplicação de cópias remotas via SSH. 
 
 Os arquivos de configuração do serviço são /etc/ssh/ssh_config para o cliente SSH e 
/etc/ssh/sshd_config para o servidor SSHD. 
 
 
 
 O trecho escolhido do arquivo de configuração do servidor SSH possui uma linha importante de ser 
analisada: PermitRootLogin, pois é uma falha de segurança muito grande ela estar da forma que se encontra 
acima, desta forma, o usuário 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 específicas para cada usuário 
e o login do usuáro root fosse proibido pelo servidor. 
 
 Em todo primeiro login remoto via SSH que o cliente faz, um diretório .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 conexão feita em outro 
servidor, uma pergunta será feita sobre a aceitação ou não desta conexão. 
 
 Veja que o fingerprint do sevidor já aparece em haxadecimal, porém ele será criptografado com 
algorítmo RSA e enviado para dentro do arquivo known_hosts, coforme exemplo abaixo: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 211 
 
 
 
 
 # ssh 
 
 Acessa um host através do serviço SSH. 
 
 Sintaxe: 
 
 # ssh <host> 
 
 Exemplo: 
 
 Acessando o host 10.4.1.1 com o usuário ‘operador’: 
 
 # ssh operador@10.4.1.1 
 
 
 
 Para visualizar as conexões SSH de um servidor os comandos w e who podem ser utilizados: 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 212 
 
 
 
 
 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 usuários locais utilizam este mesmo terminal para emuladores de 
terminal. 
 
 # ssh-keygen 
 
 Gera chaves com criptografia RSA ou DSA para autenticação de usuários em um servidor. Com a 
execução deste comando, são criados 2 arquivos: id_<tipo> e id_<tipo>.pub, o primeiro de chave privada e o 
segundo de chave pública. 
 
 Exemplos: 
 
 Criando chaves com algotítmo de criptografia RSA: 
 
 # ssh-keygen -t rsa 
 
 Criando chaves com algorítmo de criptografia DSA: 
 
 # ssh-keygen -t dsa 
 
 Para fazer uso da chave pública, é preciso que ela seja copiada para dentro do arquivo 
/.ssh/authorized_keys do usuário que se quer utilizar a chave, no servidor. Para tal, podemos utilizar a seguinte 
linha de comando: 
 
 # ssh-copy-id -i <arquivo de chave> <usuário>@<host>: 
 
 Exemplo: 
 
 Copiando a chave pública para o servidor 10.5.1.150 para o login do usuário operador: 
 
 # ssh-copy-id -i ~/.ssh/id_rsa.pub operador@10.5.1.150: 
 
 # scp 
 
 Faz cópia de arquivos e diretórios pela rede via SSH. 
 
 Sintaxe: 
 
 # scp <opções> <origem> <destino> 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 213 
 
 Opções: 
 
 -r : modo recursivo. 
 
 -C: ativa a compactação do conteúdo durante a cópia. 
 
 Exemplos: 
 
 Copiando o arquivo backup.tgz para o diretório /tmp do host 10.0.2.2 usando para este cópia o login 
do usuário user1: 
 
 # scp backup.tgz user1@10.0.2.2:/tmp 
 
 Copiando o diretório /dados do servidor 10.0.2.2 para o diretório local /root usando o login do usuário 
user1: 
 
 # scp -r user1@10.0.2.2:/dados /root 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 214 
 
30 – SINCRONIZAÇÃO DE DATA E HORA 
 
 O Network Time Protocol é o seviço responsável 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 configuração do cliente NTP é o /etc/ntp.conf. 
 
 
 
 Na seção server é definido qual vai ser o servidor NTP a ser utilizado para a sincronização 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 seção statsdir configura um diretório onde serão armazenados os arquivos de estatísticas de 
uso do servidor (logs), mais abaixo, statistics está configurando os tipos de estatísticas que serão armazenadas 
nos logs. A seção driftfile aponta para o arquivo que vai servir como indicador de oscilação do relógio local: o 
arquivo /var/lib/ntp/ntp.drift. 
 
 Além do ntpd, deamon do NTP, o cliente ntpdate pode ser utilizado para sincronismo de data e hora 
com servidores NTP, a única providência que deve ser tomada antes é para o serviço do NTP, pois não podem 
haver dois serviços de sincronização 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 
 
 
 
http://www.pool.ntp.org/
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 215 
 
 Importante também para a manutenção de data e hora corretas no servidor é configurar corretamente 
o timezone do mesmo, para que ele possa ter e hora conforme o seu fuso horário, 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 informação do UTC (Tempo Univeral Coordenado), este informação será cruzada com o timezone do cliente e 
aí este saberá quantas horas a mais ou a menos serão necessárias para se chagar à hora relativa ao seu fuso 
horário. A modificação 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 216 
 
 Opções: 
 
 --hctosys : toma como referência a data e hora do BIOS para acertar a data e hora do sistema. 
 
 --systohc : toma como referência a data e hora do sistema para acertar a data e hora do BIOS. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 217 
 
31 – SERVIDOR X 
 
 As distribuições open-source têm cada vez mais desenvolvido sistemas operacionais parausuário final 
(desktops) de alto nível por todo o mundo, mas, muito antes de isso tudo acontecer, já existiam esforços para 
desenvolver plataformas gráficas que fossem beneficiar tanto clientes como servidores, visto que aplicações 
gráficas para servidores são 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 gráfica disponível para distribuições Linux é o Servidor X (ou Xorg), ela suporta as 
aplicações gráficas disponíveis para Linux, como gerenciadores de desktop, gerenciadores de logins, jogos, 
aplicações de escritório e editores de imagens. 
 
 O Xorg é totalmente free e também 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 configuração, que é o /etc/X11/XF86Config ou, em algumas distribuições (como o Debian), 
/etc/X11/xorg.conf. Este arquivo é dividido em seções e sub-seções, vejamos algumas seções dele: 
 
 “InputDevice” 
 Esta seção é responsável pela configuração de opções de teclado, como layout, idioma e driver e 
também de configuração de mouse. 
 
 “Files” 
 Configura o local onde estão armazenadas as fontes do servidor X. O local padrão é /usr/share/fonts. 
 
 “Device” 
 Configura opções da placa de vídeo, como driver e o nome do fabricante também. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 218 
 
 “Monitor” 
 
 Opções de monitor, como frequências horizontal e vertical, modelo e fabricante. 
 
 “Screen” 
 
 Esta seção se refere à configuração da visualização da interface gráfica. É, por exemplo, nesta seção 
que as resoluções de vídeo podem ser configuradas, como no exemplo abaixo: 
 
 
 
Onde a opção Modes representa a resolução de vídeo. 
 
 É uma prática muito comum, para que o usuário possa fazer uso do melhor de seu Hardware nas 
aplicações gráficas, a geração 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 configurações 
atualizadas de Hardware e deve ser copiado para o diretório /etc/X11, depois de ser feito um backup do 
arquivo original, é claro. 
 
 
 
 O maior benefício de criar um novo arquivo de configuração, sem dúvida, é o reconhecimento do 
driver de vídeo original, o que habilita o uso de todos os recursos gráficos do adaptador de vídeo. 
 
 A variável DISPLAY 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 219 
 
 Com certeza, parte integrante de alta importância do servidor X é a definição do valor da variável 
DISPLAY. Esta variável é responsável por direcionar aplicações gráficas para o display correto e é muito comum 
de ela ser personalizada em caso de vários monitores serem utilizados, neste caso, a variável display pode 
definir para qual deles a aplicação gráfica será enviada. Em caso de programas de acesso remoto, como VNC, 
por exemplo, utilizarem o acesso assistido à interface gráfica, é preciso que o cliente determine qual display ele 
vai acessar. Vamos à sintaxe dessa variável: 
 
 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 padrão é o localhost e o uso de ‘:’ é obrigatório nesta variável, portanto, se o que o usuário quer 
é enviar o resultado das requisições gráficas para o display e tela padrão do mesmo host, basta atribuir 
valor:0.0 à variável da seguinte forma: 
 
 # export DISPLAY=:0.0 
 
 O protocolo XDMCP 
 
 Este protocolo de X tem, entre outras cararterísticas, o suporte a login remoto via interface gráfica. 
Para tal, é preciso que o daemon SSHD esteja presente e que no arquivo de configuração do mesmo, o 
redirecionamento para X11 esteja habilitado. 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 220 
 
31.1 - Gerenciadores de Desktop 
 
 Assim que o Xorg é instalado, para acessar uma sessão gráfica é preciso utilizar o seguinte comando: 
 
 # startx 
 
 Ao iniciar uma sessão gráfica apenas com o xorg instalado, o usuário vai contar apenas com um 
terminal para que ele possa, por ele, executar aplicações gráficas. Isso com certeza não atende as necessidades 
de um usuário final, é necessário que o Xorg também possar contar com um gerenciador de desktop, pois este 
gerenciador vai ser o responsável pelos menus, janelas, temas e efeitos de interface gráfica. Os sistemas Linux 
contam com uma grande variedade de gerenciadores de desktop disponíveis para a instalação, alguns exemplos 
são: 
 
 GNOME 
 KDE 
 XFCE4 
 LXDE 
 BLACKBOX 
 FLUXBOX 
 OPENBOX 
 AFTERSTEP 
 
 
 
 Os gerenciadores que, com certeza, ficaram com a maior fatia de percentual de adeptos são GNOME e 
KDE, realmente os dois possuem estruturas de gerenciamento de diretórios e arquivos muito atrativos para o 
usuário final. Os dois também contam com vários aplicativos que facilitam a vida do usuário, como exemplo o 
programa K3B, que grava e cria imagens de DVDs/CDs. Outro grande atrativo é a quantidade de efeitos gráficos 
providos pelo plugin Compiz Fusion. Um grande ponto alto dos gerenciadores de desktop Linux é a facilidade de 
manuseio de várias áreas de trabalho ao mesmo tempo, este recurso pode ser utilizado com grande frequência 
por profissionais da área de editoração gráfica, pois invariavelmente eles precisam abrir muitas aplicações 
gráficas ao mesmo tempo. Com os efeitos do Compiz, é possível tornar esta interação entre desktops muito 
mais atrativa aos olhos dos usuários. 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 221 
 
 
 
 
 É possível determinar qual vai ser o gerenciador de desktop padrão do usuário criando o arquivo 
~/.xinitrc ou ~/.xsession, que deverá ter como conteúdo a expressão exec <sessão do desktop manager>. 
Desta forma, se o usuário 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 usuário executar o 
script startx ou fizer logon no gerenciador de login escolhido. Como a maioria das distribuições conta com a 
possibilidade de instalação de vários gerenciadores de desktop, este recurso pode ser utilizado para que cada 
usuário trabalhe com o gerenciador que quiser. 
 
31.2 - Gerenciadores de login 
 
 Até agora percebemos que Servidor X e gerenciador de desktop são duas coisas totalmente diferentes, 
a pesar de o segundo depender da existência do primeiro para funcionar, mas em caso de o sistema precisar 
iniciar já em uma interface gráfica direto sem a necessidade de executar o programa startx, como pode ser 
feito? É aí que entram os gerenciadores de login, eles atuam como serviços do processo INIT e, portanto, 
podem ser ativados logo após o boot do sistema. Um gerenciador de login autentica o usuário para que possa 
ser iniciada uma sessão por ele. É expressamente não recomendável o login com usuário root na interface 
gráfica e, por este motivo, a maioria dos gerenciadores de login vem com o login pelo root desabilitado. 
 Os gerenciadores de desktop mais importantes são GDM, KDM e XDM, eles também são “free” e 
open-source. Para definir o gerenciador de login padrão do sistema, basta incluir o caminho do binário do 
mesmo em /etc/X11/default-display-manager, como no exemplo abaixo: 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 222Neste caso, administrador configurou o gerenciador de login para o GDM. 
 
 A troca do gerenciador de login padrão pode ocorrer manualmente pelo arquivo ou também pode ser 
feita pela linha de comando abaixo: 
 
 # dpkg-reconfigure gdm (ou kdm ou xdm) 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 223 
 
 Se o sistema tem algum gerenciador de login mas o administrador não quer que o sistema inicialize por 
ele, é só remover os links simbólicos do GDM/KDM/XDM de dentro dos diretórios /etc/rc<runlevel>.d, o 
método mais fácil de se fazer isso seria: 
 
 # update-rc.d -f gdm remove 
 
 Desta forma, o GDM fica ainda instalado, porém não é carregado pelo processo INIT. 
 
 XDM 
 
 O XDM é o gerenciador de login padrão para distribuições Linux, ele vem com um conjunto 
interessante de de arquivos de configuração que vão incrementar o uso do servidor X. 
 
 Xresources : este arquivo configura parâmetros de aparência do gerenciador de login. 
 
 Xsession : define qual gerenciador de janelas vai ser ativado após a autenticação 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 padrão para todos os usuários, caso contrário, o arquivo .xsession deve ser criado 
dentro do diretório home do usuário contendo o seu gerenciador de janelas (o ~/.xinitrc terá o mesmo efeito . 
 Xaccess: define conexões recebidas de hosts ao servidor X. 
 
 Xservers : faz o controle e a associação de displays a hosts específicos. Para acessos via SSH, a opção “-
nolisten tcp” não deve ser removida, pois o SSH não usa o protocolo TCP para direcionar conexões ao servidor 
X. 
 xdm-config : arquivo de configuração de arquivos e programas utilizados palo XDM para interação com 
o usuário, como por exemplo, o arquivo de log de erro de login e o arquivo de pid do processo. 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 224 
 
32 – SERVIÇO DE IMPRESSÃO 
 
 O servidor padrão para impressão em distribuições Linux ou Unix é o CUPS (Common Unix Print 
Server). Ele usa o serviço IPP (Internet Print Protocol), na porta 631 TCP/UDP para conexões. O pacote de 
instalação do CUPS é o cupsys e os pacotes foomatic-* são importantes nesta composição, pois trazem alguns 
programas que vão facilitar a administração do servidor. 
 
 Os drivers para impressoras no CUPS têm extensão. PPD e praticamente todos os fabricantes já contam 
com drivers de suas impressoras também na versão Linux (o servidorjá vem com muitos deles em modo nativo). 
 
 É possível também que usuário do Windows utilizem impressoras compartilhadas pelo CUPS, o que 
torna o servidor multi-plataforma. 
 
 Vamos à prática: 
 
 # apt-get install cupsys foomatic-* -y 
 
 Após a instalação, é preciso incluir as impressoras no arquivo /etc/cups/printers.conf, este 
procedimento pode ser feito através do assistente, que pode ser acessado por qualquer Web Browser através 
do endereço http://localhost:631 (a interface lo deve estar ativa). 
 
 
 
Algumas opções ao lado podem ser utilizadas também, como compartilhamento de todas as 
impressoras criadas pelo host, administração remota, aceitar impressão pela rede, usar autenticação Kerberos, 
etc. O arquivo de configuração do CUPS é o /etc/cups/cupsd.conf. 
 
 Vamos ter uma visão geral do arquivo /etc/cups/printers.conf: 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 225 
 
 
 
 
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 expressão Shared Yes indica que ela está compartilhada 
na rede, o que proporciona aos clientes Linux o mapeamento automático da impressora, sem precisar de 
intervenção manual. Este arquivo proporciona ainda a limitação de impressão por páginas, por tamanho e por 
tempo. 
 
32.1 - Comandos de impressão 
 
 
Linux BSD Apliacação 
lp Lpr Imprime um arquivo em uma impressora 
lpstat Lpq Mostra a fila de impressão de uma impressora 
cancel Lprm Exclui um trabalho da fila de impressão 
 
Exemplos: 
 
 Imprimindo o arquivo /etc/passwd na impressora IMPRESSORA_LINUX: 
 
 # lp /etc/passwd -d IMPRESSORA_LINUX 
 
 Verificando a fila: 
 
 # lpstat 
 
 Excluindo o job nº1: 
 
 # cancel 1 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 226 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 227 
 
33 – LINGUAGEM SQL 
 
 Esta é uma das linguagens de manipulação 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 também conta em seus repositórios com o PostgreeSQL, que também 
é um ótimo banco de dados. Vamos à instalação do MySQL: 
 
 # apt-get install mysql-server –y 
 
 Para acessar o servidor MySQL, é preciso utilizar o comando mysql, especificando qual usuário vai 
acessar com o parâmetro -u e pedindo senha com o parâmetro -p (para sessões autenticadas): 
 
 # mysql -u root –p 
 
 Após este comando, um prompt de comandos do servidor MySQL vai ser disponibilizado para que o 
usuário 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: não faz diferença 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 228 
 
 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 específicos. 
 
 SELECT <CAMPOS> FROM <TABELA> WHERE <CONDIÇÃO> 
 
 Seleciona campos de uma tabela específica onde os registros atendam à condição imposta pelo 
WHERE. O WHERE não será necessário se o caso for exibir todos os registros da tabela. 
 
 UPDATE <TABELA> SET <RELAÇÃO CAMPO/VALOR> WHERE <CONDIÇÃO> 
 Atualiza campos de uma tabela que se encaixem nas condições impostas pelo WHERE. Neste caso, o 
WHERE também não vai ser necessário se o programador quiser atualizar todos os campos da tabela. 
 
 DELETE FROM <TABELA> WHERE <CONDIÇÃO> 
 
 Apaga registros de uma tabela segundo uma condição imposta pelo WHERE. Se o programador for 
excluir todos os registros, basta não especificar condição 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 primária o campo id, que é também de 
preenchimento automático e um número inteiro, ou seja: este campo não precisará ser preenchido. Quanto ao 
campo nome, o tipo VARCHAR significa que ele é um campo de, no máximo 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 229 
 
 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 diretório onde ficam localizados os bancos de dados do 
servidor MySQL-Server é o /var/lib/mysql e é importantíssimo que haja políticas de backup e arranjos de discos 
que possibilitem disponibilidade e flexibilidade aos bancos. 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 230 
 
34 – MTA 
 
 Um Mail Transfer Agent tem a incumbência de enviar mensagens de correio eletrônico, bem como 
garantir que elas cheguem ao destinatário 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 não 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. Também há casos em que o SMTP utiliza a porta 465, isto 
acontece por causa do incremento do SSL neste protocolo, para dar mais segurança à conexão. Existem vários 
MTAs disponíveis 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 configuração e 
constante evolução com o passar do tempo. 
 
 Um serviço de e-mail completo possui três agentes: MTA, MDA e MUA e vamos tratar aqui também, de 
forma introdutória, os outros 2 não mencionados: 
 
 Mail Delivery Agent é o responsável por receber os e-mails e os encaminhar aos diretórios corretos. Os 
protocolos que trabalham para que esta função seja possível são POP3 e IMAP, nas portas 110 e 143, 
respectivamente. O MDA também é responsável por autenticar o usuário, 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 história toda, ou seja: a ferramenta utilizada para leitura e envio 
de e-mails por parte dos usuários. Este componente de serviço 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 configuração o 
/etc/mail/sendmail.cf, que é um tanto quanto hostil a qualquer administrador que não tem o conhecimento do 
mesmo. Com certeza um legado muito bom do Sendmail é o arquivo /etc/aliases, que funciona como um 
mapeamento de diversos endereços para um “alias”, podendo servir para a criação de um novo grupo de 
distribuição de mensagens como também servir para que um usuário ao invés de receber mensagens, ele seja 
apenas um alias para o usuário administrador. 
 
 
 
 
Quando um novo alias é criado, não há nenhuma necessidade de o daemon do MTA ser reiniciado ou seu 
arquivo de configuração ser carregado novamente, basta que o comando newaliases seja executado. 
 
 *Obs: A linha de comando sendmail -bi também reinicia um banco de dados de aliases, assim como o 
comando newalises. 
 
 Postfix 
 Um dos mais respeitados servidores de e-mail é também o de mais fácil compreensão para o 
administrador. Seu arquivo de configuração é o /etc/postfix/main.cf. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 231 
 
 
 
 
 
 O arquivo de configuração do Postfix possui algumas variáveis 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 domínio designado pelo servidor DNS. 
 
 mydestination : locais para onde as mensagens podem ser enviadas. 
 
 relayhost : este campo é de extrema importância pois ele configura quais hosts pode enviar e-mails 
através 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 atuação do servidor. Caso o localhost não seja um componente desta variável, o 
servidor não será capaz de enviar e-mails para o localhost. 
 
 No ato da instalação do postfix o administrador vai se deparar com uma pergunta bem interessante: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 232 
 
 
 
 
 É importante que o smarthost esteja ativado, pois este tipo de host inteligente permite que o MTA não 
precise de um DNS para servir como origem de e-mails, podendo ser o próprio hostname do servidor o nome do 
host de origem para a mensagem. 
 
 O diretório padrão de recebimento de e-mails comum a todos os usuários é o /var/mail, onde as 
mensagens serão encontradas em modo de arquivos com os nomes dos usuários destinatários. 
 
 
 
 O arquivo ~/.forward 
 
 Este arquivo, que deverá estar dentro do diretório pessoal do usuário, pode conter uma lista de 
endereços para onde todo e-mail enviado pelo usuário vai ser redirecionado. Esta medida é bem comum em 
servidores de e-mail onde os e-mails dos usuários precisam ser monitorados por pessoas de outros 
departamentos. 
 
34.1 - Comandos de MTA 
 
 # mail 
 
 Envia e-mais em linha de comando. 
 
 Opções: 
 
 -s : “subject” - é o assunto do e-mail. 
 -c : com cópia. 
 -b : “blind copy” - cópia oculta. 
 
 No caso do comando mail, tanto uma mensagem quanto um conteúdo de um arquivo podem ser 
enviados por e-mail. Seguem os exemplos: 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 233 
 
 
 
 
Neste caso acima, o e-mail vai ser enviado para aluno@mcury.com.br, com cópia 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 conteúdo de arquivos de 
texto por e-mail, o que pode facilitar muito a criação de rotinas que possam disparar e-mails em caso de 
situações adversas para o servidor, como alguns usuários 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 234 
 
35 – FIREWALL IPTABLES 
 
 Um dos mais importantes componentes de uma estrutura de segurança de rede em uma estrutura de 
TI é o firewall, ele tem a função tratar os pacotes de rede que vão para o host, que saem do host e que são 
redirecionados pelo host, assim como realizar redirecionamentos e mascaramentos de interfaces de rede. No 
caso do Linux, o Netfilter é o firewall desde a concepção do código, só que os programas de manipulação do 
firewall foram sendo modificados em suas sintaxes, funcionalidades e nomes também, ficando definidos desta 
forma: 
 
 
Versão 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 são as ramificaçõesdo firewall que determinam que tipo de uso tenha as regras a serem 
criadas, dentro destas tabelas, existem as chains, que são locais dentro da tabela onde vão ser armazenadas as 
regras. Geralmente as chains são interpretadas como o tipo de pacote a ser afetado pelas regras criadas, 
portanto, se o administrador quiser criar uma chain, é bom que mantenha o padrão. 
 
 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 começar 
a criar regras, para que acontecimentos indesejáveis não aconteçam. 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 têm o firewall como destino. 
 
 OUTPUT 
 Armazena regras de saída de pacotes que têm o firewall como origem. 
 
 FORWARD 
 Armazena regras de pacotes que são 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 tradução de endereços de rede (NAT) em modo SNAT (Source NAT) e DNAT (Destination NAT). As 
chains da tabela NAT são 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 são utilizadas pela tabela Mangle. 
 
35.1 - Comandos do Firewall 
 
 # iptables 
 
 Manipula as regras de tabelas e chains do firewall. 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 235 
 
 Opções: 
 
 -A <CHAIN>: Cria uma regra no final da chain informada. 
 
 -I : cria uma regra prioritária 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 opção -L, habilita a consulta numérica apenas, não permitindo a 
consulta de nome por parte do DNS. 
 
 --line-numbers : se utilizada em conjunto com a opção -L, numera as regras em ordem de prioridade. 
 
 -t : especifica a tabela (filter, nat, mangle), se omitida a opção a filter é a tabela padrão. 
 
 -P : modifica a política padrão de uma chain. 
 
 -p : indica o protocolo. 
 
 --dport : indica porta de destino do pacote. 
 
 --sport : indica porta de origem do pacote. 
 
 -j : indica a ação a ser tomada pela regra. 
 
 -m : especifica um módulo 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 saída. 
 
 A tabela adotada como padrão pelo comando iptables é a filter, portanto, é desnecessário declará-la 
nas opções, mas, para os mais metódicos, aí vai o primeiro exemplo: 
 
 Criando regra de negação 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 conexão, ficando o terminal onde 
ocorreu a solicitação travado até que este timeout ocorra, se o acesso for em um Web Browser, o mesmo vai 
tentar carregar a página até dar o tempo limite de espera para a conexão. Outro alvo possível é o ACCEPT, onde 
o pacote é aceito. 
 
 Mudando a política padrão da chain FORWARD para DROP: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 236 
 
 # iptables -P FORWARD DROP 
 
 É importante que o firewall seja o menos permissivo possível e uma boa prática para que isso aconteça 
é tornar a política padrão de tratamento de pacotes para DROP (negação de acesso) e liberar pacotes, hosts e 
redes conforme a política individual para cada um. 
 
 Permitindo que hosts da rede 10.12.1.0/24 tenham acesso a www.mcury.com.br através 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 cenário: 
 
 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 
prática de segurança para bloqueio ou aceitação de acesso, visto que o MAC é fixo para cada interface de rede 
e apenas um administrador de sistema pode emular um endereço MAC no sistema. Vamos ver um exemplo de 
uma regra de aceitação 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 
 
 Tão importante quanto criar as regras de um Firewall é mantê-las ativas por quanto tempo for 
necessário. Acontece que o iptables não utiliza nenhum arquivo de configuração, as suas regras são 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 237 
 
implementadas e salvas em memória RAM, para que as regras sejam salvas e restauradas, é preciso utilizar os 
comandos abaixo: 
 
 # iptables-save 
 
 Exibe as regras do iptables na saída padrão. 
 
 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 conteúdo do arquivo: 
 
 # cat ~/regras.fw 
 
 
 
 # iptables-restore 
 
 Restaura as regras do iptables através da entrada padrão. 
 
 SIntaxes: 
 
 # iptables-restore < <arquivo> 
 
 Exemplo: 
 
 Instruindo o script /etc/rc.local a executar a recuperação das regras através do arquivo 
/root/regras.fw: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 238 
 
 # vim /etc/rc.local 
 
 
 
 Scripts personalizados de Firewall 
 
 Para dar mais praticidade ao uso do iptables, é necessário 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 através de uma lista em modo texto 
 
 Antes de tudo, vamos criar a lista de MACs que vão ser contemplados com o script: 
 
 # vim ~/lista_MAC.txt 
 
 
 
Vamos ao script agora: 
 
 #vim ~/libera_MAC.sh 
 
 
 
O script acima está instruíndo a liberar acesso a qualquer protocolo e qualquer porta do host 10.12.1.1 
para os endereços MAC da lista lida pela estrutura for (uma linha por vez). A lista contém 5 MACs, mas 
poderiam ser 100 e, neste caso, ficaria cansativo digitar todas essas regras a cada aplicação de filtro. 
 
É importante lembrar também que a política padrão da chain FORWARD já estava como DROP, pois se 
ele estivesse como ACCEPT, não teria razão e liberar MACs, já que todos por padrão já estariam liberados. 
 
 Executando o script: 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 239 
 
 # . ~/libera_MAC.sh 
 
 Vamos ver como ficaram as regrasde liberação de MACs: 
 
 
 
 2º Script - Interagindo na criação de regras de aceitação 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 criação da regra foi feita um teste simples da 
variável 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 LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 240 
 
 
 # iptables -L 
 
 
 
 É importante reparar que no campo source sempre aparece o nome SERVER1 ao invés 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 assoiciação de nome com IP e nomeia o host, se for o caso. 
 
 Também é possível, com um aprofundamento maior dos conhecimentos em Shell Script, fazer com que 
um script de um Firewall Iptables seja acessível por um Web Browser qualquer pois, desta forma, de qualquer 
distrribuição o Firewall poderá ser acessado. 
 
 Vejamos um exemplo de script de firewall acessível pelo Browser: 
 
 
 
 
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR 
MANUAL DE TREINAMENTO M.CURY 
LINUX SYSTEM ADMINISTRATOR PÁGINA 241 
 
 Para construir este programa foi necessário 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.

Mais conteúdos dessa disciplina