Вы находитесь на странице: 1из 168

Apostila

Linux

Por Fbio Rodrigues dos Santos

SENAC-RR/2011

Sumrio
Indice de Figuras ................................................................................................................................................................ 8
Histria e introduo..................................................................................................................................................... 10
Software Livre ............................................................................................................................................................. 11
Por que Open Source (Cdigo Aberto) no um software livre........................................................ 11
Movimento GNU ......................................................................................................................................................... 12
Licenas Livres ............................................................................................................................................................ 12
Principais ambientes de interao...................................................................................................................... 13
GNOME ...................................................................................................................................................................... 13
KDE.............................................................................................................................................................................. 13
Sistema Bsico- Console ..................................................................................................................................... 14
Principais Distribuies .......................................................................................................................................... 14
Debian ........................................................................................................................................................................ 14
Ubuntu ....................................................................................................................................................................... 15
Red Hat ...................................................................................................................................................................... 15
CentOS........................................................................................................................................................................ 16
Padronizao LSB.................................................................................................................................................. 16
Instalando Servidores Linux ...................................................................................................................................... 17
Caractersticas dos Servidores ........................................................................................................................ 17
Layout de particionamento.................................................................................................................................... 18
Viso geral do sistema de arquivos (parties)........................................................................................ 18
Decidindo o particionamento........................................................................................................................... 19
Gerenciador de Inicializao ................................................................................................................................. 20
LILO Linux Loader ............................................................................................................................................. 20
GRUB Grand Unified Bootloader ................................................................................................................. 20
Instalando o Debian .................................................................................................................................................. 20
Particionamento .................................................................................................................................................... 22
Sistemas de arquivos e Estrutura de diretrios ................................................................................................. 28
Sistemas de arquivos ........................................................................................................................................... 28
Estrutura de diretrios ....................................................................................................................................... 29
Descrio da rvore de diretrios .................................................................................................................. 30
SENAC-RR/2011

Instroduo ao Shell ...................................................................................................................................................... 32


Variveis ........................................................................................................................................................................ 32
Variveis de ambiente ......................................................................................................................................... 33
Scripts executados no login do usurio ............................................................................................................ 34
Variveis pr-definidas no ambiente do usurio ..................................................................................... 34
Shell scripts .................................................................................................................................................................. 34
Estrutura de um script ............................................................................................................................................. 35
Shells de execuo .................................................................................................................................................... 36
Recebendo parmetros pela linha de comando ............................................................................................ 36
Construo condicional ........................................................................................................................................... 37
Permisses e propriedades de arquivos ............................................................................................................... 40
Conceito de permisso ............................................................................................................................................. 40
Tipos de arquivos e permisses ...................................................................................................................... 40
Modos Octal e Textual .............................................................................................................................................. 41
Textual ....................................................................................................................................................................... 41
Octal ............................................................................................................................................................................ 42
Modificando proprietrios e grupos .................................................................................................................. 42
chmod......................................................................................................................................................................... 42
chgrp ........................................................................................................................................................................... 44
Permisses padro (umask) ............................................................................................................................. 45
Permisses em diretrios .................................................................................................................................. 45
Permisses especiais ........................................................................................................................................... 46
Comandos e utilitrios .................................................................................................................................................. 49
Iniciando e reiniciando o computador ......................................................................................................... 49
Troca de usurios .................................................................................................................................................. 49
Teclas de atalho ..................................................................................................................................................... 50
Ajuda........................................................................................................................................................................... 50
Arquivos e diretrios ........................................................................................................................................... 51
Navegao ................................................................................................................................................................ 54
Busca de arquivo ................................................................................................................................................... 55
Compactando e Descompactando arquivos e diretrios ...................................................................... 56
Metacaracteres ....................................................................................................................................................... 58
Edio de arquivos texto com VI/VIM ................................................................................................................... 62

SENAC-RR/2011

vi ................................................................................................................................................................................... 62
vim ............................................................................................................................................................................... 62
Gerenciamento de pacotes com APT.................................................................................................................. 64
Expresses Regulares............................................................................................................................................... 65
O circunflexo ^........................................................................................................................................................ 67
O cifro $ ................................................................................................................................................................... 67
O colchete [] ............................................................................................................................................................. 67
O ponto . .................................................................................................................................................................... 68
As chaves { }............................................................................................................................................................. 69
O curinga .* (ponto asterstico) (AND) ......................................................................................................... 70
O or | (barra em p) (OR)................................................................................................................................... 70
Os repetidores ? + * .............................................................................................................................................. 71
Lista de negao [^] ............................................................................................................................................. 71
Intervalo de lista [-] .............................................................................................................................................. 71
Criao e gerenciamento de usurios e grupos .................................................................................................. 74
Gerenciamento ....................................................................................................................................................... 77
Comandos de gernciamento de senhas sombra ..................................................................................... 84
Inicializao do sistema e runlevels........................................................................................................................ 88
Processo Init................................................................................................................................................................. 88
SysV init ......................................................................................................................................................................... 88
Entendendo os links simblicos do diretrio /etc/rc.d/rc[0-6].d.................................................... 88
Inicializando servios .......................................................................................................................................... 90
Desabilitando e Habilitando scripts na inicializao .............................................................................. 90
Perdeu a senha de root (superusurio)? ..................................................................................................... 92
No LILO ...................................................................................................................................................................... 92
No GRUB.................................................................................................................................................................... 92
Gerenciamento de Processos e Servios ............................................................................................................... 95
Processos ....................................................................................................................................................................... 95
Componentes de um processo ......................................................................................................................... 95
Execuo de um processo .................................................................................................................................. 96
Classificao dos processos .............................................................................................................................. 97
Tipos de processos .................................................................................................................................................... 97
Processos dinmicos ............................................................................................................................................ 97

SENAC-RR/2011

Processos em lote (batch).................................................................................................................................. 98


Processos Daemons (servios) ........................................................................................................................ 98
Gerenciamento de tarefas (jobs) ......................................................................................................................... 98
Comandos de gerenciamento de processos ............................................................................................... 98
Registro de eventos (Syslog) ....................................................................................................................................105
Mensagens do sistema ...........................................................................................................................................105
Arquivo de configurao ..................................................................................................................................106
Arquivos de logs ..................................................................................................................................................108
Exemplo de configurao /etc/syslog.conf ..............................................................................................109
Mensagens de log remoto ................................................................................................................................110
Agendamento de tarefas contab e at .................................................................................................................112
Tarefas automatizadas...........................................................................................................................................112
Inicializao do daemon atd ...........................................................................................................................114
O servio crond ....................................................................................................................................................114
crontab.....................................................................................................................................................................115
logrotate ..................................................................................................................................................................116
Sistemas de autenticao...........................................................................................................................................121
Contas e senhas.........................................................................................................................................................122
Conta de root .........................................................................................................................................................122
Autenticao bsica no Linux: como ela funciona ......................................................................................123
Usando o chage para definir o envelhecimento da senha ..................................................................124
A arquitetura e configurao do PAM ..................................................................................................................125
PAM ................................................................................................................................................................................125
PAM no Linux .............................................................................................................................................................126
pam_securetty ......................................................................................................................................................127
pam_pwdb ..............................................................................................................................................................128
pam_nologin ..........................................................................................................................................................129
pam_cracklib .........................................................................................................................................................129
pam_console ..........................................................................................................................................................131
Usando LDAP juntamente com PAM ................................................................................................................132
Arquitetura do kernel do Linux, reconfigurao e recompilao .............................................................134
Componentes do kernel ........................................................................................................................................134
O kernel e seus mdulos...................................................................................................................................134

SENAC-RR/2011

Verses do kernel................................................................................................................................................135
Sufixos do kernel .................................................................................................................................................135
Localizao do kernel no sistema .................................................................................................................136
Imagem e documentao do kernel.............................................................................................................136
Compilando um kernel ..........................................................................................................................................136
Configurao .........................................................................................................................................................137
Compilao.............................................................................................................................................................138
Instalao................................................................................................................................................................139
Initial Ramdisk .....................................................................................................................................................139
Atualizando o bootloader ................................................................................................................................140
Sistema de Impresso .................................................................................................................................................142
Configurao de uma impressora no Cups ....................................................................................................142
Arquivos de configurao CUPS .........................................................................................................................142
Compartilhando uma impressora no Cups no Debian ..............................................................................142
Configurando um computador cliente CUPS............................................................................................144
Backups .............................................................................................................................................................................146
Polticas de Backup .................................................................................................................................................146
Backup Total .........................................................................................................................................................146
Backup Incremental ...........................................................................................................................................147
Backup Diferencial..............................................................................................................................................147
Conceitos de TCP/IP ferramentas e diagnsticos ........................................................................................149
Camadas dos protocolos TCP/IP .......................................................................................................................151
Comandos de Rede ..................................................................................................................................................151
Para compartilhar a conexo..........................................................................................................................153
Criando um servidor de DNS BIND9 .................................................................................................................154
Servidor DNS ..............................................................................................................................................................154
Instalao................................................................................................................................................................154
Configurao ..............................................................................................................................................................154
DHCP Dinamic Host Control Protocol ...............................................................................................................157
Instalando um servidor WEB com Apache2 ......................................................................................................158
Servidor proxy Squid ...............................................................................................................................................159
Monitoramento do ambiente de rede com Cacti..............................................................................................161
cacti ................................................................................................................................................................................161

SENAC-RR/2011

Obtendo e instalando o Cacti...............................................................................................................................161


Configurando o Cacti ..............................................................................................................................................162
Acessando o Cacti pela primeira vez................................................................................................................163
Utilizao segura do SSH acesso remoto .........................................................................................................164
Bibliografia ......................................................................................................................................................................168

SENAC-RR/2011

NDICE DE FIGURAS
Figura 1 - PDP-7 .............................................................................................................................................................. 10
Figura 2 - Gnome ............................................................................................................................................................. 13
Figura 3 - KDE .................................................................................................................................................................. 13
Figura 4 - Console ........................................................................................................................................................... 14
Figura 5 - Ambiente de trabalho............................................................................................................................... 18
Figura 6 - Boot Debian .................................................................................................................................................. 21
Figura 7 - Escolher Idioma .......................................................................................................................................... 22
Figura 8 - Configurao da Rede............................................................................................................................... 22
Figura 9 Mtodo de Particionamento ................................................................................................................. 23
Figura 10 - Esquema de Particionamento ........................................................................................................... 24
Figura 11 - Seleo do fuso horrio......................................................................................................................... 24
Figura 12 - Espelho de Redde .................................................................................................................................... 25
Figura 13 - Informao sobre proxy ....................................................................................................................... 25
Figura 14 - Seleo de software ................................................................................................................................ 26
Figura 15 - Instalao do GRUB ................................................................................................................................ 26
Figura 16 - Tela de login em modo Texto ............................................................................................................. 27
Figura 17 - Script para executar programas na inicializao ....................................................................... 91
Figura 18 - Execuo de um processo .................................................................................................................... 97
Figura 19 - Sintaxe do arquivo syslog.conf.........................................................................................................106
Figura 20 - Verso do Kernel Linux .......................................................................................................................135
Figura 21 - A interface de configurao ncurses a mais simples e a mais utilizada para
configurao do kernel. ..............................................................................................................................................137
Figura 22 - A interface de configurao do kernel feita em Qt...................................................................137
Figura 23 - A interface de configurao do kernel feita em Gtk. ...............................................................138
Figura 24 - Sugesto de Poltica de Backup .......................................................................................................148
Figura 25 Diagrama do Protocolo TCP/IP ......................................................................................................151
Figura 26 - Camadas do Protocolo TCP/IP .........................................................................................................151
Figura 27 - Logando no servidor via SSH ............................................................................................................165

SENAC-RR/2011

LINUX FUNDAMENTOS

SENAC-RR/2011

HISTRIA E INTRODUO
Em meados dos anos 1960 um grupo de trabalho formado pelas empresas Bell Telephone Labs
da AT&T, General Eletric e liderado pelo MIT trabalharam em um sistema operacional chamado
MULTCS (Multiplexed Information and Computing Service) para criar um sistema operacional
para grandes computadores e capaz ser utilizado por vrios usurios simultaneamente.
O projeto do MULTICS no foi pra frente, mas as idias utilizadas em sua criao estavam bem
frente do seu tempo, tornando-se uma influencia importante para os sistemas operacionais
modernos.
Em 1969 Ken Thompson e Dennis Ritchie da Bell Labs aproveitam a experincia adquirida no
projeto MULTICS e escrevem um sistema com um nico proposito de jogar space war em um
DEC PDP-7 com 4k de RAM.
Devido s pesadas limitaes da mquina, o
sistema operacional deveria ser extremamente
enxuto e otimizado, de forma a extrair o
mximo de desempenho e consumir o mnimo
possvel de memria. A combinao da
criatividade
dos
desenvolvedores,
a
necessidade e as limitaes impostas pelo
equipamento, resultou em um sistema
bastante otimizado e elegante. Muitas das
idias surgidas nessa poca continuam sendo
usadas at hoje.

Figura 1 - PDP-7

Sem que ningum saiba o motivo, um de seus


colegas de trabalho apelidou esse sistema de UNICS que viria a ser chamado posteriormente de
UNIX (UNiplexed Information and Computing Service) em contrapartida ao MULTICS.
Naquela poca a AR&T fornecia cpias do cdigo fonte de seu sistema operacional s
universidades, sem custo algum, pois popularizava seus sistemas no meio acadmico.
O Unix evoluiu durante a dcada de 1970, passando a ser usado em cada vez mais equipamentos
e ganhando mais recursos. Quase sempre ele era usado em aplicaes "srias", incluindo
instalaes militares, bancos e outras reas onde no existe margem para falhas. Devido a tudo
isso, o sistema se tornou muito robusto e estvel.
Andrew S. Tanenbaum desenvolveu o Minix baseiado no padro POSIX (Portable Operation
System Interface) do UNIX que por sua vez posteriormente veio a ser a base dos estudos de
Linus Torvalds, um Finlandes que estudava na Universidade de Helsink. Sua intenso foi adaptar
o sistema de Tanenbaum para seu equipamento e acrescentar-lhe algumas funcionalidades
extras. Seu projeto deu origem a um novo kernel e distribudo na internet e incentivo a qualquer
pessoa modifica-lo e adapta-lo a suas necessidades. Em pouco tempo o resultado veio em forma
de correes e novos recursos, dando origem ao kernel do Linux.
O Linux possui trs caractersticas principais:

SENAC-RR/2011

1. multitarefa e multiusurio, baseia-se no padro POSIX oferecendo compatibilidade


com todos os aplicativos desenvolvidos pelo projeto GNU da FSF (Free Software
Fundation).
2. compatvel com vrios processadores, entre eles o x86, x64, PPC, S/390 e Alpha entre
outros.
3. Est publicado sob a licena GPL da FSF garantindo que possa ser utilizado para
qualquer fim em qualquer ambiente de trabalho.

SOFTWARE LIVRE
A Free Software Fundation atribui quatro caractersticas a sistema para que o mesmo possa ser
considerado Livre:
1. Liberdade de execuo do programa para qualquer fim, pessoal ou comercial.
2. Liberdade de estudo do cdigo fonte que deve ser disponibilizado a qualquer pessoa.
3. Liberdade para modificar e distribuir o sistema a qualquer pessoa de forma que a
comunidade se beneficie dos seus avanos.
4. Liberdade para copiar e redistribuir o programa a amigos e conhecidos, sem que seja
necessrio qualquer nus para isso.
Isso nos leva a concluso de que nem todo o software gratuito pode ser considerado livre.

POR QUE OPEN SOURCE (CDIGO ABERTO) NO UM SOFTWARE LIVRE


Por Richard Stallman
Quando falamos em "software livre", queremos dizer que respeita as liberdades dos usurios
essenciais: a liberdade de execut-lo, para estudar e alter-lo, e para redistribuir cpias, com ou
sem alteraes. Esta uma questo de liberdade, no preo, por isso pense "liberdade de
expresso", no "cerveja grtis".
Estas liberdades so de vital importncia. Eles so essenciais, no apenas por causa dos
utilizadores individuais, mas para a sociedade como um todo, porque eles promovem a
solidariedade social, isto , partilha e cooperao. Eles se tornam ainda mais importante como a
nossa cultura e da vida atividades so cada vez mais digitalizado. Em um mundo de sons digitais,
imagens e palavras, o software livre torna-se cada vez mais essencial para a liberdade em geral.
Dezenas de milhes de pessoas ao redor do mundo j utilizam o software livre; as escolas
pblicas de algumas regies da ndia e Espanha agora ensinam todos os alunos a usar o sistema
operacional livre GNU / Linux. A maioria destes usurios, no entanto, nunca ter ouvido falar das
razes ticas pelas quais desenvolveu este sistema e construiu a comunidade de software livre,
porque hoje em dia este sistema e da comunidade so mais frequentemente mencionado como
"open source", atribuindo-lhes uma filosofia diferente em que essas liberdades so raramente
mencionados.
O movimento software livre tem feito campanhas para a liberdade dos usurios de
computadores desde 1983. Em 1984 lanamos o desenvolvimento do sistema operacional livre
GNU, para que pudssemos evitar os sistemas operacionais nonfree que negam a liberdade a
seus usurios. Durante a dcada de 1980, desenvolvemos a maioria dos componentes essenciais
do sistema e projetou a GNU General Public License (GNU GPL) para liber-los sob uma licenaprojetado especificamente para proteger a liberdade para todos os usurios de um programa.
Nem todos os usurios e desenvolvedores de software livre concordam com os objetivos do
movimento do software livre. Em 1998, uma parte da comunidade de software livre abandonou
SENAC-RR/2011

o movimento e comeou a lutar em nome de "cdigo aberto". O termo foi originalmente


proposto para evitar um possvel equvoco do termo "software livre", mas logo tornou-se
associado a uma viso filosfica bastante diferentes daquelas do movimento do software livre.
Alguns dos defensores do open source considerado o termo a "campanha de marketing para o
software livre", que seria apelar aos empresrios, destacando os benefcios prticos do software,
embora no levantem questes de certo e errado que eles podem no gostar de ouvir. Outros
partidrios rejeitam categoricamente os valores ticos e sociais do movimento do software livre.
Qualquer que seja o seu ponto de vista, quando em campanha para o cdigo aberto, eles nem
citado, nem defendeu esses valores. O "open source" termo rapidamente tornou-se associado
com idias e argumentos com base apenas em valores prticos, tais como fazer ou ter software
poderoso e confivel. A maioria dos defensores do cdigo aberto veio a ele desde ento, e eles
fazem a mesma associao.
Quase todos os software de cdigo aberto um software livre. Os dois termos descrevem quase
a mesma categoria de software, mas eles defendem vises baseadas em valores
fundamentalmente diferentes. Open source uma metodologia de desenvolvimento, software
livre um movimento social. Para o movimento do software livre, software livre um
imperativo tico, porque s o software livre respeita a liberdade dos usurios. Em contraste, a
filosofia do open source considera as questes em termos de como fazer software "melhor" em
um sentido prtico apenas. Ela diz que software uma soluo nonfree inferior para o problema
prtico mo. Para o movimento do software livre, no entanto, nonfree software um problema
social, ea soluo parar de us-lo e mudar para software livre.
"O software livre." "O cdigo aberto." Se o mesmo software, pois no importa qual nome que
voc usa? Sim, porque diferentes palavras transmitem ideias diferentes. Enquanto um programa
livre por qualquer outro nome lhe daria a mesma liberdade de hoje, estabelecendo a liberdade
de uma forma duradoura depende sobre tudo ensinar as pessoas a valorizar a liberdade. Se voc
quiser ajudar a fazer isso, essencial falar de "software livre".
Ns, do movimento do software livre no acho que do campo de cdigo aberto como um inimigo,
o inimigo um software (nonfree) proprietrio. Mas queremos que as pessoas saibam que ns
lutamos por liberdade, por isso ns no aceitamos ser rotulados como apoiantes de cdigo
aberto.

MOVIMENTO GNU
O Projeto GNU foi lanado em 1984 para desenvolver o sistema operacional GNU, um sistema
operacional completo que respeita a sua liberdade.
Os sistemas operacionais GNU so construdos a partir de uma coleo de aplicativos de
software, bibliotecas e ferramentas de desenvolvedores e de mais um programa para alocar
recursos e falar com o hardware, conhecido como kernel.
GNU freqentemente usada com o kernel chamado Linux. O Hurd, que o kernel do GNU, est
sendo desenvolvido ativamente, mas ainda est muito longe de estar pronto.
A combinao de GNU e Linux torna-se o sistema operacional GNU/Linux, por vezes
incorretamente chamado simplesmente de "Linux".
O nome "GNU" um acrnimo recursivo para "GNU No Unix!".

LICENAS LIVRES
SENAC-RR/2011

Os softwares em circulao atualmente utilizam alguma forma de licenciamento, proprietrio ou


livre, comercial ou gratuito. Entre os sistemas livres a licenas mais conhecidas esto a GPL
(General Public License) e a MIT.
A GPL foi criada pela Free Software Fundation para garantir as quatro liberdades bsicas.
importante salientar que apesar de o software poder ser modificado e distribudo livremente
algumas regras devem ser obedecidas:
1.
2.
3.
4.

Referenciar o autor e ou projeto original;


Informar que os dados originais foram alterados;
Exibir informao de copyright e da ausncia no uso ou na intenso do software.
No se pode modificar a licena de publicao original, ou seja, um trabalho publicado
sob licena GPL deve permanecer livre bem como todos os trabalhos derivados dele.

A licena MIT uma licena de software livre originrio do Massachusetts Institute of


Technology (MIT). Ela uma licena permissiva, o que significa que permite a reutilizao de
software proprietrio dentro com a condio de que a licena seja distribuda com o software. A
licena tambm compatvel com a GPL, o que significa que a GPL permite combinao e
redistribuio, com software que utiliza a licena MIT.

PRINCIPAIS AMBIENTES DE INTERAO


Para Linux temos vrios ambientes grficos, entre eles, o KDE, Gnome, BlackBox, Xfce, etc.. H
tambm a opo de no precisar usar ambientes grficos. Para prover a funcionalidade do
ambiente grfico existem programas como X.org, XFree86.

GNOME
O projeto GNOME foi iniciado em 1997
por dois estudantes universitrios, em
seguida, Miguel de Icaza e Federico Mena.
Seu objetivo: produzir um ambiente de
trabalho livre (como em liberdade).
Desde ento, o GNOME tem crescido em
uma empresa de enorme sucesso.
Utilizado por milhes de pessoas em todo
o mundo, o ambiente de desktop mais
popular para o GNU / Linux e sistemas
Figura 2 - Gnome
UNIX-type operacional. O desktop tem
sido utilizado em sucesso, empreendimento de grande escala e implantaes de pblico, e as
tecnologias do projeto desenvolvedor so utilizados em um grande nmero de dispositivos
mveis mais populares.

KDE
O KDE Community uma equipe
internacional de tecnologia dedicada a criar
uma experincia de computao livre e userfriendly, oferecendo uma rea de trabalho
grfica avanada, uma ampla variedade de
SENAC-RR/2011
Figura 3 - KDE

aplicaes para comunicao, educao, trabalho e entretenimento e uma plataforma para criar
facilmente novas aplicaes em cima. Temos um forte foco na busca de solues inovadoras para
problemas antigos e novos, criando uma atmosfera vibrante e aberta para a experimentao.

SISTEMA BSICO- CONSOLE


Terminada a instalao do sistema bsico e
tendo reiniciado a mquina, este ser o
ambiente (inspito para alguns), onde iremos
trabalhar para montar nosso desktop.

Figura 4 - Console

PRINCIPAIS DISTRIBUIES
DEBIAN

Mesmo descontando suas inmeras derivaes, o Debian provavelmente a distribuio mais


utilizada em servidores. Isto pode soar estranho para quem est acostumado a ler notcias sobre
as distribuies usadas em desktops, onde o Debian puro tem um nmero relativamente
pequeno de usurios, mas, a principal questo que, embora no ofeream muitas das
facilidades encontradas em outras distribuies, as verses estveis do Debian so quase que
ideais para uso em servidores, pois o sistema muito estvel, possui um histrico de segurana
muito bom, os repositrios incluem um conjunto incrivelmente completo de pacotes e voc pode
manter o sistema atualizado com pouco esforo utilizando o apt-get.
As novas verses estveis recebem atualizaes de segurana por um perodo bastante longo
aps o lanamento, em torno de 3 anos ou mais, perodo equivalente ao lanamento de duas
novas verses estveis.
Voc tem ainda a possibilidade de atualizar o sistema diretamente para uma nova verso
utilizando o apt-get. Um servidor configurado em 2007, onde foi instalado o Etch (Debian 4.0),
por exemplo, poderia ser atualizado diretamente para o Lenny (5.0) usando o apt-get.
Atualizaes de uma verso para outra so um pouco mais problemticas, mas normalmente
muito mais rpido do que reinstalar todo o sistema.
Em primeiro lugar, o Debian composto por trs verses, desenvolvidas simultaneamente. A
verso stable a verso recomendada para uso em servidores, um sistema muito estvel, que
recebe apenas atualizaes de segurana e correes de bugs, o que garante um sistema
extremamente seguro e atualizaes indolores.
Em seguida temos a verso testing, que um "beta" da prxima verso estvel, ainda em fase de
desenvolvimento. Em junho de 2008, por exemplo, a verso stable o Etch (4.0) e a verso
testing o Lenny (5.0) que deve ser finalizado entre setembro e outubro. Quando o Lenny for
finalizado, ele passar a ser a nova verso estvel.
Em seguida, temos o unstable, que uma eterna verso de desenvolvimento, onde novas
verses dos pacotes so includas em uma rpida sucesso. Ao utilizar o unstable, voc tem
SENAC-RR/2011

acesso s verses mais recentes de todos os pacotes, mas sem garantia de estabilidade. Um
nmero surpreendentemente grande de usurios utiliza o unstable (ou distribuies baseadas
no repositrio) em seus desktops, mas ele no , naturalmente, uma boa opo de uso em
servidores. Afinal, em um servidor no te interessa ter instalada a ltima verso do Apache,
Squid ou Samba, mas sim uma verso que funcione e no tenha brechas de segurana. :)
Novas verses estveis do Debian so lanadas a cada 18 a 24 meses, o que acaba sendo mais um
ponto positivo, j que voc no precisa atualizar seus servidores to frequentemente. Dentro
deste tempo, voc recebe as atualizaes de segurana, que so o que realmente importa no caso
dos servidores.

UBUNTU
A utilizao do Ubuntu tem crescido bastante nos servidores. Embora ele ainda seja considerado
menos estvel que o Debian, a diferena vem diminuindo a cada nova verso.
Para incio de conversa, o Ubuntu uma distribuio derivada do Debian, que preserva a maior
parte de suas caractersticas. Os repositrios do Ubuntu so construdos a partir do repositrio
unstable do Debian. Os pacotes recebem correes diversas e so recompilados, gerando o
repositrio "universe" do Ubuntu.
O Ubuntu segue um cronograma muito mais apertado que o do Debian, com novas verses sendo
laadas a cada 6 meses. O mais parecido com as verses estveis do Debian, so as verses LTS
(long term support), como o Ubuntu 8.04. Originalmente, as verses LTS receberiam 18 meses
de atualizaes de segurana, mas a partir do 8.04 a Canonical aumentou a oferta para nada
menos do que 5 anos de atualizaes, um perodo intencionalmente maior do que o oferecido
pela equipe do Debian.
Alm da verso "desktop" do Ubuntu, est disponvel tambm uma verso especfica para
servidores, que utilizaremos aqui. Ambas so baseados nos mesmos repositrios, a diferena
que a verso desktop instala o Gnome e outros aplicativos grficos e no inclui os pacotes
destinados a servidores, enquanto a verso server justamente o oposto: instala um sistema
enxuto, sem o ambiente grfico e inclui um conjunto bem completo de pacotes destinados a
servidores na imagem.

RED HAT
Para quem est chegando agora, o Red Hat Linux foi uma das primeiras distribuies Linux a
conquistar um grande pblico. A primeira verso foi lanado em 1994 e o sistema conseguiu
ganhar espao tanto entre os desktops (devido relativa facilidade de uso) quanto entre os
servidores, devido boa estabilidade do sistema. O Red Hat Linux foi descontinuado em 2004,
dando lugar ao Fedora, que desenvolvido de forma colaborativa e s diferentes verses do Red
Hat Enterprise (tambm chamado de RHEL), a verso comercial do sistema, destinada a grandes
empresas.
RHEL
O Red Hat Enterprise possui um ciclo de desenvolvimento mais lento (que prioriza a
estabilidade) e tem suas verses suportadas por um perodo de nada menos do que 7 anos aps
o lanamento. Para quem est acostumado com o rpido ritmo de desenvolvimento das
distribuies Linux domsticas, um sistema que suportado por 7 anos pode soar estranho, mas
dentro do ramo corporativo este um diferencial importante, j que atualizar os desktops e os
SENAC-RR/2011

servidores sempre um processo arriscado e caro (devido mo de obra necessria,


necessidade de treinar os funcionrios, etc.), de forma que ciclos de desenvolvimento mais
lentos e previsveis so preferidos. Veja o caso do Windows, por exemplo, muitas empresas
ainda usam servidores com o 2000 Server, ou mesmo com o NT 4.
O RHEL fornecido apenas em conjunto com um plano de suporte e no pode ser redistribudo
em seu formato binrio. Entretanto, todo o cdigo fonte est disponvel, de forma que algum
que pacientemente compile cada um dos pacotes disponibilizados pela Red Hat, acaba obtendo
uma cpia completa do sistema, que pode ser usada para todos os fins.

CENTOS
O CentOS uma verso gratuita do Red Hat Enterprise, gerado a partir do cdigo fonte
disponibilizado pela Red Hat e mantido de forma bastante competente por um grupo de
desenvolvedores, que combina representantes de diversas empresas que utilizam o sistema
(sobretudo empresas de hospedagem) e voluntrios.
Ele , basicamente, uma verso gratuita do RHEL, que possui um excelente histrico de
segurana e conta com uma boa estrutura de suporte comunitrio e atualizaes pontuais de
segurana, qualidades que o tornam uma das distribuies Linux mais populares em servidores,
sobretudo em servidores web.
Se voc est interessado na estabilidade do Red Hat Enterprise, ou precisa rodar softwares como
o Oracle, que so suportados apenas nele, mas no tem como pagar caro pelo sistema, o CentOS
a sua melhor opo.

PADRONIZAO LSB
O Linux Standard Base (LSB) um projeto conjunto por vrias distribuies Linux sob a
estrutura organizacional da Fundao Linux para padronizar a estrutura do sistema de software,
incluindo a hierarquia do sistema de arquivos, usado com o sistema operacional Linux. O LSB
baseado na especificao POSIX, o Single UNIX Specification, e vrios outros padres abertos,
mas
estende-los
em
certas
reas.
De acordo com o LSB:

O objetivo da LSB desenvolver e promover um conjunto de padres abertos que iro


aumentar a compatibilidade entre distribuies Linux e permitir que os aplicativos de
software para rodar em qualquer sistema compatvel, mesmo na forma binria. Alm
disso, o LSB ajudar a coordenar esforos para recrutar vendedores de software para a
porta e escrever produtos para Sistema Operacional Linux.
O cumprimento LSB pode ser certificado para um produto por um procedimento de
certificao.

O LSB especifica, por exemplo: bibliotecas-padro, uma srie de comandos e utilitrios que
estendem o padro POSIX, o layout da hierarquia do sistema de arquivos, nveis de execuo, o
sistema de impresso, incluindo spoolers como CUPS e etc.

SENAC-RR/2011

INSTALANDO SERVIDORES LINUX


Nosso curso foi criado com foco na certificao LPI, onde so aceitas apenas as distribuies
Debian e RedRat.
Em funo disso, optamos pelo Debian como distribuio para o curso com alguns exemplos em
CentOS.

CARACTERSTICAS DOS SERVIDORES


Os servidores podem ser divididos em dois tipos. O primeiro o servidor dedicado, uma
mquina reservada, que executa suas funes em tempo integral. A segunda o famoso servidorno dedicado, que uma mquina qualquer que acumula algumas funes de servidor,
compartilhando arquivos, impressoras, ou mesmo rodando um pequeno servidor web para a
rede interna.
Quando falamos em "servidor dedicado", vem mente uma mquina de configurao cavalar,
com 4 ou 8 processadores, 5 HDs em RAID e 16 GB de memria RAM. Embora existam realmente
muitos servidores assim, eles so uma pequena minoria. A grande maioria dos "servidores
dedicados" so mquinas comuns, muitas vezes at mquinas j antigas ou de baixo custo.
Por exemplo, se voc quer apenas compartilhar alguns arquivos na sua mquina de trabalho,
voc ativaria o compartilhamento de pastas (no Windows) ou ativaria o servidor Samba (no
Linux). Em qualquer um dos dois casos, a mquina passa a ser um servidor de arquivos, mas esta
apenas uma funo secundria. Na maior parte do tempo, voc vai continuar usando a mquina
para navegar, ler e-mails, jogar, etc. A funo de servidor neste caso consome poucos recursos da
mquina e est longe de ser prioridade.
Imagine, por outro lado, que voc alugou um servidor dedicado, hospedado em um datacenter,
para hospedar o site da sua empresa. Com certeza, voc no iria querer deixar o KDE e o
OpenOffice abertos, consumindo recursos da mquina. Como nesse caso a nica funo da
mquina servir as pginas do site, voc vai querer que todos os recursos do hardware fiquem
disponveis para esta funo, deixando uma boa margem para que o servidor consiga responder
s requisies em tempo hbil mesmo nos horrios de pico.
Uma das primeiras coisas que acaba sendo desativada em um servidor dedicado com Linux o
modo grfico, j que ele consome muitos recursos e serve, basicamente, apenas para rodar
aplicativos. Na maioria dos casos voc acaba fazendo uma instalao enxuta do sistema, sem
nem mesmo instalar os pacotes referentes ao X e aplicativos grficos, mas em outros voc pode
querer deix-lo instalado (se voc pretende usar alguma ferramenta de configurao, por
exemplo) e apenas mant-lo desativado at que precise dele.
Na maioria dos casos, toda a administrao remota do servidor acaba sendo feita remotamente,
principalmente utilizando o SSH. Voc pode administrar dezenas de servidores diferentes,
espalhados pelo mundo confortavelmente, a partir do seu desktop. nele que voc vai rodar o
navegador, leitor de e-mails, etc. Nos servidores propriamente ditos, voc acaba usando apenas
os comandos de terminal e um editor de textos para editar os arquivos de configurao. Na
maior parte do tempo, seu ambiente de trabalho ser algo parecido com o screenshot abaixo.

SENAC-RR/2011

Figura 5 - Ambiente de trabalho

LAYOUT DE PARTICIONAMENTO
Vamos assumir que voc est criando um sistema de arquivos em um equipamento com, ao
menos, um disco rgido e que voc deseja iniciar o computador a partir desse disco durante o
processo de instalao. Um particionamento inadequado pode prejudicar o funcionamento do
sistema instalado. Contudo bom saber que possvel alterar o lauout do particionamento
depois do sistema instalado, porm isto exige trabalho extra e muita ateno, portanto
importante fazer boas escolhas logo de inicio.

VISO GERAL DO SISTEMA DE ARQUIVOS (PARTIES)


Um sistema de arquivos Linux contm arquivos que so gravados em diretrios. Assim como em
outros sistemas operacionais, diretrios no Linux podem conter outros diretrios, porm, ao
contrrio de sistema como o Windows que utiliza o conceito de sistemas de arquivos em
diferentes letras (A:, C:, etc...), um sistema de arquivos Linux acessado atravs de diretrios
ligados ao diretrio principal / (raiz).
Decidir uma estrutura de parties a ser adotada em sua instalao pode influenciar o
desempenho de seu sistema bem como o funcionamento dos diferentes servios rodando em seu
equipamento.
Para termos uma idia de como funciona a estrutura de diretrios do Linux, abaixo temos uma
listagem desta estrutura definida pela norma File Hierarchy Standard (FHS).
Diretrio
Bin
Boot
Dev
Etc
Lib
Media
Mnt

Descrio
Comandos essenciais
Arquivos estticos para boot do Linux
Arquivos para dispositivos
Configurao especifica do equipamento
Bibliotecas compartilhadas e mdulos do kernel
Ponto de acesso para mdias removveis
Ponto de acesso para sistemas de arquivos temporrios
SENAC-RR/2011

Opt
Sbin
Srv
Tmp
Usr
Var

Pacotes de programas adicionais


Comandos essenciais para administrao e boot do Linux
Dados para servios oferecidos por este equipamento
Arquivos temporrios
Hierarquia secundria para programas adicionais
Dados Variaveis

O FHS mantido pela Linux Foundation, uma organizao sem fins lucrativos compostos por
software e grandes fornecedores de hardware, como HP, Red Hat, IBM e Dell.

DECIDINDO O PARTICIONAMENTO
Inicialmente devemos nos assegurar de que seu computador ser capaz de inicializar
normalmente. Em sistemas mais antigos h uma limitao na Bios que impede o boot quanto os
arquivos de inicializao do sistema operacional (neste caso /boot/vmlinuz e /boot/inittrd)
esto alocados acima de 1024 cilindros no disco rgido. Se voc possui um equipamento assim,
criar uma partio /boot para alocar os arquivos essencial.
Sua prxima preocupao a criao de uma partio para swap (equivale ao arquivo de troca
do Windows). Inicialmente era comum alocar duas vezes a quantidade de memria RAM do
equipamento, mas com os preos dos pentes de memria , utilizar valores de 512 MB para
estaes e 1GB para servidores mais do que adequado a menos em necessidades especificas
como em um servidor para bases de dados ou algo parecido.
Deste ponto em diante a definio do particionamento deve levar em considerao a finalidade
do equipamento. Para estaes de trabalho a criao de uma partio / com todo o sistema
operacional indicado para iniciantes, porm, recomendamos separar os dados dos usurios em
uma partio especifica /home. O uso do disco de instalao deste tipo ocupa, em mdia de 2GB
a 3GB de espao em disco para o sistema operacional, porem difcil prever como ser o
crescimento desta instalao e quais programas adicionais sero instalados. Em um disco de
20GB recomendvel adotar um tamanho mnimo de 10GB para a partio / e o resto para
dados de usurios. Caso seu disco seja maior, aumente o tamanho da partio /, no sendo
necessrio que ela ocupe 50% de seu disco. Abaixo temos um particionamento recomendado
para uma estao de trabalho em um disco com HD de 40GB.
Partio
/boot
/
/home
swap

Tamanho
64 MB (no ocupar mais do que 30MB j com atualizaes)
12 GB (logo aps a instalao ocupar cerca de 1,5 GB)
27 GB (vamos deixar os usurios gravarem seus dados)
1 GB

Quando falamos de servidores, falta de espao em disco pode ser catastrfico. Definir seu
particionamento deve levar em considerao quais servios sero providos pela maquina. Sendo
que abaixo uma lista de diretrios e possveis usos:
Diretrio
/boot
/
swap
/home

Descrio
Arquivos de inicializao
Sistema operacional bsico
Paginao em disco
Dados de usurios (serv arq) ou caixas postais de email
SENAC-RR/2011

/usr
/srv

Ambiente grfico
Dados de servidores web e ftp

Independente do tipo de servidor a ser instalada, a criao de uma partio para


armazenamento de logs essencial. As primeiras trs parties so o mnimo recomendado para
servidores. Parties adicionais podero ser criadas de acordo com suas necessidades podendo
ser criadas apenas uma ou vrias delas.

GERENCIADOR DE INICIALIZAO
LILO LINUX LOADER
Um gerenciador de boot que nasceu com o Linux propriamente dito, pode ser instalado no
registro mestre de inicializao (Master Boot Record MBR) ou no setor de inicializao de uma
partio (Boot Sector Initializer BSI). Pode ser instalado, ainda, em dispositivos removveis
como disquetes, cds ou dispositivos USB.
O LILO permite o uso de at 16 combinaes diferentes para inicializao bem como a
inicializao de sistemas operacionais diferentes como Linux, Windows, BSD e outros. Devido
sua construo, o LILO oferece certa flexibilidade de opes na inicializao do Linux,
permitindo alterar o nvel final de inicializaes de texto para grfico ou vice-versa ou ainda
acessar o Linux em modo mono usurio. Sua configurao armazenada no arquivo
/etc/lilo.conf e deve ser gravada na MBR ou BSI sempre que for executando-se o comando lilo.

GRUB GRAND UNIFIED BOOTLOADER


Assim como o LILO, o GRUB permite a inicializao de at 16 combinaes entre diferentes
sistemas operacionais ou configuraes de seu Linux como opes de kernel ou mofos como
texto e grfico e tambm pode ser instalado em mdias removveis. A principal diferena entre os
dois gerenciadores reside no fato de que qualquer alterao em seu arquivo de configurao que
reside no /boot/grub/menu.lst no precisa ser gravada na MBR ou no BSI pois ela lida
automaticamente quando o sistema inicializa.
Outro ponto importante que o GRUB permite a inspeo do disco durante o processo de
inicializao, permitindo recuperar possveis falhas em alguns casos sem a necessidade de
mdias externas.

INSTALANDO O DEBIAN
Ao dar boot pelo CD, tudo comea com o prompt inicial, onde voc pode passar comandos ao
instalador, ou simplesmente pressionar Enter para iniciar a instalao utilizando as opes
padro:

SENAC-RR/2011

Figura 6 - Boot Debian

Voc pode ver as opes e instrues de boot pressionando as teclas de F1 a F10. Por exemplo,
ao instalar o sistema em uma mquina com problemas no suporte ACPI, que faam o instalador
travar ao carregar o Kernel, logo no incio da instalao, voc poderia usar a opo:
install noapic nolapic
Caso eventualmente a placa de vdeo no suporte frame buffer, voc poderia desativ-lo, fazendo
com que o instalador utilize o modo texto CGA padro utilizando a opo:
install fb=false
Existe ainda a opo de instalar usando o novo instalador grfico, disponvel a partir do Etch.
Para ativ-lo, voc usaria a opo:
installgui
Dentro do instalador, use as setas e a tecla <TAB> para navegar entre as opes, <Espao> para
selecionar e <Enter> para confirmar. A primeira pergunta sobre a linguagem. Ela importante,
pois determina toda a localizao do sistema, incluindo desde as configuraes regionais, at a
linguagem padro dos programas e dos arquivos de ajuda. Escolhendo o Portugus do Brasil, o
teclado fica pr-selecionado como "br-abnt2" na opo seguinte.

SENAC-RR/2011

Figura 7 - Escolher Idioma

Ao instalar a partir da imagem netinst, essencial configurar a rede logo no incio da instalao,
do contrrio o sistema no ter da onde baixar os pacotes :). Se voc possui um servidor DHCP
na rede, o instalador obtm as configuraes automaticamente a partir dele. Se voc prefere
configurar a rede manualmente, use a opo "Cancelar", disponvel neste ponto, ou use a opo
de boot "install netcfg/disable_dhcp=true" na tela de boot.

Figura 8 - Configurao da Rede

Veja que para utilizar a instalao via rede voc precisa de uma conexo de rede local, via cabo
(onde basta obter a configurao da rede via DHCP), ou mesmo via ADSL, com o modem
configurado como roteador. Como o instalador no possui suporte a PPPoE, ou a placas wireless,
no possvel fazer a instalao via rede se voc acessa via ADSL com autenticao ou wireless.
Nesse caso, a melhor opo usar outra mquina para conectar e compartilhar a conexo,
configurando o instalador para acessar atravs dela.
Continuando, o instalador pede que voc defina um nome para a mquina e indique o domnio.
Se voc no utiliza um domnio na sua rede local, nem est configurando um servidor web, pode
usar o "localdomain" por enquanto.

PARTICIONAMENTO
A pergunta seguinte sobre o particionamento. Ao contrrio de um desktop, onde comum
configurar o dual-boot com o Windows ou com outra distribuio, em um servidor voc
normalmente vai reservar todo o disco para a instalao do sistema e instalar o grub na MBR.
SENAC-RR/2011

Nesse caso, voc pode usar a opo "Assistido - usar disco inteiro". Veja que tambm existem
opes para particionar manualmente, para usar LVM e tambm para usar LVM criptografado:

Figura 9 Mtodo de Particionamento

O LVM permite um gerenciamento mais flexvel do que o tradicional modelo de discos de


parties, pois se baseia no uso de "volumes", que podem se estender por vrios HDs. Embora a
configurao seja mais complicada, um recurso que pode facilitar bastante o gerenciamento de
um servidor com vrios HDs, embora no oferea muitos benefcios numa mquina com apenas
um.
Usando a opo "Assistido - usar disco inteiro", ou particionamento manual, a principal deciso
reside em simplesmente usar uma nica partio, ou usar parties separadas para os diretrios
"/home", "/boot", "/var" e "/tmp".
O diretrio "/home" onde ficam, por padro, armazenados os arquivos dos usurios. Em um
desktop, o home normalmente o que ocupa mais espao, pois armazena seus arquivos de
trabalho, msicas, filmes, downloads e assim por diante. Em um servidor, por outro lado, o
diretrio "/var" normalmente o mais importante, pois nele que so armazenados (por
padro) os sites hospedados, as bases de dados do MySQL e assim por diante, de forma que
mant-lo em uma partio separada garante uma maior flexibilidade ao reinstalar o sistema e
fazer backups e tambm um pequeno ganho em termos de segurana.
O diretrio "/boot" contm a imagem do Kernel e o initrd, carregados no incio do boot. Como
estes arquivos no so modificados durante o uso normal do sistema, muitos preferem coloc-lo
em uma partio separada, montada em modo somente-leitura, embora isto esteja saindo de
moda.
Continuando, temos tambm o diretrio "/usr", que onde so instalados a maior parte dos
aplicativos e das bibliotecas do sistema. Em um sistema Linux tpico, todos os executveis dos
programas, so colocados dentro da pasta "/usr/bin", as bibliotecas e arquivos compartilhados
na pasta "/usr/lib", cdigo fonte de programas na "/usr/src" e documentao em geral na pasta
"/usr/doc". A pasta "/bin" fica reservada apenas a comandos bsicos, como o "cd", "ls", "cat", e
assim por diante e o "/lib" para os mdulos do kernel e bibliotecas-base. Quase 90% do espao
ocupado pelo sistema logo depois da instalao consiste justamente nos arquivos do diretrio
"/usr".
SENAC-RR/2011

Temos ainda o diretrio "/tmp", que muitos tambm preferem manter em uma partio
separada. Os principais motivos so o controle mais completo sobre as permisses de acesso
(evitando brechas de segurana causadas pela incluso ou alterao de arquivos temporrios) e
tambm uma maior proteo contra a possibilidade de algum programa problemtico (ou um
usurio descuidado) salvar um grande volume de arquivos no diretrio "/tmp" e acabar
deixando o servidor sem espao em disco.
Se voc est comeando, eu pessoalmente recomendo que voc utilize uma nica partio, pois
isso reduz a complexidade da instalao e evita que voc precise se preocupar com o espao
disponvel em cada partio mais adiante. Se, por outro lado, voc se convenceu das vantagens
de utilizar parties separadas, pode usar a opo "Parties home, /usr, /var e /tmp
separadas":

Figura 10 - Esquema de Particionamento

O instalador cria a partio swap automaticamente, definindo o tamanho de acordo com o


espao disponvel no HD. Os requisitos de memria de um servidor crescem de acordo com o
volume de servios ativos e (principalmente) de acordo com o volume de usurios simultneos.
Um servidor LAMP pode consumir apenas 50 MB de memria (ou menos) logo aps o boot, mas
consumir mais de 1 GB nos horrios de pico, quando um grande volume de usurios se conecta
ao servidor simultaneamente. A memria swap
uma garantia de que o servidor no vai travar
por falta de memria, mas, de qualquer forma, se
no houver memria suficiente, o servidor vai
ficar extremamente lento. sempre importante
monitorar o uso de memria do servidor e
instalar mais memria se necessrio.
Depois de confirmar as alteraes feitas, o
instalador pergunta sobre o fuso-horrio (j
mostrando apenas as cidades do Brasil, devido s
opes escolhidas anteriormente) e em seguida
prossegue para a definio da senha de root e a
Figura 11 - Seleo do fuso horrio

criao de uma conta normal de usurio.


SENAC-RR/2011

Ao contrrio do Ubuntu, no Debian no utilizado o sudo (embora ele possa ser habilitado
manualmente), de forma que voc utiliza o sistema tradicional, logando no sistema como usurio
e utilizando o comando "su -" quando precisar utilizar a conta root.
Em seguida o instalador pergunta sobre o "espelho de rede", ou seja, pergunta se voc deseja
ativar o uso de um repositrio de onde o sistema pode baixar os pacotes a serem instalados. Se
voc est instalando a partir do netinst, importante responder "Sim" aqui:

Figura 12 - Espelho de Redde

Nas perguntas seguintes, o instalador permite que voc escolha qual mirror utilizar. Temos bons
repositrios aqui no Brasil, com destaque para o "linorg.usp.br", "ftp.pucpr.br" e o
"ftp.br.debian.org", que o mirror oficial.
Voc tem tambm a tradicional opo de configurar o acesso via proxy. Na grande maioria dos
casos, voc simplesmente deixa o campo em branco, permitindo que o instalador acesse a web
diretamente. Entretanto, em muitas empresas todo o acesso centralizado em um servidor
proxy, que loga os acessos e faz cache das pginas e arquivos requisitados. Nestes casos, ou voc
no utiliza o proxy, ou no acessa a rede :).

Figura 13 - Informao sobre proxy

Em seguida, chegamos ao ponto alto da instalao, que a seleo das categorias de pacotes a
instalar. Veja que alm da opo "Ambiente Desktop", quem inclui o ambiente grfico e
aplicativos gerais, temos tambm as opes de instalar servidores web, servidores de impresso,
SENAC-RR/2011

servidores DNS e assim por diante. A opo "Laptop" instala o powernowd e outros servios e
scripts relacionados ao gerenciamento de energia e suporte a hibernao.
Como a idia fazer uma instalao enxuta, mantenha todas as opes desmarcadas, com
exceo da "Sistema bsico". Se voc pretende compartilhar impressoras com a rede, marque
tambm a opo "Servidor de impresso" (que instala o servidor cups e os pacotes com os
drivers necessrios).

Figura 14 - Seleo de software

Depois de baixar e instalar todos os pacotes, o instalador conclui o processo de instalao,


perguntando sobre a instalao do grub. A menos que voc esteja instalando o sistema de dualboot com outra distribuio, responda "Sim" para que ele seja gravado na MBR.

Figura 15 - Instalao do GRUB

Ao reiniciar o sistema, voc saudado com a famosa e amada tela de login em modo texto:

SENAC-RR/2011

Figura 16 - Tela de login em modo Texto

SENAC-RR/2011

SISTEMAS DE ARQUIVOS E ESTRUTURA DE


DIRETRIOS
Uma das caratersticas mais personalizadas de qualquer Sistema Operacional sua estrutura de
diretrios. Da mesma forma que arrumamos nossas roupas em armrios, nos discos necessrio
criar compartimentos especficos para cada tipo de arquivo ou por funcionalidades, definindo
uma hierarquia que ser seguida por todos os aplicativos do sistema.

SISTEMAS DE ARQUIVOS
A preparao do equipamento passa inicialmente pela alocao de espao em disco para
gravao de dados. Neste processo de alocao deve-se levar em considerao o uso final do
equipamento a fim de garantir o espao necessrio para cada fim, por exemplo: pra servidores
de arquivos assim como em equipamentos para uso pessoal normalmente alocamos reas
enormes para dados e arquivos de usurios, em servidores de aplicao a parte destinada
instalao de aplicativos deve ser privilegiada.
O Linux capaz de acessar, ler/gravar vrios tipos de arquivos (formataes), sendo os mais
comumente utilizados:
Sistema de
arquivo
ext2

ext3
ext4
reiserfs

Swap

Proc
Xfs
Nfs
Vfat

Descrio
Usado em parties Linux Nativas para o armazenamento de arquivos. Seu
tamanho deve ser o suficiente para acomodar todo os arquivos e
programas que deseja instalar no GNU/Linux.
Voc dever usar preferencialmente o ext3 para a instalao de seu
sistema operacional.
Sistema de arquivos utilizado como padro na maioria das distribuies
Linux. Possui recursos de journaling (recuperao de falhas) que reduz o
tempo de checagem do sistema em casos de falhas de energia ou reset do
equipamento. sucessor do ext2.
Possui os mesmos recursos do ext3, mas seu design bastante diferente.
Bastante recomendvel para sistemas que possuem muitos arquivos
pequenos (servidor web, etc). Possui o tempo de recuperao em caso de
queda de energia menor que o ext3.
Usado em parties Linux Swap para oferecer memria virtual ao sistema.
Note
que altamente recomendado o uso de uma partio Swap no sistema
(principalmente
se voc tiver menos que 16MB de memria RAM).
Sistema de arquivos do kernel. um espelho dos dados em processamento
na memria do equipamento.
Sistema de arquivos com suporte a journaling desenvolvido pela Silicon e
com melhor suporte a diretrios com grandes quantidades de arquivos.
Possui timo desempenho.
Sistema de arquivos remoto (compartilhamento de rede) sendo acessado
atravs de mapeamento do servidor na mquina local.
Sistema de arquivos utilizado para acesso a mdias (parties ou
disquetes) com formatao fat16/fat32 com suporte a nomes longos.
SENAC-RR/2011

Ntfs

Sistema de arquivos de equipamentos WNT, W2K e WXP. Somente


disponvel em modo real-only em praticamente todas as distribuies.

Journaling
O sistema de journaling grava qualquer operao que ser feita no disco em uma rea especial
chamada journal, assim se acontecer algum problema durante alteraes no disco, ele pode
voltar ao estado anterior do arquivo, ou finalizar a operao.
Desta forma, o journal acrescenta ao sistema de arquivos o suporte a alta disponibilidade e
maior tolerncia a falhas. Aps uma falha de energia, por exemplo, o journal analisado durante
a montagem do sistema de arquivos e todas as operaes que estavam sendo feitas no disco so
verificadas. Dependendo do estado da operao, elas podem ser desfeitas ou finalizadas. O
retorno do servidor praticamente imediato (sem precisar a enorme espera da execuo do fsck
em parties maiores que 10Gb), garantindo o rpido retorno dos servios da mquina.
Outra situao que pode ser evitada com inconsistncias no sistema de arquivos do servidor
aps a situao acima, fazendo o servidor ficar em estado single user e esperando pela
interveno do administrador.

ESTRUTURA DE DIRETRIOS
A hierarquia de diretrios utilizada em sistemas Linux em nada lembra a estrutura de outros
S.Os, tendo sido elaborada no desenvolvimento dos sistemas POSIX na dcada de 60.
Esta estrutura foi idealizada de forma a agrupar recursos semelhantes ou com mesma utilidades
em pontos especficos do sistema, no deixando arquivos perdidos em outros subdiretrios. O
esquema ao lado ilustra a estrutura atual do Linux, podendo ter pequenas variaes entre
distribuies:

SENAC-RR/2011

O ponto inicial de nossa estrutura o diretrio /, tambm chamado de


diretrio raiz. A partir dele todos os outros subdiretrios so acessados.

/
| --bin

DESCRIO DA RVORE DE DIRETRIOS

| --boot

Vamos ver para que server os diretrios, com exemplos de seu uso:

| --dev

/bin

| -- etc

Diretrio com programas e utilitrios bsicos destinados inicializao da


maquina, necessrios quando no h outros sistemas de arquivos
disponveis. Os aplicativos disponveis neste diretrio podem ser utilizados
por qualquer usurio (root ou no). Seu contedo normalmente consiste de:

| --home

Comandos comuns, essenciais carga do S.O. ou armazenados aqui


por compatibilidade com sistemas mais antigos. Exemplos: cat,
chmod, cut, date. Ls, etc. Alm destes, temos ainda comandos
destinados a backup e restaurao do sistema como gunzip, gzip e
tar. Por ltimo temos alguns utilitrios de rede, de uso geral como
hostname, netstat e ping.

| --initrd
| --lib
| --mnt
| --opt
| --proc
| --root
| --sbin

/boot

Neste diretrio esto os arquivos destinados inicializao do computador,


| --sys
o kernel (vmlinuz) propriamente dito e mdulos (initrd) necessrios carga da mquina. Em
geral este diretrio alocado em uma partio exclusiva para este fim com tamanho variando de
32MB e 100MB.

/dev
Todos os dispositivos instalados no seu computador necessita de arquivos especiais que
mapeiam a sua existncia neste diretrio. Exemplos:

hda1: indica a primeira partio do disco IDE mster da controladora primria.


sda: primeiro disco scsi disponvel no equipamento.

/etc
Todas as configuraes utilizadas pelo seu computador e servios normalmente so
armazenados neste diretrio. No deve ser colocado em partio separada. Seu contedo acupa,
em mdia de 10MB a 15MB atualmente. Exemplos:

Configuraes do equipamento: hostname, resolv.conf, inittab.


Configuraes de servios: email postfix/main.cf; apache httpd/conf/httpd.conf.

/home
Diretrios pessoais de cada usurio. Normalmente todo usurio possui um diretrio pessoal com
o mesmo nome de seu login no servidor. Em servidores de arquivos comum alocar esta pasta
em uma partio ou disco separado.

/lib
Bibliotecas dinmicas compartilhadas, necessrias ao funcionamento bsico de quase todas as
aplicaes Linux, alm dos mdulos do kernel.
SENAC-RR/2011

/opt
Destinado a acomodas programas desenvolvidos por terceiros e que normalmente no fazem
parte das distribuies Linux, caso do Acrobat Reader, do StarOffice e alguns outros aplicativos.

/proc
Diretrio utilizado para acessar o sistema de arquivos com informaes do estado de
processamento de sua mquina. Os arquivos aqui no esto fisicamente em seu hd mas sim em
reas protegidas da memria, sendo que alguns destes arquivos podem ser alterados de forma a
modificar o funcionamento do seu sistema Linux. Exemplos:

cpuinfo: dados do processador de seu equipamento.


meminfo: dados da memria como total instalado, total disponvel e como est utilizao.
ioports: identificao das portas io em uso no seu equipamento.

/root
Diretrio pessoal do usurio root. Assim como /etc, no deve ser alocado em uma partio
separada.

/sbin
Arquivos executveis destinados inicializao do equipamento bem com para administrao,
acrescentando funcionalidades aos aplicativos existentes em /bin. Exemplos:

ifconfig: configurao das interfaces de rede.


shutdown: desligamento do sistema.
route: definio de rotas.

/sys
Assim como o /proc um sistema de arquivos virtual que tende a substitui-lo provendo novos
recursos e funcionalidades. Aqui encontramos uma estrutura de diretrios que mostra os
recursos instalados em seu equipamento.

/tmp
Arquivos temporrios criados por aplicativos iniciados por qualquer usurio ou por servios
disponveis no computador. Normalmente estes arquivos so removidos automaticamente ao
trmino da aplicao, porm, caso algum arquivo no seja removido, apenas o usurio criador ou
o root podero remov-los.

/usr
Estrutura secundria de diretrios replicando toda a estrutura original. Inicialmente foi utilizada
como local de instalao para programas que no faziam parte da distribuio original. A
inteno pata sua criao que qualquer novo aplicativo ou servio que seja instalado no cause
conflito com os recurso existentes, podendo ser facilmente removidos sem afetar a estrutura
original.

/var
Dados variveis resultantes de aplicaes em uso com cache de instalao se programas ou de
acesso Internet, arquivos de controle de processos em memria como em /var/run/pid.

SENAC-RR/2011

INSTRODUO AO SHELL
O shell um mdulo que atua como interface usurio - sistema operacional, possuindo diversos
comandos internos que permitem ao usurio solicitar servios do sistema operacional. O shell
tambm implementa um linguagem simples de programao que permite o desenvolvimento de
pequenos programas (os famosos shell scripts).
Todo o ambiente de trabalho no Linux controlado por variveis de ambiente. Estas variveis
controlam desde quais diretrios so pesquisados procura de programas (PATH) at o
tamanho da tela (nmero de linhas e colunas visveis), modificando o comportamento dos
programas que adequam suas telas ao novo tamanho do terminal.

VARIVEIS
Uma varivel um nome, definido pelo usurio (sem acentos, espaos ou smbolos) que
armazena um valor em memria RAM. Seu contedo pode ser uma string (texto) ou um nmero.
Uma varivel pode ser criada assim:
#MENSAGEM=ol
Este comando associa a string ol rea de memria identificada como MENSAGEM. Esta rea
de memria pose ser consultada a qualquer momento no shell corrente porm, da forma como
criada, no poder ser utilizada em outros programas.
A consulta a uma varivel realizada pelo comando echo, precedendo o nome da varivel com $,
assim;
# echo $MENSAGEM
ol
Uma varivel pode ser removida da memria com o comando unset:
# unset MENSAGEM
Alguns pontos a observar na criao de variveis que na sua atribuio NO devem existir
espaos antes ou depois do sinal de igual e seu contedo, quando for um texto, deve ser
envolvido por (aspas).

SENAC-RR/2011

VARIVEIS DE AMBIENTE
As variveis de ambiente j esto disponveis quando o usurio faz o login no terminal.
Exemplos:
# env
LESSKEY=/etc/.less
LC_PAPER=pt_BR
LC_ADDRESS=pt_BR
LC_MONETARY=pt_BR
HOSTNAME=localhost
TERM=xterm
SHELL=/bin/bash
()
As variveis de ambiente podem ser utilizadas por qualquer programa que as consulte, sendo
definidas como variveis de abrangncia global. Uma varivel que seja criada com os
procedimentos vistos no inicio so consideradas de abrangncia local, no podendo ser
consultadas por qualquer outro programa alm do shell onde foram criadas.
Exportar uma varivel um procedimento to simples como sua criao e essencial para que
seja til ao sistema. Vamos, inicialmente, criar uma varivel simples e consult-la em um novo
shell.
# MENSAGEM=posso ver esta mensagem
<- criao da varivel
# echo $MENSAGEM
<- consulta a varivel local
Posso ver esta mensagem
#bash
<- iniciando um novo shell
#echo $MENSAGEM
<- consulta a varivel local
<- contedo no est disponivel
#exit
#
<- voltando ao shell anterior
Definindo a varivel e exportando-a permite que outros programas como o novo shell tenham
acesso a ela:
# MENSAGEM=posso ver a mensagem
# export MENSAGEM
# echo $MENSAGEM
Posso ver a mensagem
# bash
# echo $MENSAGEM
Posso ver a mensagem
# exit
#

<- criao da varivel


<- tornando a varivel global
<- consulta varivel local
<- iniciando um novo shell
<- consulta a varivel local
<- contedo est disponvel
<- voltando ao shell anterior

SENAC-RR/2011

A partir da execuo do comando export, todo e qualquer novo programa que consulte o
ambiente do usurio poder utilizar esta varivel e ser contedo.

SCRIPTS EXECUTADOS NO LOGIN DO USURIO


Todas as variveis so definidas no momento do acesso do usurio ao shell do sitema. Estas
definies so carregadas a partir de login-scripts executados automaticamente. H dois tipos de
scripts: os vlidos para todos os usurios, definidos no /etc e os pessoais, localizados no home do
usurio.
Estes scripts possuem vrios comandos do shell que podem ser encontrados de acordo com as
necessidades de cada equipamento/sistema. No Linux temos os seguites login-scripts:
Arquivo
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
~/.bash_logout

Uso
Arquivo global que define variveis exportadas para todos os usurios do
sistema como PATH e ainda define o comportamento de vrios aplicativos.
Arquivo global, define macros disponveis para todos os usurios como ls
alterada para sada colorida.
Arquivo pessoal que permite a personalizao de variveis como o PATH, o
prompt de comando do usurio.
Arquivo pessoal que permite a criao de macros personalizados como a
listagem automtica dos logs do sistema ou atalhos para comandos
complexos repetitivos.
Arquivo pessoal executado no logout do usurio, normalmente tem um
comando clean, mas pode ser alterado para incluir o backup de dados
importantes.

VARIVEIS PR-DEFINIDAS NO AMBIENTE DO USURIO


Entre as muitas variveis disponveis, algumas merecem destaque e devem ser citadas devido
sua importncia e uso no Linux:
Varivel
PATH
HOME
USER
LANG
PWD
LC_ALL
TMP
PS1
HISTSIZE

Descrio
Caminho de pesquisa procura de comandos para executar
Diretrio pessoal do usurio logado
Nome de login do usurio logoda, pode ser utilizado ainda LOGNAME e
USERNAME disponvel por compatibilidade
Idioma preferencial
Localizao atual, mesma sada do comando pwd
Localidade definida na instalao, alterando a visualizao de nmeros, data
hora e outros.
Indica o diretrio temporrio
Define o comportamento do prompt de comandos
Nmero de comandos armazenados do prompt de comandos

SHELL SCRIPTS
No Linux muitos comandos e utilitrios disponveis so scripts que permitem a soluo de
problemas especficos de forma simples, rpida e eficiente. Neste tpico sero vistos os
fundamentos de como so criados os scripts em shell, da mesma forma que um administrador
em outra plataforma deve ser capaz de criar pequenos arquivos bat.

SENAC-RR/2011

Um script nada mais do que um arquivo texto com os comandos que so executados no prompt
de forma encadeada onde, logo aps um comando o seguinte executado. Crie o seguinte
arquivo com o nome de teste.sh.
# script de teste est linha um comentrio e no ser executada
Echo Script de teste
Date
Pwd
Para executarmos este script iremos a um shell que interprete. Depois vamos dar permisso de
execuo e testar novamente.
# sh teste.sh
Script de teste
Seg Jul 04 05:44:47 BRT 2011
/root
O mesmo resultado pode ser obtido se atribuirmos permisso de execuo ao script.
# chmod +x teste.sh
# ./teste.sh

ESTRUTURA DE UM SCRIPT
Todo script deve ter uma estrutura inicial com informaes sobre como ser executado, seu
autor, seu uso e um histrico de mudanas ocorridas ao longo do tempo. Este cabealho inicial
no obrigatrio, mas recomendado que fosse colocado em seus scripts para facilitar a
identificao futura de como ele foi construdo ou por que e por quem foi modificado. Um
exemplo desta estrutura pode ser vista abaixo:
#!/bin/bash
#
# nome_do_script.sh Descrio simples de sua funo
#
# Autor: Quem o fez email@decontado.com.br
#
# Este programa recebe tais parmetros e executa tais tarefas
# retornando tais informaes ou fazendo tais procedimentos.
#
# Exemplos:
# $ ./nome_do_script.sh parmetro
# Resultado
#$
# Histrico:
# 18-05-1999, Joo da Silva
# - Verso inicial realizando tal tarefa
# Definio de variveis utilizadas pelo script
SENAC-RR/2011

VAR1=
VAR2=
VAR3=
<comandos do script>

SHELLS DE EXECUO
O Linux conhecido pelo grande nmero de interpretadores (shells) disponveis. Entre os mais
comuns temos:
Shell
sh
bash
Ksh
Zsh
Csh

Descrio
Boune Shell, simples e encontrado em todos os Linux/Unix.
Bourne Again Shell, mais elaborado que o sh, o shell padro em quase todas as
distribuies Linux atualmente.
Korn Shell, o shell padro dos sistemas Unix System V possui uma
implementao livre no Linux: o pdksh.
Z shell similar ao ksh com muitos recursos adicionais.
C Shell, criado no BSD possui sintaxe diferente do bash. O tcsh uma verso
melhorada do csh.

Devido a esta variedade, ao criar um script necessrio definir qual ambiente deve ser
executado. A primeira linha de um script deve ser uma diretiva de execuo informando ao
Linux que determinado shell deve ser carregado e que os comandos do script devem ser
executados dentro dele. Isto garante que o funcionamento do script ser o mesmo, em qualquer
distribuio, em qualquer verso. Esta diretiva aparece abaixo e deve ser a primeira linha do
script.
#!/bin/bash

RECEBENDO PARMETROS PELA LINHA DE COMANDO


Alguns scripts podem executar tarefas de forma automatizada sem a necessidade de interao
com o usurio contudo a forma mais comum de execuo de scripts informar parmetros pela
linha de comando indicando o que deve ser executado ou sobre quais arquivos o script deve
atuar.
Os parmetros informados pela linha de comando so identificados como variveis numricas
sequencias, ou seja, o primeiro parmetro est na varivel 1, o segundo na varivel 2 e assim
sucessivamente. H variveis especiais para tratamento de parmetros veja:
Varivel
$1 ... $n
$*
$#
$0

Descrio
Parmetros informados na linha de comando
Todos os parmetros informados na linha de comando
Nmero de parmetros passados na linha de comando
Nome com o qual o script foi acionado

Um exemplo de passagem de parmetros o script abaixo. Crie-o com o nome de parm.sh e o


execute com ./parm.sh parametro.
SENAC-RR/2011

#!/bin/bash
echo $
Caso seja necessrio criar um script que receba vrios parmetros pela linha de comando e
execute seus comandos para cada parmetro informado voc precisar rotacionar os dados
informados com o comando shift. Veja:
#!/bin/bash
echo $*
shift
echo $
shift
echo $

CONSTRUO CONDICIONAL
Todo script executa funes de forma sequencial em um roteiro pr-definido. Porm possvel
que determinadas aes sejam executadas apenas quando uma ou mais condies especificas
sejam satisfeitas. Este o caso de se utilizar a estrutura condicional:
if [condio] then
comando
fi
Todo comando executado em um terminal retorna o cdigo 0 (zero) quando bem sucedido e um
cdigo diferente de zero quando ocorrem problemas. Desta forma os testes de validao em
scripts consideram o valor zero como teste bem sucedido ou verdadeiro.
As condies de teste possveis em um script para verificao de arquivos so:
Teste
-d NOME
-e NOME
-f NOME
-h NOME
-L NOME

Descrio
Testa se NOME existe e um diretrio
Testa se NOME existe
Testa se NOME existe e um arquivo
Testa se NOME existe e um symlink.

Para o tratamento de strings os testes so:


Teste
-z STRING
-n STRING
STRING
STRING1=STRING2
STRING1!=STRING2

Descrio
Testa se o comprimento da STRING zero.
Testa se o comprimento da STRING no zero.
Testa se as STRINGs comparadas so iguais.
Testa se as STRINGs comparadas so diferentes.

Para verificao de valores numricos:


Teste
X eq Y
X ge Y

Descrio
Nmero X igual a Y
Nmero X maior ou igual a Y
SENAC-RR/2011

X gt Y
X le Y
X lt Y
X ne Y

Nmero X maior que Y


Nmero X menor que ou igual a Y
Nmero X menor que Y
Nmero X no igual a Y

Um exemplo simples da construo de um teste if :


if [ -d /boot ]; then
echo /boot um diretrio
fi
Em alguns casos uma ao complementar deve ser executada se o teste inicial falhar:
if [ -f /etc/yp.conf ]; then
echo /etc/yp.conf um arquivo
else
echo arquivos no localizados
fi
Uma variao desta estrutura quando h muitas opes de teste:
if [ -f /etc/yp.conf ]; then
echo /etc/yp.conf um arquivo
elif [ -f /etc/printcap ]; then
echo /etc/princap um arquivo
else
echo arquivos no localizados
fi
Estrutura de repetio Laos
Muitas vezes necessrio executar uma srie de comandos de forma repetitiva por um
determinado nmero de vezes ou at que uma condio especifica seja satisfeita. Para que este
tipo de controle seja possvel podemos utilizar as estruturas while, until ou for.
while
Este comando executa um bloco de comandos at que uma condio especfica se torne falsa, por
exemplo, renomear todos os arquivos de um diretrio ou exibir um arquivo de log em tela at
que uma ocorrncia de erro seja encontrada ou o exemplo mais simples: um contador.
#!/bin/bash
CONTADOR=0
while [ $CONTADOR lt 10 ]; do
echo Contagem: $CONTADOR
let CONTADOR=CONTADOR+1
done
for

SENAC-RR/2011

Enquanto o lao while testa uma condio at que ela se torne falsa, o lao for executa um bloco
de comandos para cada um dos elementos informados.
#!/bin/bash
for i in `seq 10`; do
echo item: $i
done
until
Este comando similar ao funcionamento do while, porm o tipo de teste realizado deve ser de
adaptado.
#!/bin/bash
CONTADOR=O
until [ $CONTADOR gt 10 ]; do
echo Contagem: $CONTDOR
let CONTADOR=CONTADOR+1
done
Usando funes em scripts
Quando uma parte de seu script deve ser executado de forma repetitiva em trechos alternados,
ao invs de copiar o mesmo cdigo vrias vezes, podendo criar uma funo que executa sempre
que necessrio, recebendo um parmetros informados dentro do prprio script. Uma funo
pode ser chamada dentro de outra, um exemplo deste uso pode ser uma pausa no script abaixo
utilizado para verificao de logs.
#!/bin/bash
separador() {
for i in `seq 72`; do
echo n =
done
}
espera() {
separador
echo e \nPressione Enter para continuar ou <ctrl>+<c> para sair
read
}
# Executa um loop infinito
while true; do
tail n 5 /var/log/messages
done

SENAC-RR/2011

PERMISSES E PROPRIEDADES DE
ARQUIVOS
Cada arquivo e diretrio em um sistema Linux possui um conjunto de permisses e
propriedades integradas a ele. atravs disso que o sistema sabe quem pode mexer em qual
arquivo, quando o arquivo foi modificado etc.
Neste artigo falarei sobre como distinguir nveis e tipos de permisso em arquivos e diretrios,
utilizar os comando chmod e chown para modificar propriedades e permisses, distinguir os
modos octal e textual para os parmetros dos comandos de mudana de permisses, entender o
que mscara de um arquivo e como modific-la, entender e utilizar permisses especiais, como
stick bit e suid bit.

CONCEITO DE PERMISSO
O Linux um sistema multi-usurio. necessrio ter uma conta de acesso para utiliz-lo.
Alm da autenticao para acesso ao sistema, uma outra funcionalidade relativa aos conceitos de
usurios e grupos o de permisses de arquivos, onde definido quem pode acessar bem como
quais arquivos e diretrios.
O sistema que arquivos do Linux possibilita que sejam atribudos direitos de acesso
diferenciados para os usurios do sistema. A cada arquivo ou diretrio do sistema associado
um proprietrio, um grupo e seus respectivos direitos de acesso, ou permisses.
Cada arquivo/diretrio possui trs nveis de permisso:
1) usurio dono - tambm chamado de "owner", o proprietrio do arquivo/diretrio;
2) grupo dono - o grupo proprietrio do arquivo/diretrio. O grupo pode conter um
usurio (geralmente o usurio dono) ou vrios usurios;
3) outros - aplica-se a qualquer outro usurio, que no se encaixa nos nveis anteriores.
E para cada nvel de permisso, existem trs tipos de permisso:
1) leitura (r) - permisso para visualizar o contedo do arquivo, simbolizada por "r" (do
ingls read).
2) escrita (w) - permisso para alterar o contedo do arquivo, simbolizada por "w" (do
ingls write).
3) execuo (x) - permisso para executar o arquivo, simbolizada por "x" (do ingls
execution).
A combinao dos nveis de permisso com os tipos de permisso forma o conjunto de
propriedades para cada arquivo ou diretrio.
Estas propriedades so atribudas com o objetivo de determinar quem pode acess-lo, ler seu
contedo ou mesmo executar algum programa.

TIPOS DE ARQUIVOS E PERMISSES

SENAC-RR/2011

Para visualizar as propriedades de um arquivo, pode-se utilizar o comando "ls -l", que listar os
arquivos do diretrio atual com uma srie de informaes adicionais, incluindo colunas com o
tipo do arquivo e permisses, nome do usurio e do grupo donos do arquivo.
Veja o exemplo abaixo:
#ls l
-rw-r--r--rw-------rw-r--r--rw-r--r--rw-r--r--rw-r--r-drwx-----drwx-----#

1
1
1
1
1
1
2
2

Root
Root
Root
Root
Root
Root
Root
Root

root
root
root
root
root
root
root
root

145
61
24
106
226
233
4096
4096

Jun
Jun
Jun
Jun
Jun
Jun
Mai
Jun

2005
09:55
2005
2005
2005
2005
20:31
17:48

.bash_completion
.bash_history
.bash_logout
.bash_profile
.bashrc
.cshrc
drakx/
.ssh/

A parte desta listagem que nos interessa aqui a primeira coluna. Aqui vemos os tipos mais
comuns, arquivos e diretrios. Os tipos de arquivos esto descritos na seguinte tabela:
TIPO
B
C
D
L
S
P

DESCRIO
Arquivo comum
Dispositivo de bloco (armazenamento)
Dispositivo de caracter (serial)
Diretrio
Link simblico
Socket de comunicao entre processos
Pipe de comunicao entre processos

A primeira coluna (da esquerda para a direita) a que contm todas as permisses; a segunda
indica os links diretos do arquivo, a terceira e quarta colunas especificam o nome do usurio e
grupo ao qual pertencem o arquivo. As demais colunas mostram informaes adicionais sobre o
arquivo.
Na primeira coluna, mostrado um vetor com espao para 10 caracteres. O primeiro identifica o
tipo do arquivo, enquanto que os outros 9 so o conjunto de trs permisses para cada um dos
trs nveis (usurio, grupo e outros, respectivamente).

MODOS OCTAL E TEXTUAL


Para alterar as permisses e propriedades de arquivos e diretrios, existem vrios comandos
disponveis. Uma similaridade entre eles que os parmetros de nveis e tipos de permisses
podem ser indicados do Modo Textual ou Octal.

TEXTUAL
No modo textual, utilizam-se os caracteres "u" para representar o usurio dono do arquivos, "g"
para grupo dono do arquivo e "o" para outros, com um sinal de mais (+) para adicionar a
permisso e menos (-) para remover. Veja o exemplo genrico a seguir (os detalhes do comando
chmod sero vistos mais adiante):
SENAC-RR/2011

$ chmod u+rw,g+w,0-rwx arquivo2.txt


Adiciona leitura e escrita para o dono, adiciona escrita para o grupo e remove todas as outras
permisses pra outros usurios no arquivo arquivo2.txt.

OCTAL
No formato octal, as permisses so representadas por nmeros na base octal, onde leitura
representado pelo valor 4, a escrita por 2 e execuo por 1. Somando-se os valores obtem-se a
permisso desejada para cada nvel. Exemplo:
$ chmod 640 arquivo.txt
Configura a permisso de arquivo.txt como sendo 640: 6 = leitura(4) + escrita(2) para o usurio
dono, 4 = leitura para o grupo e 0 (nenhuma permisso) para outros.
importante lembrar que o usurio root tem permisses ilimitadas, ou seja, ele poder
visualizar ou modificar permisso de qualquer usurio, em qualquer diretrio.

MODIFICANDO PROPRIETRIOS E GRUPOS


Nesta seo, sero apresentados os principais comandos utilizados para modificar e visualizar as
propriedades e permisses de arquivos e diretrios.
CHMOD

Permite que se alterem as permisses e propriedades de um ou mais arquivos (change mode).


importante ressaltar que o usurio deve ter permisses para fazer as alteraes (por exemplo:
deve ser o usurio root, deve ser dono do arquivo, ou deve estar no grupo do arquivo, com
permisso de escrita). Pode utilizar tanto a notao textual como a octal.
Principais opes:
chmod [ opes ] arquivo | diretrio
Permite que se altere recursivamente as permisses de arquivos e
-R
diretrios.
Permite que um determinado arquivo seja modificado tomando como
--reference=arquivo
referncia o arquivo especificado.
As tabelas a seguir facilitam a visualizao das notaes utilizadas pelo chmod.
Nvel de Permisso
u

Usurio ou dono do arquivo.

Grupo do arquivo.

Outros usurios que no so donos e no esto cadastrados no grupo.

Afeta todos os anteriores (u, g, o).

SENAC-RR/2011

Tipo de Permisso - Notao Textual


r

Concede ou remove permisso de leitura.

w Concede ou remove permisso de escrita.


x

Concede ou remove permisso de execuo.

Concede ou remove todas as permisses anteriores (all).

Tipo de Permisso - Notao Octal


4

Indica permisso de leitura.

Indica permisso de escrita.

Indica permisso de execuo.

Indica todas as permisses.

indica sem permisso.

Operadores
+

Concede permisso(es) especificada(s).

Remove permisso(es).

Atribui somente esta(s) permisso(es) ao arquivo, removendo a(s) que no sem


encontra(m) explcita(s).

Exemplos:
1) chmod u+rw,g+x documento.txt - concede permisses de leitura e gravao ao dono, e
execuo ao grupo para o arquivo documento.txt. note que somente quem tem permisso pode
executar este comando (root ou dono do arquivo).
2) chmod 610 documento.txt - define permisso de leitura e gravao ao dono (4+2 = rw),
execuo para o grupo (1=x), e nenhuma permisso para qualquer outro usurio (zero).
Importante notar que difere do exemplo anterior, pois na notao textual as permisses podem
ser "adicionadas" s atuais, enquanto que na notao octal, o comando define a permisso do
arquivo.

SENAC-RR/2011

3) chmod +x binrio.sh - concede permisso de execuo (+x) de binrio.sh para todos os


usurios do sistema (caso no seja especificado o usurio, a permisso concedida/retirada de
todos - equivalente ao parmetro a+x.
4) chmod -reference=documento.txt documento2.txt - aplica as mesmas permisses de
documento.txt para documento2.txt.
5) chmod -R ug=rw,o=r testes/ - concede permisso de leitura e gravao ao dono e ao grupo,
e permisso de leitura a outros, para o diretrio testes e todos os arquivos ou sub-diretrios
contidos dentro dele.
6) chown - permite a alterao do dono e do grupo relacionado ao arquivo, ou arquivos
selecionados. Um usurio comum pode alterar o grupo de um arquivo caso seja membro tanto
do grupo de origem quanto do grupo de destino. Porm, por motivos de segurana, apenas o
super-usurio (root) pode alterar o dono de um arquivo.
Principais opes:
chown [novo_proprietrio][:novo_grupo] arquivo/diretrio
Permite que se altere recursivamente o proprietrio e o grupo do(s)
-R
arquivo(s).
--reference=arquivo
O arquivo usar o grupo configurado para o arquivo especificado.
Exemplos:

Altera o grupo de arquivo.txt para eduardo. Note que se o usurio no tiver permisses
suficientes, ser mostrada uma mensagem de erro.

Altera o dono do arquivo arquivo2.txt para eduardo e o grupo para eduardo. Lembre-se que
apenas o superusurio (root) pode realizar esta alterao.

Modifica o grupo do diretrio dados/ e de todos o seu contedo para eduardo.


CHGRP

SENAC-RR/2011

Altera apenas o grupo para os arquivos ou diretrios indicados. Um usurio comum pode alterar
o grupo de um arquivo caso ele pertena tanto ao grupo de origem como ao grupo de destino. O
super-usurio (root) pode alterar o grupo do arquivo para qualquer grupo vlido no sistema.
equivalente ao comando "chown" somente com o parmetro :grupo (ou seja, sem modificar o
dono do arquivo, somente o grupo).
Principais opes:
chgrp [ opes ] arquivo(s)
Permite que se altere recursivamente a propriedade de grupo de
-R
diretrios e seu contedo.
Permite que o comando use o grupo configurado para "arquivo" para
--reference=arquivo
configurar outros grupos.
Descreve detalhadamente a ao para cada arquivo cuja propriedade
-c
de grupo est sendo alterada.
-f
Fora a mudana de grupo, sem relatrio de erros.
Exemplos:
1) chgrp coisas texto1 texto 2 imagens/ - modifica o grupo associado aos arquivos texto1
texto2 e ao diretrio imagens, associando-os ao grupo coisas. Note que o usurio dever ter as
permisses suficientes para esta modificao, caso contrrio ser mostrada uma mensagem de
erro.
2) chgrp -R empregados comercial/ - modifica o grupo associado ao diretrio comercial e
todos os seus arquivos e sub-diretrios, associando-os ao grupo empregados.

PERMISSES PADRO (UMASK)


Este comando define as permisses padro dos arquivos que sero criados ou copiados pelo
usurio.
Sintaxe:
umask [ opes ] modo
Onde modo informa a mscara de criao que ser fornecida ao usurio/grupo/outros. Ele pode
ser informado de duas maneiras:
1) como um nmero octal (022);
2) como uma mscara semelhante utilizada pelo comando chmod (u=rwx,g=rx,o=rx).
Desta maneira, possvel controlar automaticamente as permisses dos arquivos que so
criados pelo usurio. O comando executado sem parmetros exibe a mscara atual.

PERMISSES EM DIRETRIOS
Para diretrios, as permisses possuem um significado ligeiramente diferente.
Para compreender mais facilmente os conceitos, basta imaginar um diretrio como se fosse "um
arquivo que contem outros arquivos", pois na verdade um diretrio um arquivo do tipo
diretrio.
SENAC-RR/2011

Para confirmar isso, d um comando:


# vi /home
No seu Linux que ser aberta uma instncia do editor de texto vi com o contedo do arquivo do
tipo diretrio "/home", onde dentro dele estaro listadas as opes deste diretrio e tambm o
nome de seus arquivos e sub-diretrios.
Permisso Em arquivo
Permisso
para
visualizar
o
Leitura
contedo
do
arquivo.
Permisso
para
Escrita
alterar o contedo
do arquivo.
permisso
para
Execuo
executar o arquivo.

Em Diretrio
Permisso para visualizar o contedodo diretrio (ou seja,
listar seu contedo, utilizando um comando como o ls).
Permisso para alterar o contedo do diretrio (ou seja,
criar ou remover arquivos nele contidos).
Permisso para acessar o diretrio (atravs do comando
cd, por exemplo).

Exemplos:
1) Um diretrio que tenha permisso 755, permite que seu dono faa qualquer alterao,
mas outros usurios podem apenas acess-lo e ler seu contedo. Nesse modo, cada
arquivo contido no diretrio fica protegido por sua prpria permisso. o modo mais
comum.
2) Um diretrio com permisso 710 tem como caracterstica interessando permitir que
usurios do grupo a quem ele pertence acessem arquivos em seu interior, mas desde que
saibam seu nome, uma vez que a listagem do contedo no permitida.
3) Um diretrio com permisses 744 permite que outros listem seu contedo, mas no
acessem os arquivos. Nesse modo, muito pouco utilizado, apenas os nomes dos arquivos
esto disponveis.
Diretrios tm suas permisses alteradas da mesma forma que arquivos, utilizando o comando
chmod.

PERMISSES ESPECIAIS
Existem algumas permisses especiais de arquivos/diretrios que oferecem funcionalidades
alm das simples permisses de acesso. Os mais importantes cenrios de utilizao esto a
seguir.

SUID
O bit SUID utilizado em arquivos executveis quando se deseja que o programa seja executado
com os privilgios de seu usurio dono.
Isso til em situaes onde um programa precise acessar determinado recurso, mas os
usurios que o utilizam no o possam fazer diretamente.

SENAC-RR/2011

Embora a utilidade do bit SUID seja questionvel, seu uso deve ser feito com muito cuidado, pois
um problema em sua configurao pode ter conseqncias srias de segurana (especialmente
se o SUID for para o usurio root).
O bit SUID representado textualmente por u+s. Por exemplo: $ chmod u+s arquivo_executvel.
Em octal o nmero 4, mas utilizado antes das permisses de dono/grupo/outros. Exemplo:
$ chmod 4755 arquivo_executvel

SGID
O bit SGID tem a mesma funo do bit SUID, mas aplicado ao grupo, ou seja, o programa
executado com os privilgios do grupo a que pertence.
A representao textual do bit SGID g+s; em forma octal utilizado o nmero2, tambm
utilizado antes das permisses de dono/grupo/outros. Exemplos:
$ chmod g+s arquivo_executvel
e
$ chmod 2755 arquivo_executvel
O bit SGID tambm pode ser utilizado em diretrios. Nesse caso, todos os arquivos criados
dentro deste tero como grupo dono o mesmo grupo a que o diretrio pertence.

Stick Bit
O stick bit utilizado em diretrios compartilhados entre vrios usurios, em combinao com
permisses de escrita para estes, onde seja desejvel que usurios no acessem os arquivos por
outros criados.
Em outras palavras, um diretrio com stick bit ativado permite que qualquer usurio crie
arquivos, mas os outros usurios no podero remov-los. Um exemplo do uso do stick bit o
diretrio /tmp.
A representao textual do stick bit atravs do +t e em formato octal atravs do nmero 1,
antes das permisses de dono/grupo/outros. Exemplos genricos:
$ chmod +t diretrio_compartilhado
e
$ chmod 1777 diretrio_compartilhado

SENAC-RR/2011

A umask pode ser de grande utilidade para programas que criam arquivos/diretrios
temporrios, pois desta forma, pode-se bloquear o acesso de outros usurios e a criao de
arquivos, sem precisar recorre ao chmod.
Modifique a umask somente se necessrio. preciso ateno antes de escolher a umask, pois um
valor mal escolhido poder causar problemas de acesso a arquivos, diretrios ou programas no
sendo executados.
Por padro, quando um usurio criado, criado um grupo com o mesmo dome de usurio.
possvel visualizar estar informaes com o comando "id".
O comando chmod no permite a mudana das permisses de links simblicos, ou seja, as
permisses devem ser mudadas no arquivo alvo do link.
possvel copiar permisses de acesso do arquivo diretamente. Por exemplo: se o usurio
digitar chmod o=u, as permisses de acesso dos outros usurios (o) sero idnticas ao do dono
(u).

SENAC-RR/2011

COMANDOS E UTILITRIOS
INICIANDO E REINICIANDO O COMPUTADOR

reboot - reinicia o computador.


# reboot

shutdown - reinicia o computador.


# shutdown -r now
# shutdown -h 5

<- desliga o computador aps 5 minutos

halt - desliga o computador.


# halt

poweroff - desliga o computador.


# poweroff

init 0 - desliga o computador.


# init 0

TROCA DE USURIOS
Veja abaixo os exemplos de shell de root e shell de usurio:

shell de usurio "$"


[aluno1@pc1 ~]$

shell de root "#"


[root@pc1 ~]#

Para trocar o shell de usurio para root digite o comando su:


[aluno1@pc1 ~]$ su
Password:
<- Digite a senha de root usada na instalao do Linux
[root@pc1 ~]#
comandos de sesso:
SENAC-RR/2011

login - termina a sesso atual e inicia uma nova sesso.


$ su
password:
# login

<- Digite a senha de root

logout ou Ctrl + D - termina a sesso do usurio.


$ logout
exit
$ exit

<- encerra o shell de comandos corrente.

TECLAS DE ATALHO

Alt + F1 - habilita menu iniciar no Ambiente grfico


Alt + F2 - habilita menu executar no Ambiente grfico
Ctrl + Alt + Backspace - reinicia o Ambiente grfico
Ctrl + Alt + D - minimiza programas no painel inferior do ambiente grfico
Ctrl + Alt + F1...F6 - abre novos terminais em modo texto
Ctrl + Alt + F7...F12 - abre novos terminais em modo grfico

AJUDA

help - exibe opes de comandos.


$ ps --help
$ ps -h

man - consulta os manuais dos comandos do sistema.


$ man ls

info - exibe informaes de um ou mais comandos.


$ info ls
$ info
para sair do info pressione "Q".

whatis - consulta uma base de dados que contm informaes de palavras.


$ whatis ls

apropos - consulta manuais de comandos de acordo com uma string fornecida.


$ apropos wget

SENAC-RR/2011

ARQUIVOS E DIRETRIOS

touch - Atualiza a data e hora de acesso ou modificao de um arquivo, caso o arquivo


no exista criado um arquivo vazio.
touch [opes] [arquivo]
opo explicao
-c
No cria o arquivo caso ele no exista.
-m
Atualiza a data e hora de modificao.
-a
Atualiza a data de acesso.
Exemplo:
$ touch arquivo1
$ touch arquivo2 arquivo3

stat - Exibe status de arquivos ou sistema de arquivos.


Exemplo:
<- (cria o arquivo em branco)
<- (mostra status do arquivo)
<- (acessa o arquivo)
<- (mostra status do arquivo)
<- (modifica o arquivo)
<- (mostra status do arquivo)

$ touch arquivo
$ stat arquivo
$ cat arquivo
$ stat arquivo
$ echo "ola" > arquivo
$ stat arquivo

rm - Remove arquivos e diretrios.


rm [opes] [arquivo]
Opo Descrio
-f
No exibe mensagens de confirmao para apagar (cuidado).
-i
Pergunta antes de apagar.
-r ou Remove recursivamente contedo de uma pasta.(cuidado).
R
-v
Visualiza o nome dos arquivos antes de apagar.
Exemplo:
$ rm arquivo1
$ rm -rf pasta/* (remove somente contedo da pasta)
$ rm -rf pasta

mkdir - Cria diretrios


mkdir [opes] [nome pasta]
Opo
Descrio
-m
Cria diretrio com permisses de modo
-v
Mostra o nome de cada diretrio
-p
Cria ou sobrescreve diretrios, e no ocorrer um erro caso j existam
(Ex: mkdir p diretorio/pasta1)
SENAC-RR/2011

Exemplos:
$ mkdir pasta1
$ mkdir -p pasta1/pasta2

rmdir - Remove diretrios vazios


rmdir [opes] [nome do arquivo]
Opo
Descrio
-p
Remove diretrios e sub-diretrios vazios (Ex: rmdir -p diretorio/a/b/c)
-v
Exibe o nome de cada diretrio removido
Exemplos:
$ rmdir diretorio
$ rmdir -p diretorio/pasta1/pasta2

cp- Copia arquivos e diretrios


cp [opes] [ arquivo/diretorio de origem] [ arquivo/diretrio de destino]
Opo
Descrio
-r ou R
Copia recursivamente arquivos em um diretrio
-i
Pergunta se deve ser sobrescrever o arquivo de destino
-p
Preserva propriedades, permisses e proprietrio do arquivo
-f
Remove arquivos destinos existentes se requerido.
Exemplos:
$ cp -rf pasta /tmp
$ ls -l arquivo
$ cp -p arquivo /tmp
$ ls -l /tmp/arquivo

ln - Cria links simblicos (atalhos) e hard links (referncia direta) para arquivos e/ou
diretrios
ln [opes] [nome do link]
Opo
Descrio
-s
Cria um link simblico
-d
Cria um link simblico para um diretrio (Ex: ln sd diretorio link)
-f
Fora a criao do link simblico (Ex: ln -sf diretorio link)
Exemplos:
$ mkdir pasta
$ ln -s pasta link
$ ls -l link
$ touch arquivo
$ ln arquivo link2

<- cria um link simblico "atalho" para o


diretrio

<- cria um hard link "referncia direta" para o


arquivo

$ ls -l link2
SENAC-RR/2011

mv - Move ou renomeia arquivos ou diretrios


mv [ opes ] [ arquivo/diretrio de origem ] [arquivo/diretoriode destino]
Opo
Descrio
-f
Apaga arquivos/diretorios de destinos existentes sem perguntar ao
usurio
-i
Pergunta ao usurio se deseja sobrescrever arquivos/diretrios de
destino
-b
Cria cpias de segurana dos arquivos que esto para ser sobrescrevidos
ou removidos
Exemplos:
$ mv aula1.txt aula2.txt pasta
$ mv aula3.txt teste.txt
$ touch aula1.txt
$ mv -i aula1.txt pasta
$ touch aula1.txt
$ mv -f aula1.txt pasta

<- Move os arquivos aula1.txt e


aula2.txt para a diretrio "pasta"
<- Renomeia aula3.txt para teste.txt
<- Pergunta se deseja sobrescrever o
Arquivo aula1.txt no diretrio pasta
<- No pergunta se deseja sobrescrever o
arquivo aula1.txt no diretrio pasta

basename - Exibe o nome do arquivo sem o caminho(path) para o arquivo.


Exemplo:
$ cd /tmp
$ ls /home/usuario/arquivo.txt
/home/usuario/arquivo.txt
<- mostra o caminho para o arquivo
$ basename /home/usuario/arquivo.txt
arquivo.txt
<- no mostra o caminho para o arquivo

split - Divide um arquivo em partes menores.


Exemplo:
$ split --help (para ver mais opes)
$ split -b 1440k pasta_grande.tar.gz
$ cat xaa xaa > pasta_restaurada.tar.gz

<-divide em partes
menores de 1440k
<- une os arquivos
divididos xaa e xab no
arquivo
pasta_restaurada.tar.gz

comm - Compara dois arquivos ordenados linha por linha


Exemplo:
$ comm letras1 letras2

<- compara os dois arquivos e exibe a


SENAC-RR/2011

diferena linha por linha

file - Exibe o tipo de arquivo, caso seja uma imagem, arquivo binrio, arquivo texto, etc...
Exemplo:
$ file LINUXBRASIL.jpg
$ file arquivo.txt
$ file /usr/bin/passwd

<- arquivo de imagem


<- arquivo de texto
<- programa executvel

NAVEGAO

pwd - Exibe o diretrio corrente


$ pwd

cd - Muda de diretrio corrente


$ cd /etc

tree - Lista arquivos e diretrios em forma de rvore


$ tree
obs: Por padro o comando tree no vem instalado em muitas das distribuies no
Debian instale com apt-get install tree e no Fedora yum install tree.

ls - lista arquivos e diretrios


ls [opes] [diretrio]
Opo
Explicao
exibe arquivos ocultos (arquivos que iniciam com um (.)
-a
ponto Ex: ls a
-l
exibe detalhes de um arquivo ou diretrio
exibe o tamanho de um arquivo ou diretrio junto com a
-h
opo -l Ex: ls lh
exibe o detalhes de um diretrio junto com a opo -l
-d
Ex: ls ld
-1
exibe linha por linha os arquivos de um diretrio
exibe as caractersticas de cada arquivo sem a opo -l
que pode ser:

-F

/
*
@
~
=

Diretrios
Arquivos executveis (programas e scripts)
links simblicos (atalho para arquivos e diretrios)
arquivos de backup
Sockets (so conexes em uma porta, podendo ter vrias
conexes diferentes por soquete em uma nica porta. Por
exemplo se voc abrir dois programas, cada um deles ter um
soquete diferente, mas escutando conexes na mesma porta)
SENAC-RR/2011

Pipes ( redirecionamento da sada padro de um programa para


a entrada padro de outro)

Exemplos:
<- exibe arquivos ocultos com um ponto "."
<- exibe detalhes dos arquivos em /etc
<- exibe o tamanho em K, M ou G dos arquivos em /etc
<- exibe detalhes do diretrio /home
<- exibe linha por linha os arquivos em /etc
<- /etc este diretrio contm links simblicos @
<- /bin este diretrio contm programas executveis *
<- /dev este diretrio contm arquivos de pipe na
cor roxa|
$ ls -F /var/run <- /var/run este diretrio contm arquivos de
soquete com a cor marrom claro
$ ls -a /home
$ ls -l /etc
$ ls -lh /etc
$ ls -ld /home
$ ls -1 /etc
$ ls -F /etc
$ ls -F /bin
$ ls -F /dev

BUSCA DE ARQUIVO

find - localiza arquivos no disco


find [caminho] [opes] [arquivo]
Opes
Explicao
-name str
Localiza arquivos cujos nomes sejam semelhantes a str.
-follow
Processa diretrios por meio de links simblicos.
-maxdepth(n)
Restringe consultas a n nveis de diretrios.
-ctime(n)
Combina arquivos modificados exatamente n dias atrs.
-mtime(n)
Combina arquivos no modificados exatamente n dias atrs.
-atime(n)
Combina arquivos no utilizados exatamente n dias atrs.
-user(usurio)
Localiza arquivos com permisses especificadas do usurio.
-group(grupo)
Localiza arquivos com permisses especificadas do grupo.
-print
Mostra nomes dos arquivos localizados.
-type(opc)
Mostra nomes dos arquivos localizados.
-f
Arquivos.
-d
Diretrios.
-l
Links simblicos.
Exemplos:
$ find /etc/ -name *.conf
$ find /usr/bin/ -type f -user kurumin -ctime +3

grep - filtra caracteres especficos de um arquivo


grep [opes] [padro] [arquivo]
Opes
Descrio
No diferencia maiscula de minscula
-i
Procura por expresso "palavra"
-e + (palavra)
Exibe o nmero de linhas "padro"
-n
L o "padro" a partir do arquivo especificado
-f + (arquivo)
Exemplos:
SENAC-RR/2011

$ cat /etc/passwd | grep -i root


$ ps aux | grep http

strings - filtra string em arquivo binrio


strings [opes] [arquivo]
Opes Descrio
-a
procura por strings em todo o arquivo
-f
Imprime o nome do arquivo antes de cada string
Exemplos:
$ less /usr/bin/passwd
"/usr/bin/passwd" may be a
binary file. See it anyway? y
$ strings /usr/bin/passwd
| grep passwd
$ strings -a /usr/bin/passwd

<- l o arquivo binrio


<- Digite y
<- CTRL + Z (Para sair)
<-procura pela string passwd
no arquivo binrio
<-procura somente
por strings no arquivo binrio

whereis - localiza arquivos binrios (programas)


whereis [opes] [comando]
Opes
Descrio
-b
Localiza arquivos binrios.
-s
Localiza cdigo fonte.
-m
Localiza pgina de manual.
Exemplo:
$ whereis firefox

COMPACTANDO E DESCOMPACTANDO ARQUIVOS E DIRETRIOS

tar - compacta ou descompacta arquivos e diretrios em formatos .tar,.tar.gz, .tar.bz2


tar [opes] [arquivo ou diretrio]
Opo Descrio
Cria um novo arquivo e adiciona os arquivos selecionados
-c
Especifica um diretrio para extrair
-C
Lista o contedo do arquivo
-t
Especifica indicando que um arquivo
-f
Extrai os arquivos do arquivo
-x
Compacta ou extrai os arquivos no formatogzip
-z
Compacta ou extrai os arquivos no formato bzip2
-j
Exibe o nome do arquivo extrado
-v
Exemplos:
$ touch arquivo1 arquivo2 arquivo3
SENAC-RR/2011

$ tar -cvzf teste.tar.gz arquivo*


$ tar -xvzf teste.tar.gz -C /tmp

<- compacta todos arquivos


no arquivo teste.tar.gz
<- extrai todos arquivos
de teste.tar.gz em /tmp

gzip - compacta arquivos no formato gz


gzip [opes] [arquivo]
Opo Descrio
Grava o arquivo na sada e conserva o original
-c
Exibe opes de ajuda
-h
Descompacta arquivo
-d
Exibe mensagem enquanto descompacta o arquivo
-v
Exemplos:
$ touch arquivo.txt
$ gzip arquivo.txt
$ ls
$ arquivo.gz

<- compacta
arquivo compactado

gunzip - descompacta arquivos no formato gz


Exemplo:
$ gunzip arquivo.gz

<- arquivo descompactado

Ou usando o comando gzip com a opo -d


$ gzip -d arquivo.gz

<-arquivo descompactado

bzip2 - compactao modo bzip2


Exemplo:
$ touch arquivo
$ bzip2 arquivo

<- (compacta)

bunzip2 - descompactao modo bzip2


Exemplo:
$ bunzip2 arquivo

<- (descompacta)

zip e unzip - compacta e descompacta arquivos e diretrios no formato ZIP


Exemplo:
$ zip arquivo.zip teste.txt

<- (compacta)

SENAC-RR/2011

$ unzip arquivo.zip

<- (descompacta)

Para compactar um diretrio use a opo -r e para descompactar -d


$ zip -r pasta.zip pasta/
$ unzip pasta.zip

<- (compacta um diretrio)


<- (descompacta)

METACARACTERES
Os metacaracteres so caracteres reservados com significados especficos no shell do
Linux. Existem dois tipos de metacaracteres, onde so mostrados abaixo:

Curingas (wildcards) - so utilizados para determinar nomes de arquivos ou


diretrios pelo seu nome ou extenso de arquivos.
Editores de expresses regulares - so utilizados para determinar strings (texto)
dentro de um arquivo.

Curingas

Descrio

?
* (asterstico)
[]
[a-z]

Corresponde a um nico caractere


Correspondente a todos os caracteres
Correspondente a qualquer um dos caracteres entre colchetes
Correspondente a uma faixa de caracteres

Exemplo 1:
$ touch arquivo1 arquivo2 arquivo3
$ ls arquivo?
$ ls arq*
$ ls arquivo[1-3]

Editores de
expresses
regulares
. (ponto)
?
*(asterstico)
+
[]
[a-z]
^ letra_ou_string
letra_ou_string $
\< letra_ou_string
letra_ou_string \>
{x}
\{x\}

<- cria os arquivos,arquivo1,


arquivo2 e arquivo3
<- exibe todos os arquivos que
comeam com o texto arquivo
<- exibe todos os arquivos que
comeam com o texto arq
<- exibe todos os arquivos que
terminam entre os nmeros 1 e 3

Descrio
Corresponde a qualquer caractere
A string anterior opcional e coincide no maxmo uma vez.
A string anterior coincide zero ou mais vezes
A string anterior coincide uma ou mais vezes
Exibe qualquer um dos caracteres entre colchetes.
Exibe faixa entre caracteres
Exibe um padro letra_ou_string no inicio da linha.
Exibe um padro letra_ou_string no final da linha
Exibe um padro letra_ou_string no inicio da linha
Exibe um padro letra_ou_string no final da linha
A string anterior coincide x vezes.
A string anterior coincide x vezes
SENAC-RR/2011

{x,}
\{x,\}
{,m}
\{,m\}
{x,m}
\{x,m}\

A string anterior coincide x ou mais vezes


A string anterior coincide x ou mais vezes
A string anterior opcional e coincide no mnimo m vezes
A string anterior opcional e coincide no mnimo m vezes
A string anterior coincide no minimo x vezes, mas no mais que m
vezes
A string anterior coincide no minimo x vezes, mas no mais que m
vezes

Exemplo 2:
$ cat > nomes
fernando
felipe
ana
andreia
Aperte ENTER
Aperte CTRL+D

<- (cria o arquivo nomes)

exibe todas as palavras que comeam com o texto fe


$ grep ^fe nomes
fernando
felipe
exibe todas as palavras que terminam com a letra a
$ grep a$ nomes
ana
andreia
exibe qualquer palavra que tem a letra a
$ grep .a nomes
fernando
ana
andreia
exibe todas as palavras que tenham o texto and
$ grep \and nomes
fernando
andreia
exibe todas as palavras que comeam com a letra a, que corresponde a
qualquer caractere entre a e z, e que terminam com a letra a.
$ grep a[a-z]*a nomes
SENAC-RR/2011

ana
andreia

SENAC-RR/2011

ADMINISTRAO DE
SISTEMAS I

SENAC-RR/2011

EDIO DE ARQUIVOS TEXTO COM VI/VIM


VI

O editor vi tanto no Unix com no linux serve para criar arquivos de texto, shell scripts e
modifica-los. O editor vi possui dois modos: edio apertando a tecla ( i ) , e o modo comando
apertando ( esc ) , quando iniciamos o vi ele executa em modo comando.
$ vi
ou
$ vi arquivo
aperte i para escrever no arquivo e ESC para sair e executar os comandos
podendo ser: w, q, :, d, x, p e etc.
Comando
: +q
: +q+!
: +w +q
: +w
: +w
: +e
: +r
: +u
X
: + d ou d + d
p
/string

Explicao
Sai sem salvar.
Sai sem salvar forado.
Salva o arquivo atual e sai do vi.
Salva o arquivo atual.
(arquivo1) Salva o arquivo atual como arquivo1.
(arquivo1) Abre o arquivo arquivo1.
(arquivo1) Insere o arquivo no ponto onde est o cursor.
Desfaz a ltima ao.
Apagar o caractere corrente .
Apagar a linha corrente .
Cola a linha corrente .
Localiza padro em todo o texto corrente .

VIM

No vim temos vrios "modos", que so estados do editor.


So eles:
Modo
de Insero
de Comandos
Linha de comando
Visual
Busca
Reposio

Tecla
i
<ESC>
:
v
/
R

Rodap
-- INSERT -:
-- VISUAL -/
-- REPLACE --

Descrio
Insero de texto
Comandos de manipulao de texto
Comandos de manipulao arquivo
Seleo visual de texto
Busca de padres no texto
Insero sobreescrevendo

Os modos foram colocados em ordem de importncia de uso da grande maioria dos


usurios.
Para acessar qualquer um desses modos, na dvida aperte <ESC> antes da sua tecla de
acesso (2 coluna da tabela)
Para identificar em qual modo voc est, olhe no rodap da tela! (3 coluna da tabela)

CHAMANDO O VIM
SENAC-RR/2011

vi
vi arquivo

Abre o vim vazio, sem arquivo (muito pouco usado)


Abre o arquivo "arquivo". Se ele no existir, o cria

vi arquivo +
vi arquivo +10
vi arquivo +/Linux

Abre com cursor no fim do arquivo


Abre com cursor na linha 10
Abre com cursor na 1 ocorrncia de "linux"

SALVANDO/SAINDO DO VIM
<F12>

<- Sada forada, salva e sai

Obs.: Antes de executar os comandos seguintes, aperte <ESC> para ir ao modo de


comandos, e claro, aps, um <ENTER>
:w
:q
:wq ou :x ou ZZ
:w!
:q!
:wq!

<- Salva
<- Sai
<- Salva e sai
<- Salva forado
<- Sai forado
<- Salva e sai forado

EDITANDO
Ao entrar no vim, ele est no modo de comandos. Como saber? Olhe no rodap da tela. Nada na
ltima linha.
Para comear a Inserir um texto, aperte "i". Voc ver que aparecer um "-- INSERT --" no
rodap. Agora voc pode digitar seu texto normalmente.
Quer parar para dar uma gravada? Veja o tpico acima. ( <ESC>:w ) chega de editar e quer salvar
e sair? Veja acima de novo. ( <ESC>:wq )

COPIANDO e COLANDO
Usando o mouse:
No modo de Insero mesmo, note que o cursor do teclado (esse tracinho piscando na tela), est
numa posio, e o cursor do mouse (mexa o mouse para que ele se mova) est em outra posio.
Selecione uma parte do texto com o mouse, segurando o boto esquerdo.
Ao colar, o texto selecionado com o MOUSE ser colocado a partir do cursor do TECLADO.
Experimente. Dependendo do mouse, a colagem se faz:

Apertando o boto direito


Segurando o boto esquerdo e apertando o direito ao mesmo tempo
Apertando o boto do meio (mouse de 3 botes)

Tente, o seu ser umas das 3 alternativas acima.

Usando o modo visual


Entre no modo visual ( <ESC>v ), e simplesmente aperte as setas do teclado, movendo o cursor
do TECLADO e selecionando o texto desejado. O comando para copiar o texto o "y" de Yank.
SENAC-RR/2011

Volte para o modo de comandos ( <ESC> ) e posicione o cursor do TECLADO no lugar onde voc
quer colar o texto selecionado. O comando de colagem o "p" de Paste.

APAGANDO (DELETANDO)
Como no tpico anterior, use o modo visual ( <ESC>v ) para selecionar o texto desejado. Para
apag-lo, digite "d", de Delete. Com o linux no modo texto, a tecla Delete do teclado tambm
funciona para apagar texto. J no X, isso meio relativo.

GERENCIAMENTO DE PACOTES COM APT


APT(Advanced Packet Tool - Ferramenta avanada de pacotes) uma ferramenta de
atualizaes do Debian e similares. Seu arquivo de configurao encontra-se em:
/etc/apt/sources.list
Exemplo de configurao do arquivo /etc/apt/sources.list.
Verso utilizada: Debian - Etch 4.0
# deb cdrom:[Debian GNU/Linux testing _Etch_ - Official Snapshot amd64
Binary-1 (20061111)]/ etch # deb cdrom:[Debian GNU/Linux testing _Etch_
- Official Snapshot amd64 Binary-1 (20061111)]/ etch deb
http://security.debian.org/ etch/updates main
deb-src http://security.debian.org/ etch/updates main
deb http://http.us.debian.org/debian/ etch main contrib non-free

apt-get - Utilitrio de pacotes do debian e similares


# apt-get [opes] [comandos] [pacote]
Comando
update
upgrade
search
remove
install

Descrio
Atualiza
os
nomes
dos
servidores
especificados
/etc/apt/sources.list para atualizao do sistema
Procura pacotes desatualizados no sistema e os instala
Remove pacotes
Instala pacotes

Exemplos:
Atualizando pacotes:
# apt-get update
Procurando pacote:
# apt-cache search pacote
Instalando pacote:

SENAC-RR/2011

em

# apt-get install pacote


Removendo pacote:
# apt-get remove pacote
Adicinando o CD-ROM em /etc/apt/sources.list:
# apt-cdrom add

EXPRESSES REGULARES
Expresso regular um conjunto de expresses que funcionam de forma semelhante as
expresses aritmticas, utilizando operadores para fazer combinaes com expresses
menores.
Existem dois tipos de expresses regulares:

Simples - utiliza os caracteres numricos e os caracteres: *, ., ^, $ e [ ].


Estendidas - utiliza os caracteres numricos e os caracteres: *, ., ?,+, ^, $, {, }, [, ], (,
), |, \< e \>.

Abaixo segue a tabela dos metacaracteres utilizados nas expresses regulares.


Metacaractere
^
$

Nome
circunflexo
cifro

[abc]
[a-z]
[^abc]

lista
lista
lista de negao

(abc|aeiou)

ou

a{3}
a{1,3}
a{3,}

Chaves
Chaves
Chaves

a?
a*
a+

Opcional
Asterisco
Mais

.
.*

Ponto
Curinga

Posio
Indica o comeo de linha
Indica o final de linha
Texto
Encontra ocorrncias com as letras a ou b ou c
Encontra ocorrncias com as letras de a z
Encontra ocorrncias que no tenham as letras
de a, b e c
Encontra ocorrncias que tenham as letras de a,
b e c ou as vogais aeiou
Quantidade
Combina a letra a trs vezes
Combina a letra a de 1 3 vezes
Combina a letra a no mnimo trs vezes
Quantidade
Combina a letra a zero ou uma vez
Combina a letra a zero ou mais vezes
Combina a letra a uma ou mais vezes
Curingas
Encontra qualquer caractere
Encontra qualquer coisa

As expresses regulares so utilizadas no shell do Linux atravs dos comandos de filtragem


grep, egrep, fgrep e sed e pelas linguagens awk, perl e etc.
Atravs de expresses regulares, podemos filtrar ou validar textos como: data e horrio,
endereo IP, endereo de email, RG, CPF, Cep, telefone, dados de uma coluna ou linha de
um texto, etc.
SENAC-RR/2011

Para mostrar os exemplos abaixo, usaremos o comando grep, o arquivo /etc/passwd e


criaremos os arquivos palavras.txt , letras.txt e numeros.txt.
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System
(admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
Debian-exim:x:100:102::/var/spool/exim4:/bin/false
statd:x:101:65534::/var/lib/nfs:/bin/false
identd:x:102:65534::/var/run/identd:/bin/false
messagebus:x:103:104::/var/run/dbus:/bin/false
avahi:x:104:105:Avahi mDNS
daemon,,,:/var/run/avahi-daemon:/bin/false
haldaemon:x:105:108:Hardware abstraction
layer,,,:/home/haldaemon:/bin/false
postgres:x:106:112:PostgreSQL
administrator,,,:/var/lib/postgresql:/bin/bash
gdm:x:107:113:Gnome Display
Manager:/var/lib/gdm:/bin/false
hplip:x:108:7:HPLIP system
user,,,:/var/run/hplip:/bin/false
aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash
sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:110:115:MySQL
Server,,,:/var/lib/mysql:/bin/false
oracle:x:1003:1003::/usr/lib/oracle/xe:/bin/bash
bind:x:111:116::/var/cache/bind:/bin/false

$ cat > palavras.txt


Linux
Linus Tovalds
O criador do Linux
Seja livre use Linux
linux
liberdade
SENAC-RR/2011

alunos
Projeto Linux Brasil
Aperte ENTER
Aperte CTRL+D

O CIRCUNFLEXO ^
O caractere circunflexo representa um texto no inicio da linha.
Exemplos:
$ grep Linux palavras.txt
Linux
O criador do Linux
No exemplo acima, retornam todas as ocorrncias da palavra Linux.
$ grep ^Linux palavras.txt
Linux
Agora, colocando o ^circunflexo, retorna apenas a primeira linha que comea com a palavra
Linux. Voc tambm pode especificar a string com o caractere dentro de aspas simples ou
duplas.
$ grep '^Linux' palavras.txt
$ grep "^Linux" palavras.txt

O CIFRO $
O caractere cifro representa um texto no final da linha.
Exemplo:
$ grep /bin/bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash

O COLCHETE []
O colchete ou lista, representa um intervalo de caracteres especificados dentro dos
colchetes, podendo ser nmeros ou letras, por exemplo os nmeros de 0 9 [0-9] e as
letras de a z [a-z], veja o exemplo abaixo:
Exemplos:
Retornam somente as palavras Linux em maisculo
$ grep 'Linux' palavras.txt
Retornam somente as palavras linux em minsculo
SENAC-RR/2011

$ grep 'linux' palavras.txt


Neste caso, usaremos o colchete usando a letra L maisculo e l minsculo entre colchete
[Ll] para retornar tanto as palavras Linux em maisculo e linux em minsculo.
$ grep '[Ll]inux' palavras.txt

O PONTO .
O caractere ponto, representa qualquer letra, ou seja, qualquer caractere em uma
determinada posio, podendo ser tambm um nmero, um smbolo, um espao, um TAB,
ou seja, qualquer caractere.
Exemplos:
$ cat palavras.txt
Linux
Linus Tovalds
O criador do
Linux
Seja livre use
Linux
linux
liberdade
alunos
Projeto Linux
Brasil
No exemplo abaixo retorna somente qualquer caractere a partir do comeo da linha que vem
seguido de uma vogal, repare que no retornam as frases "Projeto Linux Brasil" e "O criador
do Linux", pois a letra P de "Projeto Linux Brasil" e a letra O de "O criador de Linux" no vem
seguidas de uma vogal.
Abaixo exibido qualquer caractere seguido de uma vogal.
$ grep '^.[aeiou]' palavras.txt
Linux
Linus Tovalds
Seja livre use Linux
linux
liberdade
Neste exemplo, retornam apenas as palavras com qualquer caractere, vem seguido das
letras inu e que termina com x.
$ grep '^.[inu]*x' palavras.txt
Linux
linux

SENAC-RR/2011

Outro exemplo semelhante ao citado acima, voc usar o ponto para procurar tamanho fixo
de uma string, sem depender de seu contedo.
No exemplo abaixo, retornam apenas as palavras que tem 5 caracteres, onde ^ o incio da
linha e $ o fim da linha.
$ grep '^.....$' palavras.txt
Linux
linux

AS CHAVES { }
Um nmero dentro de chaves representa a quantidade de repeties do caractere anterior.
Exemplos:
Este exemplo semelhante ao anterior, especificando o nmero de caracteres e no
pontos. Observe que foi usado o comando egrep e no grep, pois as chaves { } fazem parte
das expresses regulares estendidas (avanadas).
$ egrep '^.{5}$' palavras.txt
Linux
linux
Para usar o grep teramos que colocar a \ barra invertida antes das chaves, por isso, mais
fcil usar o egrep nestes casos.
$ grep '^.\{5\}$' palavras.txt
Linux
linux
As chaves aceitam um intervalo especificando uma faixa de repeties com um valor
mnimo e mximo.
No exemplo abaixo, retornam as linhas que tenham entre 5 e 9 caracteres.
$ egrep '^.{5,9}$' palavras.txt
Linux
linux
liberdade
alunos
Caso voc no especifique o segundo nmero e mantenha a vrgula, ficar uma faixa infinita
de caracteres.
No exemplo abaixo, sero exibidas as linhas que tm 9 ou mais caracteres.
$ egrep '^.{9,}$' palavras.txt
Linus Tovalds
O criador do Linux
Seja livre use Linux
liberdade
SENAC-RR/2011

Projeto Linux Brasil


Este exemplo abaixo, retorna todos os usurios que possuem o UID ou GID maior que 4
caracteres numricos de 0 9 [0-9].
$ egrep '[0-9]{4,}' /etc/passwd
sync:x:4:65534:sync:/bin:/bin/sync
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
statd:x:101:65534::/var/lib/nfs:/bin/false
identd:x:102:65534::/var/run/identd:/bin/false
aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash
sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin
oracle:x:1003:1003::/usr/lib/oracle/xe:/bin/bash

O CURINGA .* (PONTO ASTERSTICO ) (AND)


O caractere .* ponto asterisco representa qualquer coisa, inclusive, nada entre partes de
uma linha no importando o que h de contedo. O .* (AND) funciona de forma semelhante
a um AND lgico em linguagens de programao, ou seja, somente exibe o resultado da
pesquisa se encontrar ambas as partes da pesquisa.
Exemplos:
Neste exemplo so exibidos os usurios que comeam com letras de a z [a-z] e terminam
com a palavra bash.
$ egrep '^[a-z].*bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
postgres:x:106:112:PostgreSQL
administrator,,,:/var/lib/postgresql:/bin/bash
aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash
oracle:x:1003:1003::/usr/lib/oracle/xe:/bin/bash

O OR | (BARRA EM P) (OR)
O caractere pipe | barra em p representa em uma pesquisa para procurar uma coisa ou
outra. O | (OR) deve ser usado dentro de parnteses ( ) e funciona de forma semelhante a
um OR lgico em linguagens de programao, ou seja, exibe o resultado da pesquisa se
encontrar uma das partes da pesquisa.
Exemplos:
Neste exemplo so exibidos as palavras que comeam com palavras Linux ou linux ou
Linus.
$ egrep '^(Linux|linux|Linus)' palavras.txt
Linux
Linus Tovalds
linux

SENAC-RR/2011

OS REPETIDORES ? + *
Os caracteres interrogao (chamado de opcional), o mais e o asterisco so repetidores
que especificam a quantidade e funcionam como as chaves { }.
Caractere
?
+
*

Nome
opcional
mais
asterisco

Equivale
{0,1}
{1,}
{0,}

Significado
Aparece ou no (opcional)
Aparece no mnimo uma vez
Aparece em qualquer quantidade

LISTA DE NEGAO [^]


Podemos especificar o caractere circunflexo dentro de colchetes para negar uma expresso.
Exemplos:
No exemplo abaixo so mostradas as linhas que no comeam com vogais, repare que a
palavra alunos no exibida, pois comea com vogal.
$ cat palavras.txt
Linux
Linus Tovalds
O criador do
Linux
Seja livre use
Linux
linux
liberdade
Projeto Linux
Brasil
alunos

$ grep '^[^aeiou]' palavras.txt


Linux
Linus Tovalds
O criador do Linux
Seja livre use Linux
linux
liberdade
Projeto Linux Brasil

INTERVALO DE LISTA [-]


Podemos especificar um hfen dentro de colchetes, para indicar um intervalo entre duas
letras que ser estendido para todas as letras dentro do intervalo. Por exemplo [a-f] quer
dizer para retornar todas as letras no intervalo de a f [abcdef] ou [0-9] para retorna todos
os nmeros de 0 9 [0123456789].
Exemplos:
No exemplo abaixo so mostradas as linhas que esto no intervalo de a f.
SENAC-RR/2011

$ cat > letras.txt


abcdefghij
defabc
abcdef
rpzstq
xwzkwmp
Aperte ENTER
Aperte
CTRL+D

$ egrep '[a-f]' letras.txt


abcdefghij
defabc
abcdef
Neste exemplo abaixo, exibimos somente as linhas com as letras que no esto no intervalo
de [a-f], repare que exibida a linha com as letras de [abcdefghij], pois as letras ghij esto
fora do intervalo de [a-f].
$ egrep '[^a-f]' letras.txt
abcdefghij
rpzstq
xwzkwmp
Neste exemplo abaixo, exibimos somente as linhas com os nmeros que comeam com 1
(102, 15 e 111) e que tenha 3 dgitos {0,1,2} Ex: 102 e 111 .
$ cat > numeros.txt
102
15
9
111
1024
10555
Aperte ENTER
Aperte CTRL+D

$ egrep '^1[0-9]{0,2}$' numeros.txt


102
15
111
ou com grep usando escape nas chaves com barra invertida \.
$ grep '^1[0-9]\{0,2\}$' numeros.txt
SENAC-RR/2011

102
15
111

SENAC-RR/2011

CRIAO E GERENCIAMENTO DE USURIOS


E GRUPOS
Todo sistema de gerncia de usurio possui um id registrado no sistema. Com as informaes de
registro o Linux pode gerenciar o acesso aos usurios e as suas permisses de acesso. Os
administradores de sistema podem gerenciar e controlar todo o acesso a grupos e usurios.
Um grupo conjunto de usurios do sistema. Cada grupo tambm possui informaes que
identificam o usurio no sistema, contendo um nome e um nmero.
O que compem um usurio
Item
Descrio
Reduo de User IDentification. Ele identifica o usurio no sistema junto com o
UID
login para permitir-lhe o seu acesso.
Reduo de Group IDentification. o Nmero que identifica o grupo do usurio
GID
ao qual ele esta inserido.
Comment

Descreve as caractersticas do usurio, geralmente o nome completo

Home
Directory
Path

Corresponde o diretrio do usurio quando ele acessa o sistema, onde seus


arquivos so armazenados

Shell

Corresponde ao shell padro do usurio quando acessa o sistema. Geralmente o


Bash.

As informaes do usurio e senhas so armazenados nos arquivos /etc/passwd e


/etc/shadow, e as informaes sobre os grupos em /etc/group e /etc/gshadow. Nesse arquivo
armazenado as informaes separadas por ( : ) da seguinte forma:
nome usurio:senha:id usurio:id grupo:descrio:diretrio:shell
Por exemplo:
x:1000:1000:Descrio do
aluno1,,,:/home/aluno1:/bin/bash
# /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System
(admin):/var/lib/gnats:/bin/sh

SENAC-RR/2011

nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
Debian-exim:x:100:102::/var/spool/exim4:/bin/false
statd:x:101:65534::/var/lib/nfs:/bin/false
identd:x:102:65534::/var/run/identd:/bin/false
messagebus:x:103:104::/var/run/dbus:/bin/false
haldaemon:x:104:106:Hardware abstraction
layer,,,:/home/haldaemon:/bin/false
gdm:x:105:109:Gnome Display
Manager:/var/lib/gdm:/bin/false
aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash
mysql:x:106:110:MySQL Server,,,:/var/lib/mysql:/bin/false
cupsys:x:107:105::/home/cupsys:/bin/false

O que compem um grupo


Item
Name
Password

User list

Descrio
Nome do grupo
Constitui a senha de gerenciamento do grupo,
no havendo necessidade de preocupar com
ela GID Nmero de identificao do grupo de
usurio
Corresponde a lista de usurios do grupo GID

As informaes dos grupos so armazenados no arquivo /etc/group. nesse arquivo


armazenado as informaes separadas por ( : ) da seguinte forma:
grupo:senha:id grupo:descrio:lista de usurios
Por exemplo:
grupo:x:1000:usurio1,
usurio2
# /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:aluno1
fax:x:21:
voice:x:22:
cdrom:x:24:aluno1
floppy:x:25:aluno1
tape:x:26:
sudo:x:27:
audio:x:29:aluno1
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:

SENAC-RR/2011

irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:aluno1
sasl:x:45:
plugdev:x:46:aluno1
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
crontab:x:101:
Debian-exim:x:102:
ssh:x:103:
messagebus:x:104:
avahi:x:105:
netdev:x:106:aluno1
lpadmin:x:107:
haldaemon:x:108:
powerdev:x:109:aluno1
scanner:x:110:
ssl-cert:x:111:postgres
postgres:x:112:
gdm:x:113:
aluno1:x:1000:
dirmngr:x:114:
mysql:x:115:
dba:x:1003:

# /etc/default/useradd
Este arquivo define os valores padres ao criar usurios com o comando useradd, onde pode ser
editado retirando o comentrio " # " das linhas abaixo:
# /etc/default/useradd
SHELL=/bin/sh # especifica o shell do usurio
# GROUP=100 # especifica o GID do grupo do usurio recm
criado
# HOME=/home # especifica o diretrio home do usurio
# INACTIVE=-1 # especifica a quantidade de dias aps a
expirao da senha a conta ser desativada
# EXPIRE= # especifica a data que ser desativada a conta
# SKEL=/etc/skel # SKEL especifica o diretrio que contm os
arquivos "esqueleto" do usurio, em outras palavras, arquivos assim
como o .profile que ser copiado para o diretrio home criado para
novos usurios.
# CREATE_MAIL_SPOOL=yes # Especifica o diretrio de email
enquanto a conta criada.
# /etc/login.defs
Este arquivo configura o controle de definies de login dos usurios
# /etc/login.defs
MAIL_DIR /var/mail
local
DEFAULT_HOME yes
deve ser criado

# especifica o diretrio de mensagens de email


# especifica que o diretrio home do usurio

SENAC-RR/2011

USERGROUPS_ENAB yes
#esta opo habilita o comando userdel
remover usurios e seus grupos existentes
LOGIN_RETRIES 5
# especifica o nmero mximo de tentativas de
login se a senha estiver errada
# especifica o valor mnimo e mximo do UID selecionado para criao
novos usurios com useradd e adduser
UID_MIN 1000
UID_MAX 60000
# especifica o valor mnimo e mximo do GID selecionado para criao
novos grupos com groupadd
GID_MIN 100
GID_MAX 60000
PASS_MAX_DAYS 99999
senha pode ser usada
PASS_MIN_DAYS 0
entre duas mudanas de senha
PASS_WARN_AGE 7
da senha
#UMASK

# nmero mximo de dias que uma


# nmero mnimo de dias permitido
# nmero de dias anteriores a expirao

022 # Define a mscara padro, caso seja usada

# especifica os ltimos logins e usurios ainda logados no sistema que so


armazenados no arquivo /var/log/wtmp que pode ser lido pelo comando
last, e do arquivo /var/log/btmp lido pelo comando lastb
FTMP_FILE
/var/log/btmp

GERENCIAMENTO

adduser ou useradd - Adiciona um grupo ou usurio no sistema


adduser (opes) (usurio)
Opo
Descrio
-d (home)
especfica o diretrio home do usurio.
-u (Nmero) especfica o UID do usurio.
-g (grupo)
Informa o GID do grupo do usurio
-s (shell)
Informa o shell em /etc/shells do usurio.
data de excluso da conta do usurio
e(mm/dd/yy)
Exemplo:
# adduser aluno1
ou
# useradd aluno1 -d /home/aluno1 -g grupo -s /bin/bash
# passwd aluno1
# mkdir /home/aluno1
SENAC-RR/2011

# chown -R aluno1 /home/aluno1


No Debian voc precisar apenas especificar uma senha e o nome de usurio e confirmar no final
escolhendo S(sim).
# adduser aluno
Adding user `aluno' ...
Adding new group `aluno' (1004) ...
Adding new user `aluno' (1004) with group
`aluno' ...
Creating home directory `/home/aluno' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:*******
Retype new UNIX password:*******
passwd: senha atualizada com sucesso Modificando as informaes de
usurio para aluno
Informe o novo valor ou pressione ENTER para
aceitar o padro
Nome Completo []: aluno
Nmero da Sala []:
Fone de Trabalho []:
Fone Domstico []:
Outro []:
A informao est correta? [s/N] s

passwd - Muda a senha de um usurio


passwd
-x (dias)
-w
-e

(usurio)
especfica o nmero de dias que a senha poder ser utilizada
O usurio receber um alerta para mudar a senha antes de n dias
especfica a data na qual a conta ser desabilitada

Exemplo:
# passwd aluno1
# passwd (muda senha de root)

usermod - modifica as caractersticas de um usurio


usermod (opes) (usurio)
Opo
Descrio
-c (comentrio)
Comentrio
-d (dir_home)
Modificando o diretrio home
Programa que ser iniciado quando o usurio logar no
-s (programa)
sistema
-l (novo_login)
Novo login do usurio
-e (mm/dd/AA)
Especifica a data de cancelamento da conta de usurio
-G (novos_grupos) Grupos extras dos quais o usurio ser membro
-g (novo_grupo)
Novo grupo
Desabilita a conta do usurio em N dias aps a expirao da
-f (n dias)
senha
SENAC-RR/2011

-u (Novo UID)
-L
-U

Novo UID
(Insere um caractere "!" na frente da senha criptografada,
desabilitando a senha do usurio)
(Remove o caractere "!" da senha criptografada, habilitando
a senha do usurio

Exemplo:
# usermod -G grupo usurio
$ groups aluno1 (visualiza grupos do usurio)
ou
$ cat /etc/group

chage - Muda informaes de expirao de senha de usurio


chage (usurio) (opes)
Opo
Descrio
-l
Exibe informaes da expirao da senha de usurio
-M
Numero mximo de dias at que a senha expire
(num/dias)
-d
Data da ultima alterao da senha Ex: 2008/01/30
(aaaa/mm/dd)
-m
Nmero mnimo de dias entre alteraes de senha. O valor zero
(num/dias)
indica que o usurio pode alterar a sua senha a qualquer momento
Numero de dias entre a expirao de senha e o bloqueio da conta
-l (num/dias)
do usurio
-E
Data da expirao da conta do usurio Ex: 2008/01/30
(aaaa/mm/dd)
-W
Indica o numero de dias anteriores expirao da senha que o
(num/dias)
usurio deve ser notificado
Exemplo:
# chage -l usurio
# chage -W 3 usurio
# chage -M 7 usurio
# chage -E 2008/12/30 usurio
# chage -l usurio

finger - Exibe informaes sobre usurios locais ou remotos


finger (opes) (usurio)
Opo
Descrio
-l
Sada em formato detalhado
-s
Sada em formato simples
Exemplo:
$ finger usurio

SENAC-RR/2011

userdel - Deleta um usurio do sistema


Exemplo:
# userdel -r usurio

groupadd - Adiciona grupos ao sistema


groupadd (grupo) (opes)
Opo
Descrio
-f
Fora criar um grupo caso j exista
-g GID
Especifica o nmero do grupo (GID)
Exemplo:
# groupadd grupo1
# groupadd grupo2 -g 1001

gpasswd - Define senha para um grupo e realiza varias funes de administrao de


usurio e grupos
groupadd (opes) (usurio) (grupo)
Opo
Descrio
-a
Adiciona usurio ao grupo
-d
Exclui usurio do grupo
-r
Remove senha do grupo
-A
Define o administrador do grupo
-M
Define membros do grupo
-R
Desabilita o acesso ao grupo pelo comando newgrp
Exemplo:
# adduser aluno1
# gpasswd grupo1
(define a senha do grupo grupo1)
# gpasswd -a aluno1 grupo1
(Adiciona o usurio aluno1 ao grupo "grupo_1")
# gpasswd -d aluno1 grupo1
(Exclui o usurio aluno1 do grupo "grupo1")
# gpasswd -r grupo1
(Remove a senha do grupo "grupo1")

groupmod - Muda as caractersticas de um grupo

SENAC-RR/2011

groupmod (opes) (grupo)


Opo
Descrio
-f
Fora criar um grupo caso j exista
-g GID
Especifica o novo nmero do grupo (GID)
-n
Novo_grupo Especifica o nome do novo grupo
Exemplo:
# groupadd -g 999 grupo
# groupmod -g 1000 grupo
# cat /etc/group | grep "grupo"
# groupmod -n novo-grupo grupo

groupdel - Remove um grupo do sistema groupdel (grupo)


Exemplo:
# groupdel grupo

groups - Exibe os grupos de um usurio groups (usurio)


Exemplo:
$ groups
# groups aluno1

su - Troca o id de um usurio para superusurio(root) ou para outro usurio


su (opes) (login)
opo
descrio
-c (comando)
Especifica um comando a ser executado
Torna o shell um shell de login, ou seja, um interpretador de
acesso onde so limpadas todas as variveis ambiente, exceto as
-, -l (login)
variveis TERM, HOME, SHELL, USER e LOGNAME, ajusta a
varivel PATH para um valor definido pelos programas e altera
o diretrio atual para o diretrio HOME do usurio.
-m, -p
Mantm as variveis ambiente
-s (shell)
Especifica um shell
Exemplo:
$ su --help (para opes)
aluno1@mquina:~$ su aluno2 (muda o id do aluno1 para aluno2)
Password:*********
aluno2@mquina:~$
aluno1@mquina:~$ su (muda o id de usurio para root)
Password: **************
aluno1@mquina:~# (repare que foi trocado o $ por #)

chfn - Muda as informaes de um usurio

SENAC-RR/2011

Opes
-f [nome]
-r [sala]
-w [telefone]
-h [telefone]

Usurio
Especifica o nome completo do usurio
Especifica a localizao do usurio
Especifica o telefone do trabalho do usurio
Especifica o telefone da casa do usurio

Exemplo:
# chfn -f "Aluno1 da silva" aluno1
# cat /etc/passwd | grep "aluno1"

newgrp - Troca de grupo

Exemplo:
# groupadd grupo1
# gpasswd grupo1
$ newgrp grupo1
Senha :
$ exit

(Cria um grupo)
(Define uma senha para o grupo)
(O usurio atual muda para o grupo grupo1)
(Digite a senha do grupo)
(O usurio atual volta para seu grupo anterior)

users - Exibe os nomes de usurios correntemente conectados no computador

Exemplo:
$ users
# users

who - Mostra quem est logado no sistema Saia do ambiente grfico apertando
CTRL+ALT+F1 e logue em um terminal com um usurio. Logue em outro terminal tty1
tty2 CTRL+ALT+F2 com outro usurio e execute o comando who.
Exemplo:
usuario@maquina:~$ who
aluno1 tty1 2007-09-02 19:45
aluno2 tty2 2007-09-02 19:45

whoami - Exibe o ID(nome) do usurio


Exemplo:
$ whoami

w - Exibe os usurios logados e o que esto fazendo


Exemplo:
usuario@maquina:~$ w
23:28:32 up 1:26, 5 users, load average: 0,16, 0,25, 0,22
USER
TTY
FROM LOGIN@
IDLE JCPU PCPU WHAT
SENAC-RR/2011

aluno1
aluno2

tty1
tty2

23:28
23:28

29.00s 0.17s
9.00s 0.18s

0.16s-bash
0.17s-bash

last - Mostra uma listagem dos ltimos logins dos usurios e que ainda esto logados no
sistema
last
n (nmero)

Opes
Exibe o nmero linhas. Caso no for usada, as linhas sero
exibidas.
No informa o nome do computador
Informa o nome do computador da ltima coluna
Informa mudanas de nvel de execuo e shutdown

-R
-a
-x
Exemplo:

$ last | less
$ last | grep "aluno1"
$ last | tac

<- (Exibe informaes do usurio aluno1)


<-(Inverte a exibio da listagem dos usurios)

lastlog - Exibe relatrios dos ltimos logins de todos os usurios ou de um determinado


usurio
lastlog
-u USURIO
-b NUM/DIAS
-t NUM/DIAS

Opes
Exibe registro lastlog para usurio com LOGIN especificado
Exibe somente registros lastlog mais antigos que DIAS
Exibe somente registros lastlog mais recentes que DIAS

Exemplo:
$ lastlog | less
$ last -u aluno1 (Exibe informaes do usurio aluno1)
$ last -b 1 (Exibe informaes de 1 dia atrs)

id - Identificao do usurio, grupo e outros grupos


id (opes) (usurio)
Opes
Descrio
-g, --group
Informa identificao do primeiro grupo.
-G--groups
Informa o id de outros grupos
-n, --name
Informa o nome e grupo do usurio sem o id
-u, --user
Informa o id do usurio (user ID).
-r, --real
Informa o id real do usurio e grupo, complementando com as
opes -u, -g, ou -G.
Exemplo:
$ id
$ id -u aluno1
$ id -g aluno1

<- (exibe UID, GID e grupos)


<- (exibe apenas o UID do usurio)
<- (exibe apenas o GID do grupo)

sudo - Executa comandos como superusurio


SENAC-RR/2011

Para permitir um usurio usar o comando sudo necessrio configurar o sudo atravs
do arquivo de configurao /etc/sudoers.
Neste arquivo so especificados os comandos que um usurio poder executar como
root, para configurar o sudo digite o comando visudo como root e defina os comandos
que um usurio pode executar.
Abaixo segue um exemplo de configurao, onde permitido o usurio aluno1, aluno2
executarem os comandos fdisk, mount como root
# visudo

# User alias specification (Especifica os usurios)


User_Alias USUARIOS = aluno1, cobaia
# Cmnd alias specification (Especifica os comandos)
Cmnd_Alias COMANDOS = /bin/mount,
/sbin/fdisk
# User privilege specification (Especifica os privilgios)
root ALL=(ALL) ALL
USUARIOS ALL = NOPASSWD:COMANDOS

$ sudo -l
$ sudo fdisk /dev/hda

sudo (opes) (comando)


Opo
Descrio
-h
Exibe mensagem de ajuda
-l
Exibe os comandos permitidos e proibidos pelo usurio
Exemplo:
$ sudo -l
$ sudo mount /dev/hda /mnt

COMANDOS DE GERNCIAMENTO DE SENHAS SOMBRA

pwconv - Cria o arquivo /etc/shadow a partir do arquivo /etc/passwd e


alternativamente atravs de /etc/shadow existente
Exemplo:
(antes faa uma copia de segurana dos arquivos na pasta root)
# mkdir /root/backup
SENAC-RR/2011

# cp /etc/passwd /root/backup
# cp /etc/shadow /root/backup
# cp /etc/group /root/backup
# mv shadow /root/
# ls /etc/shadow*
# pwconv
# ls /etc/shadow*

<- (mova para a pasta root)


<- (repare que o arquivo foi movido)
<- (cria um novo arquivo /etc/shadow)
<- (repare que o arquivo foi criado)

Ateno - Aps executar o comando pwconv sero apagadas as senhas


criptografadas dos usarios no arquivo recm criado /etc/shadow, onde as senhas
so substitudas por um "x", pois o comando pwconv no sabe quais so as senhas
dos usurios.
Para isso necessrio atualizar as senhas dos usurios incluse a de administrador
root, portanto para atualizar as senhas use o comando passwd ou copie as senhas
criptografadas do arquivo de backup a partir do sinal de dois pontos ":" aps o nome
de usurio at o prximo sinal de dois pontos ":", veja abaixo um exemplo da senha
de root criptografa do arquivo de backup.
root:$1$5r8bgtF.$vyTsqQPltm2wIBjxRjmN31:14033:0:99999:7:::
Ou use o comando passwd para atualizar a senha de root e outros usurios:
# passwd
# passwd aluno1

<- (atualiza a senha de root)


<- (atualiza a senha do usurio aluno1)

pwunconv - Cria o arquivo /etc/passwd a partir do arquivo /etc/passwd e


/etc/shadow existentes e remove o arquivo /etc/shadow.
Exemplo:
# stat /etc/passwd
# stat /etc/shadow
# pwunconv
# ls /etc/shadow*
# pwconv

(repare a data de acesso e modificao)


(repare a data de acesso e modificao)
(repare que o arquivo foi apagado)
(cria novamente o arquivo /etc/shadow)

grpconv - Cria o arquivo /etc/gshadow a partir do arquivo /etc/group e


alternativamente atravs de /etc/gshadow existente
Exemplo:
(antes faa uma copia de segurana dos arquivos na pasta root)
# cp /etc/group /root/backup
# cp /etc/gshadow /root/backup
# mv gshadow /root/
(mova para a pasta root)
# ls /etc/gshadow*
(repare que o arquivo foi movido)
# grpconv
(cria um novo arquivo /etc/gshadow)
SENAC-RR/2011

# ls /etc/gshadow*

(repare que o arquivo foi criado)

Ateno - Aps executar o comando grpconv sero apagadas as senhas


criptografadas dos grupos no arquivo recm criado /etc/gshadow, onde as senhas
so substitudas por um "x", pois o comando grpconv no sabe quais so as senhas
dos grupos.
Para isso necessrio atualizar as senhas dos grupos, portanto para atualizar as
senhas use o comando gpasswd ou copie as senhas criptografadas do arquivo de
backup a partir do sinal de dois pontos ":" aps o nome de grupo at o prximo sinal
de dois pontos ":", veja abaixo um exemplo da senha do grupo "grupo1" criptografa
do arquivo de backup.
grupo1:N0DgV/geAhAsY::
Ou use o comando gpasswd para atualizar as senhas dos grupos :
# gpasswd grupo1

(atualiza a senha do grupo1)

grpunconv - Cria o arquivo /etc/group a partir do arquivo /etc/group e


/etc/gshadow existentes e remove o arquivo /etc/gshadow
Exemplo:
# stat /etc/group (repare a data de acesso e modificao)
# stat /etc/gshadow (repare a data de acesso e modificao)
# grpunconv
# ls /etc/gshadow* (repare que o arquivo foi apagado)
# grpconv (cria novamente o arquivo /etc/gshadow)
Ateno - Aps executar os comandos pwunconv e grpunconv sero apagados os
arquivos /etc/shadow e /etc/gshadow, sendo necessrio restaurar os arquivos
com as senhas criptografadas novamente para isso execute os comandos pwconv e
grpconv novamente.
# pwconv
# grpconv

(restaura o arquivo /etc/shadow)


(restaura o arquivo /etc/gshadow)

pwck - Verifica os arquivos /etc/passwd e /etc/shadow.


Exemplo:
# pwck

grpck - Verifica os arquivos /etc/group e /etc/gshadow.


Exemplo:

SENAC-RR/2011

# grpck

Tornando um usurio com permisses de superusurio root


Para dar permisses de root a um usurio edite o arquivo /etc/passwd e altere seu UID e o GID
colocando o valor 0.
Abaixo segue um exemplo onde o UID e o GID do usurio aluno1 foi alterado de 1001 para 0.
Antes
aluno1:x:1001:1001:aluno1,,,:/home/aluno1:/bin/bash
Depois
aluno1:x:0:0:aluno1,,,:/home/aluno1:/bin/bash

Bloqueando um usurio
Para bloquear um usurio de fazer login, basta colocar como comentrio com um # na linha
referente a esse usurio no arquivo /etc/passwd.
Antes
aluno1:x:1001:1001:aluno1,,,:/home/aluno1:/bin/bash
Depois
#aluno1:x:1001:1001:aluno1,,,:/home/aluno1:/bin/bash

Excluindo um usurio manualmente


Para excluir um usurio manualmente, basta remover a linha referente a esse usurio nos
arquivos /etc/passwd, /etc/group e /etc/shadow.
Remova o diretrio do usurio em /home e o arquivo referente ao usurio em /var/spool/mail.
/etc/passwd
aluno1:x:1001:1001:aluno1,,,:/home/aluno1:/bin/bash
/etc/group
aluno1:x:1000:
/etc/shadow
aluno1:$1$3IJAsyNt$8Fl.ITawhIdTUGedVsdzP0:13820:0:99999:7:::
/home
# rm -rf
/home/aluno1
/var/spool/mail
# rm -f
/var/spool/mail/aluno1

SENAC-RR/2011

INICIALIZAO DO SISTEMA E RUNLEVELS


PROCESSO INIT
O processo init o primeiro programa a ser executado pelo kernel de qualquer sistema
operacional Linux/Unix na sua inicializao. Quando o computador iniciado ou
desligado(boot), O BIOS procura no primeiro setor do disco(MBR - Master Boot Record),
selecionado para carga do sistema operacional(que pode ser um HD, CDROM, que definido no
SETUP) que ser o carregador do sistema operacional(Boot Loader).
O Lilo e o Grub so os programas de carga do sistema, eles permitem selecionar qual partio
ser utilizada para carregar o sistema operacional, permitindo escolher mltiplos sistemas
operacionais.
Depois do processo de deteco e configurao de hardware o kernel monta o root file
system(diretrio raiz - / ), inicializa o sistema lendo seus arquivos de configurao do Lilo
/etc/lilo.conf e do Grub boot/grub/menu.lst,e executa o processo pai de todos processos Init
que executa o programa /sbin/init.
Existe dois tipos de inicializao em sistemas Linux/Unix: SysV init e BSD init sendo que a
maioria utiliza o SysV init, pelo fato de ter mais recursos para seu gerenciamento.

SYSV INIT
Na inicializao SysV init, o processo init troca o estado do kernel para multitarefa e l o arquivo
/etc/inittab. Esse arquivo define o (runlevel) nvel de execuo que inicializar os scripts que
seram executados para inicializar os servios, programas e terminais.
Os nveis de execuo definem como o sistema operacional inicializar e subdivide-se em 0 a 6.
Os scripts de inicializao so definidos no arquivo /etc/inittab
Os seguinte (runlevels)nveis de execuo esto disponveis em distribuies Red Hat(e
baseadas nela):

0 - Halt
1 - Modo monousurio
2 - Modo multiusurio, sem NFS
3 - Modo multiusurio, com NFS
4 - Reservado
5 - X11
6 - Reboot
s ou S no usado diretamente, mas sim para programas que so executados durante o
runlevel 1

ENTENDENDO OS LINKS SIMBLICOS DO DIRETRIO /ETC/RC.D/RC[0-6].D


A maioria das distribuies Linux seguem como padro links simblicos em /etc/rc.d/rc[0-6].d
que iniciar ou interromper a execuo dos servios(daemons) em/etc/rc.d/init.d

SENAC-RR/2011

Se um link iniciado com a letra K (Kill), quer dizer que o servio ser interrompido
naquele nvel(runlevel) de execuo, que far com que seja executado o servio em
/etc/rc.d/init.d seguido de stop.
Se um link iniciado com a letra S (Start), quer dizer que o servio ser inicializado
naquele nvel(runlevel) de execuo, que far com que seja executado o servio em
/etc/rc.d/init.d seguido de start.

So executados primeiramente os links com a letra K e depois com S, a ordem que os scripts so
executados depende do nmero que vem seguido das letras K ou S, por exemplo, os seguintes
arquivos so executados em seqncia:
Para ver todos links simblicos digite:
# ls /etc/rc?.d/
Para ver os links de um servio apenas:
# ls ls /etc/rc?.d/*ssh*
/etc/rc0.d/K20ssh
/etc/rc2.d/S20ssh
/etc/rc4.d/S20ssh
/etc/rc6.d/K20ssh
/etc/rc1.d/K20ssh /etc/rc3.d/S20ssh /etc/rc5.d/S20ssh
Caso voc deseje remover os links de um servio na inicializao:
# rm -f /etc/rc?.d/*ssh*
Note que os arquivos que iniciam com o mesmo nmero (S20*) so executados alfabeticamente.
O nvel de execuo do sistema pode ser modificado usando-se o comando init ou telinit.
Por exemplo, para listar o nvel de execuo atual do sistema digite:
# runlevel
O runlevel dever listar algo como:
N2
Agora para mudar para o nvel de execuo 1, digite:
# init 3
Agora confira a mudana digitando: runlevel. Voc dever ver este resultado:
23
Isto quer dizer que o nvel de execuo anterior era o 2 e o atual o 3.

Scripts de inicializao (Debian)


SENAC-RR/2011

Os seguinte nveis de execuo esto disponveis na Debian:

0 - Interrompe a execuo do sistema. todos os programas e daemons finalizados.


acionado pelo comando shutdown h
1 - Modo monousurio, til para manuteno dos sistema.
2 - Modo multiusurio (padro da Debian)
3 - Modo multiusurio
4 - Modo multiusurio
5 - Modo multiusurio com login grfico
6 - Reinicializao do sistema. Todos os programas e daemons so encerrados e o
sistema reiniciado. acionado pelo comando shutdown -r

O nvel de execuo padro em uma distribuio GNU/Linux (Debian) definido atravs do


arquivo de configurao do /etc/inittab atravs da linha id:2:initdefault:

INICIALIZANDO SERVIOS
Por exemplo, para reconfigurar as interfaces de rede do computador, podemos utilizar os
seguintes comandos:
# cd /etc/init.d
# ./networking restart
ou
# /etc/init.d/networking restart
ou
# invoke-rc.d networking restart

DESABILITANDO E HABILITANDO SCRIPTS NA INICIALIZAO


O debian possue um diretrio de configurao global /etc/default, onde so passados
parmetros em vriaveis nos arquivos contidos em /etc/default para desabilitar e habilitar
servios. Por exemplo para desabilitar ou habilitar o servidor apache2 na inicializao, basta
alternar os valores das variveis entre 0 e 1 ou YES e NO do arquivo /etc/default/apache2.
# 0 = start on boot; 1 = don't start on boot
NO_START=0

update-rc.d - Gerencia os scripts de inicializao


Por padro, o update-rc.d iniciar os servios em cada um dos nveis de execuo
multiusurio(2,3,4 e 5) e ir par-los no nvel de execuo de interrupo (0), no nvel de
execuo monousurio(1) e no nvel de execuo reinicializao(6).
Syntax: update-rc.d Nome Servio start NN runlevel . stop NN runlevel .

SENAC-RR/2011

Nome Servio o mesmo nome do arquivo contido em /etc/init.d, NN significa a ordem


em que eles sero iniciados/parados e runlevel especifica em quais runlevels eles sero
iniciados/parados.
NOTA: O arquivo deve estar dentro do diretrio init.d.
# update-rc.d Nome Servio start 20 2 3 4 5 . stop 20 0 1 6 .
Colocando o defaults, ele ir deixar os runlevels para inicializao como:
2, 3, 4 e 5; e para finalizao: 0, 1 e 6. NN indica que o arquivo ter a mesma prioridade
na inicializao/finalizao. Para deixar diferente, especifique NN-start para a
inicializao e NN-stop para finalizao.
# update-rc.d Nome Servio defaults
J para remover um arquivo da inicializao/finalizao, use:
# update-rc.d -f Nome Servio remove

rcconf - Gerencia servios de inicializao em forma de menu.


Utilitrio do Debian semelhante ao ntsysv do Fedora e Red Hat, gerncia os scripts de
inicializao do diretrio /etc/rc?.d. Para instalar o rcconf execute no terminal como
root:
# apt-get install rcconf

Sua forma de utilizao igual ao ntsysv, usando as setas PARA CIMA e para PARA BAIXO
para escolher as opes, para habiltar e desabiltar usando a tecla ESPAO e para finalizar ou
cancelar apertando TAB.

Figura 17 - Script para executar programas na inicializao

SENAC-RR/2011

O debian no possui o arquivo rc.local, voc ter que cri-lo manualmente.


# cd /etc/rc.d/init.d
# touch rc.local
# echo "executa script no boot" > rc.local
# chmod +x rc.local
# update-rc.d rc.local defaults

PERDEU A SENHA DE ROOT (SUPERUSURIO)?


Algumas distribuies Linux no possvel mudar a senha de root tanto pelo LILO como pelo
GRUB, como o caso do Debian.

NO LILO
Quando ligar o computador aparece o prompt no boot a digite:
linux single
Aperte ENTER para inicializar o sistema sem pedir senha depois para colocar um nova senha
s digitar o comando:
# passwd

NO GRUB
Outra forma para qualquer distribuio Linux como Debian, Ubuntu, Kurumin e OpenSuse que
utilizam o grub, e no funciona o mtodo utilizado no Red Hat / Fedora e Mandriva, siga os passo
abaixo onde no sero salvar estas configuraes, so apenas nesse boot para trocar a
senha de root :
1) Quando ligar o computador aparece a tela do grub, escolha a primeira linha referente ao
kernel atual e a aperte E;
Veja abaixo:
Debian GNU/Linux, Kernel 2.6.18-4-686
Debian GNU/Linux, kernel 2.6.18-4-686 (single-user)
2) Vai aparecer a linha de inicializao escolha a segunda linha e aperte E novamente;
Veja abaixo:
/boot/vmlinuz-2.6.18-4-486 root=/dev/hda3
3) Apague tudo que estiver depois da partio do root e insira rw init=/bin/bash;
Exemplo:
antes:
SENAC-RR/2011

"kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hda1 ro"


Veja abaixo:
root (hd0,2)
kernel
/boot/vmlinux-2.6.18-4-686 root=/dev/hda
initrd
/boot/initrd.img-2.6.18-4-686
savedefault
depois:
"kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hda1 rw init=/bin/bash"
Veja abaixo:
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hda3 rw init=/bin/bash
4) Tecle Enter;
Veja abaixo:
root
kernel
initrd

(hd0,2)
/boot/vmlinuz-2.6.18-4-686 root=/dev/hd3 rw init=/bin/bash
/boot/initrd.img-2.6.18-4-686

5) Tecle B com as novas configuraes, para inicializar o sistema sem pedir senha depois para
colocar um nova senha s digitar o comando:
# passwd
Existem outras formas de recuperar senha de root atravs de disquete criado na instalao ou de
Lives CDs como Kurumin e Ubuntu

Recuperando a senha de root usando um Live CD.


Montaremos a partio raiz da instalao sem a senha para podermos alter-la.
Logado como root no sistema que voc possui a senha(Kurumin ou Ubuntu) voc precisar
montar a partio que precisa ser alterada a senha.
# mount /dev/hda1 /mnt/hda1
Onde hda1 onde est a partio / (raiz)
hda1 = Linux ext3 /
hda2 = Linux Swap

Mudando a senha
Com a partio montada e logado como root voc ter acesso de escrita ao file system(sistema
de arquivos) que parecia perdido.
Altere as permisses do arquivo shadow para escrita.
SENAC-RR/2011

# chmod 600 /mnt/hda1/etc/shadow


Agora edite o arquivo com seu editor de texto preferido, neste caso usarei o editor nano.
# nano /mnt/hda1/etc/shadow
No editor nano navegue at a linha onde esto as informaes do usurio root, algo como:
root:$1$8JoCa9gd$yTSRGtrWo3tUIpZwEbNLg0:12739:0:99999:7:::
E apague tudo do primeiro dois pontos ":" ao segundo, vai ficar assim:
root::12739:0:99999:7:::
Depois disso tudo voc ligou novamente o micro e aparece a tela do login, digite ento "root" e
aperte ENTER, em seguida, quando pedir a senha, no digite nada, d ENTER novamente e
pronto! Voc est logado como root! Agora s dar passwd e escolher uma nova senha.
# passwd

SENAC-RR/2011

GERENCIAMENTO DE PROCESSOS E
SERVIOS
PROCESSOS
Um processo um canal de comunicao entre os programas que esto sendo executados
no sistema operacional e o usurio, ou seja um processo um programa que est sendo
executado.
No Linux / Unix os processos utilizam os recursos de forma inteligente diminuindo o uso do
processador (CPU), ou seja quando processo de um programa tentar ler ou escrever
informaes no HD, este processo entrar na fila de espera at finalizar a entrada e sada
dados, enquanto isso ocorre, outro processo pode ser executado diminuindo o tempo de uso
e acesso do processador, memria RAM e perifricos.
Cada processo que est sendo executado armazena um subdiretrio com o mesmo nmero
do processo(PID) em /proc, e dentro desses subdiretrios armazenado informaes sobre
cada processo nos arquivos cmdline, environ e status.
Para exibir os processos so utilizados os comandos ps, pstree e top e para mudar a ordem
de prioridade dos processos so usados os comandos nice e renice.
Os processos tem prioridades alternando entre -20 (prioridade (maior) e 19 (prioridade
menor), o comando nice pode executar um programa com prioridade especficas sendo o
seu padro 10.
O comando renice modifica a prioridade de um processo em execuo, sendo que somente
o usurio root pode executar processos com prioridade negativa e modificar a ordem de
execuo de processos positivos para negativos.

COMPONENTES DE UM PROCESSO
A execuo de um processo possuem vrios componentes.

PID e PPID
O PID (Process Identification - indentificador de processo) um nmero de identificao que o
sistema exibe a cada processo. Nenhum PID pode existir para dois ou mais processos ao mesmo
tempo, devendo ser gerado um novo numero a cada um novo processo.
Quando isso ocorre, o processo "copiado" recebe o nome de "processo pai", enquanto que o
novo denominado "processo filho". justamente nesse momento que o PPID (Parent Process
Identification - indentificador de processo pai) passa a ser usado, sendo gerado em
funo do processo pai, o PID.

UID e GID
Lembrando que cada processo necessita de um proprietrio, ou seja, um usurio que seja
considerado seu dono. Nesse ponto, o sistema ir identificar, quem pode ou no executar o
processo em questo, isso de acordo com as permisses do usurio. Para lidar com os donos, o
sistema utiliza os nmeros UID e GID.
SENAC-RR/2011

No Linux os usurios e os grupos so gerenciados atravs dos nmeros UID (User Identifier) e
GID (Group Identifier). Como podemos perceber, que UID so nmeros de usurios e GID so
nmeros de grupos. No processo podemos visualizar os usurios e grupos, facilitando a sua
visualizao e somente o usurio root pode finalizar processos criados por outros usurios.

EUID e EGID
EUID (indentificador de usurio efetivo - Effective User IDentification) - ativa o bit setuid em um
programa permitindo que o processo com EUID seja executado como se fosse dono do arquivo
executvel ao invs do UID do usurio.
Por exemplo um programa com o bit setuid ativado como dono o usurio root, permite qualquer
usurio executar o programa como se fosse o usurio root, permitindo assim um invasor atacar
o sistema, portanto no recomendado ativar o bit setuid em seus programas.
Para verificar programas com bit setuid ativado use o comando find e visualize com ls -l.
$ find /usr/ -perm 4755 -print
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 28480 2007-02-27 04:53 /usr/bin/passwd
EGID (indentificador do grupo efetivo - Effective Group IDentification) - ativa o bit setgid em um
programa.

EXECUO DE UM PROCESSO
Quando um processo iniciado ele passa por vrias etapas, no incio o processo entra no estado
ready (leitura), o escalador de tarefas do kernel chamado de scheduler, determina de acordo
com a prioridade e a ordem de filas de espera dos processos, quando informar ao processador
sobre esse processo passando para o estado running (execuo).
No momento em que o processo entra na fila de espera, ele entra novamente no estado de ready
(leitura) e ficar esperando um novo processo de escalonado pelo kernel do sistema operacional.
Quando um processo tentar efetuar alguma operao de entrada e sada (I/O) de dados, o kernel
verificar se o dispositivo que ele est tentando acessar est ocupado, caso esteja, ento o
processo ser bloqueado e entrar no estado waiting (espera), esperando que a operao seja
finalizada.
No fim da execuo de um processo ele pode ser finalizado com o comando kill, os processos
que terminam sem que o parent (pai) seja informado, podem entrar no estado zombie (zombi)
que um processo morto rfo, sem que o processo pai seja avisado.
Exemplo de execuo de um processo:

SENAC-RR/2011

Figura 18 - Execuo de um processo

CLASSIFICAO DOS PROCESSOS


Abaixo podemos distinguir a classificao dos processos utilizados no sistema Linux / Unix.

Foreground (primeiro plano)

Os comandos quando executados em primeiro plano no terminal de comandos, passam a


interagir junto com o usurio, exibindo a sua execuo na tela do computador. Esses processos
ficam fixos no prompt, impedindo que outros processos sejam inicializados no terminal.

Background (segundo plano)

Os processos executados em background podem ser inicializados no terminal de shell, no h


interao com o usurio e nenhuma execuo visvel na tela do computador. Esses processos no
seguram o prompt de comandos, permitido assim que outros processos sejam inicializados no
terminal.

TIPOS DE PROCESSOS
PROCESSOS DINMICOS
A partir de uma sesso de usurio, os processos dinmicos so executados inicialmente em um
terminal de comandos e gerenciado por ele. Quando se executa um comando no terminal,
geralmente ele processado em modo foreground (primeiro plano).
Para interromper um processo utiliza-se as teclas <CTRL> + <Z>, onde automaticamente ser
exibido a mensagem "Stopeed" e o nmero do job entre colchetes [ ] desse processo, e para
cancelar um processo utiliza-se as teclas <CTRL> + <C>. Para controlar o gerenciamento de
processos so utilizados os comandos fg, bg e jobs.
Exemplo:
$ xeyes
SENAC-RR/2011

<CTRL> + <Z>
[1] + Stopped xeyes
$ xeyes
<CTRL> + <C>

PROCESSOS EM LOTE (BATCH)


Processos em lote so processos utilizados para tarefas agendadas que possuem comandos de
gerenciamento at, batch, e cron, que aps a sua execuo estiver finalizada pode ser enviado
uma notificao para o email do usurio.

PROCESSOS DAEMONS (SERVIOS)


Daemons ou servios de administrao do sistema, onde geralmente ficam localizados no
diretrio que so geralmente executados no inicio do sistema, ficam sempre em execuo
esperando em background (segundo plano) que algum outro processo solicite-o, os daemons
/etc/init.d/cron, portmap, apache, mysql e etc so exemplos de daemons (servios).

GERENCIAMENTO DE TAREFAS (JOBS)


a maneira pelo o qual os processos so finalizados e retornados ao seu estado inicial, os
processos so executados no terminal de comandos atravs de comandos de shell pelo usurio,
podendo um job armazenar um ou mais processos que podem ser visualizados pelo comando
jobs. No exemplo abaixo executado o programa xeyes em backgroung &.
$ xeyes &
[1] 3480

$ jobs -l
[1]+ 3480 Running

xeyes &

Acima exibido o nmero do job [1] e o PID do processo 22618.

COMANDOS DE GERENCIAMENTO DE PROCESSOS


CTRL + C (finaliza um processo)
CTRL + Z (interrompe um processo)

& - Executa um comando(processo) em background (segundo plano)


(comando) &
Exemplo:
$ firefox &

bg - Pe um comando(processo) em background (segundo plano)

SENAC-RR/2011

bg

(%id)

%id

Nmero do job colocado em segundo plano.

Exemplo:
$ xeyes
CTRL + Z
[1] + Stopped xeyes
$ bg %1
[1]+ xeyes &

fg - Coloca um processo em primeiro plano (background)


fg

(%id)

%id

Nmero do job colocado em primeiro plano.

Exemplo:
$ top &
[1] 3004
$ fg %1
CTRL + C

jobs - Exibe os jobs em execuo


jobs (opes)
Opo
-l
-s
-p

Significado
Exibe o nome e o numero de cada processo
Exibe o nome de cada processo
Exibe o numero de cada processo

Exemplo:
$ firefox &
$ jobs
$ jobs -l
$ jobs -p

ps - Mostra informaes sobre processos em execuo


ps (opes)
Opo
-A
-a
-u
-x
-p

Significado
Mostra todos os processos
Mostra informaes de outros usurios
Mostra o nome do usurio e o horrio de incio do processo
Mostra processos do terminal corrente e de outros terminais
Mostra o nmero do processo PID

Exemplo:
$ firefox &
$ ps -aux
SENAC-RR/2011

$ ps -aux | grep firefox


Abaixo seguem as opes exibidas da saida do comando ps
Opo
USER
PID
%CPU
%MEM
VSZ
RSS
TTY

STAT

START
TIME
COMMAND

Significado
Nome do usurio dono do processo
ID do processo
Porcentagem do consumo de CPU
Porcentagem do consumo de memria
Tamanho virtual do processo
Nmero de pginas na memria(Resident Set Size)
TTY do terminal
Estado processo:
R (executvel), S (Dormente (< 20 segundos)), Z (Zumbi), D (espera
no disco(curto prazo)), T (rastreado ou interrompido)
Outras opes adicionais:
W (processo paginado em disco), < (prioridade do processo maior
que o normal), N (prioridade do processo menor que o normal), L
(pginas bloqueadas no kernel do sistema)
Horrio de incio do processo
Tempo de consumo do processador (CPU) consumido pelo processo
Nome do comando e opes

pstree - Mostra informaes sobre processos em execuo em forma de rvore


pstree (opes) (PID)
Opo
Significado
-a
Mostra opes de comandos no terminal
-c
No compacta subrvores.
-l
Mostra linhas de forma detalhada
-n
Classifica os processos pelo PID
-p
Exibe o PID dos processos.
Exemplo:
$ pstree -p
$ pstree -nap

pidof - Exibe o PID do processo informado


pidof (opes) (processo)
Opo
Significado
-s
Exibe apenas o PID
-x
Exibe o PID do script que est sendo executado
Exemplo:
$ top &
$ pidof top

top - Visualiza os processos com o maior uso do processador (CPU)


top (opes)
SENAC-RR/2011

Opo
-u(usurio)
-U (usurio)
-d (n)

Significado
Mostra processos de um usurio especfico
No mostra processos de um usurio especfico
Atualiza a tela do monitor a cada n segundos

Exemplo:
$ top
$ top -u aluno1
$ top -u aluno1 -d 3

(atualiza os processos do usurio aluno1 a


cada 3 segundos)

Pressione H para ajuda e para sair pressione Q ou CTRL + C


Abaixo seguem as opes exibidas da saida do comando top
Opo
PID
USER
PR

Significado
ID do processo
Nome do usurio dono do processo
Prioridade do processo
Nice do processo (um valor negativo significa maior prioridade e um
NI
valor positivo menor prioridade)
VIRT
Memria virtual total usada
RES
Memria fsica usada
SHR
Memria compartilhada usada
Status do processo: R (executando), S (dormindo), T (parado), Z
S
(Zumbi) e D (dormindo sem interrompo)
%CPU
Porcentagem do consumo de CPU
%MEM
Porcentagem do consumo de memria
TIME
Tempo de consumo do processador (CPU) consumido pelo processo
COMMAND Nome do comando e opes

free - Visualiza a quantidade de memria livre e usuada pelo sistema


free (opes)
Opo
Significado
-b
Mostra informaes em bytes (Bytes)
-k
Mostra informaes em kbytes (KB)
-m
Mostra informaes em megabytes (MB)
-g
Mostra informaes em gigabytes (GB)
Mostra os dados de memria sem exibir a memria utilizada como
-o
buffer
-s (n)
Mostra os dados de memria a cada n segundos
Exemplo:
$ free - -help
$ free
$ free -m
$ free -s 3

(atualiza os processos do usurio aluno1 a cada 3


segundos)

vmstat - Exibe estatstica de utilizao da memria swap

SENAC-RR/2011

vmstat (opes) intervalo tempo quantidade


Opo
Significado
-n
Mostra as informaes de uma s vez
-V
Exibe a verso do comando
Exemplo:
$ vmstat - -help
$ vmstat
$ vmstat -n
$ vmstat 1 3

atualiza o comando a cada 1 segundo


3 vezes)

kill - Finaliza um processo pelo PID


kill (sinal) (PID processo)
Opo
Significado
-V
Exibe a verso
-l
Lista todos os nomes e nmeros de sinais
O sinal padro para o kill TERM(encerramento por hardware), usando a opo -l no
comando kill so exibidos todos os sinais , como HUP(suspender), INT(interromper),
KILL(destruir), STOP(parar), QUIT(sair) e etc. Para mais detalhes sobre os sinais use o
comando man kill.
Para matar um processo so utilizadas 3 maneiras usando os sinais negativos: -9, SIGKILL e -KILL.
Exemplo:
$ kill -l
$ kill -l KILL
9
$ top &
[1] 3357
$ kill -9 3357
ou
$ kill -KILL 3357
ou
$ kill -SIGKILL 3357

killall - Finaliza processos pelo nome


killall (opes) (sinal) (Nome processo)
Opo
Significado
-V
Exibe a verso
-l
Lista todos os nomes e nmeros de sinais
SENAC-RR/2011

Exemplo:
$ kill -l
$ xeyes &
[1] 3409
$ killall xeyes
[1]+ Terminado xeyes
$ top &
[1] 3357
$ killall -9 top
ou
$ killall -KILL top
ou
$ killall -SIGKILL top

nohup - Continua executando um comando mesmo que o usurio saia do sistema


Nohup (comando)
Exemplo:
$ nohup find /usr | grep adduser &

nice - Executa um processo com prioridade de execuo


nice [opes] (prioridade) (comando)
Opo
Significado
- -help
Mostra uma mensagem de ajuda
- -version
Mostra a verso do comando
Valor da prioridade do processo, sendo que quanto maior o
valor, menor ser a prioridade de escalonamento do processo,
(prioridade)
variando entre os valores -20 a +19, sendo -10 o valor padro
de prioridade.
Exemplo:
$ nice -1 firefox

renice - Modifica a prioridade de um processo em execuo


renice (prioridade) (opes)
opo
Significado
(prioridade)
Valor que deve ser atribudo prioridade do processo
-p (nmero)
Processo
-u (usurio)
Nome do usurio
-g (grupo)
Grupo do usurio
Exemplo:
SENAC-RR/2011

$ firefox &
[2] 3429
$ renice +19 3429

(modifica a prioridade do processo 3429 para


+19)
3429: prioridade antiga = 0; prioridade nova = 19
$ renice -1 -p 3429
(modifica a prioridade do processo 3429 para
-1)
3429: prioridade antiga = 19; prioridade nova = -1
# renice -20 -u aluno1
(modifica a prioridade para -20 de todos os
processos do usurio aluno1)
3429: prioridade antiga = -1; prioridade nova = -20

SENAC-RR/2011

REGISTRO DE EVENTOS (SYSLOG)


MENSAGENS DO SISTEMA

dmesg - Configura e imprime mensagens do kernel

O registro de mensagens do kernel armazena logs em um buffer de log que armazena


mensagens sobre tarefas do kernel na inicializao do sistema tais como uma insero de um
novo mdulo no kernel, um novo CD-ROM, uma nova placa de rede, um novo HD etc, e
podendo ser exibidas atravs do comando dmesg que armazena logs do kernel no arquivo:
Debian, hedhat, fedora, slackware
/var/log/dmesg (Debian, Red Hat / Fedora, Mandriva e slackware)
OpenSuse
/var/log/boot.msg (OpenSuse)

dmesg [opes]
Opes
-c
-s <tamanho>

Descrio
Limpa o contedo em buffer do kernel
Tamanho do buffer (geralmente 8.192.bytes)

Exemplos:
$ dmesg
$ dmesg | grep CD-ROM
hdd: ATAPI 52X CD-ROM drive, 128kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20

$ dmesg | grep hda


Kernel command line: root=/dev/hda3 ro
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:DMA
hda: Maxtor 2F020L0, ATA DISK drive
hda: max request size: 128KiB
hda: Host Protected Area detected.
hda: Host Protected Area disabled.
hda: 40718160 sectors (20847 MB) w/2048KiB Cache, CHS=40395/16/63,
UDMA(133)
hda: cache flushes supported
hda: hda1 hda2 hda3
Adding 979956k swap on /dev/hda2. Priority:-1 extents:1 across:979956k
EXT3 FS on hda3, internal journal

SENAC-RR/2011

$ dmesg | grep eth0


eth0: SiS 900 PCI Fast Ethernet at 0xe400, IRQ 169, 00:16:ec:2d:e0:78.

$ dmesg -c

syslogd - gerenciador de mensagens de log do sistema

um daemon(servio) executado na inicializao do sistema para envio de mensagens de


log tais como: avisos, alertas, informaes, erros e etc de outros daemons e do kernel. Outro
recurso do syslogd que ele pode ser configurado para enviar mensagens em um
computador local ou remoto.

ARQUIVO DE CONFIGURAO
O arquivo de configurao do syslogd fica localizado em:
Debian, redhat, slackware
/etc/syslog.conf .
OpenSuse
/etc/sysconfig/syslog
Fedora
/etc/sysconfig/rsyslog
Sintaxe do arquivo syslog.conf

Figura 19 - Sintaxe do arquivo syslog.conf

Onde o campo selecto pode ser dividido em duas opes separadas por um ponto " . "
Por exemplo, a linha abaixo do arquivo /etc/syslog.conf:
mail.err

/var/log/mail.err

Enviaria as mensagens de erros de email para o arquivo /var/log/mail.err.


recurso da mensagem . prioridade do aviso
SENAC-RR/2011

O campo recurso da mensagem diz qual o tipo de mensagem que pode ser da seguinte forma:
Recurso da mensagem
*
auth
authpriv
kern
cron
daemon
ftp
mail
syslog
news
lpr
user
uucp
mark
local0
local7

Significado
Todos os recursos, memos o recurso mark
Mensagens de segurana e autorizao
Mensagens de controle de acesso autorizado privada
Mensagens do kernel
Mensagens do daemon cron
Mensagens de todos os daemons do sistema
Mensagens do daemon ftp
Mensagens do servidor de email e outros porgramas
relacionados com email
Mensagens do daemon syslogd
Mensagens do servidor de notcias
Mensagens do servidor de impresso
Mensagens de processos de usurios
Mensagens reservadas para UUCP, que no o utiliza
Mensagens de timestamps geradas em intervalos de tempo
Mensagens locais
Mensagens de incio do sistema (boot)

O campo prioridade do aviso diz qual o tipo de prioridade da gravidade do aviso, em ordem
decrescente em nveis de gravidade:
Prioridade do aviso
emerg
alert
crit
err
warning
notice
info
debug

Significado
Mensagens de situao de pnico
Mensagens de situao de urgncia
Mensagens de condies crticas
Mensagens de erros
Mensagens de alerta
Mensagens de notificao e anlise
Mensagens do informaes
Mensagens de depurao

Podemos ainda permtir o uso caracteres e da palavra none, antecedidos da prioridade da


mensagem como mostra a tabela abaixo.
Caractere
none
*
=
!
,
;

Significado
Sem nenhuma prioridade
Todos os recursos ou prioridade de mensagens
Limita um recurso ou prioridade
Determina uma exceo de um recurso ou prioridade
Determina que um recurso ou prioridade no pode ser usado
Permite o uso de vrios recursos
Permite o uso de vrios campos seletores

A tabela abaixo mostra alguns exemplos de uso dos caracteres de nvel de prioridade.
Campo seletor
mail, news . alert
mail . info
mail .= info
mail . info ; mail . ! err

Significado
Envia todas as mensagens de mail e news com prioridade
alert ou superior
Envia todas as mensagens de mail com prioridade info ou
superior
Envia apenas as mensagens de mail com prioridade info
Envia apenas as mensagens de mail com prioridade info,
notice e warning exceto a prioridade err
SENAC-RR/2011

mail . debug; mail . != warning


mail . *
*. err ; news . none
* . crit

Envia todas as mensagens de mail com todas prioridades,


exceto warning
Envia todas as mensagens de mail com todas prioridades
Envia todas as mensagens com prioridade de err ou superior,
exceto news
Envia todos os recursos de mensagens com prioridade crit

O campo ao da mensagem informa para onde ser enviada a mensagem, que pode ser um
arquivo de log em um computador local ou remoto, um dispositivo ou um grupo de usurios
como mostra a tabela abaixo.
Ao da mensagem
Filename
@hostname
@ipaddress
| fifoname
user1, user2, etc
*

Significado
Grava as mensagens em um arquivo no computador local
/var/log/messages, /var/log/syslog, etc
Redireciona as mensagens para o syslogd de um computador host
remoto
Redireciona as mensagens para o syslogd de um endereo IP remoto
Grava mensagens em um pipe com o nome de fifoname (use man
mkfifo para mais detalhes)
Grava as mensagens dos usurios que esto logados.
Grava mensagens para todos os usurios logados no sistema

ARQUIVOS DE LOGS
Os arquivos de logs mais usados para anlise de problemas no sistema so:

/var/log/messages
/var/log/syslog
/var/log/secure
/var/log/security

Para verificar erros de arquivos de configurao, use o comando tail como root, para ver erros
em tempo real, use a opo -f.
# tail /var/log/messages
# tail -f /var/log/syslog
Nesses arquivos podemos ver os seguintes campos:
Data
Aug 30

Hora
12:26:3

Mquina
localhost

Daemon
syslogd

Mensagem
1.4.1#19: restart.

Inicializao do daemon syslogd


Por padro o servio de log j vem habilitado na inicializao do sistema, para iniciar ou parar o
daemon syslogd execute os comando abaixo:
Debian, Ubuntu e Kurumin
# /etc/init.d/sysklogd start
Red Hat

SENAC-RR/2011

# /sbin/service syslogd start


Fedora
# /sbin/service rsyslog start
Mandriva e OpenSuse
# /sbin/service syslog start
Slackware
# /etc/rc.d/rc.syslog start

Testando o daemon syslogd


Para testar entradas de logs e alterales no arquivo de configurao de syslogd utilizado o
comando logger.
$ logger -p mail.err "ola"
$ cat /var/log/mail.log
Jan 7 16:41:08 localhost aluno1: ola

EXEMPLO DE CONFIGURAO /ETC/SYSLOG.CONF


# /etc/syslog.conf
# grava arquivos de logs padres em /var/log com todas prioridades, exceto auth e authpriv em
syslog
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none
/var/log/syslog
cron.*
/var/log/cron.log
daemon.*
-/var/log/daemon.log
kern.*
-/var/log/kern.log
lpr.*
-/var/log/lpr.log
mail.*
-/var/log/mail.log
user.*
-/var/log/user.log
uucp.*
-/var/log/uucp.log
# grava arquivos de logs de email com prioridade info, warn e err
mail.info
mail.warn
mail.err

-/var/log/mail.info
-/var/log/mail.warn
/var/log/mail.err

# grava arquivos de logs de notcias no sistema com prioridade crit, err e notice
news.crit
news.err
news.notice
*.=debug;\

/var/log/news/news.crit
/var/log/news/news.err
-/var/log/news/news.notice
# grava todos os recursos com prioridade debug em /var/log/debug

SENAC-RR/2011

auth,authpriv.none;\
# no grava os recursos auth e authpriv em /var/log/debug
news.none;mail.none -/var/log/debug
# no grava os recursos news e mail em
/var/log/debug
*.=info;*.=notice;*.=warn;\ # grava todos os recursos com prioridade info, notice e warn em
/var/log/messages
auth,authpriv.none;\
# no grava os recursos auth e authpriv em /var/log/messages
cron,daemon.none;\
# no grava os recursos cron e daemon em /var/log/messages
mail,news.none -/var/log/messages # no grava os recursos mail e news em
/var/log/messages
daemon.*;mail.*;\
# grava os recursos daemon e mail com todas prioridades no
dispositivo /dev/xconsole
news.crit;news.err;news.notice;\
# grava o recurso news com as prioridades crit, err e
notice em /dev/xconsole
*.=debug;*.=info;\
# grava todos os recursos com prioridades debug, info, notice e
warn em /dev/xconsole
*.=notice;*.=warn |/dev/xconsole

MENSAGENS DE LOG REMOTO


O daemon syslogd pode ser configurado para executar em um computador remoto pela rede,
para isso necessrio adicionar no arquivo de configurao /etc/syslog.conf do computador que
ir enviar as mensagens de log, o nome do computador remoto que ir receber as mensagens,
antecedido de um @ (arroba) antes do nome do host ou endereo IP.
Edite o configurao do arquivo /etc/syslog.conf adicionando a seguinte linha:
*.*

@servidor1.linuxbrasil.org.br

ou
*.*

@192.168.1.1

ou
*.*

@servidor1

Agora edite o arquivo /etc/hosts do computador local (cliente) que enviar as mensagens de log,
incluindo o nome do host remoto (servidor) e o endereo IP. Faa o mesmo procedimento no
computador remoto.
# /etc/hosts
192.168.1.1

servidor1.linuxbrasil.org.br

servidor1

Isso faz com que todas as mensagens sejam enviadas para o computador remoto
servidor1.linuxbrasil.org.br com endereo IP 192.168.1.1. Caso o computador remoto no esteja
respondendo, voc pode tambm incluir um cpia das mensagens de log local e remoto.
# logs remoto
mail.*
@servidor1.linuxbrasil.org.br
kern.*
@192.168.1.1
SENAC-RR/2011

# logs
mail.*
kern.*

local
-/var/log/mail.log
-/var/log/kern.log

Aps isso, configure o daemon syslogd do computador que ir receber mensagens de log remoto,
editando o arquivo de configurao do syslogd incluindo a opo -r para log remoto.
Debian - /etc/default/syslogd
SYSLOGD="-r"
Fedora - /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-r -m 0"
OpenSuse - /etc/sysconfig/syslog
SYSLOGD_PARAMS="-r"
Feito as alteraes voc pode reiniciar o syslogd ou reinicie diretamente o computador
# reboot
Para testar use o comando logger no computador local (cliente)
$ logger -p mail.warn "ola mundo"
Verifique agora as mensagens de log no computador remoto (servidor)
$ tail /var/log/mail.warn
Jan 7 20:46:26 pc01.linuxbrasil.org.br aluno1: ola mundo

SENAC-RR/2011

AGENDAMENTO DE TAREFAS CONTAB E


AT
TAREFAS AUTOMATIZADAS
O servio atd
O daemon(servio) atd um servio do Linux / Unix localizado no diretrio /etc/init.d/, e tem a
funo de executar um lista de tarefas em um determinado horrio, e possue os seguintes
diretrios:
Debian, Ubuntu:
/var/spool/cron/atjobs - armazena a lista de tarefas
/var/spool/cron/atspool - armazena a sada de execuo da lista de
tarefas.
Redhat:
/var/spool/at
/var/spool/at/spool/

at - executa tarefas com horrio agendado As permisses para executar o comando at


so feitas pelos arquivos /etc/at.allow e /etc/at.deny.
Caso exista o arquivo /etc/at.allow, o superusurio root dever ser especificado e ento
o comando at s poder ser executado pelos usurios especificados no arquivo e se
/etc/at.allow estiver vazio todos os usurios podero executar o comando at.
Caso o arquivo /etc/at.allow no exista, ento ser verificado a existncia do arquivo
/etc/at.deny, que contm os usurios que no podero executar o comando at. Mas se
caso nenhum deles existir, somente o usurio root poder executar o comando at.
at (opes) (hora) (ms dia ano)
Opes
Descrio
-V
Exibe a verso do comando
-l
Exibe a fila de trabalhos do at (mesmo que atq)
-m
Avisa por email sobre o comando executado
-f script
Executa comandos de um script
-d
Remove a fila de trabalhos do at (mesmo que atrm)
Especifica o horrio no formato: h(horas):m(minutos), hh:mm
hora
ou hhmm, pode ser usado noon, midnight e now
Especifica a data no formato em ingls: (jan(janeiro),
feb(fevereiro), mar(maro), apr(abril), may(maio),
ms
jun(junho),jul(julho), ago(agosto), sep(setembro),
oct(outubro), nov(novembro) e dec(dezembro), pode-se usar
tambm today e tomorrow.
Exemplos:
SENAC-RR/2011

$ at 21:25 apr
warning: commands will be executed using /bin/sh
at> touch /tmp/arquivo APERTE ENTER
at> <EOT>APERTE CTRL + D
job 1 at Tue apr 8 21:25:00 2008

$ at -l (exibe a tarefa)
1 Thu Apr 10 21:25:00 2008 a aluno1

$ at -d 1 (apaga a tarefa com o nmero 1)

atq - exibe a fila de tarefas agendadas do comando at


Exemplos:
$ atq
1 Thu Apr 10 21:25:00 2008 a aluno1

atrm - remove a fila de tarefas agendadas do comando at


atrm (fila de trabalho)
Exemplos:
$ atrm 1 (remove a fila com o nmero 1)

batch - executa comandos quando o nvel de carga do sistema permitir


Em outras palavras, quando a carga mdia do sistema estiver abaixo de 1.5 (verificando a
sada de top no campo load average), ou um valor especificado pela invocao do atd.
Exemplos:
$ cd /home/aluno1
$ cat > comandos
touch /tmp/teste1
echo 1 > /tmp/teste1
APERTE ENTER
APERTE CTRL + D
$ chmod +x comandos
$ batch
warning: commands will be executed using /bin/sh
at> /home/aluno1/comandos APERTE ENTER
at> <EOT>APERTE CTRL + D
job 15 at Tue Jan 8 22:57:00 2008

SENAC-RR/2011

Aps algum tempo execute o comando top, e quando o sistema permitir ser criado o
arquivo teste1 em /tmp.
$ top
$ ls /tmp
teste1

INICIALIZAO DO DAEMON ATD


Debian, Ubuntu:
# /etc/ini.d/atd start
Redhat, fedora, mandriva e opensuse
# /sbin/service atd start
Slackware
# /usr/sbin/atrun

O SERVIO CROND
O daemon(servio) cron um servio do sistema localizado no diretrio /etc/init.d/, e tem a
funo de executar tarefas automticas com comandos e programas em datas e horrios
programados e possue o seguinte arquivo e diretrio de configurao.

/etc/crontab - onde so armazenados os comandos ou programas a serem executados


/var/spool/cron/ - armazena os arquivos de crontab dos usurios.

A sintaxe do arquivo /etc/crontab possui o seguinte formato:


(minutos) (horas) (dias do ms) (ms) (dias da semana) (usurio) (comando)
O preenchimento de cada campo feito da seguinte maneira:
Campo
Minutos:
Horas:
Dias do ms:
Ms:
Dias da semana:
Usurio:
Comando:

Valores permitidos
Nmeros de 0 a 59
Nmeros de 0 a 23
Nmeros de 1 a 31
Nmeros de 1 a 12
Nmeros de 0 a 7 - de domingo (0) a sbado (7)
Pode ser root ou um usurio do sistema
Comando ou script a ser executado

Obs: Um asterisco (*) indica que pode ser usado qualquer valor indicado em qualquer campo.
Por exemplo, se for usado no campo "dias da semana", o script ser executado em todos os dias
da semana de domingo (0) a sbado (7) 0 a 7.

SENAC-RR/2011

Abaixo segue um exemplo do arquivo /etc/crontab, adicionando uma nova linha no arquivo
/etc/crontab, no necessrio executar o comando crontab para criar uma nova crontab.
#/etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report
/etc/cron.daily
)
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report
/etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report
/etc/cron.monthly )
Essas entradas em /etc/crontab, diz ao daemon /etc/init.d/cron executar o programa run-parts
e /usr/sbin/anacron em datas e horrios programados. Esses programas executa scripts,
comandos e programas especificados nos diretrios a abaixo:
Diretrio
/etc/cron.hourly
/etc/cron.dail
/etc/cron.weekly
/etc/cron.monthly
55

23

Descrio
Ser executado toda hora
Ser executado todo dia
Ser executado uma vez por semana
Ser executado uma vez por ms
1-12

1-5

root

/root/script

Essa linha de contab executa o script /root/script como superusurio root, de segunda a sexta
(1-5), entre o ms de janeiro a dezembro (1-12), todos os dias do ms, s 23:55.
CRONTAB

O comando crontab utilizado para gerenciar criando, editando e removendo arquivos de


contab para usurios individualmente localizados em /var/spool/cron automaticamente em
data e horrios programados.
As permisses para executar o comando crontab so feitas pelos arquivos /etc/cron.allow e
/etc/cron.deny.
Caso exista o arquivo /etc/cron.allow, o superusurio root dever ser especificado e ento o
comando crontab s poder ser executado pelos usurios especificados no arquivo e se
/etc/cron.allow estiver vazio todos os usurios podero executar o comando crontab.
Caso o arquivo /etc/cron.allow no exista, ento ser verificado a existncia do arquivo
/etc/cron.deny, que contm os usurios que no podero executar o comando crontab. Mas se
caso nenhum deles existir, somente o usurio root poder executar o comando crontab.
crontab (opes) arquivo
Opo
Significado
-u(usurio)
Especifica o nome de usurio que ser usado pelo arquivo contab
-l
Mostra o arquivo de crontab do usurio corrente
-r
Remove o arquivo de crontab do usurio corrente
-e
Edita o arquivo de crontab do usurio corrente arquivo
SENAC-RR/2011

Especifica o arquivo de crontab a ser usado no mesmo formato do arquivo


/etc/crontab

arquivo
Exemplos:
Criando um script

$ cd /home/aluno1
$ cat > script
#!/bin/bash
echo "criando um script"
touch /tmp/arquivo
$ chmod +x script

Criando uma crontab


Ao usar a opo -e do comando crontab, ser aberto o editor padro do sistema, podendo ser os
editores vi ou nano para editar e salvar o arquivo.
$ crontab -e
# m h dom mon dow command
15 8 1-31 1-12 0-7 aluno1 /home/aluno1/script
ou crie um arquivo de crontab
$ cd /home/aluno1
$ cat > arquivo_crontab
15 8 1-31 1-12 0-7 aluno1 /home/aluno1/script
APERTE ENTER
APERTE CTRL + D

$ crontab arquivo_crontab

$ crontab -l
15 8 1-31 1-12 0-7 aluno1 /home/aluno1/script

$ crontab
-r
LOGROTATE

SENAC-RR/2011

Logrotate programa utilizado para gerenciar o crescimento do tamanho dos arquivos de log do
sistema, rotacionando(onde so criados novos arquivos de logs), compactando diminuindo o
tamanho do arquivo de log, removendo e enviando por email os arquivos de log.
O programa logrotate executado todos os dias pelo daemon crond atravs do arquivo
/etc/cron.daily/logrotate , e possue os seguintes arquivos e diretrios:

/etc/logrotate.conf - arquivo de configurao global.


/etc/logrotate.d- diretrio onde so armazenados os scripts de logrotate de arquivos de
log individuais de cada programa.
/etc/cron.daily/logrotate - arquivo de configurao para o daemon crond executar
diariamente o scripts de logrotate

Exemplo do arquivo /etc/logrotate.conf


# /etc/logrotate.conf
# rotaciona os arquivos de log uma vez por semana
weekly
# rotaciona os arquivos de log 3 vezes
rotate 3
# cria novos arquivos de log vazios aps rotacionar os logs antigos
create
# descomente essa linha se voc quer comprimir seus arquivos de log
#compress
# diretrio dos scripts de logrotate
include /etc/logrotate.d
# os arquivos /var/log/wtmp e /var/log/btmp no sero rotacionados
aqui
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
# aqui voc pode especificar outras configuraes de log globais
A rotao feita de acordo com o tamanho dos logs, sendo usado um contador no final do nome
de arquivo de log e caso o contador tenha um 0 ou a palavra old(verso antiga), o um arquivo de
log atingir tamanhos acima de 20 MB.
Abaixo segue um exemplo de rotacionamento e compactao de logs no diretrio do daemon
syslog em /var/log. O funcionamento do rotacionamento funciona da seguinte forma:
1. Na primeira vez o arquivo syslog rotacionado e renomeado para syslog.1.gz e ser
criado um novo arquivo syslog vazio.

SENAC-RR/2011

2. Na segunda vez o arquivo syslog rotacionado o arquivo syslog.1.gz renomeado


para syslog.2.gz e o arquivo syslog renomeado para syslog.1.gz e ser criado um
novo arquivo syslog vazio.
3. Na terceira vez o arquivo syslog rotacionado o arquivo syslog.2.gz renomeado
para syslog.3.gz, o arquivo syslog.1.gz renomeado para syslog.2.gz, o arquivo syslog
renomeado para syslog.1.gz e ser criado um novo arquivo syslog vazio.
4. Na ltima vez o arquivo syslog.3.gz apagado, e o arquivo syslog.2.gz renomeado
para syslog.3.gz, o arquivo syslog.1.gz renomeado para syslog.2.gz, o arquivo syslog
renomeado para syslog.1.gz e ser criado um novo arquivo syslog vazio.
# ls -lh /var/log/ -rw-r----- 1 root adm 29K 2008-01-09 11:17 syslog
-rw-r----- 1 root adm 181K 2008-01-09 06:39 syslog.0
-rw-r----- 1 root adm 29K 2008-01-08 07:19 syslog.1.gz
-rw-r----- 1 root adm 18K 2008-01-07 06:56 syslog.2.gz
-rw-r----- 1 root adm 16K 2008-01-06 06:55 syslog.3.gz
Voc poder usar o comando logrotate com a opo -f para "forar" a rotao de logs e a opo -d
informa mais detalhes os processos do logrotate.
# logrotate -d -f /etc/logrotate.conf

# logrotate -d -f /etc/logrotate.d/apache2

# ls /var/log
# ls /var/log/apache2
-rw-r----- 1 root adm 0 2008-01-09 12:24 access.log
-rw-r----- 1 root adm 159K 2008-01-08 21:12 access.log.1
-rw-r----- 1 root adm 3,6K 2008-01-04 13:55 access.log.2.gz
-rw-r----- 1 root adm 117 2008-01-09 12:24 error.log
-rw-r----- 1 root adm 761 2008-01-09 12:24 error.log.1.gz
-rw-r----- 1 root adm 831 2008-01-06 06:56 error.log.2.gz
Logrotate pode ser configurado globalmente no arquivo /etc/logrotate.conf, ou
especificando individualmente em um arquivo em /etc/logrotate.d/ como mostra o
exemplo abaixo retirado do comando man logrotate, onde rotaciona os arquivos
logs /var/log/syslog 3 vezes, semanalmente e envia um sinal atravs do comando
/usr/bin/killall -HUP syslogd, suspendendo o processo do daemon syslogd:
Exemplo de configurao de arquivo logrotate individual:
# /etc/logrotate.d/syslog
/var/log/syslog {
rotate 3
weekly
SENAC-RR/2011

postrotate
/usr/bin/killall -HUP syslogd
endscript
}

# logrotate -d -f /etc/logrotate.d/syslog

Inicializao do daemon crond


Debian, Ubuntu e Kurumin
# /etc/init.d/cron start
Red Hat , Fedora, Mandriva e OpenSuse
# /sbin/service crond start
Slackware
# /usr/sbin/crond

SENAC-RR/2011

ADMINISTRAO DE
SISTEMAS II

SENAC-RR/2011

SISTEMAS DE AUTENTICAO
J houve muitas discusses, algumas bastante acaloradas, sobre a segurana de sistemas na
seo de comentrios do DistroWatch Weekly (DWW) nos ltimos meses. Algumas pessoas at
argumentam contra o que a maioria considera a segurana bsica do Linux. Por causa disso, eu
recebi vrios pedidos para escrever um artigo completo e com referncias sobre os conceitos
bsicos de segurana no Linux. claro que existem livros inteiros dedicados segurana no
Linux, e quando comecei a escrever ficou claro que um artigo s no bastaria para cobrir o
assunto. Considere o artigo desta semana como um ponto de partida para uma pequena e
intermitente srie de artigos sobre a segurana no Linux.
Limitei o escopo deste e de futuros artigos do DistroWatch sobre segurana para que ele fizesse
sentido para os usurios domsticos e de pequenas empresas ou, em outras palavras, para
ambientes com apenas um punhado de sistemas e usurios. A maior parte do que ser descrito a
seguir se aplica ao BSD, ao OpenSolaris ou a qualquer sistema operacional UNIX ou semelhante
ao UNIX, embora os nomes de arquivos, comandos especficos e a sintaxe possam ser um pouco
diferentes. Para simplificar as coisas, vou me ater aos sistemas Linux.
Antes de descrever o bsico da autenticao no Linux, as discusses recentes deixaram muito
claro que eu devo comear definindo o que entendo como segurana. Tambm tenho que
responder pergunta mais bsica de todas, que seria o porqu de termos que nos preocupar
com esse assunto. Alguns leitores do DWW afirmam ter ignorado completamente a segurana
sem ter um problema sequer a relatar por muitos anos. Essas declaraes certamente so
autnticas. Isso no significa que o potencial para problemas reais no exista. Kurt Seifried, em
seu Linux Administrator's Security Guide, escreveu: "Basta cometer um erro ou deixar uma
nica falha em aberto para que um atacante entre. Isso, obviamente, significa que a maioria dos
sites ser invadida mais dia, menos dia." Ele acrescenta: "Todas as medidas tcnicas de
segurana acabaro falhando ou se tornando vulnerveis diante de um atacante. por isso que
voc precisa de mltiplas camadas de proteo."
O livro Practical UNIX and Internet Security oferece uma definio bem simples e direta de
segurana: "Um computador seguro quando voc pode confiar que ele e seu software se
comportaro como voc espera." H muitas definies mais tcnicas e detalhadas por a, mas
essa realmente resume tudo. Se algum faz uso de seu(s) sistema(s) para atingir seus prprios
objetivos sem seu consentimento, essa condio no mais atendida. O uso sem sua autorizao
pode originar-se de um amigo ou de um parente que no deseje causar mal algum, de um
companheiro de trabalho ou de um estranho do outro lado do mundo.
Quando eu falo em segurana, uma das perguntas que me fazem com frequncia por que
algum iria querer atacar um sistema domstico ou de uma pequena empresa. Na semana
passada, a Linux Pro Magazine Online publicou um relatrio descrevendo cem servidores Linux
com pssima segurana na Rssia usados como parte de uma botnet para distribuir malware
para sistemas Windows. Tenha em mente que muitos sistemas desktop domsticos so mais
poderosos do que servidores com alguns anos de idade. Combine a potncia do hardware de
hoje s conexes contnuas de banda larga em alta velocidade das quais muitos de ns nos
servimos, e voc vai entender como quase qualquer sistema pode ser um alvo interessante.

SENAC-RR/2011

CONTAS E SENHAS
A primeira e mais simples linha de defesa uma senha. Em seu livro, Securing & Optimizing
Linux: The Ultimate Solution, Gerhard Mourani escreve: "Muitas pessoas mantm suas
valiosas informaes e arquivos em um computador, e a nica coisa que impede terceiros de
terem acesso a isso tudo a sequncia de oito caracteres que chamamos de senha. Uma senha
indecifrvel, ao contrrio do que dizem por a, no existe. Com tempo e recursos em mos,
qualquer senha pode ser adivinhada por meio de engenharia social ou fora bruta." Alguns
usurios do Linux vo alm, rodando distribuies que no tm senha ou que usam uma senha
conhecida e disponvel publicamente para uma conta com privilgios ou de root. Isso
praticamente a mesma coisa que pr um tapete de boas-vindas para uma pessoa com acesso
fsico ao sistema e que esteja disposta a invadi-lo. Uma vulnerabilidade em um servio que se
comunique pela Internet pode, de fato, deixar um sistema desses aberto para literalmente
qualquer um que conhea a falha e a senha. Ao escrever sobre os mais variados tipos de padres
inseguros, Kurt Seifried diz: "Esse um dos problemas que geram problemas de segurana que
no tm mais fim desde o primeiro dia."
Mourani lista quatro regras bsicas para uma boa senha. Trs delas se aplicam mesmo a
sistemas domsticos e a pequenos escritrios:

Seu tamanho deve ser de no mnimo seis caracteres, de preferncia oito, com pelo menos
um nmero e um caractere especial.
Ela no pode ser trivial; uma senha trivial aquela que fcil de adivinhar e geralmente
se baseia no nome do usurio ou de um parente, em seu emprego ou em outras
caractersticas pessoais.
Ela deve ter um perodo de validade, exigindo que uma nova senha seja escolhida aps
um perodo especfico.

Todas as grandes distribuies Linux tm ferramentas que impem senhas fortes e validade das
mesmas. Muitos usurios no usam essas ferramentas porque inconveniente usar senhas
longas e no triviais que mudam periodicamente. A segurana , por natureza, inconveniente.
Cabe a cada um de ns decidir at que ponto a inconvenincia vlida para termos um sistema
seguro.

CONTA DE ROOT
A conta de root (ou conta de superusurio) a conta presente em todos os sistema *nix que
geralmente no tem absolutamente nenhuma restrio. O root pode fazer qualquer coisa. Por
esse motivo, geralmente recomendvel no fazer login e usar o sistema como root, a no ser
que isso seja absolutamente necessrio.
A primeira pessoal da qual voc se protege ao no utilizar o sistema como root de voc mesmo.
Eu trabalhei para um banco local por seis meses antes de ocorrer uma fuso. Um dos
administradores de sistemas profissionais deles, um homem com anos de experincia, escreveu
um script para apagar arquivos antigos em um servidor. Por motivos bvios, o script precisava
ser rodado como root. Ele cometeu um msero erro de sintaxe no script que fez com que o
mesmo rodasse no sistema de arquivos raiz, e no em um dos sistemas de arquivos em que ele
deveria rodar. Para piorar, ele ignorou os procedimentos de controle de alteraes apropriados,
porque pensou que era s uma manuteno trivial. O script rodou durante a noite, e comeou a
fazer seu trabalho de remover grandes partes do sistema operacional, que eram mais antigas do
SENAC-RR/2011

que a data configurada no script, efetivamente arrasando um servidor de produo. A moral da


histria que mesmo profissionais veteranos cometem erros, e s vezes as consequncias so
desastrosas. Rodando como root, voc pode facilmente causar danos ao sistema, sem aviso. por
isso que algumas distribuies Linux, como o Ubuntu, no permitem logins como root por
padro.
Nem preciso dizer que regras para senhas fortes devem se aplicar conta de root em
primeirssimo lugar. Se o acesso root remoto for permitido, intencionalmente ou por causa de
uma vulnerabilidade de segurana, uma senha forte pode atrasar uma invaso por tempo
suficiente para que ela seja detectada e impedida. Tambm h um sem nmero de aplicativos
para a Internet, como navegadores web, que possuem vulnerabilidades que efetivamente
permitem acesso remoto usando a conta do usurio que estiver executando o aplicativo. Se esse
usurio for o root, as falhas de segurana se tornam muito mais perigosas. por isso que alguns
aplicativos do Linux apresentam avisos simples e diretos sobre os riscos de rod-los como root.
Todas as distribuies Linux, mesmo as menores, possuem ferramentas que permitem a
concesso temporria de privilgios de root a usurios comuns. A mais comum o su,
abreviao de superuser (superusurio), e o sudo, abreviao de "superuser do" (executar como
superusurio). O comando sudo oferece a capacidade de registrar em log o que voc fizer como
root. Ele tambm oferece a maneira mais simples de conceder um subconjunto de privilgios de
root a algum que precise realizar tarefas especficas que exijam privilgios de root, mas que no
precisem de controle total e absoluto do sistema, o que o torna ideal para redes de pequenas
empresas. Um tutorial detalhado sobre o su e o sudo ser publicado em breve no DistroWatch
Weekly.

AUTENTICAO BSICA NO LINUX: COMO ELA FUNCIONA


Em todo sistema Linux h trs arquivos que oferecem o nvel mais bsico de autenticao para o
sistema local:
/etc/passwd
/etc/group
/etc/shadow
Cada usurio do sistema tem um identificador nico de usurio, o UID, associado ao seu nome de
usurio (OBSERVAO: possvel atribuir dois nomes de usurio a um mesmo UID, criando uma
mesma conta com dois nomes que podem ser usados para fazer login). Cada usurio pertence a
pelo menos um grupo de usurios, e cada grupo tem um identificados nico de grupo (GID)
associado ao nome do grupo.
O arquivo /etc/passwd um arquivo de texto simples. Ele pode ser editado com qualquer editor
de texto executado como root, e contm sete campos para cada usurio, separados por dois
pontos:

o nome de usurio
um x minsculo (geralmente)
o ID do usurio (UID)
o grupo padro do usurio
o nome completo do usurio e, opcionalmente, informaes adicionais em texto puro
sobre ele
SENAC-RR/2011

o diretrio home do usurio


o shell padro do usurio

O shell padro particularmente importante para contas do sistema. Muitas ferramentas de


sistema e alguns aplicativos exigem suas prprias contas de usurio para serem executadas
corretamente. No entanto, voc no vai querer que algum seja capaz de fazer login em nome
dessa tarefa. Sendo assim, um shell falso (geralmente /bin/false) usado. Se no houver um
shell vlido, o usurio no pode fazer login.
Num passado remoto e quase esquecido, o arquivo /etc/passwd tambm continha as senhas dos
usurios em texto puro. Conforme as redes cresceram, ficou claro que algum tipo de maneira
segura de se armazenar senhas em um formato que no pudesse ser lido era uma necessidade
absoluta, e como de costume, um incidente de segurana convenceu algum dessa necessidade.
Em 1987, Julianne Haugh teve seu sistema invadido e escreveu a sute Shadow Password
original, que continha os comandos login, passwd e su. As senhas shadow fazem parte do Linux
desde 1992, e a sute cresceu e hoje abriga trinta comandos.
O conceito bsico do sistema shadow fcil de entender. Vou citar Seifried outra vez: "Por
muitos anos a soluo foi bastante simples e eficaz, bastando fazer um hash das senhas e
armazenar esse hash; quando um usurio se autentica, faz-se um hash da senha digitada e, se os
hashes combinarem, a senha , obviamente, a mesma." Com o passar do tempo, o poder
computacional cresceu e ficou mais fcil quebrar at mesmos as senhas com hash; com isso o
Linux e outros sistemas UNIX migraram para sistemas de criptografia mais fortes (geralmente o
MD5). Alm do nome de usurio e da senha com hash, o arquivo /etc/shadow tambm contm
informaes sobre o envelhecimento da senha.

USANDO O CHAGE PARA DEFINIR O ENVELHECIMENTO DA SENHA


Todas as grandes distribuies Linux possuem ferramentas grficas que agem como interfaces
para a sute Shadow Password. Porm, se voc estiver rodando uma distribuio mais
minimalista ou se preferir gerenciar o envelhecimento da senha pela linha de comando em uma
conta existente, a maneira mais fcil de se fazer isso com o comando chage. Seu uso mais
simples permite definir um perodo aps o qual a senha precisa ser trocada. Por exemplo, se eu
quiser forar um usurio (sim, at eu mesmo) a alterar a senha a cada noventa dias, posso fazlo com o comando:
chage -m 90 usurio
trocando "usurio" pelo nome do usurio. Tambm ajuda configurar um aviso com a opo -W.
Digamos que eu queria dar um aviso cinco dias antes da senha vencer. O comando seria:
chage -m 90 -W 5 usurio
Qualquer usurio pode verificar quando sua senha vence com o comando:
chage -l

SENAC-RR/2011

A ARQUITETURA E CONFIGURAO DO
PAM
PAM
PAM a parte principal da autenticao em um sistema Linux. PAM significa Pluggable
Authentication Modules, ou Mdulos de Autenticao Plugveis/Modulares.
Originalmente a autenticao no Linux era apenas via senhas criptografadas armazenadas em
um arquivo local chamado /etc/passwd. Um programa como o login pedia o nome do usurio e
a senha, criptografava a senha e comparava o resultado com o armazenado naquele arquivo. Se
fossem iguais, garantia o acesso mquina. Caso contrrio, retornava erro de autenticao. Isto
at funciona muito bem para o programa login, mas, digamos que agora eu queira usar isso
tambm para autenticao remota. Ou seja, a base de usurios no est mais na mesma mquina,
mas sim em alguma outra mquina da rede, o chamado servidor de autenticao. Teremos que
mudar o programa login para que ele tambm suporte esse tipo de autenticao remota.
Surgiu um novo algoritmo de criptografia, muito mais avanado, mais rpido, criptografa
melhor, etc. Queremos usar esse novo algoritmo. Claro que teremos que mudar novamente o
programa login para que ele suporte este novo algoritmo tambm. No Linux, muitos programas
utilizam algum tipo de autenticao de usurios. Imagine se todos eles tivessem que ser
reescritos cada vez que se mudasse algum dos critrios de autenticao.
Para resolver este tipo de problema, a Sun criou o PAM h alguns anos e liberou as
especificaes em forma de RFC. O Linux derivou sua implementao do PAM a partir deste
documento. Com PAM, o aplicativo login deste exemplo teria que ser reescrito apenas uma vez,
justamente para suportar PAM. A partir de ento, o aplicativo delega a responsabilidade da
autenticao para o PAM e no se envolve mais com isso.
Voltando ao exemplo anterior, no caso de se querer utilizar um outro algoritmo de criptografia
para as senhas, basta que o mdulo PAM seja modificado para que todos os aplicativos
automaticamente e de forma transparente passem a usufruir desta nova forma de autenticao.
PAM possui uma outra vantagem: possvel configurar a autenticao de forma individual para
cada aplicativo. Com isto possvel fazer com que, por exemplo, um usurio comum possa usar
os dispositivos de udio do computador desde que tenha se logado na mquina atravs do
console. Se o login no tiver sido feito no console (por exemplo, um login remoto via ssh), este
tipo de acesso ao hardware ser negado. Ser que os programas login ou ssh sabem alguma coisa
sobre o dispositivo de udio da mquina? claro que no. Eles no precisam. Os mdulos PAM
se encarregam disso.
Na verdade, PAM vai um pouco alm da autenticao. Os mdulos podem ser divididos em
quatro tipos:

auth:
a parte que verifica que o usurio realmente quem ele diz que . Pode ser bem
simples, pedindo apenas por um nome e uma senha, ou utilizando autenticao
SENAC-RR/2011

biomtrica, por exemplo (como uma impresso de voz, uma imagem da retina ou
impresso digital).
account:
Esta parte verifica se o usurio em questo est autorizado a utilizar este servio ao qual
ele est se autenticando. Os mdulos aqui podem checar por horrio, dia da semana,
origem do login, login simultneo, etc.
passwd:
Este servio usado quando se deseja mudar a senha. Por exemplo, aqui podem ser
colocados mdulos que verificam se a senha forte ou fraca.
session:
Por fim, a parte session fica encarregada de fazer o que for necessrio para criar o
ambiente do usurio. Por exemplo, fornecer o acesso a alguns dispositivos locais como o
de udio ou cdrom, montar sistemas de arquivos ou simplesmente fazer o registro do
evento nos arquivos de log do sistema.
Um mdulo PAM pode ou no conter todas estas funes. O mdulo pam_pwdb, por exemplo,
pode ser usado nestes quatro tipos e possui aes diferentes em cada uma das situaes,
enquanto que pam_console normalmente usado apenas como session.

PAM NO LINUX
Praticamente todos os aplicativos do Linux que requerem algum tipo de autenticao suportam
PAM. Na verdade, no funcionam sem PAM. Toda a configurao est localizada no diretrio
/etc/pam.d. Quando um aplicativo suporta PAM, ele necessita de um arquivo de configurao
neste diretrio. A Figura 7-1 ilustra como funciona a autenticao com PAM usando o programa
login como exemplo:
Um programa com suporte a PAM possui duas interfaces com a biblioteca: a de autenticao e a
de conversao. A interface de autenticao por onde a aplicao pede que o PAM valide o
usurio. A de conversao usada pelos mdulos que, por exemplo, precisem passar alguma
informao para o usurio, como um prompt, ou um aviso de que a senha expirou. Isso tudo o
que a aplicao sabe sobre o processo de autenticao feito pelo PAM. A conversao est
ilustrada na figura no mdulo pam_pwdb (b).
A biblioteca PAM vai procurar o arquivo de configurao da aplicao login. Este arquivo
/etc/pam.d/login e vai dizer quais mdulos devem ser usados e com que parmetros. Este
arquivo est reproduzido a seguir:
#%PAM-1.0
auth
required /lib/security/pam_securetty.so
auth
required /lib/security/pam_pwdb.so shadow nullok
auth
required /lib/security/pam_nologin.so
account
required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow md5 nullok \
use_authtok
session
required /lib/security/pam_pwdb.so
SENAC-RR/2011

session

optional /lib/security/pam_console.so

Este arquivo de configurao lista os mdulos PAM que este programa (login) deve usar, e eles
esto representados na figura atravs de letras. Estes mdulos sero carregados e executados na
ordem em que estiverem no arquivo de configurao. Note que um mdulo pode aproveitar uma
informao de um mdulo anterior, como normalmente feito para username/senha. Isso
usado para no pedir a mesma informao novamente para o usurio.
A primeira coluna em um arquivo de configurao PAM representa o tipo de mdulo: auth,
account, password ou session. Neste exemplo, todos esto presentes, mas isto no obrigatrio.
Se um programa no tiver suporte troca de senha, o tipo "password" no usado.
A segunda coluna define a flag de controle para o seu respectivo mdulo. O resultado de cada
mdulo pode influenciar de diversas formas o resultado do processo de autenticao geral. H
algumas categorias:
required:
O resultado deste mdulo influencia diretamente o resultado final. Uma falha em um
mdulo deste tipo s aparecer para o usurio aps todos os outros mdulos desta classe
serem executados.
requisite:
Semelhante a required, mas os outros mdulos no so executados e o controle volta
imediatamente para o aplicativo em caso de falha.
sufficient:
A falha deste mdulo no implica em falha da autenticao como um todo. Se o mdulo
falhar, o prximo da classe executado. Se no houver prximo, ento a classe retorna
com sucesso. Se, por outro lado, o mdulo terminar com sucesso, ento os mdulos
seguintes dessa classe no sero executados.
optional:
Os mdulos marcados como optional praticamente no influenciam o resultado da
autenticao como um todo. Eles apenas tero alguma influncia caso os mdulos
anteriores da mesma classe no apresentem um resultado definitivo.
Por fim, a terceira coluna define o nome do mdulo que ser usado e seus parmetros. Todos os
mdulos esto documentados em /usr/doc/pam-verso. Vamos aqui apenas ilustrar como
funcionam os usados no programa login.
Em primeiro lugar, observamos que todos os mdulos so required, ou seja, no podem falhar.
Com exceo do pam_console.
PAM_SECURETTY

Este o primeiro mdulo a ser usado e ele simplesmente verifica o terminal de onde o login est
ocorrendo. Este mdulo no usa parmetros, mas possui um arquivo de configurao:
/etc/securetty. Neste arquivo listamos os terminais a partir dos quais o usurio root pode
fazer login. Ou seja, so os terminais considerados seguros. Apesar do nome terminais, conexes
remotas tambm so controladas por aqui, pois elas alocam pseudoterminais (telnet, etc). O
SENAC-RR/2011

mdulo retorna sucesso para qualquer usurio diferente de root e, se for root, somente se o
terminal de onde est vindo o login estiver listado no arquivo /etc/securetty. Na srie 2.2.x
do kernel, os pseudoterminais so alocados dinamicamente em um sistema de arquivos virtual,
o /dev/pts. Para permitir o login de root via telnet, por exemplo, basta acrescentar ao
/etc/securetty: pts/0. Note que isto somente liberar o pseudoterminal pts/0. Veja no
exemplo seguir:
[darkangel@manticore darkangel]$ telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Conectiva Linux 7.0
Kernel 2.4.5-7cl
login: root
Password:
[root@manticore /root]# telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Conectiva Linux 7.0
Kernel 2.4.5-7cl
login: root
Password:
Login incorrect
login:
A primeira conexo telnet ganhou o pseudoterminal pts/0. J a segunda teve o pts/1 alocada
para si, e este pseudoterminal no estava listado no arquivo /etc/securetty. Portanto, o
acesso no foi autorizado. Por que isto no funciona com ssh, por exemplo? Se olharmos o
arquivo de configurao PAM para o ssh, veremos que o mdulo pam_securetty no est
presente ali. SSH possui seu prprio mecanismo de acesso para o usurio root, mas nada impede
que pam_securetty seja acrescentado no arquivo PAM. O mdulo pam_securetty tambm pode
ser usado para controlar o login a partir do ambiente grfico, por exemplo. Basta acrescentar o
mdulo ao arquivo /etc/pam.d/kde (se o kdm estiver sendo usado para login grfico). A linha a
ser acrescentada ao arquivo /etc/securetty (alm de se acrescentar pam_securetty aos
respectivos arquivos PAM, claro) : :0. Isto para o display zero. Para permitir o login de root
em outros displays, a sintaxe : :DISPLAY .
O objetivo original deste mdulo o de evitar o login do root em terminais inseguros. Este
conceito de terminais foi estendido ao login remoto (atravs dos pseudoterminais).
PAM_PWDB

O mdulo pam_pwdb o mdulo principal da autenticao do programa login. Ele vai pedir um
nome de usurio e uma senha e verificar se esto corretos. Como tal, o mdulo utiliza a funo
de conversao para interrogar o usurio e pegar as informaes desejadas.
SENAC-RR/2011

Este mdulo aceita alguns parmetros, conforme seu uso (auth, account, etc.):

shadow: se estiverem sendo usadas senhas shadow ou convencionais.


nullok: permite o uso de senhas em branco. Note que, mesmo que a senha seja em
branco (nula), o usurio no conseguir fazer login se no existir nullok na linha auth
para este mdulo.
md5: usa criptografia (hash) md5 em vez do crypt padro. Pode ser usado na linha
password.
use_authtok: indica que o mdulo deve usar a autenticao j fornecida para os mdulos
anteriores, de forma a no interrogar o usurio novamente. Alguns outros mdulos
suportam o parmetro use_first_pass, que funciona da mesma forma. Existe ainda o
try_first_pass, que primeiro tenta as mesmas credenciais: se houver falha, pede
novamente para o usurio. O use_first_pass no faz esse novo pedido caso ocorra
uma falha.

O try_first_pass ser usado mais adiante quando mostrarmos a autenticao via LDAP. Este
mdulo tambm possui seu prprio arquivo de configurao: /etc/pwdb.conf. No entraremos
em detalhes quanto sintaxe deste arquivo, pois o mdulo pam_pwdb no muito extensvel. Na
verdade, o pam_unix bem mais genrico por usar as funes da glibc e, portanto, suporta NIS,
LDAP, arquivos texto, arquivos binrios e qualquer outra coisa que a glibc vier a suportar
(atravs de NSS). No caso de uso com a classe session, o mdulo pam_pwdb apenas faz o log do
usurio que entrou no sistema. Sendo usado com a classe account, o mdulo vai verificar se a
senha do usurio expirou, h quanto tempo a senha no trocada, etc.
PAM_NOLOGIN

O mdulo pam_nologin bastante simples, e muito til. uma forma rpida de desabilitar o
login de qualquer usurio que no seja o root. Para isto, basta criar o arquivo /etc/nologin.
Existindo este arquivo, o mdulo pam_nologin vai sempre retornar ERRO para usurios
diferentes de root e exibir o contedo de /etc/nologin (onde se deve colocar o motivo da
proibio), ou seja, s o usurio root consegue se logar na mquina. Quando o arquivo for
removido, a operao voltar ao normal, com usurios comuns podendo se logar novamente.
Isto pode ser til quando se quer fazer alguma manuteno no sistema, por exemplo, situao
em que logins de usurios so indesejveis. Alguns aplicativos do prprio Linux tambm podem
criar este arquivo e depois remov-lo quando alguma operao crtica for concluda.
Note que os usurios que j estiverem logados na mquina no so afetados pela criao ou
remoo do arquivo /etc/nologin.
PAM_CRACKLIB

Este mdulo especialmente importante para a segurana pr-ativa. Colocado apenas na classe
password, o mdulo vai verificar a senha do usurio antes que ela seja trocada. Se for uma senha
considerada fraca, ela ser rejeitada e o usurio no conseguir trocar a senha. As verificaes
que o mdulo faz atualmente so:

palndromo: a nova senha um palndromo?


caixa: a senha nova a antiga com apenas mudanas de maisculas / minsculas?
similar: a nova senha muito similar antiga? Esta verificao pode ser controlada por
um parmetro que indica o nmero mnimo de caracteres diferentes que a senha nova
SENAC-RR/2011

deve ter em relao senha antiga. O valor padro 10 ou metade do tamanho da senha
atual, o que for menor.
Senha repetida: se existir o arquivo /etc/security/opasswd com as senhas
anteriores do usurio, o mdulo pam_cracklib vai tambm verificar se a senha nova j
no foi usada anteriormente. Esse arquivo de senhas antigas atualmente gerado apenas
pelo mdulo pam_unix, embora exista uma discusso para se criar um mdulo especfico
para esta tarefa (algo como pam_saveoldpass) e remover esta funcionalidade do mdulo
pam_unix.

Os parmetros normalmente utilizados com o mdulo cracklib so:


retry=N
"N" o nmero de tentativas que o usurio poder fazer para fornecer uma senha
considerada boa.
difok=N
"N" o nmero de letras diferentes que a senha nova deve ter em relao senha antiga.
Este parmetro controla o comportamento da checagem do tipo "similar", vista h pouco.
O valor padro 10 (e este o valor alterado por "N" ou metade do tamanho da senha
atual), aquele que for o menor.
minlen=N

Tamanho mnimo da nova senha mais um. Alm de contar a quantidade de caracteres
da senha nova, crditos tambm podem ser fornecidos com base na quantidade de
algarismos, caracteres maisculos/minsculos e smbolos. Ou seja, se o valor de
minlen for 10, o usurio pode usar uma senha com menos do que 10 caracteres, desde
que, somando a quantidade de caracteres mais os crditos, o valor final ultrapasse 10.
Por exemplo:
password required /lib/security/pam_cracklib.so retry=3 minlen=10
Especificamos um tamanho mnimo de 9 para a senha nova. Portanto, uma senha igual a
senharuim vai funcionar (possui nove caracteres). Mas uma senha igual a am0Bb$
tambm funcionar, apesar de possuir apenas 6 caracteres. Como? Por causa dos
crditos.
am0Bb$=>6+1(B, maiscula)+1(0, dgito)+1($, smbolo)= 9=>OK,
passar.
Por outro lado:
am0Bbd => 6 + 1(B, maiscula) + 1(0, dgito) = 8 => no passar.
Por padro, cada um dos tipos de variao da senha (minsculo, maisculo, algarismo e
smbolo) conta no mximo um crdito. Ou seja:

SENAC-RR/2011

am0b9$ => 6 + 1(0, dgito) + 1 ($, smbolo) = 8 => no passa


Note que o uso de dois algarismos no ajudou em termos de crditos. Mas isto pode ser
mudado se passarmos um outro parmetro para o mdulo:
password required /lib/security/pam_cracklib.so retry=3 \
minlen=10 dcredit=2
Atravs do parmetro dcredit estamos dizendo que toleraremos no mximo dois crditos
provenientes de algarismos na senha. Com esta alterao, a senha am0b9$ passar como
vlida pois usa dois algarismos e ento atingir o mnimo de 9 exigido por esta configurao
do mdulo. Estes parmetros de crditos tambm existem para as outras variantes:

dcredit: nmero mximo de crditos fornecidos provenientes do uso de algarismos


na senha. O valor padro 1.
ucredit: nmero mximo de crditos fornecidos provenientes do uso de letras
maisculas na senha. O valor padro 1.
lcredit: nmero mximo de crditos fornecidos provenientes do uso de letras
minsculas na senha. O valor padro 1.
ocredit: nmero mximo de crditos fornecidos provenientes do uso de outros
caracteres (smbolos) na senha. O valor padro 1.

PAM_CONSOLE

O objetivo do mdulo pam_console permitir ao usurio local (ou seja, no console, fisicamente
na mquina) o acesso a diversos dispositivos normalmente restritos ao superusurio, como
placa de som, dispositivo de disquete e tambm permitir ao usurio comum (local) executar
certas tarefas, como desligar o computador, entrar no ambiente grfico ou mesmo instalar
pacotes RPM.
Essa capacidade adicional fornecida ao usurio no seu primeiro login e removida aps o ltimo
logout, e se d atravs da modificao das permisses de alguns dispositivos e tambm atravs
de autenticao.
Diz-se que o primeiro usurio que fizer login no console "ganha" o console e as permisses
definidas no arquivo de configurao /etc/security/console.perms. Quando um usurio
possui o console, um arquivo de lock criado em /var/lock com o nome console.lock. O
contedo do arquivo o nome do usurio que possui o console. Se um outro usurio local fizer
um login, ele no receber o console, pois j existe um lock indicando que o console pertence a
outro usurio. Quando o usurio do console fizer logout, o arquivo de lock ser removido e o
console novamente ficar disposio do primeiro usurio (no root) que fizer o login.
Quando um usurio recebe o console, vrias permisses so alteradas no sistema de arquivos,
conforme indicado no arquivo de configurao deste mdulo PAM. Note que este mdulo est
como optional, ou seja, no usado para o sucesso ou no da autenticao do usurio. Isso
necessrio, pois ele pode falhar (um outro usurio j possui o console, por exemplo).
A seguir, um arquivo de configurao tpico (sem os comentrios maiores):

SENAC-RR/2011

# file classes -- these are regular expressions


=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
=:[0-9]\.[0-9] :[0-9]
# device classes -- these are shell-style globs
=/dev/fd[0-1]*
=/dev/dsp* /dev/audio* /dev/midi* \
/dev/mixer* /dev/sequencer
=/dev/cdrom
=/dev/pilot
=/dev/jaz
=/dev/zip
=/dev/fb /dev/fb[0-9]*
=/dev/kbd
=/dev/js*
=/dev/video*
/dev/vbi*

/dev/radio*

/dev/winradio*

/dev/vtx*

# permission definitions
0660
0660 root.floppy
0660
0660 root.audio
0660
0660 root.cdrom
0600
0660 root.tty
0600
0660 root.disk
0600
0660 root.disk
0600
0600 root
0600
0600 root
0600
0600 root
0600
0600 root
0600 /dev/console 0600 root.root

Em primeiro lugar, esta configurao define classes de arquivos e classes de dispositivos. Por
fim, especifica como devem ser as permisses quando o usurio ganhou o console e quando faz
logout. Por exemplo, os dispositivos do tipo floppy devem ter permisso 0660 com o dono sendo
o usurio (o grupo no alterado), e 0660 com donos root.floppy aps o logout do usurio. Este
tipo de esquema de permisses permite, por exemplo, que o usurio formate um disquete sem
que seja necessrio obter direitos de root na mquina.

USANDO LDAP JUNTAMENTE COM PAM


Aqui mostraremos um exemplo rpido de como modificar o arquivo de configurao PAM para o
programa login passar a suportar LDAP tambm. Note que isto no suficiente para se ter um
sistema completamente dependente do LDAP, para isso ainda necessrio o mdulo nss_ldap,
que nada tem a ver com PAM. O arquivo modificado fica da seguinte forma:
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_unix.so shadow nullok md5 \
use_authtok
auth required /lib/security/pam_ldap.so use_first_pass
account sufficient /lib/security/pam_unix.so
SENAC-RR/2011

account required /lib/security/pam_ldap.so


password required /lib/security/pam_cracklib.so
password sufficient /lib/security/pam_unix.so nullok use_authtok \
md5 shadow
password required /lib/security/pam_ldap.so use_first_pass
session optional /lib/security/pam_console.so
session sufficient /lib/security/pam_unix.so
session required /lib/security/pam_ldap.so
O mdulo pam_securetty fica inalterado, pois ainda queremos controlar os terminais por onde o
usurio root pode fazer login. Na verdade, o usurio root nem estar no banco de dados LDAP
(usurios de sistema devem sempre ser locais). O mesmo para o mdulo pam_nologin:
permanece inalterado.
A situao fica um pouco diferente quando chegamos nos mdulos que fazem a autenticao
propriamente dita. Por motivos diversos, o mdulo pam_pwdb no deve ser usado em conjunto
com o mdulo pam_ldap[1].
OK, temos dois mdulos responsveis pela autenticao, pam_unix e pam_ldap; como vamos uslos simultaneamente? Lembrem-se, queremos que usurios locais e remotos possam se
autenticar nesta mquina. Vamos usar as flags de controle. Colocamos em primeiro lugar o
mdulo pam_unix. Por qu? Bom, se o usurio for local, poupamos uma consulta ao servidor
LDAP. Mas marcamos este mdulo como sufficient. Ou seja, se ele for bem-sucedido (= se o
usurio for local e a senha estiver correta) ento nenhum outro mdulo desta classe (auth) ser
executado. Se o resultado no for OK (o usurio s existe no LDAP, ou ento ele errou a senha
mesmo...) ento o prximo mdulo ser tentado.
O mdulo seguinte justamente o pam_ldap. Mas aqui ns o colocamos como required, ou seja,
se ele falhar, a autenticao como um todo falha tambm. Para no pedir a senha novamente
para o usurio, ns aproveitamos a senha j fornecida antes e usamos o parmetro
use_first_pass. Este parmetro diz para o mdulo pam_ldap para pegar a senha fornecida
anteriormente. Se ela estiver incorreta, o mdulo falha. Se usssemos, por exemplo, o parmetro
try_first_pass em seu lugar, no caso de haver falha o mdulo pam_ldap novamente pediria a
senha para o usurio. O mesmo truque do sufficient e required ns aplicamos s outras
classes: account, password e session. A classe session possui ainda uma pequena alterao no
posicionamento do mdulo pam_console. Como nada mais executado aps um mdulo marcado
como sufficient ter sido bem-sucedido, o pam_console no seria chamado se ficasse no fim do
arquivo como na configurao original para o programa login. Assim, ns o colocamos na frente
mesmo.

SENAC-RR/2011

ARQUITETURA DO KERNEL DO LINUX,


RECONFIGURAO E RECOMPILAO
COMPONENTES DO KERNEL
O kernel o componente central do sistema. to importante que muitas vezes confundido
com o sistema em sua totalidade. Ou seja, apesar de o termo Linux de- signar apenas o
componente central o kernel , ele normalmente utilizado para designar todo o sistema, que
composto por muitos outros programas.
Por isso, muitos desenvolvedores e personagens importantes do mundo do Soft- ware Livre
preferem nomear o sistema como GNU/Linux, dado que a maior parte dos programas que
funcionam em conjunto com o kernel Linux fazem parte do pro- jeto GNU, cujo propsito
manter um ambiente de desenvolvimento e ferramentas o mais prximo possvel de seus
similares do Unix, porm obedecendo ao modelo de desenvolvimento aberto.
O termo cdigo aberto refere-se a um modelo de desenvolvimento de programas de computador
no qual o acesso ao cdigo fonte liberado para consulta, alterao e redistribuio. Isso faz com
que um nmero muito grande de programadores pos- sa analisar e contribuir para o
desenvolvimento de uma ferramenta ou sistema, na medida em que podem alter-lo para
satisfazer suas prprias necessidades. Alteraes feitas no programa original podem ser
tornadas pblicas ou enviadas pessoa ou equipe responsvel, que analisar a qualidade da
alterao e a incorporar ao produ- to. Linus Torvalds, o criador e atual administrador do kernel,
adotou o modelo de desenvolvimento e as licenas GNU para o Linux.
O kernel Linux um desses componentes que juntos formam o sistema operacional. O papel do
kernel identificar e controlar a comunicao com o hardware, administrar os processos em
execuo e a comunicao de rede, entre outras atividades relacionadas.

O KERNEL E SEUS MDULOS


Existem basicamente duas formas de se escrever um kernel para qualquer plataforma: um
kernel monoltico ou um micro-kernel. Diferente de um micro-kernel, um ker- nel monoltico
agrega todas as funes dentro de um nico processo. J um micro- kernel delega cada funo
especfica a processos derivados.
Por exemplo, um micro-kernel delega a outro processo o controle das conexes de rede. Dessa
forma, possveis instabilidades na rede no comprometem o fun-cionamento essencial do
sistema. Entretanto, o desenvolvimento de um micro- kernel muito mais demorado em relao
a um kernel monoltico, pois rastrear eventuais falhas e incluir novos recursos muito mais
complicado do que em um kernel monoltico.
O kernel Linux monoltico. Porm, sua arquitetura chamada modular. Isso sig- nifica que,
mesmo sendo um kernel monoltico, todas as suas funes no precisam necessariamente estar
todo o tempo presentes na memria. Por exemplo, o kernel pode estar configurado para
trabalhar com dispositivos USB, mas no para manter em memria as funes exigidas para
trabalhar com tais dispositivos. Mantidas em mdulos, essas funes somente sero carregadas
para a memria quando forem ne- cessrias, ou seja, quando for conectado um dispositivo USB.
SENAC-RR/2011

importante no confundir um kernel modular com um micro-kernel. Apesar de modular, o


kernel Linux um kernel monoltico. Cada mdulo carregado in- tegrado ao kernel ativo e,
apesar de em sua maioria poderem ser descarregados da memria, o kernel continua se
comportando como nico e centralizado.

VERSES DO KERNEL
A verso de um kernel Linux composta de quatro nmeros. Juntos, eles infor-mam no s quo
recente o kernel, mas tambm algumas outras caractersticas.
Esses quatro nmeros que compem a verso do kernel so separados por pontos, no formato
A.B.C.D. O ltimo elemento D nem sempre utilizado, mas tem funo muito importante.

SUFIXOS DO KERNEL
Alm dos quatro nmeros, a verso do kernel pode possuir um sufixo que represen-ta um kernel
diferente do oficial chamado vanilla , que por sua vez representa um recurso adicional, uma
verso de testes ou outra diferena em relao verso oficial estvel.
Os sufixos mais comuns so rc e mm. O sufixo rc (release candidate, ou candidato verso)
representa um prepatch, que equivalente a uma verso alfa do kernel, e seus arquivos fonte
ficam no diretrio de teste no servidor do oficial do kernel (www. kernel.org). Essas verses
parciais so aplicadas ao kernel completo da verso imedia- tamente anterior, usando o
comando patch. Por exemplo, o patch 2.6.31-rc5 deve ser aplicado verso 2.6.30. Apenas as
verses de kernel com trs nmeros podem receber um patch rc. Portanto, as verses release
candidate no devem ser aplicadas a um kernel com quatro nmeros de verso, como 2.6.30.4.

Figura 20 - Verso do Kernel Linux

SENAC-RR/2011

O sufixo mm representa um kernel com as modificaes realizadas pelo desenvolve-dor Andrew


Morton, feitas sobre a verso oficial do kernel. Essas alteraes so geral-mente mais
experimentais do que aquelas feitas nas verses oficiais. Todas essas dife-rentes verses podem
ser obtidas diretamente do site oficial do kernel: www.kernel.org.

LOCALIZAO DO KERNEL NO SISTEMA


O kernel Linux oficial distribudo como cdigo fonte, ou seja, precisa ser configu- rado e
compilado para ser utilizado pelo sistema. Depois de copiado do site oficial ou usando as
ferramentas de instalao da distribuio, o cdigo-fonte do kernel deve ser mantido na
mquina local, no diretrio /usr/src/, num lugar com as informaes de verso do kernel, como
/usr/src/linux-2.6.30. Como possvel possuir mais de uma verso dos cdigos-fonte,
importante criar um link simblico /usr/src/linux que aponta para o diretrio do cdigo-fonte
do kernel atualmente em uso. Esse pro- cedimento importante para que outros programas
possam eventualmente localizar os arquivos do kernel atual.
Ali encontram-se no s os arquivos de cdigo-fonte do kernel, mas tambm a documentao
oficial e onde estar o arquivo imagem do kernel aps compilado. O arquivo imagem o kernel
em si, que mais tarde ser invocado pelo carregador de boot durante o carregamento do sistema.

IMAGEM E DOCUMENTAO DO KERNEL


A documentao oficial do kernel em questo fica em /usr/src/linux/Documentation. Neste
diretrio encontram-se vrios arquivos de texto que documentam aspectos especficos do
kernel. Por exemplo, para descobrir quais parmetros o kernel aceita ao ser carregado, o arquivo
kernel-parameters.txt pode ser consultado.
Aps compilar um novo kernel a partir de seu cdigo-fonte, o arquivo imagem final ser
encontrado em /usr/src/linux/arch/x86/boot/. Note que o subdiretrio x86 varia conforme a
arquitetura escolhida durante a configurao do kernel. Se for es- colhida a arquitetura
PowerPC, por exemplo, a imagem estar em /usr/src/linux/arch/ powerpc/boot/.
O nome e o tamanho do kernel variam conforme for invocada a compilao. Existem
basicamente dois formatos de imagem de kernel: zImage e bzImage. Ambos so compactados
com o mtodo zlib, mas o que os difere o tamanho mximo de arquivo. Um arquivo zImage
possui tamanho mximo de 512 Kb, tamanho ade- quado para verses mais antigas do kernel. As
verses recentes exigem um tamanho maior, por isso foi institudo o arquivo bzImage big
zImage , que no possui essa limitao de tamanho.

COMPILANDO UM KERNEL
Apesar de a maioria das distribuies acompanhar imagens de kernel pr-compila- das, pode ser
necessrio personalizar o kernel para corresponder a necessidades es- pecficas, como suporte a
hardware incomum ou a um sistema de arquivos extico. Tambm comum recompilar o kernel
para ocupar menos recursos e operar em mquinas mais antigas.
O cdigo-fonte do kernel pode ser obtido por meio de pacote especfico da dis- tribuio ou
diretamente do site oficial www.kernel.org. No ltimo caso, o cdigo distribudo como um
arquivo Tar compactado, e deve ser extrado no local padro, /usr/src/linux, que geralmente
um link simblico para o diretrio criado na extrao, como /usr/src/linux-x.x.xx.

SENAC-RR/2011

O processo de personalizao de um kernel exige trs etapas principais: configura- o,


compilao e, por fim, instalao.

CONFIGURAO
A configurao de um novo kernel feita invocando o comando
, de dentro do diretrio
onde est o cdigo-fonte do kernel. Existem diferentes tipos de interfaces de configurao, mas a
mais tradicional a interface ncurses, invocada por meio do comando
. A
configurao feita no prprio terminal, numa interfa- ce simples de menu (figura 1).
Existem outras maneiras de configurar o kernel, mas todas elas produzem o mes- mo resultado,
que gerar o arquivo
no diretrio do cdigo-fonte do kernel. Interfaces alternativas
configurao via terminal so os assistentes de configurao feitos em Qt (figura 2) e em Gtk
(figura 3). Ambos devem ser executados de dentro do ambiente grfico X.

Figura 21 - A interface de configurao ncurses a mais simples e a mais utilizada para configurao do kernel.

Figura 22 - A interface de configurao do kernel feita em Qt.

SENAC-RR/2011

Figura 23 - A interface de configurao do kernel feita em Gtk.

Pr-requisitos para configurao e compilao


Para que seja possvel compilar um kernel, necessrio que estejam presentes no
computador as ferramentas de desenvolvimento, ou seja, os programas e arquivos
necessrios para compilar outros programas. Essencialmente, necessrio um
compilador da linguagem C o
e alguns acessrios, como o prprio
comando
e bibliotecas. A instalao dessas ferramentas varia de acordo com
a distribuio. Em distribuies Debian e derivados, como a distribuio Ubuntu,
basta executar o comando
, que se
encarrega de instalar os programas de desenvolvimento e compilao
fundamentais. Em ambientes Red Hat ou derivados, como o Fedora, a instalao
pode ser feita com os comandos
e
. Mesmo as interfaces de
configurao do kernel so compiladas antes de serem utilizadas. Por isso,
necessrio que estejam instalados os pacotes de desenvolvimento para a interface
desejada, sejam eles ncurses, Qt ou Gtk.

O arquivo gerado aps a configurao do kernel, .config, tambm pode ser edita- do num editor
de texto convencional. Porm, essa prtica no recomendada, pois alm de o arquivo ser
demasiado extenso h opes interdependentes que podem ser quebradas. A recomendao
sempre utilizar um meio tradicional de configurao.
Outras formas de configurar o kernel so:

make config: Criar ou atualizar a configurao por meio de uma interface orientada a
perguntas e respostas na linha de comando;
make oldconfig: Recupera todas as configuraes do arquivo .config pr- existente e
pergunta apenas sobre novas opes.

COMPILAO
Finalizada a configurao, o kernel j pode ser compilado. Se no for a primeira com- pilao do
kernel, pode ser conveniente executar
, que apaga as configu- raes e os
arquivos gerados durante uma compilao anterior. Dessa forma, se evita que hajam objetos
SENAC-RR/2011

com dependncias desencontradas. Para apagar apenas os arquivos compilados anteriormente,


mas preservar a configurao, utiliza-se
.

Acelerando a compilao
Boa parte das mquinas modernas so equipadas com mais de um
processador ou processadores de mais de um ncleo. Para aproveitar essa
capacidade recomendvel disparar processos de compilao simultneos.
Isso feito com a opo -j do comando
. Por exemplo,
compilar o kernel em quatro processos simultneos, o que
agilizar bastante a compilao.
Para gerar a imagem zImage ou bzImage do kernel, utiliza-se
ou
,
respectivamente. Os comandos apenas funcionaro se for obedecida a grafia correta, com o I
maisculo em zImage e bzImage. A compilao pode demorar de minutos a horas, dependendo
do nmero de recursos escolhidos e do computador utilizado.
Provavelmente o novo kernel ser modular, e os mdulos precisaro ser compila- dos
separadamente. Isso feito com o comando
.

INSTALAO
Depois que o kernel e os mdulos forem compilados, necessrio copi-los para a localizao
correta e configurar o carregador de boot para que possa encontr-lo ao iniciar o sistema.
Num computador de arquitetura x86, o arquivo de imagem do novo kernel es- tar em
ou em
. Esse
arquivo deve ser copiado para o diretrio
e deve ser renomeado para algo mais claro e
apropriado, como vmlinuz-2.6.28-abc. O termo vmlinuz a nomenclatura padro para os
arquivos de kernel do Linux. Recomenda-se tambm especificar a verso no nome do kernel em
questo e utilizar um sufixo que indique a sua especificidade.
J os mdulos possuem comandos especficos para instalao. Aps compilados, so instalados
usando o comando
. Ser criado um diretrio com a numerao do kernel
em
. Portanto, para um kernel 2.6.30 o diretrio dos mdulos ser
. O comando
tambm se encarrega de gerar o
arquivo
nesse diretrio, que armazena as informa- es de interdependncia dos
mdulos.

INITIAL RAMDISK
A partir da verso 2.6 do kernel possvel criar um arquivo chamado Initial Ram- disk. Um Initial
ramdisk um pequeno conjunto de arquivos que carregado na memria RAM durante o
carregamento do kernel e montado como se fosse uma partio, porm sem que haja um sistema
de arquivos. Como o Initial Ramdisk montado antes da partio raiz, o motivo principal para
utiliza-lo a necessidade de utilizar um mdulo essencial para montar a partio raiz,
geralmente o mdulo que oferece suporte ao sistema de arquivos da partio raiz (xfs, ext3,
reiserfs etc.) ou o que oferece suporte para a controladora a qual o disco est conectado (SCSI,
RAID etc.). Como h muitas opes desse tipo disponveis na configurao do kernel, mais
prtico compilar um kernel genrico e adicionar esses recursos como mdulos.

SENAC-RR/2011

Dependendo da distribuio Linux utilizada, o comando que gera o Initial Ram- disk pode ser o
ou o
. No caso do mkinitrd, as opes mais importantes so -c (eliminar
rvore de diretrios usada para criao anterior do Ini- tial Ramdisk), -k (verso do kernel), -m
(lista de mdulos a incluir, separados por dois-pontos) e -o (nome para o Initial Ramdisk a ser
criado). Portanto, para criar um Initial Ramdisk para o Kernel 2.6.30 instalado incluindo o
mdulo xfs, faa:
# mkinitrd -c -k 2.6.30 -m xfs -o /boot/initrd-2.6.30.gz
Para incluir outros mdulos alm do xfs, basta separ-los por dois-pontos:
# mkinitrd -c -k 2.6.30 -m xfs:reiserfs:ext3 -o /boot/initrd-2.6.30.gz
A utilizao do mkinitramfs ligeiramente diferente. Todas as principais con- figuraes so
especificadas no arquivo
. Ali possvel definir quais
mdulos devem ser includos, em grupos pr-determinados ou individualmente. A principal
opo de linha de comando para o mkinitramfs -o, que determina o arquivo Initial Ramdisk.
Caso no seja informada a verso para qual deve ser gerada a Initial Ramdisk, ser assumida a
verso atual. Para gerar a Initial Ramdisk para o kernel 2.6.30 instalado, faa:
# mkinitramfs -o /boot/initramfs-2.6.30 2.6.30
Nas distribuies que utilizam o mkinitramfs, tambm h o comando
. No
lugar de criar uma nova Initial Ramdisk, ele atualiza aquela j existente de acordo com as opes
do arquivo initramfs.conf.

ATUALIZANDO O BOOTLOADER
Aps compilar e instalar o kernel e seus mdulos e criar a Initial Ramdisk, o carre- gador de boot deve
ser atualizado para que o kernel possa ser localizado e carregado aps o religamento do sistema.
Essa configurao feita de diferentes maneiras, dependendo de qual bootloader utilizado: LILO ou
GRUB.
No caso do Lilo, as alteraes so feitas no arquivo

. Por exemplo:

image = /boot/vmlinuz-2.6.30
root = /dev/sda1
initrd = /boot/initrd-2.6.30.gz
label = Linux-2.6.30
read-only
Aps editar o arquivo
alteraes tenham efeito.

, o comando

deve ser executado para que as

recomendvel manter o kernel anterior e apenas incluir o novo kernel, a fim de que seja
possvel iniciar o sistema com o kernel anterior caso haja algum problema.
Se o bootloader utilizado for o Grub, dev-se editar o arquivo
seguintes linhas, com as opes correspondentes ao novo kernel:
SENAC-RR/2011

. Inclua as

title Linux 2.6.30


root (hd0,0)
kernel /boot/vmlinuz-2.6.30root=/dev/sda1 ro
initrd /boot/initrd-2.6.30.gz
Para o Grub, no necessrio executar nenhum comando aps a alterao no ar- quivo de
configurao. O novo kernel aparecer automaticamente no menu de incio do sistema.

SENAC-RR/2011

SISTEMA DE IMPRESSO
O sistema de impresso de sistemas Unix-like (Linux) (CUPS) um sistema que permite ser
configurado pelo navegador web, para isso devemos ter instalado na mquina o servidor web
apache e o cups.
No debian e semelhantes
# apt-get install cupsys
# apt-get install apache2
No CUPS possvel o administrador do sistema adicionar, remover, gerenciar impressoras. O
CUPUS usa o protocolo Internet Printing Protocol (IPP) onde podemos configurar estaes da
rede local para adicionar impressora na rede e gerenciar trabalhos e filas de impresso
escutando conexes na porta 631.

CONFIGURAO DE UMA IMPRESSORA NO CUPS


# /etc/init.d/cupsys start
# /etc/init.d/apache2 start
Agora s abrir seu navegador web e instalar a impressora digitando a url
http://localhost:631 e seguir os passos de instalao
http://localhost:631

Add-Printer adiciona um impressora


Name - colocar o nome da impressora sem espao Ex:HP3920
Location - nome ou IP do servidor de impresso (opcional) Ex: servidor1 ou
192.168.1.1
Description - descrio da impressora (opcional deixe em branco) Device - Dispositivo
da impressora que pode ser uma porta local paralela, serial, USB ou servidores de
impresso remoto Windows via Samba, http, ipp, lpr ou Cups (Ex : USB) e clique em
Continue
Make - Escolha o fabricante (Ex : HP) e clique em Continue
Model -Escolha o modelo Ex : HP3920
Adicione a impressora e ser necessrio digitar o usurio e senha de root do Linux
Pronto a impressora est instalada, onde voc pode visualizar clicando em Printers

ARQUIVOS DE CONFIGURAO CUPS


/etc/cups/cupsd.conf - (configurao principal do cups)
/etc/cups/printers.conf - (configurao da impressora)

COMPARTILHANDO UMA IMPRESSORA NO CUPS NO DEBIAN


SENAC-RR/2011

Para compartilhar uma impressora no Cups, primeiramente necessrio instalar a impressora


no servidor.
Para adicionar uma impressora pelo Gnome atravs do programa Printing clicando em :

Desktop
Administrao
Printing

O pessoal do Cups pensando em um servidor sem interface grfica criou uma ferramenta web de
administrao do cups, onde possvel adicionar e remover impressoras acessando pelo
navegador atravs da porta 631 digitando o endereo http://localhost:631.
Para acessar a administrao do cups pelo navegador necessrio ter o cups e o apache
instalados e os servios inicializados.
Obs: O cups j instalado na instalao do Linux.
# apt-get install apache2
# /etc/init.d/apache2 start
# /etc/init.d/cupsys start
Pronto agora acesse o cups pelo navegador pela url http://localhost:631 e adicionar
impressoras clicando no boto Add Printer.

Quando o servidor no possui interface grfica, voc pode adicionar impressoras utilizando
navegadores em modo texto como: lynx e links, mas caso deseje acessar a administrao do cups
remotamente de uma mquina da rede, edite o arquivo /etc/cups/cupsd.conf e acrescente a
linha abaixo da Listen localhost:631 informando o endereo IP do servidor (Listen
192.168.1.1:631) para aceitar aceitar conexes externas e acessar o cups pela rede adicionando
a porta do cups 631.
Listen localhost:631
Listen 192.168.1.1:631
Agora necessrio adicionar o endereo IP da mquina da rede que ir acessar o servidor cups
na diretiva /admin do arquivo /etc/cups/cupsd.conf, e acrescentar o endereo IP da mquina
que ir acessar o servidor (192.168.1.10).
<Location /admin>
Order allow,deny
Allow localhost
Allow From 192.168.1.10
</Location>
Para ter acesso aos arquivos de configurao do cups remotamente pelo navegador, necessrio
tambm adicionar o endereo IP da mquina que ir acessar o servidor (192.168.1.10) na
diretiva /admin/conf.

SENAC-RR/2011

<Location /admin/conf>
AuthType Basic
Require user @SYSTEM
Order allow,deny
Allow localhost
Allow From 192.168.1.10
</Location>
Para os clientes poderem imprimir remotamente necessrio configurar a diretiva / no inicio
do arquivo onde ficam as impressoras, e devemos adicionar o endereo da nossa rede
(192.168.1.*) nesta diretiva (onde o asterstico * corresponde a todos os micros da rede
192.168.1.0).
<Location />
Order allow,deny
Allow localhost
Allow From 192.168.1.*
</Location>
Pronto agora depois que a impressora est instalada e configurada, teste e reinicie o servio do
cups no servidor.
# /etc/init.d/cupsys restart

CONFIGURANDO UM COMPUTADOR CLIENTE CUPS


Para que um computador da rede 192.168.0.0 possa enxergar a impressora no servidor
192.168.0.1, precisamos do IP ou nome do servidor, do nmero da porta, o nome do
compartilhamento e o nome da impressora usando o protocolo HTTP ou IPP.
Exemplo:
http://192.168.0.1:631/printers/HP
ipp://192.168.0.1/printers/HP

Configurando um cliente Windows


O Windows XP possui a opo de configurar um impressora IPP do Cups clicando no menu:

Iniciar
Painel de controle
Impressoras e aparelhos de fax
Adicionar uma impressora
Uma Impressora de rede ou conectada em outro computador
Conectar-se a uma impressora na internet ou em uma rede domstica ou no escritrio
Na caixa URL digite:
o http://Nome-ou-IP-do-seu-servidor-com-CUPS:631/printers/nome-daimpressora
SENAC-RR/2011

Avanar e instale o driver da impressora


Ir perguntar se deseja definir como padro ou no a impressora

SENAC-RR/2011

BACKUPS
Os backups devem fazer parte da rotina de operao dos seus sistemas e seguir uma poltica
determinada. O melhor faz-los da forma mais automatizada possvel, de modo a reduzir o seu
impacto sobre o trabalho dos administradores e operadores de sistemas.
A lista de itens cujo backup deve ser feito com freqncia inclui:

dados;
arquivos de configurao;
logs.

Um ponto que merece especial cuidado o backup de binrios (executveis e bibliotecas), que
geralmente deve ser evitado. Uma exceo a essa regra uma cpia completa do sistema logo
aps a sua instalao, antes que ele seja colocado em rede. Backups que incluem binrios no so
aconselhveis porque abrem a possibilidade de que eventuais Cavalos de Tria ou executveis
corrompidos sejam reinstalados na restaurao do sistema.
Alguns cuidados devem ser tomados em relao ao local onde so guardados os backups:

o acesso ao local deve ser restrito, para evitar que pessoas no autorizadas roubem ou
destruam backups;
o local deve ser protegido contra agentes nocivos naturais (poeira, calor, umidade);
se possvel, aconselhvel que o local seja tambm prova de fogo.

Os backups devem ser verificados logo aps a sua gerao e, posteriormente, em intervalos
regulares. Isto possibilita a descoberta de defeitos em dispositivos e meios de armazenamento e
pode evitar que dados sejam perdidos por problemas com backups que no podem ser
restaurados.
Algumas organizaes providenciam meios para armazenar backups fora das suas instalaes,
como em cofres de bancos, por exemplo. Essa uma boa maneira de garantir a disponibilidade
dos backups em caso de problemas nas instalaes. Entretanto, isso pode comprometer a
confidencialidade e a integridade desses backups. Uma possvel soluo criptografar o backup
e gerar um checksum (MD5 ou SHA-1, por exemplo) dele antes que seja entregue a pessoas de
fora da organizao. Uma verificao do checksum antes da restaurao pode servir como prova
de que o backup no foi alterado desde que foi feito.
Quando for necessrio restaurar um sistema, isto deve ser feito com a mquina isolada da rede.
Caso o sistema em questo tenha sido comprometido, revise a sua configurao aps a
restaurao para certificar-se de que no tenha ficado nenhuma porta de entrada previamente
instalada pelo invasor.

POLTICAS DE BACKUP
As combinaes de backup mais comuns so: o backup total, backup incremental e backup
diferencial. Abaixo segue uma breve descrio de cada uma das combinaes citadas.

BACKUP TOTAL
o backup que abrange na ntegra todos os arquivos e diretrios existentes no servidor.
SENAC-RR/2011

Vantagens:

Backup completo do servidor.


Caso voc precise restaurar arquivos, eles so facilmente restaurados do nico conjunto
de backup.

Desvantagens:

Um backup completo mais demorado que outras opes de backup.


Backups completos requerem mais disco, fita ou espao de unidade de rede.

BACKUP INCREMENTAL
Backup incremental o mtodo de backup onde mltiplos backups so mantidos (e no apenas
o ltimo). Em um backup incremental, cada arquivo armazenado uma nica vez e, em seguida,
sucessivos backups contm apenas as informaes que mudaram desde uma cpia de segurana
anterior.
O backup incremental altamente eficiente, uma vez que permite o armazenamento de {N}
cpias de tamanho {S}, divididos em pedaos, com um total de armazenamento exigido muito
inferior a {NxS}. Se a informao inicial que o backup no mudou entre os backups, o tamanho
total ser prximo de {S}. Se ele mudou quase completamente, o tamanho do backup ser
aproximadamente {NxS}.
Vantagens:

Tempo de backup mais rpido do que backups totais.


Backups incrementais requerem menos disco, fita ou espao de unidade de rede.
Voc pode manter vrias verses dos mesmos arquivos em diferentes conjuntos de
backup.

Desvantagens:

Para restaurar todos os arquivos, voc deve ter todos os backups incrementais
disponveis.
Pode levar mais tempo para restaurar um arquivo especfico, pois necessrio pesquisar
mais de um conjunto de backup para encontrar a verso mais recente de um
determinado arquivo.

BACKUP DIFERENCIAL
Backup diferencial um backup cumulativo de todas as alteraes feitas desde o ltimo backup
completo. Juntos, um backup total e um backup diferencial devem incluir todos os os arquivos no
computador, alterados e inalterados.
Vantagens:

A recuperao realizada em curto perodo de tempo, exigindo apenas um backup


completo e os ltimos backups diferenciais para restaurar o sistema.
Tempo de backup mais rpido que backups completo ou incrementais.

Desvantagens:

Restaurando todos os arquivos pode levar consideravelmente mais tempo, pois voc
pode ter que restaurar tanto o ltimo backup diferencial e completo.
SENAC-RR/2011

Restaurar um arquivo individual pode demorar mais, pois necessrio voc que localize
o arquivo em um backup completo ou incremental.

Abaixo segue uma sugesto de poltica de backup:

Figura 24 - Sugesto de Poltica de Backup

Com base nas combinaes acima, podemos elaborar uma boa poltica de backup que garanta a
segurana e disponibilidade das informaes de nosso ambiente, mantendo a vida do
administrador de sistemas muito mais tranquila em situao de inicidente. Espero que seja til
para todos.

SENAC-RR/2011

CONCEITOS DE TCP/IP FERRAMENTAS E


DIAGNSTICOS
Redes TCP/IP
TCP/IP - Transmission Control Protocol (Protocolo de Controle de Transmisso) e o IP Internet
Protocol (Protocolo Internet) uma conjunto de protocolos de rede usado por sistema
operacionais como Unix, Linux, MacOS, Windows. Os protocolos TCP e UDP(User Datagram
Protocol - Protocolo de Datagramas do Usurio) so responsveis por enviar pacotes para as
aplicaes sobre IP.
O Internet Protocol um protocolo sem conexo , pois cada pacote transmitido
independentemente pela rede e roteado at a o seu destino, sem garantias que os pacotes
chegaro ou se chegarem na ordem correta.
Abaixo segue o modelo do cabealho de um pacote IP
verso
IP Tamanho do Tipo de servio (DNS, Tamanho total (16 bits)
(IPV4)
(4 cabealho (4 HTTP, etc...) (8 bits)
bits)
bits)
Identificao ID do fragmento (16 bits)
R D F M F Off-set
do
fragmento
(13
bits)
Tempo de vida (TTL) Protocolo (8 bits)
Soma de verificao do cabealho
(8 bits)
(16 bits)
Endereo IP de origem (32 bits)
Endereo IP de destino (32 bits)
Opes variveis com limite de tamanho de 40 bytes
Pacotes com os dados
O TTL usado pelos comandos ping e traceroute utilizado para evitar que os pacotes entrem
loops de roteamento (que no tem fim), o pacote TTL diminudo em 1 quando chegam no
roteador e quando o TTL atinge 0 o pacote e descartado.
O pacote IP pode ser fragmentado em pequenos tamanhos de frame, sendo necessrio em uma
transmisso em rede, portanto tambm podem ser usados para um ataque. O fragmento MF
analisa se existem fragmentos acompanhados, retornando 1 indica que existem mais fragmentos
e retornando 0 indica que esse o ltimo fragmento.
O off-set do fragmento usado para identificar os dados no fragmento do pacote original,
evitando que seja usado um firewall. Nesse caso, enviado o primeiro fragmento com um
cabealho TCP (no campo dos dados do pacote IP), o segundo fragmento redefine o primeiro
fragmento e o cabealho TCP, podendo assim tentar passar pelo firewall. O campo de dados do
pacote IP armazena o cabealho para o nvel de protocolos superiores(TCP, UDP, HTTP, etc..)
alm dos dados do prprio pacote.
O TCP um protocolo destinado a conexes entre as aplicaes, funciona de forma a uma ligao
telefnica entregando os pacotes de forma confivel garantindo a entrega correta dos pacotes,
controlando o fluxo e congestionamento. Enquanto o protocolo IP utiliza endereos IP para

SENAC-RR/2011

rotear os pacotes a seu destino o TCP utiliza portas. Assim como endereos IP, as portas de
origem no so verificadas pelo emissor, podendo assim serem falsificados por um atacante.
Porta de origem (16 bits)

Porta de
destino
(16 bits)

Nmero de sequncia (32 bits)


Nmero de confirmao (32 bits)
Off-set (4 bits) Reservado U
A
(6 bits)
(Urgent) (Ack)
Soma de verificao (16 bits)

P
(Push)

R
(Reset)

S
(Syn)

F
(Fin)

Janela
(16 bits)
Ponteiro
urgente
(16 bits)

Opes variveis de preenchimento com 0s


Pacotes com os dados
O cabealho TCP identifica um pacote TCP que est sendo enviado por flags de bits(Urgent, Ack,
Push, Reset, Syn e Fin). Os flags Urgent e Push dificilmente so utilizadas, abaixo segue as
combinaes de flags usadas pelo TCP.
Combinaes
de flags
SYN
SYN ACK
ACK
FIN
FIN ACK
RST

Descrio
o primeiro pacote a ser enviado em uma conexo entre a origem e o destino
O destino responde ao pacote SYN, confirmando sua mensagem original e
enviando SYN como resposta
Cada pacote utilizado em uma conexo estabelecida possui um bit ACK
ativado para confirmar os pacotes recebidos anteriormente
No momento em que uma conexo estiver sendo fechada, ser enviado um
pacote FIN para o outro
Este tipo de combinao utilizada para confirmar o primeiro pacote FIN e
completar o encerramento da conexo
Quando um pacote enviado de forma inesperada enviado um pacote
reset(RST), por exemplo, em uma conexo se for recebido um pacote SYN ACK
sem ter enviado um pacote SYN ser enviado um pacote RST

O UDP um protocolo destinado a pacotes, funciona de forma semelhante a uma carta de


correio, no permitindo a comunicao de origem e destino, no controla congestionamento e
nem garante que os pacotes sero entregues da mesma forma que foi enviados.
Nmero da porta de origem (16 bits)
Tamanho (16 bits)
Dados

Nmero da porta de destino (16 bits)


Soma de verificao (16 bits)

SENAC-RR/2011

Figura 25 Diagrama do Protocolo TCP/IP

CAMADAS DOS PROTOCOLOS TCP/IP


Quando se compara modelo TCP/IP com modelo OSI que descreve um grupo de sete camadas,
existe duas camadas do TCP/IP se unem apartir da unio de algumas camadas do modelo OSI.
Abaixo temos o diagrama agrupando essas

Figura 26 - Camadas do Protocolo TCP/IP

Camada de aplicao - So aplicaes desenvolvidas e utilizadas pelo usurio utilizando protocolos


como SMTP, POP3, TELNET, SSH, FTP, DNS, NFS, SNMP, HTTP, TFTP, NTP etc.
Camada de transporte(TCP, UDP) - a camada responsvel por pegar os dados enviados pela
Camada de aplicao e dividi-los em pacotes que sero transmitidos pela rede atravs da Camada de
internet. onde esto localizados os protocolos TCP e UDP. Essa camada controlada pelo sistema
operacional
Camada de Internet(IP) - a camada responsvel por receber os dados enviados pela Camada de
transporte e dividi-los em datagramas que sero transmitidos pela rede atravs da Camada de rede.
onde esto localizados os protocolos ICMP, ARP, IP(responsvel pela transmisso e roteamento do
pacotes pela rede at os dados chegarem da sua origem ao seu destino).
Camada de rede - a camada responsvel por enviar os datagramas pela rede, nesta camada
especialmente para a obteno de dados da rede de origem e da rede de destino. Isso geralmente
envolve rotear o pacote atravs de redes distintas que se relacionam atravs da internet.

COMANDOS DE REDE
SENAC-RR/2011

dig - Faz consulta a servidores DNS para resolver nomes de recursos referentes ao endereo
de ip
$ dig -h (para opes)
$ dig google.com.br -t NS

dnsdomainname - Exibe parte do nome FQDN de domnio DNS do sistema


$ dnsdomainname --help (para opes)
$ dnsdomainname -a
$ dnsdomainname -f

host - Utilitrio de DNS lookup para fazer consultas a servidores de DNS


$ host --help (para opes)
$ host -t NS google.com.br

hostid - Exibe o ID hexadecimal do host local.


$ hostid

ifconfig - Exibe e configura uma interface de rede.


$ ifconfig --help (para opes)
$ /sbin/ifconfig

netstat - Exibe conexes de rede, portas, servios, tabela de roteamento, esttiscas de


interfaces e etc.
$ netstat --help (para opes)
$ netstat -nap

ping- Envia uma requisio ICMP ECHO_REQUEST para a um host na rede, utilizado para
testar a conectividade entre um host local e um remoto.
$ ping --help (opes)
$ ping www.google.com.br
$ ping -c 3 www.google.com.br (Envia 3 pacotes ECHO_REQUEST e para)

route - Exibe a tabela de roteamento de IP.


$ route --help (opes)
$ /sbin/route -n

traceroute - Traa a rota percorrida por pacotes que saem do host local at alcanar um host
remoto.
$ traceroute www.wikipedia.org

SENAC-RR/2011

nslookup - Consulta nome de servidores de domnio DNS na internet.


$ nslookup
> set q=any
> www.google.com.br
> exit

whois - um comando para fazer consultas DNS sobre informaes de domnios


$ whois www.google.com.br

arp - Manipula o cache arp(Adreess Resolution Protocol) do kernel de vrias maneiras.


$ arp -a (Exibe os endereos IP's, os nomes de hosts, seus endereos MAC
e suas interfaces de rede locais e remotos

ip - Exibe e manipula rotas, dispositivos, politicas de roteamento e tneis.


$ ip --help (opes)
$ ip link show (Exibe as interfaces de rede e seus endereos MAC)
$ ip route show (Exibe as interfaces de rede, endereos das redes,
endereo IP do(s) roteador(es) ou gateway(s))
$ ip link set eth0 up (ativa a interface de rede eth0)
$ ip link set eth0 down (desativa a interface de rede eth0)

PARA COMPARTILHAR A CONEXO


(em um servidor com duas placas de rede):
# modprobe iptable_nat
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

(onde a eth0 a placa com a conexo da Internet). Coloque os comandos no arquivo


"/etc/rc.local" para que eles sejam executados durante o boot.

SENAC-RR/2011

CRIANDO UM SERVIDOR DE DNS BIND9


Esclareceremos aqui a uma configurao bsica e funcional de um servidor DNS utilizando o
Debian.

SERVIDOR DNS
Pacote necessrio:

Bind9;

INSTALAO
Primeiro abra um terminal e se logue como root, a instalao do Bind9 pode ser feita atravs do
seguinte comando:
# apt-get install bind9
Depois desse comando ser criado um diretrio onde ficam os arquivos de configurao do
Bind9.

CONFIGURAO
Com o Debian muito simples configurarmos um servidor DNS. Primeiramente devemos ir at o
diretrio do Bind9, que fica em /etc/bind. L veremos o arquivo de configurao que o
named.conf e os arquivos referenciados nas zonas do named.conf.
Vamos pr a mo na massa. Devemos editar o named.conf, procure utilizar o editor de sua
preferncia, aqui utilizarei o vim. Veja o exemplo:
# cd /etc/bind
# vim named.conf
O arquivo deve ser algo + - assim:
zone "." {
type hint;
file "/etc/bind/db.root";
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
SENAC-RR/2011

type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
Voc deve acrescentar duas zonas referentes ao seu domnio e ao seu IP, como por exemplo:
## minhas zonas ##
zone "robinho.com.br"{ (seu domnio)
type master;
file "/etc/bind/db.robinho.com.br"; (esse arquivo nos criaremos e a
referencia desta zona o domnio)
};
zone "1.168.192.in-addr.arpa"{ (seu ip reverso )
type master;
file "/etc/bind/db.1.168.192"; (esse arquivo nos criaremos e a
referencia desta zona o ip reverso)
};
## fim das minhas zonas ##
Isso deve ser acrescentado no fim do arquivo de configurao named.conf. Agora vamos criar os
arquivos que so referenciados nas zonas, esses arquivos devem ser salvos junto com o arquivo
de configurao, dentro de /etc/bind.
Vamos ao primeiro arquivo do domnio, o db.robinho.com.br. Edite para que fique desta forma:
$TTL 604800 (nome da mquina.seu domnio) (root.nome da
mquina.seu domnio)
@
IN SOA MyMaster.robinho.com.br
root.MyMaster.robinho.com.br (
1
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
;
MyMaster IN A 192.168.1.3 (nome da mquina depois seu IP)
www
IN A 192.168.1.3
mail
IN A 192.168.1.3
@
IN MX 5 MyMaster.robinho.com.br. c
@
IN NS
MyMaster.robinho.com.br. (nome da mquina.seu
domnio)
@
IN A 192.168.1.3 ;(seu ip)
Depois devemos criar o arquivo referente ao seu IP reverso (db.1.168.192) e deix-lo assim:

SENAC-RR/2011

$TTL 604800 (nome da mquina.seu domnio) (root.nome da


mquina.seu domnio)
@
IN SOA MyMaster.robinho.com.br.
root.MyMaster.robinho.com.br. (
1
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
604800 )
; Negative Cache TTL
@
IN NS MyMaster.robinho.com.br. (nome da mquina.seu
domnio)
3
IN PTR MyMaster.robinho.com.br. (nome da mquina.seu
Domnio)
OBS: O 3 significa o nmero de sua mquina em seu IP, como neste exemplo 192.168.1.3.
Agora s precisamos testar, para isso devemos restartar o servio do Bind9 com o seguinte
comando:
# /etc/init.d/bind9 stop
# /etc/init.d/bind9 start
Voc tambm pode verificar possveis erros executando o seguinte comando:
# named-checkconf
Esse comando te mostrar possveis falhas. Agora edite o arquivo /etc/resolv.conf, deixando-o
assim:
search robinho.com.br # seu domnio
nameserver 192.168.1.3 # seu ip

Esse arquivo e responsvel pelo acesso ao DNS. Para testar e ver se tudo est funcionando, basta
apenas utilizar o comando ping, veja:
$ ping robinho.com.br
(seu domnio)
$ ping www.robinho.com.br
(site de seu domnio)
$ ping mail.robinho.com.br
(email de seu domnio)
$ ping www.google.com.br
(um site qualquer para ver se est resolvendo mesmo)
Todos esses endereos devem responder e com seu IP como resposta

SENAC-RR/2011

DHCP DINAMIC HOST CONTROL


PROTOCOL

Para instalar um servidor DHCP:


# apt-get install dhcp3-server

Edite em seguida o arquivo "/etc/dhcp3/dhcpd.conf", deixando-o com o seguinte contedo:


ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.201;
option routers 192.168.0.10;
option domain-name-servers 200.177.250.10,200.204.0.10;
option broadcast-address 192.168.0.255;
}

Substitua os valores em negrito pelos endereos utilizados na sua rede. Ao terminar, reinicie o
servio.

SENAC-RR/2011

INSTALANDO UM SERVIDOR WEB COM


APACHE2

Para instalar um servidor LAMP:


# apt-get install apache2 php5 libapache2-mod-php5 php5-mysql
# a2enmod php5
# /etc/init.d/apache force-reload
# apt-get install mysql-server phpmyadmin
# mysql_install_db
# /etc/init.d/mysql start
# mysqladmin -u root password 123456

(define a senha do servidor MySQL)


A partir da, voc tem acesso ao servidor MySQL atravs do endereo
"https://ip_do_servidor/phpmyadmin/". Os arquivos referentes ao site vo na pasta
"/var/www".

SENAC-RR/2011

SERVIDOR PROXY SQUID


Instalar um servidor Proxy, com o Squid:
# apt-get install squid

Edite o arquivo "/etc/squid/squid.conf", deixando-o com o seguinte contedo:


http_port 3128
visible_hostname servidor
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # portas altas
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal
http_access deny all

Substitua o "192.168.1.0" pela faixa de endereos utilizada na sua rede local. Reinicie o
servio para ativar a nova configurao.
SENAC-RR/2011

SENAC-RR/2011

MONITORAMENTO DO AMBIENTE DE REDE


COM CACTI
Para podermos entender o funcionamento da ferramenta, interessante entendermos o que na
verdade o Cacti, conceitos de SNMP e como chegamos at ele.
CACTI
A ferramenta disponibiliza um ambiente de operao agradvel e muito acessvel a qualquer
usurio, com controle de acesso por nvel de usurio (voc pode configurar usurios e as
informaes que eles podero ou no ver), o processo de incluso de novos equipamentos para
serem gerenciados tambm muito simples, e ainda tem uma infinidade de plugins disponveis
no frum oficial da ferramenta (forums.cacti.net).
O foco aqui gerencia de servidores e equipamentos de rede que suportem o protocolo SNMP
(SNMP significa Simple Management Network Protocol).
Para utilizar SNMP, basta configurar no equipamento (varia de equipamento para equipamento,
mas o processo trivial, muito fcil). Aps habilitar o protocolo, voc precisa definir uma
comunidade (community) que pode ser somente de leitura ou leitura e escrita. Qual a diferena
bsica entre ler e escrever no SNMP? Neste caso o processo de leitura, o de consultar uma
determinada varivel e posteriormente receber o valor (WALK ou GET). O processo de escrita,
o processo de modificar o estado da varivel (SET).
Mas, enfim vamos ao Cacti. Estou considerando que os equipamentos que voc deseja monitorar
(servidores, switches, roteadores e etc) esto com o protocolo SNMP habilitado e que voc
conhece a comunidade de leitura (community read-only).

OBTENDO E INSTALANDO O CACTI


Faa o download do Cacti em:

http://www.cacti.net/downloads/cacti-0.8.6f.tar.gz

Para verificar se existe uma nova atualizao, olhe em:

http://www.cacti.net/downloads/

Aps o trmino do download, execute o comando:


# tar -zxvf cacti-0.8.6f.tar.gz
Ser criado um diretrio com o nome cacti-0.8.6f, mova este diretrio para o diretrio padro do
webserver (Apache) com o comando:

# mv cacti-0.8.6f /var/www/cacti

SENAC-RR/2011

CONFIGURANDO O CACTI
Entre no diretrio onde ele est instalado:
# cd /var/www/cacti
E execute os seguintes comandos (todos como root):
# mysqladmin --user=root create cacti
(este comando cria o banco de dados)
# mysql cacti < cacti.sql
(este comando importa a estrutura do banco de dados)
Agora precisamos acessar o banco de dados e ajustar as permisses de acesso:
# mysql --user=root mysql
(este comando te leva para o shell do MySQL)

Aps digitar este comando, observe que sua shell agora muda e aparece "mysql>". Digite os
seguintes comandos:
mysql> GRANT ALL ON cacti.* TO root@localhost IDENTIFIED BY
'coloqueasenhadorootaqui';
(este comando diz que o usurio do BD Cacti o root)
mysql> FLUSH PRIVILEGES;
(este comando completa esta fase)
Agora vamos configurar o Cacti. Edite o arquivo config.php (uso o mcedit, mas pode ser qualquer
editor):
# mcedit /var/www/cacti/include/config.php
$database_default = "cacti"; # Nome do Banco de Dados - No mexer
$database_hostname = "localhost"; # Nome do host - No mexer
$database_username
=
"cactiuser";
#
Mude
para
root
$database_password = "cacti"; # Mude para a senha do root

SENAC-RR/2011

Aps editar, salve o arquivo e saia. Inclua esta linha no seu crontab:
*/5 * * * * php /var/www/cacti/poller.php > /dev/null 2>&1

1) Se for o vi, pressione a tecla i (para entrar no modo de incluso) e digite:


*/5 * * * * php /var/www/cacti/poller.php > /dev/null 2>&1
Aps digitar a linha acima, pressione SHIFT:(DOIS PONTOS), logo em seguida wq! e d ENTER.
Pronto, seu crontab est instalado.

ACESSANDO O CACTI PELA PRIMEIRA VEZ


Aps todos esses passos, chegou a hora mais emocionante, aps alguns minutos (talvez horas)
olhando para uma tela preta (s vezes azul, verdade) entediante, chegamos bem prximo do
nosso objetivo: VER E OPERAR O FRONT-END!
Para isso digite em um navegador:
http://ipdoservidorcacti/cacti
Aparecer uma tela lhe perguntando se nova instalao (por default j vem marcado), clique
apenas em NEXT e observe na tela seguinte se todos os pr-requisitos foram realmente
instalados. Caso esteja tudo OK, clique em Next, caso esteja faltando algum programa, proceda a
instalao do mesmo antes de continuar.
Se tudo correu bem, agora voc j est vendo o prompt de login:
Username=admin
Password=admin
Logo no primeiro login ele ir forar que voc modifique a senha, escolha uma senha e clique em
OK.

SENAC-RR/2011

UTILIZAO SEGURA DO SSH ACESSO


REMOTO
Por padro, o sistema tenta configurar a rede via DHCP, de forma que voc tenha acesso rede e
possa usar o apt-get.
Se voc tem um servidor DHCP na rede e o servidor a est acessando a internet, comece usando
o comando "apt-get update", que atualiza a lista de pacotes do apt-get, permitindo que voc
possa instalar novos pacotes. Caso contrrio, veja as instrues de configurao manual da rede
mais adiante.
# apt-get update
Em seguida, instale o servidor SSH, usando o comando:
# apt-get install openssh-server
Aproveite tambm para instalar seu editor de textos preferido (seja ele o joe, mcedit, vi, nano ou
mesmo o emacs) afinal, ele ser seu brao direito daqui em diante.
Cheque o endereo IP do seu servidor utilizando o comando "ifconfig":
# ifconfig
A partir do seu desktop (ou outro micro que tenha acesso ao servidor), use o comando "ssh",
seguido de "root@" e o endereo IP do seu servidor, como em:
$ ssh root@192.168.1.88
Se voc usa Windows, pode utilizar o Putty (disponvel no http://www.putty.nl/), que um
cliente SSH for Windows.
A partir da, voc poder fazer todo o restante da configurao do servidor confortavelmente a
partir do seu micro de trabalho, tendo acesso a todas as suas ferramentas e fontes de pesquisa,
ao invs de ter que fazer tudo a partir de um terminal limitado.

SENAC-RR/2011

Figura 27 - Logando no servidor via SSH

Continuando, o prximo passo fazer a configurao definitiva da rede, abandonando a


configurao via DHCP. Afinal, no seria interessante que o endereo IP do servidor mudasse a
cada boot no mesmo.
No Debian, a configurao da rede vai no arquivo "/etc/network/interfaces". Logo aps a
instalao, ele estar assim:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

Excluindo-se os comentrios, as duas primeiras linhas ativam a interface de loopback. Ela


importante para diversas funes, por isso nunca deve ser desabilitada. Em seguida, temos as
duas linhas que ativam a interface de rede, com destaque para a linha "iface eth0 inet dhcp", que
a configura via DHCP.
Comente a linha "allow-hotplug eth0" e a "iface eth0 inet dhcp" e adicione as linhas abaixo, que
especificam a configurao da rede:
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
SENAC-RR/2011

broadcast 192.168.1.255
gateway 192.168.1.1

Depois da alterao, o arquivo completo ficaria:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Como voc pode ver, as ltimas 5 linhas especificam o IP utilizado pelo servidor e o restante da
configurao da rede, com exceo dos endereos dos servidores DNS, que vo em um arquivo
separado, o "/etc/resolv.conf". Ele utiliza uma sintaxe simples, onde cada um dos dois
endereos especificado em uma linha, comeando com "nameserver", como em:
nameserver 208.67.222.222
nameserver 208.67.220.220
Depois de configurar a rede, reinicie o servio "networking", para que a configurao entre em
vigor:
# /etc/init.d/networking restart
Ao reiniciar a rede, o endereo IP do servidor ser trocado, fazendo com que o terminal do SSH
pare de responder. Isso normal e esperado. Basta abrir outro terminal e conectar de novo,
desta vez no novo endereo.
Quando voc loca um servidor dedicado, voc recebe o servidor neste ponto, com o sistema
instalado, a rede j configurada e o servidor SSH aberto, permitindo que voc se logue
remotamente, um detalhe importante, j que o servidor estar fisicamente muito distante de
voc, provavelmente em um datacenter nos EUA ou na Europa.

SENAC-RR/2011

Em muitos casos, ao assinar o plano, voc pode solicitar a instalao de alguns pacotes
especficos, de forma que o servidor j venha pr-configurado como um servidor LAMP, por
exemplo, mas isso no uma regra.

SENAC-RR/2011

BIBLIOGRAFIA
ARTIGOS. GDH. Disponivel em: <http://www.hardware.com.br/>. Acesso em: 20 Junho 2011.
HISTRIA do Linux. NETFILES. Disponivel em: <https://netfiles.uiuc.edu/rhasan/linux/>.
Acesso em: 28 Junho 2011.
INSTALANDO o Cacti em plataforma Debian. Viva
<http://www.vivaolinux.com.br/>. Acesso em: 07 Julho 2011.

Linux.

Disponivel

em:

MIT. A histria completa do MULTCS. MIT. Disponivel em: <http://web.mit.edu/multicshistory>. Acesso em: 28 Julho 2011.
MORIMOTO, C. E. Servidores Linux - Gruia Prtico. So Paulo: GDH Press e Sul Editores, 2008.
MORIMOTO, C. E. Linux - Guia Prtico. So Paulo: GDH Press e Sul Editores, 2009.
PROJETO Linux Brasil. Linux Brasil. Disponivel em: <http://www.linuxbrasil.org.br>. Acesso
em: 20 Junho 2011.
SILVA, G. M. D. Guia Foca GNU/Linux. Guia
<http://www.guiafoca.org>. Acesso em: 20 Junho 2011.

Foca

Linux.

Disponivel

em:

SIQUEIRA, L. A. Curso completo para LPIC-2. 2. ed. So Paulo: Linux New Media do Brasil
Editora Ltda., 2009.
SUNGAILA, M. LPI-101 Administrao de Sistemas Linux. So Paulo: Green Treinamentos,
2006.
SUNGAILA, M. LPI-102 Administrao de Redes Linux. So Paulo: Grenn Treinamentos, 2006.

SENAC-RR/2011

Вам также может понравиться