You are on page 1of 384

Fundamentos de Administrao Linux

Fundamentos de Administrao Linux

-1

Fundamentos de Administrao Linux

Hardware e Arquitetura

-2

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Configurao de Atributos Fundamentais de BIOS

-3

Fundamentos de Administrao Linux

Recursos de Hardware O hardware bsico do sistema configurado atravs do utilitrio de configurao de BIOS, que pode ser acessado no incio do boot da mquina. Atravs deste utilitrio, possvel liberar e bloquear perifricos integrados, ativar proteo bsica contra erros (proteo bsica contra vrus e S.M.A.R.T.) e configurar endereos I/O, IRQ e DMA. IRQ: Requisio de Interrupo do dispositivo para a CPU, que interrompe a atividade em andamento e processa a instruo enviada pelo dispositivo. I/O: Endereo especfico no mapa de memoria do sistema. A CPU ir se comunicar com o dispositivo lendo e escrevendo neste endereo DMA: Canal que permite a certos dispositivos, acesso direto memria sem intermdio da CPU.

Recursos padro utilizados por dispositivos comuns:

Dispositivo /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 /dev/lp0 /dev/lp1 Placa de Som -

Porta 0x03f8 0x02f8 0x03e8 0x02e8 0x378 0x278 0x220

I/O IRQ 4 3 4 3 7 5 -

-4

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

comum que algumas mquinas, como servidores dedicados, sejam acessados apenas remotamente e no tenham um teclado conectado. Em caso de algum problema que faa a mquina desligar, como interrupo no fornecimento de energia, importante que a mquina reinicie e volte a operar normalmente. Alguns BIOS procuram por um teclado e interrompem o boot caso no o encontrem. Para esse tipo de mquina sem teclado, imprescindvel que o BIOS esteja configurado para no checar por teclado durante o boot. O kernel do Linux armazena informaes sobre recursos de dispositivos no diretrio /proc, nos arquivos: /proc/dma /proc/interrupts /proc/ioports /proc/pci Trecho exemplo de /proc/ioports:
0000-001f : dma1 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-006f : keyboard 0070-0077 : rtc 0080-008f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 0376-0376 : ide1 0378-037a : parport0 03c0-03df : vesafb 03f6-03f6 : ide0 03f8-03ff : serial

-5

Fundamentos de Administrao Linux

-6

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Comandos para inspecionar dispositivos

-7

Fundamentos de Administrao Linux

lspci Lista informaes de chipset dos componentes PCI. Com a opo -v lista I/O e IRQ dos dispositivos. Exemplo de lspci:

# lspci -v (...) 00:0f.1 Communication controller: C-Media Electronics Inc CM8738 (rev 10) Subsystem: C-Media Electronics Inc CM8738 Flags: medium devsel, IRQ 9 I/O ports at dc80 [size=64] Capabilities: [40] Power Management version 2 01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 630/730 PCI/AGP VGA Display Adapter (rev 20) (prog-if 00 [VGA]) Subsystem: Silicon Integrated Systems [SiS] 630/730 PCI/AGP VGA Display Adapter Flags: 66Mhz, medium devsel BIST result: 00 Memory at e0000000 (32-bit, prefetchable) [size=128M] Memory at efee0000 (32-bit, non-prefetchable) [size=128K] I/O ports at cc80 [size=128] Expansion ROM at <unassigned> [disabled] Capabilities: [40] Power Management version 1 Capabilities: [50] AGP version 2.0

-8

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Dmesg Mostra as mensagens do kernel, da identificao do hardware em diante. Essa informao est disponvel em /var/log/dmesg e /var/log/messages. Exemplo de dmesg:

# dmesg (...) ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A parport0: PC-style at 0x378 (0x778) [PCSPP(,...)] parport0: irq 7 detected lp0: using parport0 (polling). io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered Floppy drive(s): fd0 is 1.44M (...)

-9

Fundamentos de Administrao Linux

Configurao de Dispositivos no IDE

- 10

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

SCSI (scuzzy) H dois tipos de dispositivos SCSI: 8 bit: 8 dispositivos incluindo o controlador. 16 bit: 16 dispositivos incluindo o controlador. Dispositivos SCSI so identificados atravs de um conjunto de trs nmeros chamado SCSI_ID: 1 O Canal SCSI. Cada adaptador SCSI suporta um canal de dados no qual so anexados os dispositivos SCSI. So numerados a partir de zero. 2 O ID do dispositivo. A cada dispositivo atribudo um nmero ID nico altervel atravs de jumpers. A gama de Ids vai de 0 a 7 em controladores de 8 bit e de 0 a 15 em controladores de 16 bit. O ID do controlador costuma ser 7. 3 O nmero lgico da unidade (LUN). usado para determinar diferentes dispositivos dentro de um mesmo alvo SCSI. Pode indicar uma partio em um disco ou um dispositivo de fita especfico em um dispositivo multi-fita. Hoje no muito utilizado pois adaptadores SCSI esto mais baratos e podem comportar mais alvos por barramento. Todos dispositivos SCSI so listados em /proc/scsi/scsi:

# cat /proc/scsi/scsi Attached devices: Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: HL-DT-ST Model: RW/DVD GCC-4521B Rev: 1.00 Type: CD-ROM ANSI SCSI revision: 02

O comando scsi_info usa as informaes deste arquivo para mostrar o SCSI_ID e o modelo do dispositivo solicitado:

- 11

Fundamentos de Administrao Linux

# scsi_info /dev/scd0 SCSI_ID="0,0,0" HOST="1" MODEL="HL-DT-ST RW/DVD GCC-4521B" FW_REV="1.00"

Por padro, o dispositivo SCSI de boot o de ID 0, o que pode ser alterado na BIOS SCSI. Se existirem tanto dispositivos SCSI quanto IDE, a ordem do boot precisa ser especificada na BIOS da mquina.

- 12

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Configurao de Placas de Expanso


A configurao de placas de expanso diversas engloba os aspectos abordados nos captulos anteriores, mais um conhecimento mais slido sobre coldplug, hotplug e inspeo de hardware. Em linhas gerais, coldplug significa a impossibilidade de se conectar dispositivo sem a necessidade de desligar a mquina. Exemplos de dispositivos coldplug so placas PCI, ISA e dispositivos IDE. Na maioria dos computadores, CPU e pentes de memria so coldplug. Porm, alguns servidores de alta performance suportam hotplug para esses componentes. Hotplug o sistema que permite conectar novos dispositivos mquina em funcionamento e us-los imediatamente, como no caso de dispositivos USB. O sistema Hotplug foi incorporado ao ncleo do modelo de driver do kernel 2.6, assim qualquer barramento ou classe pode disparar eventos hotplug quando um dispositivo conectado ou desconectado. Assim que um dispositivo conectado ou desconectado, o hotplug dispara um evento correspondente, geralmente trabalhando junto do subsistema udev, que atualiza os arquivos de dispositivos em /dev. O hotplug precisa estar liberado no kernel, atravs da opo CONFIG_HOTPLUG. Dessa forma, haver o arquivo /proc/sys/kernel/hotplug contendo o caminho para o programa hotplug (normalmente em /sbin/hotplug). A ao tomada pelo hotplug depender do nome do agente passado pelo kernel (nomes de agentes podem ser usb, pci, net, etc.). Para cada agente existe um script correspondente em /etc/hoplug/, que se encarrega de configurar corretamente o dispositivo no sistema. Mesmo alguns dispositivos coldplug so configurados pelo sistema hotplug. Na hora do boot, o script /etc/init.d/hotplug (ou /etc/rc.d/rc.hotplug no slackware) dispara os agentes em /etc/hotplug/ para configurar aqueles dispositivos presentes antes da mquina ser ligada.

- 13

Fundamentos de Administrao Linux

Configurao de Dispositivos USB


Dispositivos para interface USB (Universal Serial Bus) so divididos em classes: Display Devices Communication Devices Audio Devices Mass Storage Devices Human Interface Devices (HID) porta USB operada por um controlador (Host Controller): OHCI (compaq) UHCI (intel) EHCI (USB v2.0)

- 14

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Uma vez conectados, os dispositivos USB podem ser inspecionados com o comando lsusb.

# lsusb Bus 002 Device 003: ID 05a9:a511 OmniVision Technologies, Inc. OV511+ WebCam Bus 002 Device 002: ID 0f2d:9308 ViPower, Inc. Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000

As informaes detalhadas sobre os dispositivos USB conectadas so armazenadas no arquivo /proc/bus/usb/devices. O controle dos dispositivos USB feito pelo hotplug. Etapas executadas quando uma cmera USB conectada ao computador: Os mdulos USB do kernel identificam o evento USB e a ID vendor:product. Esses dados so passados para /sbin/hotplug /proc/sys/kernel/hotplug no for o padro) (ou outro, se o indicado em

O agente USB respectivo (/etc/hotplug/usb.agent) associa o dispositivo ao produto correspondente. A relao entre dispositivo e mdulo consta no arquivo /etc/hotplug/usb.distmap.

O primeiro estgio envolve procedimentos do kernel, enquanto o segundo e terceiro estgio envolvem o mecanismo do hotplug. O mapa USB correto precisa estar disponvel para iniciar corretamente o dispositivo.

- 15

Fundamentos de Administrao Linux

- 16

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Acesso

- 17

Fundamentos de Administrao Linux

Consideraes Iniciais
Diferenciao entre letras maisculas e minsculas (case sensitive): todos os shells do Linux fazem esta diferenciao, isto significa que os nomes dos arquivos devem ser especificados com exatido, ou seja, o arquivo denominado Manual.txt um arquivo diferente do arquivo denominado manual.txt.. Histrico do shell: o shell padro do Linux, bash, grava os ltimos 1000 comandos em uma lista denominada .bash_history no diretrio home do usurio. Dessa forma as operaes por linha de comando ganham em agilidade. A fim de percorrer o .bash_history, use as teclas do cursor para cima e para baixo. Tecla Tab: outro recurso do bash o autopreenchimento de comandos . Vejamos o exemplo abaixo: 1. Digite as primeiras letras do nome de um comando, neste exemplo ser utilizado o comando date. [root@localhost /root]# da

2. Pressione a tecla Tab e o shell ir completar o nome do comando. [root@localhost /root]# date

Curingas: o Linux permite o uso de curingas tanto para sobreposio de uma sequncia de caracteres (*), quanto para uma nica posio (?). 1. Acessando o diretrio boot da raiz, utilizando o curinga para sobreposio de uma sequncia de caracteres. root@localhost /]#cd bo* 2. Acessando o diretrio boot da raiz, utilizando o curinga de sobreposio nica. [root@localhost /root]#cd boo? Para que o usurio tenha acesso ao sistema necessrio que ele possua uma conta, ou seja, um login e senha. 1. No prompt de logon digite o nome da conta e pressione a tecla enter.

Localhost login: root


- 18 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Password: *******

2.

No prompt da senha digite a sua senha e pressione a tecla enter.

3. Caso o processo de logon tenha sido realizado com xito, surge na tela uma mensagem do sistema conforme o exemplo abaixo:
Last login: Thu Feb 8 14:06:27 on tty1

4.

Logo aps o surgimento desta mensagem o shell do usurio disponibilizado.

[root@localhost /root]#

- 19

Fundamentos de Administrao Linux

Consoles Virtuais
O Linux permite o acesso diversas vezes e de forma independente, com diferentes usurios, atravs do uso de consoles virtuais. Estes consoles oferecem um meio de executar diferentes shells ao mesmo tempo. O Linux suporta pelo menos 6 consoles virtuais. Vejamos como proceder para utilizar consoles virtuais: 1. Depois de obter acesso ao sistema, mantenha pressionada a tecla Alt e pressione as teclas F2, F3, F4, F5 ou F6. 2. Repita o processo de login, para cada console, a fim de iniciar as operaes.

Para alternar entre consoles basta manter pressionada a tecla Alt + a tecla de funo apropriada.

- 20

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O que shell?
Shell, ou interpretador de comandos o programa executado logo aps o login, cuja tarefa interpretar e executar os comandos do usurio. Por exemplo, quando o usurio digita no console " ls" e pressiona a tecla Enter, o shell l essa string e verifica se existe algum comando interno (embutido no prprio shell) com esse nome. Se houver, ele executa esse comando interno. Caso contrrio, ele vai procurar no PATH por algum programa que tenha esse nome. Se encontrar, ele executa esse programa, caso contrrio, ele retorna uma mensagem de erro. Para cada terminal ou console aberto, existe um shell sendo executado. Ao digitar o comando "ps" (process status), podemos verificar que um dos programas rodando o shell do usurio:
PID TTY 13299 pts/1 13300 pts/1 13337 pts/1 TIME CMD 00:00:00 su 00:00:00 bash 00:00:00 ps

Existem diversos tipos de shell: bash, csh, ksh, ash, etc. O mais utilizado atualmente o bash (GNU Bourne-Again SHell).

- 21

Fundamentos de Administrao Linux

gurao do Shell

- 22

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Variveis de Ambiente do Shell O shell carrega vrios arquivos localizados em diferentes diretrios no sistema, denominados: arquivos de recursos, perfil e login. Os arquivos de perfil contm as variveis de ambiente, as quais so definies e valores que o shell ou outros programas reconhecem depois do acesso.

- 23

Fundamentos de Administrao Linux

Exibir variveis de ambiente Para exibir o valor de uma determinada varivel ou uma lista das variveis de ambiente atualmente definidas, podemos utilizar o comando printenv conforme o exemplo abaixo: Exemplos:
[leonardo@localhost root]# printenv PATH

- 24

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Se digitarmos apenas printenv, teremos uma lista com o valor das variveis do ambiente. Outra forma de exibir as variveis de ambiente atravs do comando env, que ao contrrio do comando printenv no exibe o valor de uma s varivel. Variveis de ambiente: EDITOR HISTSIZE HOME Editor padro do sistema O nmero de linhas de comando memorizadas O diretrio home do usurio atual

HOSTTYPE A arquitetura do sistema em uso LOGNAME Nome do usurio atual MAIL OSTYPE PATH PS1 SHELL SHLVL TERM USER O diretrio que contm as mensagens de correio eletrnico recebidas O sistema operacional em uso O caminho (ou caminhos) a procurar os comandos Definio do prompt da linha de comando Nome do shell atualmente em uso O nmero de shell atualmente em execuo O tipo de terminal em uso O nome do usurio atual

- 25

Fundamentos de Administrao Linux

Definir uma varivel de ambiente Para definir uma varivel de ambiente no shell bash necessrio utilizar o comando export, obedecendo a seguinte sintaxe: NOME_VARIAVEL="valor";export NOME_VARIAVEL. Exemplos:
[leonardo@localhost root]# EDITOR ="/bin/vi" ; export EDITOR

Outra forma de definir variveis de ambiente a partir da linha de comando de qualquer shell usar o comando env, conforme a seguinte sintaxe: env NOME_VARIAVEL=valor

- 26

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Excluir uma varivel de ambiente Para excluir uma varivel de ambiente digite: unset NOME_VARIAVEL

- 27

Fundamentos de Administrao Linux

A varivel PATH Essa varivel define o diretrio ou diretrios onde o shell pode encontrar os programas executveis, caso a varivel no tenha sido definida corretamente ser necessrio digitar todo o caminho para o programa. Exemplos:
[leonardo@localhost root]# echo $PATH /sbin:/bin [leonardo@localhost root]# env PATH=$PATH:/home [leonardo@localhost root]# echo $PATH /sbin:/bin:/home

Estas instrues sobre como adicionar caminhos ao PATH so vlidas temporariamente, at sair do terminal. Para adicionar um caminho ao PATH de forma definitiva, para todo o sistema, necessrio editar o arquivo /etc/profile, para isso acesse o sistema como root.

- 28

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Personalizando o prompt da linha de comando A varivel de prompt do shell padro bash, PS1, definida no /etc/profile. A definio de prompt usa caracteres especiais reconhecidos pelo shell bash, conforme este exemplo:
PS1="[\u@\h \W]\\$"

Esta linha deve existir, tambm, no arquivo .bash_profile. A varivel PS1 deve ser acrescentada linha de exportao no .bash_profile, desta forma:

export USERNAME ENV PATH PS1

Caracteres do prompt do shell bash: \! \# \\$ \W \[ \\ \] \d \h \n \s \t \u \w Exibe o nmero de histrico do comando Exibe o nmero desse comando Exibe # para root ou $ para usurio comum. Exibe o nome bsico do diretrio de trabalho atual Indica a sequncia dos caracteres no imprimveis Imprime uma barra invertida Finaliza a sequncia de caracteres no imprimveis Usa a data no prompt Usa o nome de host do computador no prompt Exibe uma nova linha de prompt Exibe o nome do shell Exibe a hora Exibe o nome atual do usurio Exibe o diretrio atual de trabalho

Exemplos:
- 29

Fundamentos de Administrao Linux

[leonardo@localhost root]# PS1='\d \t: ';export PS1 Sun Feb 18 18:45:07:

- 30

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Alias So redefinies de comandos inseridas, pelo root, no arquivo /etc/bashrc que permitem maior agilidade no uso dos comandos. Exemplos: alias cp="cp -i" alias mv="mv -i"

- 31

Fundamentos de Administrao Linux

Criar o arquivo e colocar nele os comandos Use o nano, VI ou outro editor de textos de sua preferncia para colocar todos os comandos dentro do arquivo. A primeira linha do script deve ser:
#!/bin/bash

Para que ao ser executado, o sistema saiba que o shell quem ir interpretar estes comandos. Para tornar o script um arquivo executvel:
chmod +x sistema

- 32

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Problemas na execuo do script "Comando no encontrado" O shell no encontrou o seu script. Verifique se o comando que voc est chamando tem exatamente o mesmo nome do seu script. Lembre-se que no Unix/Linux as letras maisculas e minsculas so diferentes, ento o comando "SISTEMA" diferente do comando "sistema". Caso o nome esteja correto, verifique se ele est no PATH do sistema. O comando "echo $PATH" mostra quais so os diretrios conhecidos, mova seu script para dentro de um deles, ou chame-o passando o caminho completo. Se o script estiver no diretrio corrente, chame-o com um "./" na frente, assim:
prompt$ ./sistema

Caso contrrio, especifique o caminho completo desde o diretrio raiz: prompt$ /tmp/scripts/sistema "Permisso Negada" O shell encontrou seu script, mas ele no executvel. Use o comando chmod +x seu-script para torn-lo um arquivo executvel. "Erro de Sintaxe" O shell encontrou e executou seu script, porm ele tem erros. Um script s executado quando sua sintaxe est 100% correta. Verifique os seus comandos, geralmente o erro algum IF ou aspas que foram abertos e no foram fechados. A prpria mensagem informa o nmero da linha onde o erro foi encontrado.

- 33

Fundamentos de Administrao Linux

O primeiro shell script. Nesse ponto, voc j sabe o bsico necessrio para fazer um script em shell do zero e execut-lo. Mas apenas colocar os comandos em um arquivo no torna este script til. Vamos fazer algumas melhorias nele para que fique mais compreensvel. Executar os trs comandos seguidos resulta em um bolo de texto na tela, misturando as informaes e dificultando o entendimento. preciso trabalhar um pouco a sada do script, tornando-a mais legvel. O comando "echo" serve para mostrar mensagens na tela. Que tal anunciar cada comando antes de execut-lo?
#!/bin/bash echo "Data e Horrio:" date echo echo "Uso do disco:" df echo echo "Usurios conectados:" w

Para usar o echo, basta colocar o texto entre "aspas". Se nenhum texto for colocado, uma linha em branco mostrada. Para o script ficar mais completo, vamos colocar uma interao mnima com o usurio, pedindo uma confirmao antes de executar os comandos.
#!/bin/bash echo "Vou buscar os dados do sistema. Posso continuar? [sn] " read RESPOSTA test "$RESPOSTA" = "n" && exit echo "Data e Horrio:" date echo

- 34

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

echo "Uso do disco:" df echo echo "Usurios conectados:" w

O comando "read" leu o que o usurio digitou e guardou na varivel RESPOSTA. Logo em seguida, o comando "test" verificou se o contedo dessa varivel era "n". Se afirmativo, o comando "exit" foi chamado e o script foi finalizado. Nessa linha h vrios detalhes importantes:
O contedo da varivel acessado colocando-se um cifro "$" na frente O comando test til para fazer vrios tipos de verificaes em textos e arquivos O operador lgico "&&", s executa o segundo comando caso o primeiro tenha sido OK. O operador inverso o "||

- 35

Fundamentos de Administrao Linux

Com o tempo, o script vai crescer, mais comandos vo ser adicionados e quanto maior, mais difcil encontrar o ponto certo onde fazer a alterao ou corrigir algum erro. Para poupar horas de estresse, e facilitar as manutenes futuras, preciso deixar o cdigo visualmente mais agradvel e espaado, e colocar comentrios esclarecedores.
#!/bin/bash # sistema - script que mostra informaes sobre o sistema # Autor: Fulano da Silva # Pede uma confirmao do usurio antes de executar echo "Vou buscar os dados do sistema. Posso continuar? [sn] " read RESPOSTA # Se ele digitou 'n', vamos interromper o script test "$RESPOSTA" = "n" && exit # O date mostra a data e a hora correntes echo "Data e Horrio:" date echo # O df mostra as parties e quanto cada uma ocupa no disco echo "Uso do disco:" df echo # O w mostra os usurios que esto conectados nesta mquina echo "Usurios conectados:" w

Basta iniciar a linha com um "#" e escrever o texto do comentrio em seguida. Estas linhas so ignoradas pelo shell durante a execuo. O cabealho com informaes sobre o script e seu autor tambm importante para ter-se uma viso geral do que o script faz, sem precisar decifrar seu cdigo. Tambm possvel colocar comentrios no meio da linha # como este

- 36

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Variveis As variveis so a base de qualquer script. dentro delas que os dados obtidos durante a execuo do script sero armazenados. Para definir uma varivel, basta usar o sinal de igual "=" e para ver seu valor, usa-se o "echo":
prompt$ VARIAVEL="um dois tres" prompt$ echo $VARIAVEL um dois tres prompt$ echo $VARIAVEL $VARIAVEL um dois tres um dois tres prompt$

- 37

Fundamentos de Administrao Linux

No podem haver espaos ao redor do igual "=" Ainda possvel armazenar a sada de um comando dentro de uma varivel. Ao invs de aspas, o comando deve ser colocado entre "$(...)", veja:
prompt$ HOJE=$(date) prompt$ echo "Hoje : $HOJE" Hoje : Sb Abr 24 18:40:00 BRT 2004 prompt$ unset HOJE prompt$ echo $HOJE prompt$

E finalmente, o comando "unset" apaga uma varivel. Para ver quais as variveis que o shell j define por padro, use o comando "env". Diferente de outras linguagens de programao, o shell no usa os parnteses para separar o comando de seus argumentos, mas sim o espao em branco. O formato de um comando sempre:
COMANDO OPES PARMETROS

O comando "cat" mostra o contedo de um arquivo. O comando "cat -n sistema" mostra o nosso script, com as linhas numeradas. O "-n" a opo para o comando, que o instrui a numerar linhas, e "sistema" o ltimo argumento, o nome do arquivo. O "read" um comando do prprio shell, j o "date"" um executvel do sistema. Dentro de um script, no faz diferena usar um ou outro, pois o shell sabe como executar ambos. Assim, toda a gama de comandos disponveis no Unix/Linux pode ser usada em scripts! H vrios comandos que foram feitos para serem usados com o shell, so como ferramentas. Alguns deles:

Coman do cat cut


- 38

Funo

Opes

Mostra arquivo Extrai campo

-n, -s -d, -f, -c


2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

date find grep head printf rev sed seq sort tail tr uniq wc

Mostra data Encontra arquivos Encontra texto Mostra Incio Mostra texto Inverte texto Edita texto Conta Nmeros Ordena texto Mostra Final Transforma texto Remove duplicatas Conta Letras

-d, +'...' -name, -iname,-type,f, -exec -i, -v, -r, -qs, -w,-x -n, -c nenhuma nenhuma -n,s/isso/aquilo/, d -s, -f -n, -f, -r, -k -t, -o -n, -c, -f -d, -s, A-Z a-z -i, -d, -u -c, -w, -l, -L

- 39

Fundamentos de Administrao Linux

Use "man comando" ou "comando --help" para obter mais informaes sobre cada um deles. E o melhor, em shell possvel combinar comandos, aplicando-os em sequncia, para formar um comando completo. Usando o pipe "|" possvel canalizar a sada de um comando diretamente para a entrada de outro, fazendo uma cadeia de comandos. Exemplo:
prompt$ cat /etc/passwd | grep root | cut -c1-10 root:x:0:0 operator:x prompt$

- 40

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando test O canivete suo dos comandos do shell o "test", que consegue fazer vrios tipos de testes em nmeros, textos e arquivos. Ele possui vrias opes para indicar que tipo de teste ser feito, algumas delas:

Testes em variveis

T e st e s e m a r q u i v o s -d -f -r -s -w -nt -ot -ef -a -o

lt -gt -le -ge -eq -ne = != -n -z

Nm. menor que (LessThan) Nm. maior que (GreaterThan) Nm. menor igual (LessEqual) Nm. maior igual (GreaterEqual) Nm. igual (EQual) Nm. diferente (NotEqual) String igual String diferente String no nula String nula

- 41

Fundamentos de Administrao Linux

Exerccio: script que testa arquivos Tente fazer o script "testa-arquivos", que pede ao usurio para digitar um arquivo e testa se este arquivo existe. Se sim, diz se um arquivo ou um diretrio. Exemplo de uso:

prompt$ testa-arquivos Digite o arquivo: /naoexiste O arquivo '/naoexiste' no foi encontrado prompt$ testa-arquivos Digite o arquivo: /tmp /tmp um diretrio prompt$ testa-arquivos Digite o arquivo: /etc/passwd /etc/passwd um arquivo prompt$

- 42

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Conceitos avanados At agora vimos o bsico, o necessrio para se fazer um script de funcionalidade mnima. A seguir, conceitos novos que ampliaro as fronteiras de seus scripts!

- 43

Fundamentos de Administrao Linux

Recebimento de opes e parmetros Assim como os comandos do sistema que possuem opes e parmetros, os scripts tambm podem ser preparados para receber dados via linha de comando. Dentro do script, algumas variveis especiais so definidas automaticamente, em especial, "$1" contm o primeiro argumento recebido na linha de comando, "$2" o segundo, e assim por diante. Veja o script "argumentos":
#!/bin/sh # argumentos - mostra o valor das variveis especiais echo "O nome deste script : $0" echo "Recebidos $# argumentos: $*" echo "O primeiro argumento recebido foi: $1" echo "O segundo argumento recebido foi: $2"

Ele serve para demonstrar o contedo de algumas variveis especiais, acompanhe:


prompt$ ./argumentos um dois trs O nome deste script : ./argumentos Recebidos 3 argumentos: um dois trs O primeiro argumento recebido foi: um O segundo argumento recebido foi: dois

O acesso direto, basta referenciar a varivel que o valor j estar definido. Assim possvel criar scripts que tenham opes como --help, --version e outras.

- 44

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Expresses aritmticas O shell tambm sabe fazer contas. A construo usada para indicar uma expresso aritmtica "$ ((...))", com dois parnteses.

prompt$ echo $((2*3)) 6 prompt$ echo $((2*3-2/2+3)) 8 prompt$ NUM=44 prompt$ echo $((NUM*2)) 88 prompt$ NUM=$((NUM+1)) prompt$ echo $NUM 45

- 45

Fundamentos de Administrao Linux

If, for e while Assim como qualquer outra linguagem de programao, o shell tambm tem estruturas para se fazer condicionais e loop. As mais usadas so if, for e while.

if COMANDO for VAR in LISTA while COMANDO then do do comandos comandos comandos else done done comandos fi

Diferente de outras linguagens, o if testa um comando e no uma condio. Porm como j conhecemos qual o comando do shell que testa condies, s us-lo em conjunto com o if. Por exemplo, para saber se uma varivel maior ou menor do que 10 e mostrar uma mensagem na tela informando:
if test "$VARIAVEL" -gt 10 then echo " maior que 10" else echo " menor que 10" fi

H um atalho para o test , que o comando [. Ambos so exatamente o mesmo comando, porm usar o [ deixa o if mais parecido com o formato tradicional de outras linguagens:
if [ "$VARIAVEL" -gt 10 ] then echo " maior que 10" else echo " menor que 10" fi
- 46 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Se usar o [, tambm preciso fech-lo com o ], e sempre devem ter espaos ao redor. recomendado evitar esta sintaxe para diminuir suas chances de erro. J o while um lao que executado enquanto um comando retorna OK. Novamente o test bom de ser usado. Por exemplo, para segurar o processamento do script enquanto um arquivo de lock no removido:
while test -f /tmp/lock do echo "Script travado..." sleep 1 done

- 47

Fundamentos de Administrao Linux

E por fim, o for percorre uma lista de palavras, pegando uma por vez:
for numero in um dois trs quatro cinco do echo "Contando: $numero" done

Uma ferramenta muito til para usar com o for o seq, que gera uma sequncia numrica. Para fazer o loop andar 10 passos, pode-se fazer:
for passo in $(seq 10)

O mesmo pode ser feito com o while, usando um contador:


i=0 while test $i -le 10 do i=$((i+1)) echo "Contando: $i" done

E temos ainda o loop infinito, com condicional de sada usando o "break:


while : do if test -f /tmp/lock then echo "Aguardando liberao do lock..." sleep 1 else

- 48

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

break fi done

- 49

Fundamentos de Administrao Linux

Exerccios A melhor parte finalmente chegou, agora a sua vez de se divertir. Seguem alguns exerccios que podem ser resolvidos usando o que foi aprendido at aqui. Alguns exigiro pesquisa e necessitaro de algumas ferramentas que foram apenas citadas, mas no aprendidas. O shelleiro tambm tem que aprender a se virar sozinho!

- 50

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

relacao.sh Recebe dois nmeros como parmetro e mostra a relao entre eles. Exemplo:
prompt$ ./relacao.sh 3 5 3 menor que 5 prompt$ ./relacao.sh 5 3 5 maior que 3 prompt$ ./relacao.sh 5 5 5 igual a 5 prompt$

zerador.sh Recebe um nmero como parmetro e o diminui at chegar a zero, mostrando na tela cada passo, em uma mesma linha. Exemplo:
prompt$ ./zerador.sh 5 543210 prompt$ ./zerador.sh 10 10 9 8 7 6 5 4 3 2 1 0 prompt$

substring.sh Recebe duas palavras como parmetro e verifica se a primeira palavra est contida dentro da segunda. S mostra mensagem informativa em caso de sucesso, do contrrio no mostra nada. Exemplo:
prompt$ ./substring.sh ana banana ana est contida em banana prompt$ ./substring.sh banana maria prompt$ ./substring.sh banana prompt$ ./substring.sh prompt$

Pesquise sobre o comando grep


- 51

Fundamentos de Administrao Linux

juntatudo.sh Mostra na tela "grudados" todos os parmetros recebidos na linha de comando, como uma nica palavra. Exemplo:
prompt$ ./juntatudo.sh a b c d e f verde azul abcdefverdeazul prompt$

Pesquise sobre o comando tr

- 52

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

users.sh Do arquivo /etc/passwd, mostra o usurio e o nome completo de cada usurio do sistema (campos 1 e 5) separados por um TAB. Exemplo:
prompt$ ./users.sh ftp FTP User nobody Nobody named Domain name server xfs X Font Server mysql MySQL server aurelio Aurelio Marinho Jargas prompt$

Pesquise sobre o comando cut shells.sh Do arquivo /etc/passwd, mostra todos os shells (ltimo campo) que os usurios usam. No mostrar linhas repetidas. Exemplo:
prompt$ ./shells.sh /bin/bash /bin/false /bin/sync /sbin/halt /sbin/shutdown prompt$

Pesquise sobre o comando uniq parametros.sh Mostra na tela todos os parmetros recebidos na linha de comando, contando-os. Exemplo:
- 53

Fundamentos de Administrao Linux

prompt$ ./parametros.sh a b c d e f Parmetro 1: a Parmetro 2: b Parmetro 3: c Parmetro 4: d Parmetro 5: e Parmetro 6: f prompt$

Pesquise sobre o comando shift

- 54

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Respostas dos exerccios Resista tentao de olhar as respostas antes de tentar fazer os exerccios! na prtica que se consolida os conhecimentos aprendidos, no pule este passo. Seja forte, insista, no desista!

- 55

Fundamentos de Administrao Linux

testa-arquivos
#!/bin/bash echo -n "Digite o arquivo: " read ARQUIVO test -d "$ARQUIVO" && echo "$ARQUIVO um diretrio" test -f "$ARQUIVO" && echo "$ARQUIVO um arquivo" test -f "$ARQUIVO" -o -d "$ARQUIVO" || echo "O arquivo '$ARQUIVO' no foi encontrado" echo

- 56

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

relacao.sh
#!/bin/bash if test $1 -eq $2 then echo "$1 igual a $2" elif test $1 -lt $2 then echo "$1 menor que $2" else echo "$1 maior que $2" fi

- 57

Fundamentos de Administrao Linux

zerador.sh
#!/bin/bash i=$1 while test $i -ge 0 do echo -n "$i " i=$((i-1)) done echo

- 58

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

substring.sh
#!/bin/bash test $# -ne 2 && exit echo $2 | grep -qs $1 && echo "$1 est contida em $2"

- 59

Fundamentos de Administrao Linux

juntatudo.sh
#!/bin/bash echo $* | tr -d ' '

- 60

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

users.sh
#!/bin/bash cat /etc/passwd | cut -d : -f 1,5 | tr : '\t'

- 61

Fundamentos de Administrao Linux

shells.sh
#!/bin/bash cat /etc/passwd | cut -d : -f 7 | sort | uniq

- 62

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

parametros.sh
#!/bin/bash i=0 while test "$1" do i=$((i+1)) echo "Parmetro $i: $1" shift done

- 63

Fundamentos de Administrao Linux

o Shell
Para finalizar o shell, basta utilizar os comandos exit, logout ou Ctrl + D.

- 64

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

rando o Sistema
Quando o encerramento do sistema tem inicio, todos os sistemas de arquivos (exceto o raiz) so desmontados, os processos de usurio so finalizados, servidores so encerrados e finalmente o sistema de arquivo raiz desmontado. Proceda da forma adequada caso contrrio pode-se corromper o sistema de arquivos.

- 65

Fundamentos de Administrao Linux

ializando o Linux
Para reinicializar o sistema use o comando reboot ou shutdown com as opes r now, conforme o exemplo abaixo:
[root@localhost /root]# reboot

ou
[root@localhost /root]# shutdown r now

- 66

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Desligando o Linux
Para desligar o sistema use comando poweroff ou shutdown com as opes h now, conforme o exemplo abaixo:
[root@localhost /root]# poweroff

Ou
[root@localhost /root]# halt

Ou [root@localhost /root]# shutdown h now

- 67

Fundamentos de Administrao Linux

Dispositivos, Sistemas de Arquivos GNU/Linux

- 68

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Criao de Parties e Sistemas de Arquivos


Discos IDE podem conter at 4 parties fsicas, das quais uma pode ser estendida. A partio estendida pode ser dividida em parties lgicas. Pode haver um mximo de 46 parties num disco IDE e 16 num disco SCSI.

- 69

Fundamentos de Administrao Linux

Fdisk
O fdisk o programa padro para manipular parties no GNU/Linux. Com a opo -l lista os dispositivos e as parties existentes:

# fdisk -l Disk /dev/hda: 10.0 GB, 10005037568 bytes 255 heads, 63 sectors/track, 1216 cylinders Units = cilindros of 16065 * 512 = 8225280 bytes

Dispositivo /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4

Boot *

Start 1 154 174 783

End 153 173 782 1216

Blocks 1228941 160650 4891792+ 3486105

Id b 82 83 83

System W95 FAT32 Linux swap Linux Linux

Disk /dev/hdb: 2111 MB, 2111864832 bytes 64 heads, 63 sectors/track, 1023 cylinders Units = cilindros of 4032 * 512 = 2064384 bytes

Dispositivo /dev/hdb1

Boot

Start 1

End 1023

Blocks 2062336+

Id c

System W95 FAT32 (LBA)

Para manipular parties, o fdisk deve ser iniciado tendo como argumento o dispositivo em questo:
# fdisk /dev/hda

Uma vez dentro do fdisk, certas letras correspondero a comandos. Alguns comandos bastante utilizados:

- 70

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

p Lista as parties n Cria uma nova partio interativamente t Muda a identificao da partio d Apaga uma partio q Sai do fdisk sem gravar as alteraes w Sai do fdisk e grava as alteraes m Mostra a ajuda de comandos Por padro, o fdisk cria novas parties identificadas como parties nativas de GNU/Linux, cujo cdigo hexadecimal 83 (0x83). O cdigo de identificao de parties do tipo swap 82 (0x82).

- 71

Fundamentos de Administrao Linux

Criao de Sistemas de Arquivos


Durante muito tempo o sistema de arquivos mais utilizado no GNU/Linux foi o ext2 (second extended). No entanto, hoje muito se usa sistemas de arquivos journalling, como o ext3 e o ReiserFS. Por padro, o ext2 consiste em blocos de 1024 bytes. H trs tipos de blocos.

- 72

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Superblocks
Repetem-se a cada 8193 blocos. Contm informaes sobre o tamanho dos blocos, inodes livres, data da ltima montagem, etc.

- 73

Fundamentos de Administrao Linux

inodes
Indicadores para os blocos de dados. Os 12 primeiros blocos de dados aps o inode so acessados sequencialmente. Se os dados excederem 12 blocos, blocos inode indiretos agem como espelho. Cada inode tem 256 bytes e contm a informao de usurio, grupo, permisses e data referente aos dados associados.

- 74

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Blocos de dados
Os blocos que contm os arquivos e diretrios propriamente ditos. A diferena para um sistema de arquivos journalling que um sistema com essa capacidade registra de antemo todas as alteraes que ir realizar no disco. Dessa forma, erros de gravao (normalmente ocasionados por queda de energia ou desligamento incorreto) podem ser mais facilmente diagnosticados e sanados. possvel fazer a converso de ext2 para ext3 sem perda de dados. O comando mkfs cria sistemas de arquivos em parties. A opo -t indica o tipo do sistema de arquivos: Criar uma partio ext2 na partio /dev/hda3:
# mkfs -t ext2 /dev/hda3

H tambm comandos especficos para cada sistema de arquivos: mkfs.ext2, mkfs.vfat. mke2fs, mkfs.ext3, mkfs.xfs, mkreiserfs, mkdosfs e

- 75

Fundamentos de Administrao Linux

Partio Swap
Aps a partio swap ser criada pelo fdisk, ela precisa ser formatada com o comando mkswap: Formata como swap a partio /dev/hda2:
# mkswap /dev/hda2

Aps criada e formatada, uma partio swap precisa ser ativada para ser usada como memria swap. O comando swapon -a ativa todas parties swap que constarem em /etc/fstab. As entradas referentes a parties swap em /etc/fstab no tem ponto de montagem. Exemplo de entrada de partio swap em /etc/fstab:
/dev/hda2 swap swap defaults 0 0

Normalmente, todas as parties swap contidas em /ect/fstab so ativadas pelos scripts de inicializao do sistema. Para ativar ou desativar essa partio manual manualmente, usa-se swapon /dev/hda2 ou swapoff /dev/hda2, respectivamente. Informaes sobre parties swap ativas so armazenadas em /proc/swaps.

- 76

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Exemplo de /proc/swaps:

Filename /dev/hda2

Type partition

Size

Used

Priority 32632 -1

160640

- 77

Fundamentos de Administrao Linux

Manuteno da Integridade de Sistemas de Arquivos

- 78

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Checando o Sistema de Arquivos


O comando fsck deve ser executado em parties que apresentarem erros ou em dispositivos que foram desligados incorretamente. A partio dever estar desmontada ou montada como somente leitura (ro) para a verificao. Como o comando mkfs, o fsck possui a opo -t para especificar o tipo do sistema de arquivos e um comando especfico para cada partio: fsck.ext2 ou e2fsck, fsck.ext3, fsck.xfs, reiserfsck e dosfsck.

- 79

Fundamentos de Administrao Linux

Examinando e corrigindo o Sistema de Arquivos

- 80

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

debugfs Depurador interativo de sistemas de arquivos. Examina sistemas ext2 e ext3. Muda diretrios, examina dados de inodes, apaga arquivos, cria links, mostra o log de journalling ext3, etc. usado em casos extremos, geralmente aps o fsck ter falhado.

- 81

Fundamentos de Administrao Linux

dumpe2fs Mostra informaes de grupo de blocos e de superblocks.

- 82

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

tune2fs Configura parmetros ajustveis em sistemas de arquivos ext2, como rtulo e limites de montagem antes de checar automaticamente.

- 83

Fundamentos de Administrao Linux

df Mostra o espao disponvel em cada dispositivo. A anlise feita diretamente no dispositivo. Por padro, mostra o espao em unidades de 1kb. A opo -h usa medidas apropriadas para tornar a sada mais inteligvel.

- 84

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

du Mostra o espao ocupado. Sem argumentos, mostra o uso de cada diretrio no sistema. Um diretrio especfico pode ser indicado atravs da opo -s. A opaco -h usa medidas apropriadas para tornar a sada mais inteligvel.

- 85

Fundamentos de Administrao Linux

Montagem e Desmontagem dos Sistemas de Arquivos

- 86

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/etc/fstab Durante os procedimentos de carregamento do sistema, o arquivo /etc/fstab que determina os pontos de montagem dos dispositivos. Cada linha corresponde a um dispositivo, contendo os seguintes termos separados por tabulaes ou espaos: 1. Dispositivo 2. Ponto de montagem ( swap se for uma partio de swap) 3. Tipo de sistema de arquivos 4. Opes 5. Dump (0 ou 1). Determina se dispositivo dever ser considerado pelo comando dump. Se ausente, 0 considerado. 6. fsck (1 ou 2). Determina a ordem da checagem feita pelo fsck durante o boot. Para a partio raiz (/), deve ser 1. Se ausente, 0 presumido e a checagem no ser feita no boot. Para permitir que usurios comuns montem e desmontem dispositivos geralmente, o caso de dispositivos removveis deve-se incluir a opaco users para o respectivo dispositivo. Exemplo: /dev/cdrom /mnt/cdrom auto noauto,users,ro 0 0 A palavra auto na posio referente ao sistema de arquivos indica que o sistema de arquivos deve ser identificado automaticamente.

- 87

Fundamentos de Administrao Linux

mount O comando mount usado sem argumentos mostra os dispositivos montados e outros detalhes, como ponto de montagem e tipo do sistema de arquivos. Tambm usado para montar dispositivos manualmente: O comando do exemplo acima monta o dispositivo /dev/cdrom contendo mdia com sistema de arquivos iso9660 no diretrio /mnt/cdrom, com permisso somente-leitura (ro). Para montar manualmente um dispositivo que conste em /etc/fstab, basta fornecer para o comando mount a localizao do dispositivo ou do diretrio alvo. Para desmontar um dispositivo, o comando umount utilizado tendo como argumento o dispositivo ou o diretrio alvo a ser desmontado. Usado com a opcao -a, o comando mount montar todos os dispositivos em /etc/fstab (exceto os marcados com a opo noauto).

- 88

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Opes de montagem As opes de montagem so as mesmas para /etc/fstab e para mount diretamente. Se mais de uma opo for fornecida, devero ser separadas por vrgula. rw ou ro Gravvel ou somente leitura noauto No e montado automaticamente users O dispositivo poder ser montado e desmontado por usurios comuns user Apenas quem montou ter permisso de desmontar owner As permisses do dispositivo montado se adequaro ao usurio que o montou usrquota Habilita o uso de quotas de disco para usurio grpquota Habilita o uso de quotas de disco para grupo remount Remonta um dispositivo montado com outras opes. til para remontar um dispositivo como somente leitura, por exemplo.

- 89

Fundamentos de Administrao Linux

Administrao de Cotas de Disco

- 90

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Introduo
No Linux podemos definir quotas de espao em disco por usurio ou grupos de usurios. Estas quotas garantem um limite de espao em disco, se este limite for ultrapassado, o usurio ou grupo de usurios no ser capaz de criar novos arquivos at que os mesmos sejam apagados ou a quota seja redimensionada. Desta maneira, esse recurso se torna indispensvel para aplicaes que envolvem ambientes multiusurios, servidores etc. Antes de partimos para a prtica, necessrio saber se o suporte a quotas foi compilado no Kernel do sistema.

- 91

Fundamentos de Administrao Linux

Limites de Quotas
Cada sistema de arquivos pode ter cinco tipos de limites de quotas, que so especificados em blocos (blocks) de 1024 bytes cada:

- 92

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Hard Limit (Limite Fsico) por usurio:

o mximo de espao em disco que um usurio pode ter na partio configurada com quotas de disco. Uma vez que este limite de quota ultrapassado, o usurio no poder gravar arquivos na partio.

- 93

Fundamentos de Administrao Linux

Soft Limit (Limite Temporrio) por usurio:

Indica a quantidade mxima de espao temporria em disco numa partio. Quando este limite ultrapassado, o usurio informado que seu espao em disco est terminando e o Grace Period acionado. O usurio ainda poder gravar arquivos at o Grace Period terminar ou at que o Hard Limit seja alcanado.

- 94

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Hard Limit para grupo de usurios:

o mximo de espao em disco que um grupo de usurios pode ter. Quando esse limite ultrapassado, nenhum usurio poder gravar arquivos em disco mesmo que tenham espao disponvel.

- 95

Fundamentos de Administrao Linux

Soft Limit para grupo de usurios:

Indica a quantidade mxima de espao temporria em disco numa partio. Quando este limite ultrapassado, o grupo de usurios informado que seu espao em disco est terminando e o Grace Period acionado. Os usurios ainda podero gravar arquivos at o Grace Period terminar ou at que o Hard Limit por grupo seja alcanado.

- 96

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Comandos para gerncia de quotas

- 97

Fundamentos de Administrao Linux

quota O comando quota usado para visualizar informaes sobre as quotas de espao em disco configuradas para um determinado usurio ou grupo de usurios.

Opes: -u - Mostra a quota definida para um determinado usurio; -g - Mostra a quota definida para um determinado grupo de usurios; -v - Mostra as quotas mesmo que nenhuma esteja definida; -q - Mostra somente quando a rota for excedida; -i - Ignora pontos de montagem montados pelo automounter; -l - Mostra apenas quotas de sistemas de arquivos locais; Somente o superusurio pode visualizar as informaes de quotas de outros usurios, sendo que um usurio comum s pode ver a sua quota e a quota do grupo que ele pertence.

$ quota -u mark Disk quotas for user mark (uid 1000): Filesystem blocks quota limit grace files quota limit grace /dev/sdb2 2740* 1000 2000 60 0 0

- 98

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

quotaon

O comando quotaon habilita o gerenciamento prvio de todas as quotas de disco configuradas em um ou mais sistemas de arquivos. Opes: -a -- Habilita o gerenciamento de todas as quotas de disco para todos os sistemas de arquivos configurados para controle de quotas no arquivo /etc/fstab; -v - Mostra uma mensagem para cada sistema de arquivos com quotas habilitadas; -u - Habilita o gerenciamento de quotas de usurios em um determinado dispositivo; -g - Habilita o gerenciamento de quotas de grupos em um determinado dispositivo;

# quotaon -aguv /dev/sdb2 [/mnt/particao1]: group quotas turned on /dev/sdb2 [/mnt/particao1]: user quotas turned on

Vamos supor que eu necessite habilitar as quotas de grupo somente do sistema de arquivos localizado no diretrio /home:

# quotaon -gv /home

- 99

Fundamentos de Administrao Linux

quotaoff

O comando quotaoff desabilita o gerenciamento de quotas de usurios ou grupos em um ou mais sistemas de arquivos. Opes: -a - Desabilita o gerenciamento de todas as quotas de disco para todos os sistemas de arquivos configurados para controle de quotas no arquivo /etc/fstab; -v - Mostra uma mensagem para cada sistema de arquivos com quotas desabilitadas; -u - Desabilita o gerenciamento de quotas de usurios em um determinado dispositivo; -g - Desabilita o gerenciamento de quotas de grupos em um determinado dispositivo;

# quotaoff -aguv /dev/sdb2 [/mnt/particao1]: group quotas turned off /dev/sdb2 [/mnt/particao1]: user quotas turned off

- 100

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

quotacheck

Faz uma checagem nos sistemas de arquivos configurados com gerenciamento de quotas, compila e atualiza os bancos de dados de quotas (usrquota e grpquota). recomendado que o quotacheck seja executado toda vez que o sistema inicializado ou periodicamente (dia, semana, ms), via cron. Desta maneira, ele garante que o banco de dados esteja no seu mais recente estado. importante saber que as quotas para um determinado dispositivo devem ser desabilitadas antes do uso do comando quotacheck, seno as informaes coletadas da base de dados ficaro em memria e os arquivos com a base de dados no sero atualizados. Opes: -a - Checa todas as quotas configuradas para os sistemas de arquivos mencionados no arquivo /etc/fstab; -g grupo - Cria a base de dados para um determinado grupo; -u user - Cria a base de dados para um determinado usurio; -v - Mostra todas as informaes executadas pelo quotacheck;

# quotaoff -a # quotacheck -avug # quotaon -a

- 101

Fundamentos de Administrao Linux

edquota

O comando edquota um utilitrio usado somente pelo superusurio para edio de quotas de usurios e grupos. O editor vi o editor padro usado com o edquota para editar os arquivos quota.user e quota.group. Opes: -r - Edita quotas em dispositivos remotos, um bom exemplo so os dispositivos que usam NFS; -u - Edita as quotas de usurios; -g - Edita as quotas de grupos de usurios; -p user - Copia as configuraes de uma quota de usurio padro para criar outra; -F format-name - Edita as quotas para um formato especfico (vfsold, vfsv0, rpc e xfs);

-f filesystem - Realiza operaes especificas para um nico sistema de arquivos; -T - Edita o tempo limite de uso de quotas de usurios/grupos quando o softlimit excedido; -t - Edita o perodo de graa para os Soft Limits para cada sistema de arquivos; Observe a edio da quota do usurio mark:
# edquota -u mark Disk quotas for user mark (uid 1000): Filesystem blocks soft hard inodes /dev/sdb2 2740 3000 5000 60 soft 0 hard 0

- 102

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Agora, vamos mudar o perodo de soft limit de todos os usurios:


# edquota -tu Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem /dev/sdb2 Block grace period 5days Inode grace period

3days

Podemos usar dias, horas, minutos ou segundos para configurar o Soft Limit, no exemplo acima, o perodo de graa para espao em disco est configurado para 5 dias e 3 dias para armazenamento de arquivos.

- 103

Fundamentos de Administrao Linux

repquota

O comando repquota gera um relatrio do uso das quotas de discos de usurios e grupos de um determinado dispositivo. Opes: -a - Exibe um relatrio de todas as quotas dos sistemas de arquivos que esto contidos no arquivo /etc/mtab; -v - Cria um cabealho descritivo para o relatrio de quotas; -u - Cria um relatrio de utilizao por usurio; -g - Cria um relatrio de utilizao por grupo; -c - Faz cache das entradas para relatrio e traduz os UIDs/GIDs para nomes em uma grande amostra de usurios. um bom procedimento quando usado com o arquivo /etc/passwd; -C - Faz cach das entradas para relatrio individualmente. um bom procedimento quando os usurios esto armazenados em um banco de dados; -t - Trunca o nome de usurios ou grupos com mais de 9 caracteres; -n - No traduz UIDs/GIDs para nomes; -i - Ignora os pontos de montagem montados pelo automounter; -s - Testa para relatar o espao e o nmero de inodes usados; -F - Exibe um relatrio de quotas para um determinado formato. Esses formatos podem ser: vfsold, vfsv0 e xfs;
- 104 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

- 105

Fundamentos de Administrao Linux

Criando e gerenciando quotas


Nesse tpico, abordaremos todos os procedimentos para a criao e gerenciamento de quotas. Edite e insira no arquivo /etc/fstab a linha abaixo:

/dev/sda8

/home ext3

defaults,usrquota,grpquota

Crie os arquivos quota.user e quota.group e d permisso de acesso somente para o root no diretrio /home:

# touch /home/quota.user /home/quota.group # chmod 600 /home/quota.user /home/quota.group

Estes dois arquivos so os bancos de dados de quotas de usurios e grupos. Nesse exemplo, estamos utilizando quota verso-1, caso algum esteja usando a verso-2, os nomes dos arquivos devem ser aquota.user e aquota.group. Agora devemos reiniciar o sistema para que as configuraes de quota entrem em vigor. # shutdown -r now Aps a reinicializao do sistema, use o comando quotacheck para inicializar os bancos de dados: # quotacheck -avug Adicione as quotas de usurios:

# edquota -u mark Disk quotas for user mark (uid 1000): Filesystem blocks soft /dev/sda8 /dev/sdb2
- 106

hard 10000 5000

inodes soft 7 60 4000 0

hard 5000 0

28 2740

9000 3000

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Adicione as quotas de grupo:

# edquota -g santos Disk quotas for group santos (gid 1001): Filesystem blocks soft /dev/sda8 /dev/sdb2 0 16 hard inodes soft 0 4 hard 0 0

100000 120000 0 300000 350000 0

Adicione o tempo limite que os usurios e grupos podero ter as suas quotas excedidas:

# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem /dev/sda8 /dev/sdb2 Block grace period 7days 7days Inode grace period

7days 7days

- 107

Fundamentos de Administrao Linux

Crie um script para iniciar e verificar o sistema de quotas toda vez que ele inicializado. Este script deve ser criado no diretrio que o sistema utiliza para inicializar os servios automaticamente, normalmente o diretrio /etc/init.d:

# vi quotas.sh

#!/bin/bash # Checa e ativa o sistema de quotas if [ -x /usr/sbin/quotacheck ] then echo "Checando sistema de quotas. " /usr/sbin/quotacheck -avug echo " Sistema de Quotas OK." fi

if [ -x /usr/sbin/quotaon ] then echo "Ativando sistema de quotas." /usr/sbin/quotaon -avug fi

Adicione o comando quotacheck no cron para que seja executado semanalmente:

# crontab -e

0 3 * * 0 /usr/sbin/quotacheck -avug

Ou se preferir, adicione um script no diretrio /etc/cron.weekly:

# vi checaquotas.sh

#!/bin/bash
- 108 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/usr/sbin/quotacheck -avug

No esquea de dar permisso de execuo ao arquivo: # chmod 760 checaquotas.sh Execute o comando "repquota -v /home" para visualizar o relatrio de quotas:

# repquota -v /home

- 109

Fundamentos de Administrao Linux

Explorando o sistema de arquivos

Um sistema de arquivos a coleo de arquivos e a hierarquia de diretrios em um sistema. Primeiro, mude para o diretrio root digitando o comando cd /
[root@bwpx01 ~]# cd /

Para mostrar uma lista do seu contedo digite o comando ls l.


[root@bwpx01 /]# ls -l total 195 drwxr-xr-x 2 root root drwxr-xr-x 4 root root 4096 Jul 29 17:52 bin 1024 Jul 29 12:08 boot

drwxr-xr-x 8 cduser cduser 4096 Sep 2 17:07 cdunix drwxr-xr-x 16 root root 7760 Aug 10 17:54 dev

drwxr-xr-x 105 root root 12288 Sep 14 11:40 etc drwxr-xr-x 133 root root drwxr-xr-x 11 root root 4096 Aug 27 19:02 home 4096 Jul 29 17:50 lib

drwxr-xr-x 7 root root 12288 Jul 30 11:35 lib64 drwx------ 2 root root 16384 Jul 29 11:15 lost+found drwxr-xr-x 2 root root drwxr-xr-x 2 root root drwxr-xr-x 3 root root drwxr-xr-x 2 root root drwxr-xr-x 8 root root dr-xr-xr-x 357 root root drwxr-x--- 9 root root 4096 Oct 1 2009 media 0 Aug 10 17:50 misc 4096 Jul 30 14:34 mnt 0 Aug 10 17:50 net 4096 Jul 30 11:51 opt 0 Aug 10 17:49 proc 4096 Aug 24 11:36 root

drwxr-xr-x 2 root root 12288 Jul 29 17:52 sbin drwxr-xr-x 2 root root drwxr-xr-x 2 root root 4096 Jul 29 11:19 selinux 4096 Oct 1 2009 srv

- 110

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

drwxr-xr-x 11 root root drwxr-xr-x 3 root root drwxrwxrwt 9 root root drwxr-xr-x 18 root root drwxr-xr-x 23 root root

0 Aug 10 17:49 sys 4096 Jul 29 11:50 tftpboot 4096 Sep 15 09:03 tmp 4096 Apr 26 09:06 usr 4096 Jul 29 16:01 var

- 111

Fundamentos de Administrao Linux

/bin /bin uma abreviatura para "binrios", ou executveis. nesse diretrio onde residem a maioria dos programas essencias do sistema. Use o comando "ls -l /bin" para listar os arquivos.
[root@bwpx01 /]# ls /bin alsacard alsaunmute arch awk basename bash cat chgrp chmod chown cp cpio csh cut date df dmesg dbus-uuidgen gunzip dd gzip hostname igawk mknod mktemp more mount rvi rview sed mountpoint mv netstat nice rpm traceroute traceroute6 tracert true setfont uname unicode_start unicode_stop sort usleep vi sync tar taskset view ypdomainname zcat unlink umount

dnsdomainname ipcalc doexec domainname dumpkeys echo ed egrep env ex false fgrep kbd_mode kill ksh ksh93 link ln loadkeys

setserial sh sleep

nisdomainname pgawk ping ping6 su stty

loadkeys.static ps logger login ls mail mailx mkdir pwd raw red

tcptraceroute zsh tcsh

dbus-cleanup-sockets gawk dbus-daemon dbus-monitor dbus-send gettext grep gtar

redhat_lsb_init touch rm rmdir tracepath tracepath6

Esses so os arquivos que contm programas. programa /bin/cp.

Quando voc executa cp, est executando o

- 112

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/dev Os arquivos em /dev so conhecidos como controladores de dispositivo (device drivers) e so usados para acessar os dispositivos ou recursos do sistema, como discos rgidos, modems, memria, etc. Por exemplo, da mesma forma que voc pode lear dados de um arquivo, pode tambm ler da entrada do mouse, lendo /dev/mouse. Os arquivos que comeam com fd so os controladores de disquete. fd0 o primeiro drive, e fd1 o segundo. Note que h mais controladores de dispositivo para drivers do que mencionamos. Eles representam tipos especficos de discos. Por exemplo, fd1H1440 acessa discos de 3.5'' de alta densidade no drive 1.

- 113

Fundamentos de Administrao Linux

Aqui temos uma lista de alguns dos controladores de dispositivos mais usados. Note que mesmo que voc no tenha algum dos dispositivos listados, ter entradas em dev de qualquer forma. /dev/console faz referncia ao console do sistema, quer dizer, ao monitor conectado em seu sistema. Os dispositivos /dev/ttyS e /dev/cua so usados para acessar as portas seriais. Por exemplo, /dev/ttyS0 faz referncia a "COM1", sob o MS-DOS. Os dispositivos /dev/cua so "callout" e so usados em conjunto com um modem. Os nomes dos dispositivos que comeam por hd acessam a discos rgidos. /dev/hda se refere a todo o primeiro disco, enquanto que /dev/hda1 se refere a primeira partio em /dev/hda. Os nomes de dispositivo que comenam com sd so dispositivos SCSI. Se voc tem um disco rgido SCSI, no lugar de acess-lo com /dev/hda, vai acess-lo com /dev/sda. As fitas SCSI so acessadas via dispositivos st e os CD-ROM SCSI via sr. Os nomes que comenam por lp acessam as portas paralelas. /dev/lp0 se refere a "LPT1" no mundo MS-DOS. /dev/null usado como "buraco negro", qualquer dado enviado a este dispositivo desaparece. Para que pode ser til isto?. Bem, se deseja suprimir a sada para a tela de um comando, pode enviar a sada para /dev/null. Falaremos mais sobre isto depois. Os nomes que comeam por /dev/tty se referem a "consoles virtuais" de seu sistema (acessveis mediante as teclas Alt-F1, Alt-F2, etc). /dev/tty1 se refere a primeira VC, /dev/tty2 a segunda, etc. Os nomes de dispositivo que comeam com /dev/pty so "pseudoterminais". So usados para proporcionar um "terminal" a sesses remotas. Por exemplo, se sua mquina est em uma rede, o telnet de entrada usar um dos dispositivos /dev/pty.

- 114

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/etc /etc contm uma srie de arquivos de configurao do sistema. Isto inclui o /etc/passwd (a base de dados de usurios), o /etc/rc (instrues de inicializao do sistema), etc.

- 115

Fundamentos de Administrao Linux

/sbin /sbin usado para armazenar programas essenciais do sistema, usados pelo administrador do sistema.

- 116

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/home /home contm os diretrios "home" dos usurios. Por exemplo, /home/larry o diretrio do usurio "larry". Em um sistema recm instalado, esse diretrio estar vazio.

- 117

Fundamentos de Administrao Linux

/lib /lib contm as imagens das bibliotecas compartilhadas. Esses arquivos contm cdigo que muitos programas compartilham. Ao invs de cada programa ter uma cpia prpria das funes compartilhadas, elas so guardadas em um lugar comum, o /lib. Isso faz com que os programas executveis sejam menores e reduzam o espao usado em disco.

- 118

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/proc /proc um "sistema de arquivos virtual". Os arquivos que esto no /proc residem verdadeiramente na memria, e no no disco. Esses arquivos se referem a vrios processos que rodam no sistema e permitem obter informao sobre programas e processos que esto rodando num dado momento.

- 119

Fundamentos de Administrao Linux

/tmp Muitos programas tm necessidade de gerar alguma informao temporria e de guardar essa informao em um arquivo temporrio. O lugar para esses arquivos o /tmp.

- 120

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/usr /usr um diretrio muito importante. Contm uma srie de subdiretrios que por sua vez contm alguns dos mais importantes e teis programas e arquivos de configurao usados no sistema. Os vrios diretrios descritos acima so essenciais para o sistema operar, mas a maioria dos itens no /usr so opcionais. Entretanto, so esses itens opcionais que tornam o sistema til e interessante. Sem o /usr, voc teria um sistema tedioso que suportaria somente programas como cp e ls. O /usr contm a maioria dos pacotes grandes de software e os arquivos de configurao que os acompanham.

- 121

Fundamentos de Administrao Linux

/usr/X11R6 /usr/X11R6 contm o sistema X Window se voc o instalou el sistema X Window se voc o instalou. O sistema X Window um ambiente grfico poderoso que proporciona um grande nmero de ferramentas e programas grficos, mostrados em janelas na sua tela. Se voc est familiarizado com os ambientes MS Windows ou Macintosh, o X Window lhe ser muito familiar. O diretrio /usr/X11R6 contm todos os executveis do X Window, arquivos de configurao e suporte.

- 122

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/usr/bin /usr/bin contm a maioria dos programas executveis no encontrados em outras partes, como no /bin.

- 123

Fundamentos de Administrao Linux

/usr/etc Como o /etc, contm diferentes arquivos de configurao e programas do sistema, /usr/etc contm inclusive mais que o anterior. Em geral, os arquivos que se encontram em /usr/etc no so essenciais para o sistema, diferentemente dos que se encontram no /etc.

- 124

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/usr/include /usr/include contm os arquivos include para o compilador C. Esse arquivos (a maioria dos quais termina com .h, de "header") declaram estruturas de dados, subrotinas e constantes usadas no desenvolvimento de programas em C. Os arquivos que se encontram em /usr/include/sys geralmente so usados quando programando no nvel do sistema UNIX. Se voc est familiarizado com programao C, encontrar arquivos como stdio.h, o qual declara funes como printf().

- 125

Fundamentos de Administrao Linux

/usr/g++-include /usr/g++-include contm arquivos de incluso para o computador C++ (muito parecido ao /usr/include).

- 126

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/usr/lib /usr/lib contm as bibliotecas "stub" e "static" equivalentes aos arquivos encontrados em /lib. Ao compilar um programa, ele "linkado" com as bibliotecas que se encontram em /usr/lib, as quais direcionam o programa para o /lib, quando precisa buscar o cdigo real da biblioteca. Alm disso, vrios programas armazenam arquivos de configurao no /usr/lib.

- 127

Fundamentos de Administrao Linux

/usr/local /usr/local muito parecido ao /usr. Ele contm programas e arquivos no essenciais ao sistema, mas que tornam o sistema mais divertido e excitante. Em geral, os programas que se encontram em /usr/local so especficos do seu sistema, isto , o diretrio /ussr/local difere bastante entre os sistemas UNIX. Aqui encontrar grandes programas, como o TeX (sistema de formatao de documentos) e Emacs (editor grande e poderoso), se os instalar.

- 128

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/usr/man Esse diretrio contm as pginas de manual. H dois subdiretrios para cada seo de pgina de manual (use o comando "man man" para detalhes). Por exemplo, /usr/man/man1 contm os fontes (isto , o original no formatado) para as pginas de manual na seo 1, e /usr/man/cat1 contm as pginas de manual formatadas para a seo 1.

- 129

Fundamentos de Administrao Linux

/usr/src /usr/src contm o cdigo fonte (programas a compilar) de vrios programas do sistema. subdiretrio mais importante o /usr/src/linux, que contm o cdigo fonte do kernel do Linux. O

- 130

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/var /var contm diretrios que freqntemente mudam de tamanho ou tendem a crescer. Muitos desses diretrios residiam antes em /usr, mas desde que estamos tratando de deixar o /usr inalterado, os diretrios que mudam de tamanho foram levados para o /var. Alguns deles so:

- 131

Fundamentos de Administrao Linux

/var/adm /var/adm contm vrios arquivos de interesse para o administrador do sistema, especificamente histricos do sistema, que armazenam erros ou problemas com o sistema. Outros arquivos guardam logins do sistema, assim como tentativas frustradas. O captulo 4 abordar este assunto.

- 132

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/var/spool /var/spool contm arquivos que vo ser passados a outros programas. Por exemplo, se sua mquina est conectada a uma rede, o correio de entrada ser armazenado em /var/spool/mail at que voc o leia ou apague. Artigos novos dos News, tanto os que entram quanto os que saem, se encontram em /var/spool/news, etc.

- 133

Fundamentos de Administrao Linux

Comandos para manipulao de Arquivos

- 134

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando rm
Remove arquivos. Tambm pode ser usado para apagar diretrios, vazios ou no. Note que no UNIX quando um arquivo removido, ele no mais recupervel (como no MS-DOS, onde voc pode usar o "undelete", ou no Windows, com a lixeira). Sintaxe:
rm [opes] [caminho][arquivo/diretrio]

onde: caminho - Localizao do arquivo que deseja apagar. Se omitido, assume que o arquivo esteja no diretrio atual. arquivo/diretrio - Arquivo/diretrio que ser apagado. opes - Modificam o comportamento do comando: -i --interactive -f --force -r --recursive Confirma antes de remover, esta ativada por padro. Remove os arquivos sem confirmao. Usado para remover arquivos em sub-diretrios. Esta opo tambm pode ser usada para remover sub-diretrios.

Exemplos: rm teste.txt rm *.txt rm *.txt teste.novo Remove o arquivo teste.txt do diretrio atual. Remove todos os arquivos do diretrio atual que terminam com .txt. Remove todos os arquivos do diretrio atual que terminam com .txt e tambm o arquivo teste.novo. Remove todos os arquivos e sub-diretrios do diretrio /tmp/teste mas mantm o sub-diretrio /tmp/teste. Remove todos os arquivos e sub-diretrios do diretrio /tmp/teste, inclusive /tmp/teste.

rm -rf /tmp/teste/* rm -rf /tmp/teste

- 135

Fundamentos de Administrao Linux

O comando cp
Copia arquivos. Sintaxe:
cp [opes] [origem] [destino]

onde: origem - Arquivo que ser copiado. Podem ser especificados mais de um arquivo para ser copiado usando "Curingas". destino - O caminho ou nome de arquivo onde ser copiado. Se o destino for um diretrio, os arquivos de origem sero copiados para dentro do diretrio. Opes - Modificam o comportamento do comando: -f --force No confirma, substitui arquivos caso j existam. -i interactive Confirma antes de substituir arquivos existentes. -u update Copia somente se o arquivo de origem mais novo que o arquivo de destino ou quando o arquivo de destino no existe. -r Copia arquivos e sub-diretrios, com exceo de arquivos especiais FIFO e dispositivos. -R --recursive Copia arquivos e sub-diretrios, inclusive arquivos especiais FIFO e dispositivos. -p --preserve Preserva atributos do arquivo, se for possvel. O comando cp copia arquivos da ORIGEM para o DESTINO. Ambos origem e destino tero o mesmo contedo aps a cpia. Exemplos: cp teste teste1 cp teste /tmp cp * /tmp cp /bin/* . cp -R /bin /tmp Copia o arquivo teste para teste1 Copia o arquivo teste para dentro do diretrio /tmp. Copia todos os arquivos do diretrio atual para /tmp. Copia todos os arquivos do diretrio /bin para o diretrio atual. Copia o diretrio /bin e todos os arquivos/sub-diretrios existentes para o diretrio /tmp.
2005 Processor Alfamidia LTDA.

- 136

Fundamentos de Administrao Linux

cp -R /bin/* /tmp

Copia todos os arquivos do diretrio /bin (exceto o prprio diretrio /bin) e todos os arquivos/sub-diretrios existentes dentro dele para /tmp. Copia todos os arquivos e o diretrio /bin para /tmp.

cp -R /bin /tmp

- 137

Fundamentos de Administrao Linux

O comando mv
Move ou renomeia arquivos e diretrios. O processo semelhante ao do comando cp mas o arquivo de origem apagado aps o trmino da cpia. Sintaxe:
mv [opes] [origem] [destino]

Onde: origem - Arquivo/diretrio de origem. destino - Local onde ser movido ou novo nome do arquivo/diretrio. opes - Modificam o comportamento do comando: -f --force -i --interactive -u --update Exemplos: mv teste teste1 mv teste /tmp Muda o nome do arquivo teste para teste1. Move o arquivo teste do diretrio atual para /tmp. Substitui o arquivo de destino sem perguntar. Pergunta antes de substituir. o padro. Move somente arquivos antigos, ou novos arquivos.

- 138

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando ln
Cria um novo link para arquivos e diretrios. O link o mecanismo usado para fazer referncia a um arquivo ou diretrio. Sintaxe:
ln [opes] [origem] [link]

Onde: origem - Diretrio ou arquivo de onde ser feito o link. Link - Nome do novo link que ser criado. Opes - Modificam o comportamento do comando: -s -d Cria um link simblico. Usado para criar ligaes com o arquivo/diretrio de destino. Cria um hard link para diretrios. Somente o root pode usar esta opo.

Existem 2 tipos de links: hardlink (rgidos) e Simblics.

- 139

Fundamentos de Administrao Linux

Hardlinks
O comando "ln" usado para criar mltiplos links para um arquivo. Por exemplo, digamos que voc tenha um arquivo chamado "foo" em um diretrio. Usando "ls -i", voc pode ver o nmero do "inode" para este arquivo.

/home/larry# ls -i foo 22192 foo /home/larry#

Aqui, "foo" tem o nmero de inode 22192 no sistema de arquivos. Voc pode criar outro link para o arquivo "foo", chamado, por exemplo, "bar", como segue:
/home/larry# ln foo bar

Com o comando "ls -i", voc pode ver que os dois arquivos tem o mesmo inode.

/home/larry# ls -i foo 22192 bar 22192 foo /home/larry#

Agora, especificando tanto "foo" quanto "bar", voc ter acesso ao mesmo arquivo. Se voc fizer mudanas a "foo", essas mudanas aparecem em "bar" tambm. Para todos os propsitos, "foo" e "bar" so o mesmo arquivo. Esses links so conhecidos como links rgidos (hardlink), porque criam um link direto para um inode. Note que voc s pode fazer hard links para arquivos se os links estiverem no mesmo sistema de arquivos. Links simblicos (veja abaixo) no tm esta restrio. Quando voc exclui um arquivo com "rm", voc est, na verdade, apagando um link para o arquivo. Se voc usar o comando
/home/larry# rm foo

somente o link chamado foo excludo, bar ainda vai existir. Um arquivo realmente excludo do sistema somente quando no h mais links para ele. Usualmente, arquivos s tem um link. Assim, usando o comando "rm" exclui o arquivo. Entretanto,
- 140 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

se um arquivo tem mltiplos links, usando o comando "rm" excluir somente um link. Para excluir o arquivo, voc tem que excluir todos os links para o mesmo. O comando "ls -l" mostra o nmero de links para um arquivo (entre outras informaes).
/home/larry# ls -l foo bar -rw-r--r-2 root -rw-r--r-2 root /home/larry#

root root

12 Aug 5 16:51 bar 12 Aug 5 16:50 foo

A segunda coluna na listagem, "2", especifica o nmero de links para o arquivo. Com isso claro, um diretrio , na verdade, somente um arquivo contendo a informao sobre as associaes link para inode. Alm disso, cada diretrio contm, no mnimo, dois links rgidos: "." (um link apontando para si mesmo), e ".." (um link apontando para o diretrio superior). No diretrio root (/), o link ".." aponta novamente para /. (Em outras palavras, o diretrio superior do diretrio root o prprio diretrio root).

- 141

Fundamentos de Administrao Linux

Links Simblicos
Links simblicos, ou symlinks, so outro tipo de link, e so diferentes dos links rgidos. Um link simblico permite que voc d outro nome a um arquivo, mas no faz o link ao arquivo por inode. O comando "ln -s" cria um link simblico para um arquivo.

/home/larry# ln -s foo bar

- 142

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Foi criado um link simblico chamado "bar" que aponta para o arquivo "foo". Se voc usa o "ls -i", voc ver que os dois arquivos tm, de fato, inodes diferentes.
/home/larry# ls -i foo bar 22195 bar 22192 foo /home/bar#

Entretanto, usando o "ls -l", vemos que o arquivo "bar" um ponteiro simblico para "foo".
/home/larry# ls -l foo bar lrwxrwxrwx 1 root root -rw-r--r-1 root root /home/larry# 3 Aug 5 16:51 bar -> foo 12 Aug 5 16:50 foo

As permisses de arquivo num link simblico no so usadas (sempre aparecem como rwxrwxrwx). Elas so determinadas pelas permisses no arquivo alvo do link simblico (em nosso exemplo, o arquivo foo). Funcionalmente, links rgidos e links simblicos so similares, mas h diferenas. Voc pode, por exemplo, criar um link simblico para um arquivo que no existe; o mesmo no funciona para links rgidos. Links simblicos so processados pelo kernel diferentemente de links rgidos. somente uma diferena tcnica, mas algumas vezes importante. Links simblicos so teis porque identificam o arquivo para o qual apontam. Com links rgidos, no h uma maneira fcil de determinar quais arquivos esto "linkados" para o mesmo inode. Links so usados em muitos lugares no sistema Linux. Links simblicos so especialmente importante para bibliotecas compartilhadas no /lib. Observaes:

Se for usado o comando rm com um link, somente o link ser removido. Se for usado o comando cp com um link, o arquivo original ser copiado ao invs do link. Se for usado o comando mv com um link, a modificao ser feita no link. Se for usado um comando de visualizao (como o cat), o arquivo original ser visualizado. Cria o link simblico /dev/modem para o arquivo /dev/ttyS1. Cria um link ~/tmp para o diretrio /tmp.

Exemplos: ln -s /dev/ttyS1 /dev/modem ln -s /tmp ~/tmp

- 143

Fundamentos de Administrao Linux

O comando cat
Oficialmente usado para concatenar arquivos, mas tambm pode ser usado para mostrar o contedo completo de um ou mais arquivos. Sintaxe:
cat [opes] [diretrio/arquivo] [diretrio1/arquivo1]

Onde diretrio/arquivo: opes: Localizao do arquivo que se deseja visualizar o contedo.

Modificam o comportamento do comando:

-n --number Mostra o nmero das linhas enquanto o contedo do arquivo mostrado. -s --squeeze-blank No mostra mais que uma linha em branco entre um pargrafo e outro. Use o comando zcat para ver diretamente arquivos compactados com gzip. Exemplo: cat /usr/doc/copyright/GPL

- 144

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando tac
Mostra o contedo de um arquivo binrio ou texto (como o cat) s que em ordem inversa. Sintaxe:
tac [opes] [diretrio/arquivo] [diretrio1/arquivo1]

diretrio/arquivo: Localizao do arquivo que se deseja visualizar o contedo opes: -s [string] Exemplo: Modificam o comportamento do comando: Usa o [string] como separador de registros.

tac /usr/doc/copyright/GPL

- 145

Fundamentos de Administrao Linux

O comando more
Permite fazer a paginao de arquivos ou da entrada padro. O comando more pode ser usado como comando para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela ocupada, o more efetua uma pausa e permite que voc pressione Enter ou espao para continuar avanando no arquivo sendo visualizado. Para sair do more pressione q. Sintaxe:
more [arquivo]

Onde: arquivo: o arquivo que ser paginado. Para visualizar diretamente arquivos texto compactados pelo gzip (.gz) use o comando zmore. Exemplos: more /etc/passwd cat /etc/passwd | more

- 146

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando less
Permite fazer a paginao de arquivos ou da entrada padro. O comando less pode ser usado como comando para leitura de arquivos que ocupem mais de uma tela. Quando toda a tela ocupada, o less efetua uma pausa (semelhante ao more) e permite que voc pressione Seta para Cima e Seta para Baixo ou PgUP/PgDown para fazer o rolamento da pgina. Para sair do less pressione q. Sintaxe:
less [arquivo]

Onde: Arquivo - o arquivo que ser paginado. Para visualizar diretamente arquivos texto compactados pelo gzip (.gz) use o comando zless. Exemplos: less /etc/passwd cat /etc/passwd | less

- 147

Fundamentos de Administrao Linux

O comando head
Mostra as linhas iniciais de um arquivo texto. Sintaxe:
head [opes] [arquivo]

Onde: arquivo - o arquivo que ser mostrado. opes - Modificam o comportamento do comando: -c [numero] -[numero] Mostra o [numero] de bytes do inicio do arquivo. Mostra o [numero] de linhas do inicio do arquivo. Caso no seja especificado, mostra as 10 primeiras linhas.

Exemplos: head teste.txt head -20 teste.txt

- 148

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando tail
Mostra as linhas finais de um arquivo texto. Sintaxe:
tail [opes] [arquivo]

Onde: arquivo - o arquivo que ser mostrado. opes - Modificam o comportamento do comando: -c [numero] Mostra o [numero] de bytes do final do arquivo. -[numero] Mostra o [numero] de linhas do final do arquivo. Caso no seja especificado, mostra as 10 ltimas linhas. Exemplos: tail teste.txt tail -n 20 teste.txt

- 149

Fundamentos de Administrao Linux

O comando touch
Muda a data e hora que um arquivo foi alterado. Tambm pode ser usado para criar arquivos vazios. Caso o touch seja usado com arquivos que no existam, por padro ele criar estes arquivos. Sintaxe:
touch [opes] [arquivos]

Onde: arquivos - Arquivos que tero sua data/hora modificados. Opes - Modificam o comportamento do comando: -a --time=atime -m --time=mtime -c --no-create -t MMDDhhmm[AA.ss] Faz o touch mudar somente a data e hora do acesso ao arquivo. Faz o touch mudar somente a data e hora da modificao. No cria arquivos vazios, caso os arquivos no existam. Usa Minutos (MM), Dias (DD), Horas (hh), minutos (mm) e opcionalmente o Ano (AA) e segundos (ss) para modificao dos arquivos, ao invs da data e hora atual.

Exemplos: touch teste Cria o arquivo teste, caso ele no exista. touch t 10011230 teste Altera da data e hora do arquivo para 01/10 e 12:30. touch -t 120112301999.30 teste Altera da data e hora do arquivo para 01/12/1999 e 12:30:30.

- 150

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando wc
Conta o nmero de palavras, bytes e linhas em um arquivo ou entrada padro. Se as opes forem omitidas, o wc mostra a quantidade de linhas, palavras, e bytes. Sintaxe:
wc [opes] [arquivo]

Onde: Arquivo - Arquivo que ser verificado pelo comando wc. Opes - Modificam o comportamento do comando: -c --bytes Mostra os bytes do arquivo. -w --words Mostra a quantidade de palavras do arquivo. -l --lines Mostra a quantidade de linhas do arquivo. A ordem da listagem das estatsticas nica, e modificando a posio das opes no modifica a ordem que os dados so listados. Exemplo: wc /etc/passwd Mostra a quantidade de linhas, palavras e letras (bytes) no arquivo /etc/passwd. wc -w /etc/passwd Mostra a quantidade de palavras. wc -l /etc/passwd Mostra a quantidade de linhas. wc -lw /etc/passwd Mostra a quantidade de linhas e palavras.

- 151

Fundamentos de Administrao Linux

O comando sort
Organiza as linhas de um arquivo texto ou da entrada padro. A organizao feita por linhas e as linhas so divididas em campos que a ordem que as palavras aparecem na linha separadas por um delimitador (normalmente um espao). Sintaxe:
sort [opes] [arquivo]

Onde: arquivo - o nome do arquivo que ser organizado. Caso no for especificado, ser usado o dispositivo de entrada padro (normalmente o teclado ou um "|"). Opes:
-b Ignora linhas em branco.

Somente usa letras, dgitos e espaos durante a organizao. Ignora a diferena entre maisculas e minsculas. Inverte o resultado da comparao. Caso estiver organizando um campo que contm nmeros, os nmeros sero organizados na ordem aritmtica. -c Verifica se o arquivo j esta organizado. Caso no estiver, retorna a mensagem "disorder on arquivo". -i Ignora os caracteres fora da faixa octal ASCII 040-0176 durante a organizao. -t caracter Usa caracter como delimitador durante a organizao de linhas. Por padro usado um espao em branco como delimitador de caracteres. +num1 -num2 Especifica qual o campo dentro na linha que ser usado na organizao. O(s) campo(s) usado(s) para organizao estar entre +num1 e +num2. O delimitador padro utilizado um espao em branco (use a opo -t para especificar outro). A contagem iniciada em "0". Caso no for especificada, a organizao feita no primeiro campo. Caso -num2 no seja especificado, a organizao ser feita usando a coluna +num1 at o fim da linha. -k num1, num2 Esta uma alternativa ao mtodo acima para especificar as chaves de organizao. O uso idntico, mas o delimitador iniciado em "1". -d -f -r -n

- 152

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Exemplos
sort texto.txt

Organiza o arquivo texto.txt em ordem crescente.


sort texto.txt -r

Organiza o contedo do arquivo texto.txt em ordem decrescente.


cat texto.txt | sort

Faz a mesma coisa que o primeiro exemplo, s que neste caso a sada do comando cat redirecionado a entrada padro do comando sort.
sort -f texto.txt

Ignora diferenas entre letras maisculas e minsculas durante a organizao.


sort +1 -3 texto.txt

Organiza o arquivo texto.txt usando como referncia a segunda at a quarta palavra (segundo ao quarto campo) que constam naquela linha.
sort -t : +2 -3 passwd

Organiza o arquivo passwd usando como referncia a terceira at a quarta palavra (terceiro ao quarto campo). Note que a opo -t especifica o caracter ":" como delimitador de campos ao invs do espao. Neste caso, o que estiver aps ":" ser considerado o prximo campo.

- 153

Fundamentos de Administrao Linux

O comando diff
Compara dois arquivos e mostra as diferenas entre eles. O comando diff usado somente para a comparao de arquivos em formato texto. As diferenas encontradas podem ser redirecionadas para um arquivo que poder ser usado pelo comando patch para aplicar as alteraes em um arquivo que no contm as diferenas. Isto til para grandes textos porque possvel copiar somente as modificaes (geradas atravs do diff, que so muito pequenas) e aplicar no arquivo para atualiza-lo (atravs do patch) ao invs de copiar a nova verso. Este um sistema de atualizao muito usado na atualizao dos cdigo fonte do kernel do GNU/Linux. Sintaxe:
diff [diretrio1/arquivo1] [diretrio2/arquivo2] [opes]

Onde: diretrio1/arquivo1 diretrio2/arquivo2 Arquivos /diretrios que sero comparados. Normalmente usado como primeiro arquivo/diretrio o mais antigo e o mais novo como segundo. Opes: -lines [num] Gera a diferena com [num] linhas de contexto. Por padro o diff gera um arquivo com 2 linhas que o mnimo necessrio para o correto funcionamento do patch. -a Compara os dois arquivos como arquivos texto. -b Ignora espaos em branco como diferenas. -B Ignora linhas em branco inseridas ou apagadas nos arquivos. -I Ignora diferenas entre maisculas e minsculas nos arquivos. -H Usa anlise heurstica para verificar os arquivos. -N Em uma comparao de diretrios, se o arquivo apenas existe em um diretrio, trata-o como presente mas vazio no outro diretrio. -P Em uma comparao de diretrios, se o arquivos apenas existe no segundo diretrio, trata-o como presente mas vazio no primeiro diretrio. -q Mostra somente se os dois arquivos possuem diferenas. No mostra as diferenas entre eles. -r Compara diretrios e sub-diretrios existentes. -S [nome] Inicia a comparao de diretrios pelo arquivo [nome]. til quando cancelamos uma comparao. -t Aumenta a tabulao das diferenas encontradas. -u Usa o formato de comparao unificado.
- 154 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Use o comando zdiff para comparar diretamente arquivos compactados pelo utilitrio gzip Use o comando sdiff para visualizar as linhas diferentes entre os dois arquivos em formato texto simples. Exemplos:
diff texto.txt texto1.txt

Compara o arquivo texto.txt com texto1.txt e exibe suas diferenas na tela.


diff -Bu texto.txt texto1.txt

Compara o arquivo texto.txt com texto1.txt ignorando linhas em branco diferentes entre os dois arquivos e usando o formato unificado.
diff texto.txt texto1.txt >texto.diff

Compara o arquivo texto.txt com texto1.txt e gera um arquivo chamdo texto.diff contendo a diferena entre eles. Este arquivo poder ser usado pelo patch para aplicar as diferenas existente entre os dois no arquivo texto.txt.
diff -r /usr/src/linux-2.2.13 /usr/src/linux-2.2.14 >patch-2.2.14.diff

Compara o diretrio e sub-diretrios linux-2.2.13 e linux-2.2.14 e grava as diferenas entre eles no arquivo patch-2.2.14.diff.

- 155

Fundamentos de Administrao Linux

Comandos de Busca

- 156

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando grep
Procura por um texto dentro de um arquivo(s) ou no dispositivo de entrada padro. Sintaxe:
grep [expresso] [arquivo] [opes]

Onde: Expresso - Expresso regular que ser procurada no texto. Se tiver mais de 2 palavras voc deve identifica-la com aspas "" caso contrrio o grep assumir que a segunda palavra o arquivo! Arquivo - Arquivo onde ser feita a procura. Opes: -A [nmero] Mostra o [nmero] de linhas aps a linha encontrada pelo grep. -B [nmero] Mostra o [nmero] de linhas antes da linha encontrada pelo grep. -f [arquivo] Especifica que o texto que ser localizado, esta no arquivo [arquivo]. -h --no-filename No mostra os nomes dos arquivos durante a procura. -i --ignore-case Ignora diferena entre maisculas e minsculas no texto procurado e arquivo. -n --line-number Mostra o nome de cada linha encontrada pelo grep. -U --binary Trata o arquivo que ser procurado como binrio. Se no for especificado o nome de um arquivo ou se for usado um hfen "-", grep procurar a string no dispositivo de entrada padro. O grep faz sua pesquisa em arquivos texto. Use o comando zgrep para pesquisar diretamente em arquivos compactados com gzip, os comandos e opes so as mesmas. Exemplos: grep "capitulo" texto.txt ps ax | grep inetd
- 157

Fundamentos de Administrao Linux

grep "capitulo" texto.txt -A 2 -B 2

- 158

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando find
Procura por arquivos/diretrios no disco. O comando find pode procurar arquivos atravs de sua data de modificao, tamanho, etc atravs do uso de opes. O find, ao contrrio de outros programas, usa opes longas atravs de um "-". Sintaxe:
find [diretrio] [opes/expreso]

Onde: Diretrio - Inicia a procura neste diretrio, percorrendo seu sub-diretrios. opes/expresso: -name [expresso] Procura pelo nome [expresso] nos nomes de arquivos e diretrios processados. -depth Processa os sub-diretrios primeiro antes de processar os arquivos do diretrio principal. -maxdepth [num] Faz a procura at [num] sub-diretrios dentro do diretrio que est sendo pesquisado. -mindepth [num] No faz nenhuma procura em diretrios menores que [num] nveis. -mount, -xdev No faz a pesquisa em sistemas de arquivos diferentes daquele de onde o comando find foi executado. -amin [num] Procura por arquivos que foram acessados [num] minutos atrs. Caso for antecedido por "-", procura por arquivos que foram acessados entre [num] minutos atrs at agora. -atime [num] Procura por arquivos que foram acessados [num] dias atrs. Caso for antecedido por "-", procura por arquivos que foram acessados entre [num] dias atrs e a data atual. -gid [num] Procura por arquivos que possuam a identificao numrica do grupo igual a [num]. -group [nome] Procura por arquivos que possuam a identificao de nome do grupo igual a [nome]. -uid [num] Procura por arquivos que possuam a identificao numrica do usurio igual a [num].
- 159

Fundamentos de Administrao Linux

-user [nome]

Procura por arquivos que possuam a identificao de nome do usurio igual a [nome]. -inum [num] Procura por arquivos que esto localizados no inodo [num]. -links [num] Procura por arquivos que possuem [num] links como referncia. -mmin [num] Procura por arquivos que tiveram seu contedo modificado h [num] minutos. Caso for antecedido por "-", procura por arquivos que tiveram seu contedo modificado entre [num] minutos atrs at agora. -mtime [num] Procura por arquivos que tiveram seu contedo modificado h [num] dias. Caso for antecedido por "-", procura por arquivos que tiveram seu contedo modificado entre [num] dias atrs at agora. -nouser Procura por arquivos que no correspondam a identificao do usurio atual. -nogroup Procura por arquivos que no correspondam a identificao do grupo do usurio atual. -perm [modo] Procura por arquivos que possuam os modos de permisso [modo]. Os [modo] de permisso pode ser numrico (octal) ou literal. -used [num] O arquivo foi acessado [num] vezes antes de ter seu status modificado. -size [num] Procura por arquivos que tiverem o tamanho [num]. [num] pode ser antecedido de "+" ou "-" para especificar um arquivo maior ou menor que [num]. A opo -size pode ser seguida de: bEspecifica o tamanho em blocos de 512 bytes. o padro caso [num] no seja acompanhado de nenhuma letra. cEspecifica o tamanho em bytes. kEspecifica o tamanho em Kbytes. -type [tipo] Procura por arquivos do [tipo] especificado.

Os seguintes tipos so aceitos: b - bloco c - caracter d - diretrio p - pipe f - arquivo regular l - link simblico s - sockete

A maior parte dos argumentos numricos podem ser precedidos por "+" ou "-". Para detalhes sobre outras opes e argumentos, consulte a pgina de manual. Exemplos:
- 160 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

find / -name grep Procura no diretrio raz e sub-diretrios um arquivo/diretrio chamado grep. find / -name grep -maxdepth 3 Procura no diretrio raz e sub-diretrios at o 3o. nvel, um arquivo/diretrio chamado grep. find . -size +1000k

- 161

Fundamentos de Administrao Linux

Procura no diretrio atual e sub-diretrios um arquivo com tamanho maior que 1000 kbytes (1Mbyte). find / -mmin 10 Procura no diretrio raz e sub-diretrios um arquivo que foi modificado h 10 minutos atrs. find / -links 4 Procura no diretrio raz e sub-diretrios, todos os arquivos que possuem 4 links como referncia.

- 162

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando which
Mostra a localizao de um arquivo executvel no sistema. A pesquisa de arquivos executveis feita atravs do path do sistema.

Sintaxe:
which [comando]

Exemplos:
which ls which shutdown which which

- 163

Fundamentos de Administrao Linux

O comando whereis
Localiza o arquivo que contm uma pgina de manual. A pesquisa feita usando-se os caminhos de pginas de manuais configuradas no sistema (normalmente o arquivo /etc/manpath.config). Sintaxe:
whereis [comando]

Exemplos:
whereis ls whereis cd

- 164

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Fluxos, Canalizao (pipes) e Redirecionamentos de Sada.

Processos Unix geralmente abrem trs descritores padro de arquivos, que os permitem processar entrada e sada de dados. Estes descritores podem ser redirecionados de e para outros arquivos ou processos. Por padro, o descritor de entrada (stdin) o teclado e os descritores de sada padro (stdout) e sada de erro (stderr) so a tela do computador. Os valores numricos para esses descritores so 0 para stdin, 1 para stdout e 2 para stderr. Os descritores tambm podem ser acessados atravs dos dispositivos virtuais /dev/stdin, /dev/stdout e /dev/stderr. O fluxo dos dados para redirecionamentos e canalizaes (pipes) numa linha de comando vai da esquerda para a direita.

- 165

Fundamentos de Administrao Linux

Redirecionamento
Para redirecionar a sada padro de um comando para um arquivo, utiliza-se o smbolo > aps o mesmo, que deve indicar o arquivo a ser criado com os dados referidos: $ cat texto_simples > clone_texto_simples Se o arquivo existir previamente, ser sobrescrito. Para adicionar os valores sem apagar o contedo existente, usa-se >>. Para redirecionar o contedo de um arquivo para a entrada padro de um comando, usa-se <. Neste caso, o fluxo dos dados segue da direita para a esquerda. especialmente til para utilizar com comandos como o tr que no l arquivos diretamente:
$ tr ' ' '-' < clone_texto_simples texto-simples criado-com-cat

O contedo redirecionado por padro e o de stdout. Para especificar stderr usa-se 2>. Para redirecionar ambos simultaneamente, usa-se &>.

- 166

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Canalizao (pipe)
possvel enviar a sada de um comando para a entrada de outro comando simultaneamente, utilizando o carcter de canalizao |. preciso que o programa de origem dos dados os direcione para a sada padro. Isso varia para cada programa, e geralmente se da passando o argumento de destino como um trao - ou simplesmente ocultando o argumento de sada. Da mesma forma, alguns programas precisam que seja especificada a origem dos dados atravs de stdin. Todas essas informaes podem ser obtidas consultando o manual do programa. Exemplo:
$ cdparanoia -d /dev/cdrom 3 - | oggenc - -o 03.ogg

Extrair a terceira musica de um CD com o programa cdparanoia canalizando o udio atravs do programa oggenc para armazenar a msica no formato Ogg Vorbis.

$ cat /etc/passwd | tee cpia_passwd

Redirecionar simultaneamente a sada tanto para um arquivo quanto para stdout(tela), atravs do comando tee. Para tal, canaliza-se a sada do comando para o comando tee e a este um nome de arquivo para armazenar a sada: O contedo de /etc/passwd ser mostrado na tela e copiado no arquivo cpia_passwd. possvel tambm usar a sada de um comando como argumento para outro, usando aspas invertidas:
$ ls -dl `cat /etc/ld.so.conf` drwxr-xr-x 5 root root 7464 2006-01-14 17:35 /usr/X11R6/lib drwxr-xr-x 2 root root 712 2006-03-17 12:26 /usr/i486-slackware-linux/lib drwxr-xr-x 2 root root 688 2005-10-29 22:53 /usr/lib/qt/lib drwxr-xr-x 16 root root 7272 2006-03-21 02:49 /usr/local/lib

$ ls -dl $(cat /etc/ld.so.conf) drwxr-xr-x 5 root root 7464 2006-01-14 17:35 /usr/X11R6/lib drwxr-xr-x 2 root root 712 2006-03-17 12:26 /usr/i486-slackware-linux/lib drwxr-xr-x 2 root root 688 2005-10-29 22:53 /usr/lib/qt/lib

- 167

Fundamentos de Administrao Linux

drwxr-xr-x 16 root root 7272 2006-03-21 02:49 /usr/local/lib

Resultado idntico e conseguido usando $():

- 168

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando xargs desempenha funo parecida, passando os dados que recebe via stdin como argumento para um segundo comando. Exemplo do xargs acompanhando a execuo do find:

$ find /usr/X11R6/bin/ -name 'xt*' | xargs ls -l -rwxr-xr-x 1 root bin 268928 2006-01-14 17:35 /usr/X11R6/bin/xterm

-rwxr-xr-x 1 root bin 13076 2006-01-14 17:35 /usr/X11R6/bin/xtrapchar -rwxr-xr-x 1 root bin 6536 -rwxr-xr-x 1 root bin 4320 -rwxr-xr-x 1 root bin 7704 -rwxr-xr-x 1 root bin 5880 -rwxr-xr-x 1 root bin 4196 -rwxr-xr-x 1 root bin 5856 2006-01-14 17:35 /usr/X11R6/bin/xtrapin 2006-01-14 17:35 /usr/X11R6/bin/xtrapinfo 2006-01-14 17:35 /usr/X11R6/bin/xtrapout 2006-01-14 17:35 /usr/X11R6/bin/xtrapproto 2006-01-14 17:35 /usr/X11R6/bin/xtrapreset 2006-01-14 17:35 /usr/X11R6/bin/xtrapstats

Neste exemplo, xargs tomou cada caminho passado por find e repassou como argumento para o comando ls -l.

- 169

Fundamentos de Administrao Linux

Gerenciamento de Processos

Em linhas gerais, um processo um programa em execuo. Cada processo possui um nmero nico de identificao chamado PID. Este nmero pode ser usado para mudar a prioridade de um processo ou para finaliza-lo. O processo que inicia um outro processo chamado o processo pai ( parente process) do segundo, assim como o segundo e chamado processo filho (child process) do primeiro.

- 170

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

pstree
Mostra processos ativos em formato de rvore genealgica (processos filhos ligados aos respectivos processos pais). Opes comuns: -p Inclui PIDs dos processos. -h Lista apenas os processos do usurio atual.

- 171

Fundamentos de Administrao Linux

ps
Mostra os processos de maneira detalhada. Opes comuns: ux Mostra todos processos do usurio. aux Mostra todos processos no sistema. -u Mostra apenas processos cujo dono seja o indicado pela opo -u. -g Mostra apenas processos cujo grupo seja o indicado pela opo -g.

- 172

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

top
Monitora continuamente os processos, mostrando informaes como uso de memria e CPU de cada processo. A tecla h fornece ajuda sobre o uso do programa. Pode ser usado para alterar a prioridade de um processo

- 173

Fundamentos de Administrao Linux

pidof
Retorna o numero PID para o programa solicitado, se o programa estiver em execuo. PID do daemon crond:
# pidof crond 2404

- 174

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

kill
Envia sinais de controle para processos. O sinal padro quando nenhum sinal e informado SIGTERM, de valor numrico 15, que pede ao programa em questo para finalizar. O processo no necessariamente obedece ao sinal, a menos que o sinal seja SIGKILL. Em alguns casos, o sinal SIGHUP pode ser interpretado como ordem para o processo reler seu(s) arquivo(s) de configurao. Exemplo de kill:
# kill -SIGTERM 4902

Envia o sinal SIGTERM para o processo de PID 4902 Sinais comuns: SIGHUP Termina ou reinicia o processo. Valor numrico 1. SIGINT Interrompe o processo, igual a Ctrl+c. Valor numrico: 2. SIGQUIT Fecha o processo. Valor numrico: 3. SIGKILL Forca a finalizao o processo. Valor numrico: 9. SIGTERM Pede ao processo para finalizar. Valor numrico: 15.

- 175

Fundamentos de Administrao Linux

killall
Tem funo igual a de kill, porm usa o nome do processo no lugar do PID. Com a opo l lista os sinais possveis.

# killall -SIGHUP cupsd

Neste exemplo, o daemon cupsd ir reler seus arquivos de configurao.

- 176

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Tarefas em Primeiro e Segundo Plano


Aps iniciado um programa no shell, este na maioria das vezes assumir o controle de stdin e stdout, ou seja, ficar em primeiro plano. Para interromper o programa e voltar ao prompt do shell, usa-se a combinao de teclas Ctrl+z. Feito isso, para continuar a execuo do programa em segundo plano, ou seja, mantendo o prompt do bash em primeiro plano, usa-se o comando bg (background). Para continuar a execuo do programa em primeiro plano usa-se o comando fg (foreground).

$ ogg123 -q 03-geraldo_vandr-fica_mal_com_deus.ogg

Ctrl+z pressionado
[1]+ Stopped ogg123 -q 03-geraldo_vandr-fica_mal_com_deus.ogg $ bg 1 [1]+ ogg123 -q 03-geraldo_vandr-fica_mal_com_deus.ogg & $

O nmero mostrado antes do comando identifica a tarefa. Este nmero passado para fg e bg para especificar a tarefa desejada. Se houver apenas uma tarefa na sesso atual, fg e bg podem ser usados sem argumentos. Para usar o nome do programa no lugar de seu numero de tarefa, basta precede-lo por %?:

$ bg %?ogg123

O comando jobs lista as tarefas existentes na sesso atual do bash. especialmente til quando h mais de uma tarefa em andamento. possvel iniciar programas diretamente em segundo plano, adicionando o smbolo & ao seu final.

$ ogg123 -q 10-geraldo_vandr-berimbau.ogg & [2] 5375

Os nmeros mostrados correspondem ao nmero da tarefa e ao PID, respectivamente. O nmero de uma tarefa pode ser usado como argumento do comando kill desde que precedido do smbolo %:

- 177

Fundamentos de Administrao Linux

$ kill %2

Quando um usurio sai do sistema, um sinal SIGHUP e enviado a todos os processos a ele pertencentes. Para que esse sinal no interrompa o processo do usurio aps este sair do sistema, o comando deve ser invocado atravs do nohup:

$ nohup wget ftp://transferncia/muito/demorada.tar.bz2 & nohup: appending output to `nohup.out'

As sadas stdout e stderr sero redirecionadas para o arquivo nohup.out, criado no mesmo diretrio em que o comando foi executado.

- 178

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Modificar a Prioridade de Execuo de um Processo


Nmeros nice (NI) so usados para alterar a prioridade de CPU e balancear seu uso num ambiente multiusurio. Todo processo comum iniciado com uma prioridade padro (0). Nmeros nice vo de 19 (menor prioridade) a -20 (prioridade maior). Apenas o superusuario (root) pode diminuir um nmero nice de um processo para abaixo de zero. possvel iniciar um comando com uma prioridade diferente da padro atravs do comando nice. Por padro, nice muda a prioridade para 10.

$ nice -n 15 tar czf home_backup.tar.gz /home

Inicia o comando tar com nmero nice de prioridade 15. Para alterar a prioridade de um processo em andamento, o renice usado. A opo -p indica o PID do processo em questo.
# renice -10 -p 2997 2997: prioridade antiga = 0; prioridade nova = -10

- 179

Fundamentos de Administrao Linux

As opes -g e -u permitem alterar todos os processos do grupo ou do usurio, respectivamente.


# renice +5 -g users

Neste exemplo, todos os processos de usurios do grupo users tiveram suas prioridades (nmero nice) alteradas para +5. Prioridades podem ser modificadas interativamente atravs do programa top. Quando na tela de processos, basta apertar a tecla r e indicar o numero PID do processo.

- 180

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Compactadores

- 181

Fundamentos de Administrao Linux

gzip
praticamente o compactador padro do GNU/Linux, possui uma tima taxa de compactao e velocidade. A extenso dos arquivos compactados pelo gzip a .gz, na verso para DOS, Windows NT usada a extenso .z. gzip [opes] [arquivos] Onde:

arquivos Opes

Especifica quais arquivos sero compactados pelo gzip. Curingas podem ser usados para especificar vrios arquivos de uma s vez. -Descompacta um arquivo.

-d, --decompress [arquivo] -f -l [arquivo] -r -c [arquivo] -t [arquivo] -[num], --fast, --best

- Fora a compactao, compactando at mesmo links. - Lista o contedo de um arquivo compactado pelo gzip. - Compacta diretrios e sub-diretrios. - Descompacta o arquivo para a sada padro. - Testa o arquivo compactado pelo gzip. -Ajustam a taxa de compactao/velocidade da compactao. Quanto melhor a taxa menor a velocidade de compactao e vice versa. A opo --fast permite uma compactao rpida e tamanho do arquivo maior. A opo --best permite uma melhor compactao e uma velocidade menor.

O uso da opo -[nmero] permite especificar uma compactao individualmente usando nmeros entre 1 (menor compactao) e 9 (melhor compactao). til para buscar um bom equilibro entre taxa de compactao/velocidade (especialmente em computadores muito lentos).

- 182

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Quando um arquivo compactado pelo gzip, automaticamente acrescentada a extenso .gz ao seu nome. O gzip tambm reconhece arquivos compactados pelos programas zip, compress, compress -H e pack. As permisses de acesso dos arquivos so tambm armazenadas no arquivo compactado. Exemplos:
gzip -9 texto.txt

Compacta o arquivo texto.txt usando a compactao mxima (compare o tamanho do arquivo compactado usando o comando ls -la).

gzip -d texto.txt.gz

Descompacta o arquivo texto.txt. Tambm pode-se utilizar o :


gunzip texto.txt.gz

gzip -c texto.txt.gz

Descompacta o arquivo texto.txt para a tela

gzip -9 *.txt

Compacta todos os arquivos que terminam com .txt

gzip -t texto.txt.gz

Verifica o arquivo texto.txt.gz.

- 183

Fundamentos de Administrao Linux

bzip2
um novo compactador que vem sendo cada vez mais usado porque consegue atingir a melhor compactao em arquivos texto se comparado aos j existentes (em conseqncia sua velocidade de compactao tambm menor; quase duas vezes mais lento que o gzip). Suas opes so praticamente as mesmas usadas no gzip e voc tambm pode usa-lo da mesma forma. A extenso dos arquivos compactados pelo bzip2 a .bz2

bzip2 [opes] [arquivos] Onde: arquivos Especifica quais arquivos sero compactados pelo bzip2. Caso seja usado um -, ser assumido a entrada padro. Curingas podem ser usados para especificar vrios arquivos de uma s vez. Opes -d, --decompress [arquivo] -f - Descompacta um arquivo. - Lista o contedo de um arquivo compactado pelo bzip2. - Compacta diretrios e sub-diretrios. - Descompacta o arquivo para a sada padro. - Testa o arquivo compactado pelo bzip2. - Ajustam a taxa de compactao/velocidade da compactao. Quanto melhor a taxa menor a velocidade de compactao e vice versa. A opo --fast permite uma compactao rpida e tamanho do arquivo maior. A opo --best permite uma melhor compactao e uma velocidade menor. - Fora a compactao, compactando at mesmo links.

-l [arquivo] -r -c [arquivo] -t [arquivo] -[num], --fast, --best

O uso da opo -[nmero] permite especificar uma compactao individualmente usando nmeros entre 1 (menor compactao) e 9 (melhor compactao). til para buscar um bom equilibro entre taxa de compactao/velocidade (especialmente em computadores muito lentos). Quando um arquivo compactado pelo bzip2, automaticamente acrescentada a extenso .bz2 ao seu nome. As permisses de acesso dos arquivos so tambm armazenadas no arquivo compactado.

- 184

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Exemplos:
bzip2 -9 texto.txt

Compacta o arquivo texto.txt usando a compactao mxima (compare o tamanho do arquivo compactado usando o comando ls -la).
bzip2 -d texto.txt.bz2

Descompacta o arquivo texto.txt

bzip2 -c texto.txt.bz2

Descompacta o arquivo texto.txt para a sada padro (tela)


bzip2 -9 *.txt

Compacta todos os arquivos que terminam com .txt


bzip2 -t texto.txt.bz2

Verifica o arquivo texto.txt.bz2.

- 185

Fundamentos de Administrao Linux

tar
Na verdade o tar no um compactador e sim um "arquivador" (ele junta vrios arquivos em um s), mas pode ser usado em conjunto com um compactar (como o gzip ou zip) para armazena-los compactados. O tar tambm muito usado para cpias de arquivos especiais ou dispositivos do sistema. comum encontrar arquivos com a extenso .tar, .tar.gz, .tgz, .tar.bz2, .tar.Z, .tgZ, o primeiro um arquivo normal gerado pelo tar e todos os outros so arquivos gerados atravs tar junto com um programa de compactao (gzip (.gz), bzip2 (.bz2) e compress (.Z). tar [opes] [arquivo-destino] [arquivos-origem]

Onde: arquivo-destino o nome do arquivo de destino. Normalmente especificado com a extenso .tar caso seja usado somente o arquivamento ou .tar.gz/.tgz caso seja usada a compactao (usando a opo -z). arquivos-origem Especifica quais arquivos/diretrios sero compactados.

- 186

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

opes -c, --create -t, --list -u, --update Cria um novo arquivo .tar Lista o contedo de um arquivo .tar Atualiza arquivos compactados no arquivo .tar Usa o programa bzip2 para processar os arquivos do tar

-f, --file [HOST:]F Usa o arquivo especificado para gravao ou o dispositivo /dev/rmt0. -j, --bzip2 -l, --one-file-system No processa arquivos em um sistema de arquivos diferentes de onde o tar foi executado. -M, --multi-volume Cria/lista/descompacta arquivos em mltiplos volumes. O uso de arquivos em mltiplos volumes permite que uma grande cpia de arquivos que no cabe em um disquete, por exemplo, seja feita em mais de um disquete. Apaga os arquivos de origem aps serem processados pelo tar. Mostra os nomes dos arquivos enquanto so processados. Extrai arquivos gerados pelo tar Usa o programa gzip durante o processamento dos arquivos.

--remove-files -v x -z

A extenso precisa ser especificada no arquivo de destino para a identificao correta: Arquivos gerados pelo tar precisam ter a extenso .tar Caso seja usada a opo -j para compactao, a extenso dever ser .tar.bz2 Caso seja usada a opo -z para compactao, a extenso dever ser .tar.gz ou .tgz importante saber qual qual o tipo de compactador usado durante a gerao do arquivo .tar pois ser necessrio especificar a opo apropriada para descompacta-lo. Exemplos:
tar -cf index.txt.tar index.txt

Cria um arquivo chamado index.txt.tar que armazenar o arquivo index.txt. Voc pode notar digitando ls -la que o arquivo index.txt foi somente arquivado (sem compactao), isto til para juntar diversos arquivos em um s.
tar -xf index.txt.tar

Desarquiva o arquivo index.txt criado pelo comando acima.


tar -czf index.txt.tar.gz index.txt

O mesmo que o exemplo de arquivamento anterior, s que agora usado a opo -z (compactao atravs do programa gzip). Voc agora pode notar digitando ls -la que o arquivo index.txt foi compactado e depois arquivado no arquivo index.txt.tar.gz (voc tambm pode chama-lo de index.txt.tgz que tambm identifica um arquivo .tar compactado pelo gzip)
- 187

Fundamentos de Administrao Linux

tar -xzf index.txt.tar.gz

Descompacta e desarquiva o arquivo index.txt.tar.gz criado com o comando acima.


gzip -dc index.tar.gz | tar -xf

Faz o mesmo que o comando acima s que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.gz e envia a sada do arquivo descompactado para o tar que desarquivar o arquivo index.txt. tar -cjf index.txt.tar.bz2 index.txt Arquiva o arquivo index.txt em index.txt.tar.bz2 compactando atravs do bzip2 (opo -j). tar -xjf index.txt.tar.bz2 Descompacta e desarquiva o arquivo index.txt.tar.bz2 criado com o comando acima. bzip2 -dc index.txt.tar.bz2 | tar -xf Faz o mesmo que o comando acima s que de uma forma diferente: Primeiro descompacta o arquivo index.txt.tar.bz2 e envia a sada do arquivo descompactado para o tar que desarquivar o arquivo index.txt. tar -t index.txt.ta Lista o contedo de um arquivo .tar. tar -tz index.txt.tar.gz Lista o contedo de um arquivo .tar.gz.

- 188

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

- 189

Fundamentos de Administrao Linux

Compilar e Instalar Programas


O primeiro passo para instalar um programa em cdigo fonte distribudo no formato tar e extra-lo:
$ tar xjvf sylpheed-2.0.4.tar.bz2

Este comando criara o diretrio ./sylpheed-2.0.4/, contendo o cdigo fonte do programa e as ferramentas de configurao. A configurao pr-compilao feita dentro desse diretrio, por um script chamado configure. Este script coleta informaes sobre a arquitetura do sistema, caminhos de comandos, bibliotecas compartilhadas, caractersticas de funcionamento do programa, etc. Em geral, o configure pode ser invocado sem argumentos na forma: $ ./configure Uma opcao bastante utilizada --prefix , que informa em qual diretrio base o programa dever ser instalado. Por exemplo:
$ ./configure --prefix=/opt

Indica que o diretorio base da instalao ser /opt. O script configure possui muitas opes de personalizao da instalao. A lista descritiva completa das opes pode ser vista usando:
$ ./configure --help

As informaes coletadas pelo script configure so armazenadas em um arquivo no mesmo diretrio


- 190 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

chamado makefile. Este arquivo pode ser editado para alterar as opes de instalao, como a varivel prefix, que desempenha a mesma funo do argumento --prefix do script configure, e outras variveis que indicam a localizao de bibliotecas, comandos, caractersticas do programa, etc. Terminada a configurao, o programa pode ser compilado atravs do comando make. Make criara as bibliotecas e arquivos executveis conforme as opes existentes no makefile. Apos o termino da compilao, que pode levar algum tempo dependendo do tamanho e tipo do programa, o programa esta pronto para ser instalado .
# make install

Se o diretrio base de instalao no estiver no diretrio pessoal do usurio, esse comando devera ser executado com permisses de super usurio (root). Mesmo estando o diretrio base de instalao fora do diretrio pessoal do usurio, e recomendado executar ./configure e make como usurio comum.

- 191

Fundamentos de Administrao Linux

Comandos para Manipulao de Contas

- 192

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

adduser
Adiciona um usurio ou grupo no sistema. Por padro, quando um novo usurio adicionado, criado um grupo com o mesmo nome do usurio. Ser criado um diretrio home com o nome do usurio (a no ser que o novo usurio criado seja um usurio do sistema) e este receber uma identificao. A identificao do usurio (UID) escolhida ser a primeira disponvel no sistema especificada de acordo com a faixa de UIDS de usurios permitidas no arquivo de configurao /etc/adduser.conf. Este o arquivo que contm os padres para a criao de novos usurios no sistema. adduser [opes] [usurio/grupo] Onde:

usurio/grupo Nome do novo usurio que ser adicionado ao sistema. opes -disable-passwd No executa o programa passwd para escolher a senha e somente permite o uso da conta aps o usurio escolher uma senha. --force-badname Desativa a checagem de senhas ruins durante a adio do novo usurio. Por padro o adduser checa se a senha pode ser facilmente adivinhada. --group Cria um novo grupo ao invs de um novo usurio. A criao de grupos tambm pode ser feita pelo comando addgroup. -uid [num] Cria um novo usurio com a identificao [num] ao invs de procurar o prximo UID disponvel.

- 193

Fundamentos de Administrao Linux

-gid [num] Faz com que o usurio seja parte do grupo [gid] ao invs de pertencer a um novo grupo que ser criado com seu nome. Isto til caso deseje permitir que grupos de usurios possam ter acesso a arquivos comuns.
Caso estiver criando um novo grupo com adduser, a identificao do novo grupo ser [num].

--home [dir] Usa o diretrio [dir] para a criao do diretrio home do usurio ao invs de usar o especificado no arquivo de configurao /etc/adduser.conf. --ingroup [nome] Quando adicionar um novo usurio no sistema, coloca o usurio no grupo [nome] ao invs de criar um novo grupo. --quiet No mostra mensagens durante a operao. --system Cria um usurio de sistema ao invs de um usurio normal.
Os dados do usurio so colocados no arquivo /etc/passwd aps sua criao e os dados do grupo so colocados no arquivo /etc/group. OBSERVAO: Caso esteja usando senhas ocultas (shadow passwords), as senhas dos usurios sero colocadas no arquivo /etc/shadow e as senhas dos grupos no arquivo /etc/gshadow. Isto aumenta mais a segurana do sistema porque somente o usurio root pode ter acesso a estes arquivos, ao contrrio do arquivo /etc/passwd que possui os dados de usurios e devem ser lidos por todos.

- 194

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

roup
Adiciona um novo grupo de usurios no sistema. As opes usadas so as mesmas do adduser.

addgroup [usurio/grupo] [opes]

- 195

Fundamentos de Administrao Linux

wd
Muda a senha do usurio ou grupo. Um usurio somente pode alterar a senha de sua conta, mas o superusurio (root) pode alterar a senha de qualquer conta de usurio, inclusive a data de validade da conta, etc. Os donos de grupos tambm podem alterar a senha do grupo com este comando. Os dados da conta do usurio como nome, endereo, telefone, tambm podem ser alterados com este comando. passwd [usurio/grupo] [opes] Onde:

usurio opes -g

Nome do usurio/grupo que ter sua senha alterada. Se especificada, a senha do grupo ser alterada. Somente o root ou o administrador do grupo pode alterar sua senha. A opo -r pode ser usada com esta para remover a senha do grupo. A opo -R pode ser usada para restringir o acesso do grupo para outros usurios.

-x [dias] Especifica o nmero mximo de dias que a senha poder ser usada. Aps terminar o prazo, a senha dever ser modificada. -i -n [dias] Desativa a conta caso o usurio no tenha alterado sua senha aps o tempo especificado por -x. Especifica o nmero mnimo de dias para a senha ser alterada. O usurio no poder mudar sua senha at que [dias] sejam atingidos desde a ltima alterao de senha. Nmero de dias antecedentes que o usurio receber o alerta para mudar sua senha. O alerta ocorre [num] dias antes do limite da opo -x, avisando ao usurios quantos dias restam para a troca de sua senha.

-w [num]

-l [nome] Bloqueia a conta do usurio [nome]. Deve ser usada pelo root. O bloqueio da conta feito acrescentando um caracter a senha para que no confira com a senha original. -u [nome] Desbloqueia a conta de um usurio bloqueada com a opo -l. -S [nome] Mostra o status da conta do usurio [nome]. A primeira parte o nome do usurio seguido de L(conta bloqueada), NP(sem senha), ou P (com senha), a terceira parte a data da ltima modificao da senha, a quarta parte a perodo mnimo, mximo, alerta e o perodo de inatividade para a senha.
Procure sempre combinar letras maisculas, minsculas, e nmeros ao escolher suas senhas. No recomendado escolher palavras normais como sua senha pois podem ser vulnerveis a ataques de dicionrios cracker. Outra recomendao utilizar senhas ocultas em seu sistema (shadow password).

- 196

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Voc deve ser o dono da conta para poder modificar a senhas. O usurio root pode modificar/apagar a senha de qualquer usurio. Exemplo: passwd root.

- 197

Fundamentos de Administrao Linux

del
Apaga um usurio do sistema. Quando usado, este comando apaga todos os dados da conta especificado dos arquivos de contas do sistema. userdel [-r] [usurio] Onde:

-r

Apaga tambm o diretrio HOME do usurio.

OBS: Note que uma conta de usurio no poder ser removida caso ele estiver no sistema, pois os programas podem precisar ter acesso aos dados dele (como UID, GID) no /etc/passwd.

- 198

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

pdel
Apaga um grupo do sistema. Quando usado, este comando apaga todos os dados do grupo especificado dos arquivos de contas do sistema. groupdel [grupo] Tenha certeza que no existem arquivos/diretrios criados com o grupo apagado atravs do comando find. OBS: Voc no pode remover o grupo primrio de um usurio. Remova o usurio primeiro.

- 199

Fundamentos de Administrao Linux

Adicionando um novo grupo a um usurio


Para incluir um novo grupo a um usurio, e assim permitir que ele acesse os arquivos/diretrios que pertencem quele grupo, voc deve estar como root e editar o arquivo /etc/group. Este arquivo possui o seguinte formato: NomedoGrupo:senha:GID:usurios Onde:

NomedoGrupo o nome daquele grupo de usurios. senha Senha para ter acesso ao grupo. Caso esteja utilizando senhas ocultas para grupos, as senhas estaro em /etc/gshadow. GID Identificao numrica do grupo de usurio. usuarios Lista de usurios que tambm fazem parte daquele grupo. Caso exista mais de um nome de usurio, eles devem estar separados por vrgula.
Deste modo para acrescentar o usurio "joao" ao grupo audio para ter acesso aos dispositivos de som do Linux, acrescente o nome no final da linha: "audio:x:100:joao". Pronto, basta digitar logout e entrar novamente com seu nome e senha, voc estar fazendo parte do grupo audio (confira digitando groups ou id). Outros nomes de usurios podem ser acrescentados ao grupo audio bastando separar os nomes com vrgula.

- 200

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

id
Mostra a identificao atual do usurio, grupo primrio e outros grupos que pertence. id [opes] [usurio] Onde:

usurio opes

o usurio que desejamos ver a identificao, grupos primrios e complementares. Mostra somente a identificao do grupo primrio. Mostra a identificao de outros grupos que pertence. Mostra o nome do usurio e grupo ao invs da identificao numrica. Mostra somente a identificao do usurio (user ID). Mostra a identificao real de usurio e grupo, ao invs da efetiva. Esta opo deve ser usada junto com uma das opes: -u, -g, ou -G.

-g, --group -G, --groups -n, --name -u, --user -r, --real

Caso no sejam especificadas opes, id mostrar todos os dados do usurio. Exemplo: id, id --user, id -r -u.

- 201

Fundamentos de Administrao Linux

Permisses de Acesso a Arquivos e Diretrios

A permisso de acesso protege o sistema de arquivos Linux do acesso indevido de pessoas ou programas no autorizados. A permisso de acesso do GNU/Linux tambm impede que um programa mal intencionado, por exemplo, apague um arquivo que no deve, envie arquivos para outra pessoa ou fornea acesso da rede para que outros usurios invadam o sistema. O sistema GNU/Linux muito seguro e como qualquer outro sistema seguro e confivel impede que usurios iniciantes (ou mal intencionados) instalem programas enviados por terceiros sem saber para que eles realmente servem e causem danos irreversveis em seus arquivos, seu servidor ou sua empresa. Esta seo pode se tornar um pouco difcil de se entender, ento recomendo ler e ao mesmo tempo pratic-la para uma tima compreenso. No se preocupe, tambm coloquei exemplos para ajuda-lo a entender o sistema de permisses de acesso do ambiente GNU/Linux.

- 202

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Donos, grupos e outros usurios


O princpio da segurana no sistema de arquivos GNU/Linux definir o acesso aos arquivos por donos, grupos e outros usurios:

dono

a pessoa que criou o arquivo ou o diretrio. O nome do dono do arquivo/diretrio o mesmo do usurio usado para entrar no sistema GNU/Linux. Somente o dono pode modificar as permisses de acesso do arquivo. As permisses de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretrio. A identificao do dono tambm chamada de user id (UID).

A identificao de usurio e o nome do grupo que pertence so armazenadas respectivamente nos arquivos /etc/passwd e /etc/group. Estes so arquivos textos comuns e podem ser editados em qualquer editor de texto, mas tenha cuidado para no modificar o campo que contm a senha do usurio encriptada (que pode estar armazenada neste arquivo caso no estiver usando senhas ocultas).

- 203

Fundamentos de Administrao Linux

grupo

Para permitir que vrios usurios diferentes tivessem acesso a um mesmo arquivo (j que somente o dono poderia ter acesso ao arquivo), este recurso foi criado. Cada usurio pode fazer parte de um ou mais grupos e ento acessar arquivos que pertenam ao mesmo grupo que o seu (mesmo que estes arquivos tenham outro dono). Por padro, quando um novo usurio criado, o grupo ele pertencer ser o mesmo de seu grupo primrio. a categoria de usurios que no so donos ou no pertencem ao grupo do arquivo.

Outros

Cada um dos tipos acima possuem trs tipos bsicos de permisses de acesso que sero vistas na prxima seo.

- 204

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Tipos de Permisses de acesso


Quanto aos tipos de permisses que se aplicam ao dono, grupo e outros usurios, temos 3 permisses bsicas:

r w

Permisso de leitura para arquivos. Caso for um diretrio, permite listar seu contedo (atravs do comando ls, por exemplo). Permisso de gravao para arquivos. Caso for um diretrio, permite a gravao de arquivos ou outros diretrios dentro dele. Para que um arquivo/diretrio possa ser apagado, necessrio o acesso a gravao. Permite executar um arquivo (caso seja um programa executvel). Caso seja um diretrio, permite que seja acessado atravs do comando cd.

As permisses de acesso a um arquivo/diretrio podem ser visualizadas com o uso do comando ls -la. As 3 letras (rwx) so agrupadas da seguinte forma: -rwxrwxrwx gleydson users teste Veja o que significa cada uma das 10 letras acima, da esquerda para direita.

A primeira letra diz qual o tipo do arquivo. Caso tiver um "d" um diretrio, um "l" um link a um arquivo no sistema , um "-" quer dizer que um arquivo comum, etc. Da segunda a quarta letra (rwx) dizem qual a permisso de acesso ao dono do arquivo. Neste caso gleydson ele tem a permisso de ler (r - read), gravar (w - write) e executar (x - execute) o arquivo teste. Da quinta a stima letra (rwx) diz qual a permisso de acesso ao grupo do arquivo. Neste caso todos os usurios que pertencem ao grupo users tem a permisso de ler (r), gravar (w), e tambm executar (x) o arquivo teste. Da oitava a dcima letra (rwx) diz qual a permisso de acesso para os outros usurios. Neste caso todos os usurios que no so donos do arquivo teste tem a permisso para ler, gravar e executar o programa.

- 205

Fundamentos de Administrao Linux

Etapas para acesso a um arquivo/diretrio


O acesso a um arquivo/diretrio feito verificando primeiro se o usurio que acessar o arquivo o seu dono, caso seja, as permisses de dono do arquivo so aplicadas. Caso no seja o dono do arquivo/diretrio, verificado se ele pertence ao grupo correspondente, caso pertena, as permisses do grupo so aplicadas. Caso no pertena ao grupo, so verificadas as permisses de acesso para os outros usurios que no so donos e no pertencem ao grupo correspondente ao arquivo/diretrio. Aps verificar aonde o usurio se encaixa nas permisses de acesso do arquivo (se ele o dono, pertence ao grupo, ou outros usurios), verificado se ele ter permisso de acesso para o que deseja fazer (ler, gravar ou executar o arquivo), caso no tenha, o acesso negado, mostrando uma mensagem do tipo: "Permission denied" (permisso negada). O que isto que dizer que mesmo que voc seja o dono do arquivo e definir o acesso do dono (atravs do comando chmod) como somente leitura (r) mas o acesso dos outros usurios como leitura e gravao, voc somente poder ler este arquivo mas os outros usurios podero ler/grava-lo. As permisses de acesso (leitura, gravao, execuo) para donos, grupos e outros usurios so independentes, permitindo assim um nvel de acesso diferenciado. Lembre-se: Somente o dono pode modificar um arquivo/diretrio!

- 206

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Exemplos prticos de permisses de acesso

- 207

Fundamentos de Administrao Linux

Exemplo de acesso a um arquivo


Abaixo um exemplo e explicao das permisses de acesso a um arquivo no GNU/Linux (obtido com o comando ls -la, explicarei passo a passo cada parte: -rwxr-xr-- 1 gleydson user 8192 nov 4 16:00 teste

-rwxr-xr--

Estas so as permisses de acesso ao arquivo teste. Um conjunto de 10 letras que especificam o tipo do arquivo, permisso do dono do arquivo, grupo do arquivo e outros usurios.

- 208

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Veja a explicao detalhada sobre cada uma abaixo: -rwxr-xr-- A primeira letra (do conjunto das 10 letras) determina o tipo do arquivos. Se a letra for um d um diretrio, e voc poder acessa-lo usando o comando cd. Caso for um l um link simblico para algum arquivo ou diretrio no sistema. Um - significa que um arquivo normal. -rwxr-xr-- Estas 3 letras (da segunda a quarta do conjunto das 10 letras) so as permisses de acesso do dono do arquivo teste. O dono (neste caso gleydson) tem a permisso para ler (r), gravar (w) e executar (x) o arquivo teste. -rwxr-xr-Estas 3 letras (da quinta a stima do conjunto das 10 letras) so as permisses de acesso dos usurios que pertencem ao grupo user do arquivo teste. Os usurios que pertencem ao grupo user tem a permisso somente para ler (r) e executar (x) o arquivo teste no podendo modifica-lo ou apaga-lo. -rwxr-xr-- Estas 3 letras (da oitava a dcima) so as permisses de acesso para usurios que no so donos do arquivo teste e que no pertencem ao grupo user. Neste caso, estas pessoas somente tero a permisso para ver o contedo do arquivo teste. Gleydson user
Teste

Nome do dono do arquivo teste. Nome do grupo que o arquivo teste pertence. Nome do arquivo.

- 209

Fundamentos de Administrao Linux

Exemplo de acesso a um diretrio


Abaixo um exemplo com explicaes das permisses de acesso a um diretrio no GNU/Linux: drwxr-x--- 2 gleydson user 1024 nov 4 17:55 exemplo

drwxr-x---

Permisses de acesso ao diretrio exemplo. um conjunto de 10 letras que especificam o tipo de arquivo, permisso do dono do diretrio, grupo que o diretrio pertence e permisso de acesso a outros usurios. Veja as explicaes abaixo: A primeira letra (do conjunto das 10) determina o tipo do arquivo. Neste caso um diretrio porque tem a letra d. Estas 3 letras (da segunda a quarta) so as permisses de acesso do dono do diretrio exemplo. O dono do diretrio (neste caso gleydson) tem a permisso para listar arquivos do diretrio (r), gravar arquivos no diretrio (w) e entrar no diretrio (x). Estas 3 letras (da quinta a stima) so as permisses de acesso dos usurios que pertencem ao grupo user. Os usurios que pertencem ao grupo user tem a permisso somente para listar arquivos do diretrio (r) e entrar no diretrio (x) exemplo.

drwxr-x--drwxr-x---

drwxr-x---

- 210

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

drwxr-x---

Estas 3 letras (da oitava a dcima) so as permisses de acesso para usurios que no so donos do diretrio exemplo e que no pertencem ao grupo user. Com as permisses acima, nenhum usurio que se encaixe nas condies de dono e grupo do diretrio tem a permisso de acessa-lo. Nome do dono do diretrio exemplo. Nome do grupo que diretrio exemplo pertence. Nome do diretrio.

Gleydson user
exemplo

OBSERVAES: O usurio root no tem nenhuma restrio de acesso ao sistema. Se voc tem permisses de gravao no diretrio e tentar apagar um arquivo que voc no tem permisso de gravao, o sistema perguntar se voc confirma a excluso do arquivo apesar do modo leitura. Caso voc tenha permisses de gravao no arquivo, o arquivo ser apagado por padro sem mostrar nenhuma mensagem de erro (a no ser que seja especificada a opo -i com o comando rm). Por outro lado, mesmo que voc tenha permisses de gravao em um arquivo mas no tenha permisses de gravao em um diretrio, a excluso do arquivo ser negada.
Isto mostra que levado mais em considerao a permisso de acesso do diretrio do que as permisses dos arquivos e subdiretrios que ele contm. Este ponto muitas vezes ignorado por muitas pessoas e expem seu sistema a riscos de segurana. Imagine o problema que algum usurio que no tenha permisso de gravao em um arquivo mas que a tenha no diretrio pode causar em um sistema mal administrado.

- 211

Fundamentos de Administrao Linux

Permisses de Acesso Especiais


Em adio as trs permisses bsicas (rwx), existem permisses de acesso especiais (stX) que afetam arquivos executveis e diretrios:

s - Quando usado na permisso de acesso do Dono, ajusta a identificao efetiva do usurio do processo durante a execuo de um programa, tambm chamado de bit setuid. No tem efeito em diretrios.
Quando s usado na permisso de acesso do Grupo, ajusta a identificao efetiva do grupo do processo durante a execuo de um programa, chamado de bit setgid. identificado pela letra s no lugar da permisso de execuo do grupo do arquivo/diretrio. Em diretrios, fora que os arquivos criados dentro dele pertenam ao mesmo grupo do diretrio, ao invs do grupo primrio que o usurio pertence.

- 212

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Ambos setgid e setuid podem aparecer ao mesmo tempo no mesmo arquivo/diretrio. A permisso de acesso especial s somente pode aparecer no campo Dono e Grupo.

S - Idntico a "s". Significa que no existe a permisso "x" (execuo ou entrar no diretrio) naquele lugar. Um exemplo o chmod 2760 em um diretrio. t - Salva a imagem do texto do programa no dispositivo swap, assim ele ser carregado mais rapidamente quando executado, tambm chamado de stick bit.

Em diretrios, impede que outros usurios removam arquivos dos quais no so donos. Isto chamado de colocar o diretrio em modo append-only. Um exemplo de diretrio que se encaixa perfeitamente nesta condio o /tmp, todos os usurios devem ter acesso para que seus programas possam criar os arquivos temporrios l, mas nenhum pode apagar arquivos dos outros. A permisso especial t, pode ser especificada somente no campo outros usurios das permisses de acesso.

T - Idntico a "t". Significa que no existe a permisso "x" naquela posio (por exemplo, em um chmod 1776 em um diretrio). X - Se voc usar X ao invs de x, a permisso de execuo somente afetada se o arquivo j tiver permisses de execuo. Em diretrios ela tem o mesmo efeito que a permisso de execuo x. Exemplo da permisso de acesso especial X: Crie um arquivo teste (digitando touch teste) e defina sua permisso para rw-rw-r chmod ug=rw,o=r teste ou chmod 664 teste Use o comando chmod a+X teste digite ls -l Veja que as permisses do arquivo no foram afetadas. Agora digite chmod o+x teste digite ls -l voc colocou a permisso de execuo para os outros usurios. Use novamente o comando chmod a+X teste digite ls -l Veja que agora a permisso de execuo foi concedida a todos os usurios, pois foi verificado que o arquivo era executvel (tinha permisso de execuo para outros usurios). Agora use o comando chmod a-X teste Ele tambm funcionar e remover as permisses de execuo de todos os usurios, porque o arquivo teste tem permisso de execuo (confira digitando ls -l). Agora tente novamente

- 213

Fundamentos de Administrao Linux

chmod a+X teste

Voc deve ter reparado que a permisso de acesso especial X semelhante a x, mas somente faz efeito quanto o arquivo j tem permisso de execuo para o dono, grupo ou outros usurios.
Em diretrios, a permisso de acesso especial X funciona da mesma forma que x, at mesmo se o diretrio no tiver nenhuma permisso de acesso (x).

- 214

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

chmod
Muda a permisso de acesso a um arquivo ou diretrio. Com este comando voc pode escolher se usurio ou grupo ter permisses para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo criado, seu dono o usurio que o criou e seu grupo o grupo do usurio (exceto para diretrios configurados com a permisso de grupo "s", ser visto adiante). chmod [opes] [permisses] [diretrio/arquivo] Onde:

diretrio/arquivo Diretrio ou arquivo que ter sua permisso mudada. opes -v, --verbose -f, --silent -c, --change Mostra todos os arquivos que esto sendo processados. No mostra a maior parte das mensagens de erro. Semelhante a opo -v, mas s mostra os arquivos que tiveram as permisses alteradas.

-R, --recursive Muda permisses de acesso do diretrio/arquivo no diretrio atual e subdiretrios.

- 215

Fundamentos de Administrao Linux

ugoa+-=rwxXst ugoa - Controla que nvel de acesso ser mudado. Especificam, em ordem, usurio (u), grupo (g), outros (o), todos (a). +-= - + coloca a permisso, - retira a permisso do arquivo e = define a permisso exatamente como especificado. rwx - r permisso de leitura do arquivo. w permisso de gravao. x permisso de execuo (ou acesso a diretrios).

O chmod no muda permisses de links simblicos, as permisses devem ser mudadas no arquivo alvo do link. Tambm podem ser usados cdigos numricos octais para a mudana das permisses de acesso a arquivos/diretrios. DICA: possvel copiar permisses de acesso do arquivo/diretrio, por exemplo, se o arquivo teste.txt tiver a permisso de acesso r-xr----- e voc digitar chmod o=u, as permisses de acesso dos outros usurios (o) sero idnticas ao do dono (u). Ento a nova permisso de acesso do arquivo teste.txt ser r-xr--r-x Exemplos de permisses de acesso:

chmod g+r *

Permite que todos os usurios que pertenam ao grupo dos arquivos (g) tenham (+) permisses de leitura (r) em todos os arquivos do diretrio atual.

chmod o-r teste.txt Retira (-) a permisso de leitura (r) do arquivo teste.txt para os outros usurios (usurios que no so donos e no pertencem ao grupo do arquivo teste.txt). chmod uo+x teste.txt Inclui (+) a permisso de execuo do arquivo teste.txt para o dono e outros usurios do arquivo. chmod a+x teste.txt Inclui (+) a permisso de execuo do arquivo teste.txt para o dono, grupo e outros usurios.

chmod a=rw teste.txt Define a permisso de todos os usurios exatamente (=) para leitura e gravao do arquivo teste.txt.

- 216

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

chgrp
Muda o grupo de um arquivo/diretrio. chgrp [opes] [grupo] [arquivo/diretrio] Onde:

grupo arquivo/diretrio opes -c, --changes -f, --silent -v, --verbose -R, --recursive

Novo grupo do arquivo/diretrio. Arquivo/diretrio que ter o grupo alterado. Somente mostra os arquivos/grupos que forem alterados. No mostra mensagens de erro para arquivos/diretrios que no puderam ser alterados. Mostra todas as mensagens e arquivos sendo modificados. Altera os grupos de arquivos/subdiretrios do diretrio atual.

- 217

Fundamentos de Administrao Linux

chown
Muda dono de um arquivo/diretrio. Opcionalmente pode tambm ser usado para mudar o grupo. chown [opes] [dono.grupo] [diretrio/arquivo] onde:

dono.grupo diretrio/arquivo opes -v, --verbose -f, --supress -c, --changes -R, --recursive subdiretrios.

Nome do dono.grupo que ser atribudo ao diretrio/arquivo. O grupo opcional. Diretrio/arquivo que o dono.grupo ser modificado.

Mostra os arquivos enquanto so alterados. No mostra mensagens de erro durante a execuo do programa. Mostra somente arquivos que forem alterados. Altera dono e grupo de arquivos no diretrio atual e

- 218

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O dono.grupo pode ser especificado usando o nome de grupo ou o cdigo numrico correspondente ao grupo (GID). Voc deve ter permisses de gravao no diretrio/arquivo para alterar seu dono/grupo.
chown joao teste.txt

Muda o dono do arquivo teste.txt para joao.

chown joao.users teste.txt

Muda o dono do arquivo teste.txt para joao e seu grupo para users.
chown -R joao.users *

Muda o dono/grupo dos arquivos do diretrio atual e subdiretrios para joao/users (desde que voc tenha permisses de gravao nos diretrios e subdiretrios).

- 219

Fundamentos de Administrao Linux

Modo de permisso octal


Ao invs de utilizar os modos de permisso +r, -r, etc, pode ser usado o modo octal para se alterar a permisso de acesso a um arquivo. O modo octal um conjunto de oito nmeros onde cada nmero define um tipo de acesso diferente. mais flexvel gerenciar permisses de acesso usando o modo octal ao invs do comum, pois voc especifica diretamente a permisso do dono, grupo, outros ao invs de gerenciar as permisses de cada um separadamente. Abaixo a lista de permisses de acesso octal:

0 - Nenhuma permisso de acesso. Equivalente a -rwx. 1 - Permisso de execuo (x). 2 - Permisso de gravao (w). 3 - Permisso de gravao e execuo (wx). 4 - Permisso de leitura (r). 5 - Permisso de leitura e execuo (rx). 6 - Permisso de leitura e gravao (rw). 7 - Permisso de leitura, gravao e execuo. Equivalente a +rwx.

O uso de um destes nmeros define a permisso de acesso do dono, grupo ou outros usurios. Um modo fcil de entender como as permisses de acesso octais funcionam, atravs da seguinte tabela:
1 = Executar 2 = Gravar 4 = Ler

* Para Dono e Grupo, multiplique as permisses acima por x100 e x10.

e para as permisses de acesso especiais:


1000 = Salva imagem do texto no dispositivo de troca 2000 = Ajusta o bit setgid na execuo 4000 = Ajusta o bit setuid na execuo

Basta agora fazer o seguinte:



- 220

Somente permisso de execuo, use 1. Somente a permisso de leitura, use 4. Somente permisso de gravao, use 2. Permisso de leitura/gravao, use 6 (equivale a 2+4 / Gravar+Ler). Permisso de leitura/execuo, use 5 (equivale a 1+4 / Executar+Ler). Permisso de execuo/gravao, use 3 (equivale a 1+2 / Executar+Gravar). Permisso de leitura/gravao/execuo, use 7 (equivale a 1+2+4 / Executar+Gravar+Ler). Salvar texto no dispositivo de troca, use 1000.
2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Ajustar bit setgid, use 2000. Ajustar bip setuid, use 4000. Salvar texto e ajustar bit setuid, use 5000 (equivale a 1000+4000 / Salvar texto + bit setuid). Ajustar bit setuid e setgid, use 6000 (equivale a 4000+2000 / setuid + setgid).
chmod 764 teste

Vamos a prtica com alguns exemplos:

Os nmeros so interpretados da direita para a esquerda como permisso de acesso aos outros usurios (4), grupo (6), e dono (7). O exemplo acima faz os outros usurios (4) terem acesso somente leitura (r) ao arquivo teste, o grupo (6) ter a permisso de leitura e gravao (w), e o dono (7) ter permisso de leitura, gravao e execuo (rwx) ao arquivo teste. Outro exemplo:
chmod 40 teste

O exemplo acima define a permisso de acesso dos outros usurios (0) como nenhuma, e define a permisso de acesso do grupo (4) como somente leitura (r). Note usei somente dois nmeros e ento a permisso de acesso do dono do arquivo no modificada (leia as permisses de acesso da direita para a esquerda!). Para detalhes veja a lista de permisses de acesso em modo octal no inicio desta seo.
chmod 751 teste

O exemplo acima define a permisso de acesso dos outros usurios (1) para somente execuo (x), o acesso do grupo (5) como leitura e execuo (rx) e o acesso do dono (7) como leitura, gravao e execuo (rwx).

- 221

Fundamentos de Administrao Linux

chmod 4751 teste

O exemplo acima define a permisso de acesso dos outros usurios (1) para somente execuo (x), acesso do grupo (5) como leitura e execuo (rx), o acesso do dono (7) como leitura, gravao e execuo (rwx) e ajusta o bit setgid (4) para o arquivo teste.

- 222

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

umask
A umask (user mask) so 3 nmeros que definem as permisses iniciais do dono, grupo e outros usurios que o arquivo/diretrio receber quando for criado ou copiado. Digite umask sem parmetros para retornar o valor de sua umask atual. A umask tem efeitos diferentes caso o arquivo que estiver sendo criado for binrio (um programa executvel) ou texto . Veja a tabela a seguir para ver qual a mais adequada a sua situao:

--------------------------------------------| | ARQUIVO | DIRETRIO | | |

| UMASK |----------------------| | | Binrio | Texto |

|------------------------------|------------| | | | | | | | | 0 1 2 3 4 5 6 7 | | | | | | | | r-x r-r-x r---x ----x --| | | | | | | | rwrwr-r--w-w----| | | | | | | | rwx rwr-x r--wx -w--x --| | | | | | | |

--------------------------------------------Um arquivo texto criado com o comando umask 012;touch texto.txt receber as permisses -rwrw-r--, pois 0 (dono) ter permisses rw-, 1 (grupo), ter permisses rw- e 2 (outros usurios) tero permisses r--. Um arquivo binrio copiado com o comando umask 012;cp /bin/ls /tmp/ls receber as permisses -r-xr--r-x (confira com a tabela acima). Por este motivo preciso um pouco de ateno antes de escolher a umask, um valor mal escolhido poderia causar problemas de acesso a arquivos, diretrios ou programas no sendo executados. O valor padro da umask na maioria das distribuies atuais 022. A umask padro no sistema Debian a 022 . A umask de grande utilidade para programas que criam arquivos/diretrios temporrios, desta forma podese bloquear o acesso de outros usurios desde a criao do arquivo, evitando recorrer ao chmod.

- 223

Fundamentos de Administrao Linux

A conta root
A conta root tambm chamada de super usurio, este um login que no possui restries de segurana. A conta root somente deve ser usada para fazer a administrao do sistema, e usada o menor tempo possvel. Qualquer senha que criar dever conter de 6 a 8 caracteres, e tambm poder conter letras maisculas e minsculas, e tambm caracteres de pontuao. Tenha um cuidado especial quando escolher sua senha root, porque ela a conta mais poderosa. Evite palavras de dicionrio ou o uso de qualquer outros dados pessoais que podem ser adivinhados. Se qualquer um lhe pedir senha root, seja extremamente cuidadoso. Voc normalmente nunca deve distribuir sua conta root, a no ser que esteja administrando um computador com mais de um administrador do sistema. Utilize uma conta de usurio normal ao invs da conta root para operar seu sistema. Porque no usar a conta root? Bem, uma razo para evitar usar privilgios root por causa da facilidade de se cometer danos irreparveis como root. Outra razo que voc pode ser enganado e rodar um programa Cavalo de Tria -que um programa que obtm poderes do super usurio para comprometer a segurana do seu sistema sem que voc saiba.

- 224

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Gerenciamento de Pacotes

- 225

Fundamentos de Administrao Linux

rpm
A maioria dos pacotes rpm e nomeada no formato: nome-verso-release.arquitetura.rpm

- 226

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Modos Maior e Menor

Algumas abreviaes de opes so parecidas, mas realizam diferentes aes dependendo de sua posio na linha de comando. A distino e feita a partir da primeira opo da esquerda para a direita. O primeiro argumento passado ao comando rpm e chamada argumento modo maior. As demais so as opes de modo menor. Opes de modo maior para o rpm: -i -U -F -V -q -e Ou --install. Ou --update. Ou --freshen. Ou --verify. Ou --query. Ou --erase. Instala o pacote Atualiza ou instala o pacote Atualiza o pacote apenas se o mesmo estiver instalado Verifica o tamanho, MDB, permisses, tipo, integridade, etc. Investiga pacotes e arquivos Desinstala o pacote

Opes de modo menor para o rpm a Aplica em todos os pacotes instalados c Com q lista arquivos de configurao d Com q lista arquivos de documentao f Com q verifica qual pacote instalou o arquivo referido h Mostra progresso visual da instalao i Com q lista informaes sobre o pacote l Com q lista todos os arquivos e diretrios do pacote p Com q indica que a investigao e realizada no arquivo .rpm v Modo descritivo

- 227

Fundamentos de Administrao Linux

Outras opes --nodeps --force --test --requires Instala o pacote sem checar as dependncias Forca a instalao/atualizao Mostra como seria a instalao, mas no instala. Com q, mostra as exigncias para o pacote especificado.

--whatrequires Com q, mostra quais dependem do pacote especificado.

- 228

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Assinaturas de Pacotes

E possvel checar a assinatura de todo pacote distribudo como parte de um projeto. Se a distribuio For Fedora, por exemplo, as chaves so incorporadas ao banco de dados do rpm com o comando.
# rpm --import /usr/share/rhn/RPM-GPG-KEY-FEDORA

Assim, todo pacote copiado do servidor fedora pode ser checado:


# rpm --checksig <nome do pacote>

- 229

Fundamentos de Administrao Linux

Integridade do Pacote A integridade do pacote e checada usando a opo -V. A opo -Va checa todos os pacotes. A anlise feita tendo como referencia os arquivos originais do pacote. Significado dos caracteres retornados pela verificao: . Teste bem sucedido ? O teste no pode ser realizado S O tamanho do arquivo mudou M A permisso ou o tipo do arquivo mudou 5 A soma MD5 do arquivo e diferente D O dispositivo foi modificado L O link simblico foi modificado U O dono do arquivo mudou G O grupo do arquivo mudou T A data do arquivo mudou

- 230

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Arquivos e Diretrios Pertinentes ao rpm /etc/rpmrc o arquivo de configurao do rpm e do rpmbuild. Contem informaes sobre a arquitetura do sistema e os caminhos para macros e diretrios utilizados no manejo de pacotes. Este arquivo tambm encontrado em /usr/lib/rpm/ /usr/lib/rpm/* Diretrio contendo as macros necessrias para o manejo de pacotes. /var/lib/rpm/ Diretrio onde se situam as bases de dados do rpm

- 231

Fundamentos de Administrao Linux

Exemplos de uso do rpm Instalar um pacote:


# rpm -ivh xyz.rpm

Instalar todos os pacotes iniciados por xyz


# rpm -ivh xyz*

Atualizar um pacote:
# rpm -Uvh xyz.rpm

Desinstalar pacote chamado xyz


# rpm -e xyz

Mostra os arquivos contidos no pacote


# rpm -qlp xyz.rpm

Mostra que pacote instalou o arquivo abc.efg


# rpm -qf abc.efg

- 232

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

yum
O yum o gerenciador de pacotes usado por padro no Fedora, assumindo o papel que no Debian e no Ubuntu desempenhado pelo apt-get. O yum foi originalmente desenvolvido pela equipe do Yellow Dog (uma distribuio baseada no Red Hat, destinada a computadores com chips PowerPC) e foi sistematicamente aperfeioado pela equipe da Red Hat, at finalmente assumir o posto atual. Ele trabalha de forma bastante similar ao apt, baixando os pacotes a partir dos repositrios especificados nos arquivos de configurao, junto com as dependncias necessrias. Assim como o apt-get, ele capaz de solucionar conflitos automaticamente e pode ser tambm usado para atualizar o sistema. Essencialmente, o yum e o apt solucionaram o antigo problema das dependncias (um pacote precisa de outro, que por sua vez precisa de um terceiro) que atormentava os usurios de distribuies mais antigas. Existem muitas diferenas entre o Fedora e o Debian, uma delas o formato dos pacotes utilizados: o Fedora utiliza pacotes .rpm, enquanto o debian utiliza pacotes .deb. Ambos tambm utilizam repositrios separados, com pacotes construdos especificamente para cada uma das duas distribuies, de forma que existem algumas diferenas nos nomes dos pacotes e tambm em muitos dos arquivos de configurao do sistema.

- 233

Fundamentos de Administrao Linux

Configurao No yum , voc tem que configurar um arquivo onde estaro as URLs (repositrios) para os pacotes. Esse arquivo, que no apt-get o sources.list, aqui no yum (Fedora) o yum.conf. Nele voc adiciona a entrada das URLs. Exemplo:
# vi /etc/yum.conf [fedora-us-3-core] name=Fedora Core 3 -Fedora US baseurl=http://SERVERNAME/fedora/fedora/$releasever/$basearch/RPMS.os [fedora-us-3-updates] name=Fedora Core 3 Updates -Fedora US baseurl=http://SERVERNAME/fedora/fedora/$releasever/$basearch/RPMS.updates

mirror

mirror

Com

um

repositrio

configurado

voc

pode

comear

brincar!

Alguns comandos do yum:


yum list - Lista todos os pacotes disponveis; yum check-update ou yum list updates - Verifica se h pacotes disponveis para um update ; yum update - Faz o update de seu sistema; yum install <package(s)> - Instala um pacote especfico e suas dependncias; yum info <package> - Apresenta informaes bsicas de um determinado pacote.

- 234

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Para instalar um pacote, use o comando "yum install", como em:


# yum install evince

Para remov-lo posteriormente, use o "yum remove" como em:


# yum remove evince

Diferente do apt-get, onde voc precisa rodar o "apt-get update" antes de cada instalao para atualizar a lista de pacotes, o yum atualiza automaticamente cada vez que uma instalao solicitada, checando os repositrios, baixando os headers dos pacotes e calculando as dependncias antes de confirmar a instalao. Naturalmente, a praticidade tambm tem seu preo, j que torna a instalao de pacotes usando o yum seja mais demorada que usando o apt-get, j que ele precisa baixar e processar todas as informaes antes mesmo de confirmar a instalao do pacote e comear o download.
Voc pode evitar isso de duas maneiras. A primeira editar o arquivo "/etc/yum.conf" e descomentar a linha "metadata_expire=90m" no final do arquivo, alterando o "90m" (que corresponde a 90 minutos) por um valor maior, como em:
metadata_expire=3d

Isso far com que os dados sejam preservados por at trs dias (uma configurao aceitvel para um desktop), fazendo com que as operaes do yum passem a ser bem mais rpidas. A segunda opo adicionar a opo "-C" aos comandos de instalao quando estiver com pressa, o que faz com que o yum ignore a atualizao e simplesmente utilize as informaes armazenadas no cache da ltima vez que foi executado, como em:
# yum -C install k3b

Outro truque o parmetro "groupinstall", que permite instalar grupos inteiros de pacotes de uma s vez. Para instalar o XFCE, por exemplo, voc usaria o:
# yum groupinstall xfce

A partir da, ele ficar disponvel a partir da tela de login, de maneira similar ao que temos ao instalar o pacote "xubuntu-desktop" no Ubuntu. O yum possui tambm um recurso de busca, que bastante til quando voc est procurando por um pacote, mas no sabe o nome exato, ou em casos de pacotes que possuem nomes diferentes em relao a outras distribuies. Use o comando "yum search", seguido por alguma palavra ou expresso que faa parte do nome do pacote ou da descrio, como em:
# yum search lame

Ele retorna um relatrio contendo todos os pacotes relacionados, incluindo o texto de descrio de cada um. Isso resulta geralmente em uma lista relativamente longa. Para fazer uma busca mais restrita, procurando
- 235

Fundamentos de Administrao Linux

apenas nos nomes dos pacotes, use o parmetro "list", como em:
# yum list lame

Ele bem menos falador, retornando apenas os pacotes que possuem "lame" no nome, sem pesquisar nas descries. Uma terceira opo a "provides", que mostra pacotes que incluem um determinado arquivo, pesquisando no no nome ou na descrio, mas sim no contedo dos pacotes. Ela bastante til em casos em que voc precisa de alguma ferramenta ou biblioteca que faz parte de outro pacote maior, como no caso do mcedit (um editor de texto simples, preferido por muitos por ter atalhos fceis de usar), que faz parte do pacote "mc":
# yum provides mcedit

Para atualizar um pacote j instalado, use o comando "yum update", como em:
# yum update totem

O comando "yum install" tambm pode ser usado para atualizar pacotes. A diferena entre o "install" e o "update" que o "update" se limita a atualizar pacotes j instalados. Ao perceber que o pacote solicitado no est instalado, ele exibe um aviso e aborta a instalao. Isso reduz a possibilidade de voc acabar instalando novos pacotes por engano. Assim como no caso do apt-get, o yum pode ser usado tambm para atualizar todo o sistema. Nesse caso, comece usando o parmetro "check-update", que lista as atualizaes disponveis:
# yum check-update

Se usado sem especificar um pacote, o "update" vai atualizar de uma vez s todos os pacotes do sistema, de forma similar ao "apt-get dist-upgrade" do Debian:
# yum update

Existe ainda o comando "yum upgrade", que um pouco mais incisivo, incluindo tambm pacotes marcados como obsoletos (que no existem mais na verso atual). Ele til em casos em que necessrio atualizar uma verso antiga do sistema:
# yum upgrade

- 236

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

dpkg
O dpkg (Debian Package) o programa responsvel pelo gerenciamento de pacotes em sistemas Debian. Sua operao feita em modo texto e funciona atravs de comandos, assim caso deseje uma ferramenta mais amigvel para a seleo e instalao de pacotes, prefira o dselect (que um front-end para o dpkg) ou o apt. O dpkg muito usado por usurios avanados da Debian e desenvolvedores para fins de instalao, manuteno e construo de pacotes.

- 237

Fundamentos de Administrao Linux

Pacotes
Pacotes Debian so programas colocados dentro de um arquivo identificados pela extenso .deb incluindo arquivos necessrios para a instalao do programa, um sistemas de listagem/checagem de dependncias, scripts de automatizao para remoo parcial/total do pacote, listagem de arquivos, etc. Um nome de pacote tem a forma nome-verso_reviso.deb

- 238

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Instalar pacotes
Use o comando: dpkg -i [NomedoPacote] (ou --install) para instalar um pacote em seu sistema. Talvez ele pea que seja instalado algum pacote que depende para seu funcionamento. preciso especificar o nome completo do pacote (com a verso e reviso).

- 239

Fundamentos de Administrao Linux

Dependncias
Dependncias so pacotes requeridos para a instalao de outro pacote. No Debian cada pacote contm um programa com uma certa funo. Por exemplo, se voc tentar instalar o pacote de edio de textos supertext que usa o programa sed, voc precisar verificar se o pacote sed est instalado em seu sistema antes de tentar instalar o supertext, caso contrrio, o pacote supertext pedir o sed e no funcionar corretamente. Note que o pacote supertext apenas um exemplo e no existe (pelo menos at agora :-). O programa dselect faz o trabalho de checagem de dependncias automaticamente durante a instalao dos pacotes. A colocao de cada programa em seu prprio pacote parece ser uma dificuldade a mais para a instalao manual de um certo programa. Mas para os desenvolvedores que mantm os mais de 8710 pacotes existentes na distribuio Debian, um ponto fundamental, porque no preciso esperar uma nova verso do supertext ser lanada para instalar a verso mais nova do pacote sed. Por este motivo tambm uma vantagem para o usurio.

- 240

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Listar pacotes existentes no sistema


Use o comando:
dpkg -l [pacote] (--list) para isto.

Na listagem de pacotes tambm ser mostrado o "status" de cada um na coluna da esquerda, acompanhado do nome do pacote, verso e descrio bsica. Caso o nome do [pacote] seja omitido, todos os pacotes sero listados. recomendado usar "dpkg -l|less" para ter um melhor controle da listagem (pode ser longa dependendo da quantidade de programas instalados).

- 241

Fundamentos de Administrao Linux

Removendo pacotes do sistema


Use o comando:
dpkg -r NomedoPacote (--remove)

Remove um pacote do sistema completamente. Somente necessrio digitar o nome e verso do pacote que deseja remover, no sendo necessrio a reviso do pacote. O comando dpkg -r no remove os arquivos de configurao criados pelo programa.

- 242

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Removendo completamente um pacote


Use o comando:
dpkg -P [NomedoPacote|-a] (--purge)

Para remover um pacote e todos os diretrios e arquivos de configurao criados. No necessrio especificar a reviso do pacote. O comando
dpkg--purge

pode ser usado aps uma remoo normal do pacote (usando dpkg -r). Caso voc use diretamente o comando dpkg --purge, o dpkg primeiro remover o pacote normalmente e aps removido apagar todos os arquivos de configurao. Caso especifique a opo -a (ou sua equivalente --pending) no lugar do nome do pacote, todos os pacotes marcados para remoo sero removidos completamente do sistema. Note que o dpkg --purge somente remove arquivos de configurao conhecidos pelo pacote. Em especial, os arquivos de configurao criados para cada usurio do sistema devem ser removidos manualmente.

- 243

Fundamentos de Administrao Linux

Mostrar descrio do pacote


Use o comando:
dpkg -I NomedoPacote (--info)

Mostra a descrio do pacote. Entre a descrio so mostradas as dependncias do pacote, pacotes sugeridos, recomendados, descrio do que o pacote faz, tamanho e nmero de arquivos que contm.

- 244

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Procura de pacotes atravs do nome de um arquivo


Use o comando:
dpkg -S arquivo (--search)

para saber de qual pacote existente no sistema o arquivo pertence.

- 245

Fundamentos de Administrao Linux

Status do pacote
Use o comando:
dpkg -s pacote (--status)

Verifica o status de um pacote em seu sistema, se esta ou no instalado, configurado, tamanho, dependncias, maintainer, etc.

- 246

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Listando arquivos de um pacote


Use o comando:
dpkg -c arquivo (--contents)

Para obter a listagem dos arquivos contidos no pacote. necessrio digitar o nome completo do pacote. O comando dpkg -c til para listarmos arquivos de pacotes que no esto instalados no sistema.

- 247

Fundamentos de Administrao Linux

Para obter a listagem de arquivos de pacotes j instalados no sistema. Use o comando:


dpkg -L arquivo.

necessrio digitar somente o nome do pacote (sem a reviso e extenso).

- 248

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O utilitrio apt
O apt sistema de gerenciamento de pacotes de programas que possui resoluo automtica de dependncias entre pacotes, mtodo fcil de instalao de pacotes, facilidade de operao, permite atualizar facilmente sua distribuio, etc. Ele funciona atravs de linha de comando sendo bastante fcil de usar. Mesmo assim, existem interfaces grficas para o apt como o synaptic (modo grfico) e o aptitude (modo texto) que permitem poderosas manipulaes de pacotes sugeridos. O apt pode utilizar tanto com arquivos locais como remotos na instalao ou atualizao, desta maneira possvel atualizar toda a sua distribuio Debian via ftp ou http com apenas 2 simples comandos! recomendvel o uso do mtodo apt no programa dselect pois ele permite a ordem correta de instalao de pacotes e checagem e resoluo de dependncias, etc. Devido a sua facilidade de operao, o apt o mtodo preferido para os usurios manipularem pacotes da Debian.

- 249

Fundamentos de Administrao Linux

O arquivo /etc/apt/sources.list
Este arquivo contm os locais onde o apt encontrar os pacotes, a distribuio que ser verificada (stable, testing, unstable, Woody, Sarge) e a seo que ser copiada (main, non-free, contrib, non-US). Woody(Debian 3.0) e Sarge(Debian 3.1) so os nomes das verses enquanto stable e unstable so links para as verses estvel e testing respectivamente. Se desejar usar sempre uma distribuio estvel (como a Woody), modifique o arquivo sources.list e coloque Woody como distribuio. Caso voc desejar estar sempre atualizado mas uma pessoa cuidadosa e deseja ter sempre a ltima distribuio estvel da Debian, coloque stable como verso. Assim que a nova verso for lanada, os links que apontam de stable para Woody sero alterados apontando para Sarge e voc ter seu sistema atualizado. Abaixo um exemplo simples de arquivo /etc/apt/sources.list com explicao das sees:
deb http://www.debian.org/debian stable main contrib non-free deb http://nonus.debian.org/debian-non-US stable non-US

Voc pode interpretar cada parte da seguinte maneira:


deb - Identifica um pacote da Debian. A palavra deb-src identifica o cdigo fonte. http://www.debian.org/debian - Mtodo de acesso aos arquivos da Debian, site e diretrio principal. O caminho pode ser http://, ftp://, file:/. stable - Local onde sero procurados arquivos para atualizao. Voc pode tanto usar o nome de sua distribuio (Woody, Sarge) ou sua classificao (stable, testing ou unstable. Note que unstable recomendada somente para desenvolvedores, mquinas de testes e se voc tem conhecimentos para corrigir problemas. Nunca utilize unstable em ambientes de produo ou servidores crticos, use a stable. main contrib non-us - Sees que sero verificadas no site remoto.

Note que tudo especificado aps o nome da distribuio ser interpretado como sendo as sees dos arquivos (main, non-free, contrib, non-US). As linhas so processadas na ordem que esto no arquivo, ento recomendvel colocar as linhas que fazem referncia a pacotes locais primeiro e mirrors mais perto de voc para ter um melhor aproveitamento de banda. O caminho percorrido pelo apt para chegar aos arquivos ser o seguinte:
http://www.debian.org/debian/dists/stable/main/binary-i386 http://www.debian.org/debian/dists/stable/non-free/binary-i386 http://www.debian.org/debian/dists/stable/contrib/binary-i386

Voc notou que o diretrio dists foi adicionado entre http://www.debian.org/debian e stable, enquanto as sees main, non-free e contrib so processadas separadamente e finalizando com o caminho binary-[arquitetura], onde [arquitetura] pode ser i386, alpha, sparc, powerpc, arm, etc. dependendo do seu sistema. Entendendo isto, voc poder manipular o arquivo sources.list facilmente. OBS: Caso tenha mais de uma linha em seu arquivo sources.list de onde um pacote pode ser instalado,
- 250 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

ele ser baixado da primeira encontrada no arquivo. recomendvel colocar primeiro repositrios locais ou mais perto de voc, como recomendado nesta seo.

- 251

Fundamentos de Administrao Linux

Um modelo de arquivo sources.list


Voc pode copiar o modelo do sources.list abaixo para ser usado em sua distribuio Stable ou personaliza-lo modificando a distribuio utilizada e servidores:
# Arquivos principais da stable deb ftp://ftp.debian.org.br/debian stable main non-free contrib

# Non-US da Stable deb ftp://ftp.debian.org.br/debian-non-US stable/non-US main non-free contrib

# Atualizaes propostas para Stable main e non-US deb ftp://ftp.debian.org.br/debian dists/proposed-updates/ deb ftp://ftp.debian.org.br/debian-non-US dists/proposed-updates/

# Atualizaes de segurana da Stable deb ftp://nonus.debian.org/debian-security stable/updates main

# Ximian um conjunto de pacotes atualizados freqentemente e compatveis # com a distribuio Debian. Entre estes programas esto o Gimp 1.2 e outros # mais atuais e compatveis com a Debian. Para usa-los inclua a seguinte linha no # seu sources.list # deb ftp://spidermonkey.ximian.com/pub/red-carpet/binary/debian-22-i386/ ./

# Kde 1 e 2 # deb ftp://kde.tdyc.com/pub/kde/debian woody main crypto optional qt1apps

- 252

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O arquivo /etc/apt/apt.conf
Voc pode especificar opes neste arquivo que modificaro o comportamento do programa apt durante a manipulao de pacotes (ao invs de especificar na linha de comando). Se estiver satisfeito com o funcionamento do programa apt, no necessrio modifica-lo. Para detalhes sobre o formato do arquivo, veja a pgina de manual do apt.conf. Na pgina de manual do apt-get so feitas referncias a parmetros que podem ser especificados neste arquivo ao invs da linha de comando.

- 253

Fundamentos de Administrao Linux

Copiando a lista de pacotes disponveis


O apt utiliza uma lista de pacotes para verificar se os pacotes existentes no sistema precisam ou no ser atualizados. A lista mais nova de pacotes copiada atravs do comando apt-get update. Este comando pode ser usado com alguma frequncia se estiver usando a distribuio stable e sempre se estiver usando a unstable (os pacotes so modificados com muita frequncia). Sempre utilize o apt-get update antes de atualizar toda a distribuio.

- 254

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Instalando novos pacotes


Use o comando:
apt-get install [pacotes]

Para instalar novos pacotes em sua distribuio. Podem ser instalados mais de um pacotes ao mesmo tempo separando os nomes por espaos. Somente preciso especificar o nome do pacote (sem a verso e reviso). Se preciso, o apt instalar automaticamente as dependncias necessrias para o funcionamento correto do pacote. Quando pacotes alm do solicitado pelo usurio so requeridos para a instalao, o apt mostrar o espao total que ser usado no disco e perguntar ao usurio se ele deseja continuar. Aps a instalao, o pacote ser automaticamente configurado pelo dpkg para ser executado corretamente em seu sistema.

- 255

Fundamentos de Administrao Linux

Removendo pacotes instalado


Use o comando
apt-get remove [pacotes]

Para remover completamente um pacote do sistema. Podem ser removidos mais de um pacote ao mesmo tempo separando os nomes dos pacotes com espaos. O apt-get remove remove completamente o pacote mas mantm os arquivos de configurao, exceto se for adicionada a opo --purge. preciso especificar somente o nome do pacote (sem a verso e reviso).

- 256

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Atualizando sua distribuio


O apt tem uma grande caracterstica: Atualizar toda a sua distribuio de uma forma inteligente e segura. O apt l a listagem de pacotes disponveis no servidor remoto, verifica quais esto instalados e suas verses, caso a verso do pacote seja mais nova que a j instalada em seu sistema, o pacote ser imediatamente atualizado. A cpia dos arquivos pelo apt pode ser feita via FTP, HTTP ou atravs de uma cpia local dos arquivos no disco rgido (um mirror local). Em nenhuma circunstncia os pacotes existentes em seu sistema sero removidos ou sua configurao apagada durante um upgrade na distribuio. Os arquivos de configurao em /etc que foram modificados so identificados e podem ser mantidos ou substitudos por verses existentes nos pacotes que esto sendo instalado, esta escolha feita por voc. Se estiver atualizando a Debian Potato (2.2) para Woody (3.0) (ou verso superior), execute os seguintes comandos antes de iniciar a atualizao:
export LANG=C export LC_ALL=C export LC_MESSAGES=C

Para retornar as variveis de localizao ao valor padro (ingls). Isto necessrio por causa de modificaes no sistema de locales, e o excesso de mensagens de erro do perl causaram alguns problemas em meus testes. Aps isto, a atualizao da distribuio Debian pode ser feita atravs de dois simples comandos:
apt-get update #Para atualizar a lista de pacotes (obrigatrio)

apt-get -f dist-upgrade #Para atualizar a distribuio

A opo -f faz com que o apt verifique e corrija automaticamente problemas de dependncias entre pacotes. Recomendo executar o comando apt-get -f --dry-run dist-upgrade|less Para ver o que vai acontecer sem atualizar a distribuio, se tudo ocorrer bem, retire o --dry-run e v em frente.

- 257

Fundamentos de Administrao Linux

A distribuio usada na atualizao pode ser:


Para a mesma verso que utiliza - Para quem deseja manter os pacotes sempre atualizados entre revises, copiar pacotes que contm correes para falhas de segurana Para uma distribuio stable - Mesmo que o acima, mas quando uma nova distribuio for lanada, o link simblico de stable ser apontado para prxima distribuio, atualizando instantaneamente seu sistema. Para a distribuio testing - Atualiza para a futura distribuio Debian que ser lanada, como a unstable, mas seus pacotes passam por um perodo de testes de 2 semanas na unstable antes de serem copiados para esta. unstable - Verso em desenvolvimento, recomendada somente para desenvolvedores ou usurios que conhecem a fundo o sistema GNU/Linux e saibam resolver eventuais problemas que apaream. A unstable uma distribuio em constante desenvolvimento e podem haver pacotes problemticos ou com falhas de segurana. Aps o perodo de desenvolvimento, a distribuio unstable se tornar frozen. frozen - Verso congelada, nenhum pacote novo aceito e somente so feitas correes de falhas. Aps todas as falhas estarem corrigidas, a distribuio frozen se tornar stable.

A distribuio que ser usada na atualizao pode ser especificada no arquivo /etc/apt/sources.list (veja a seo correspondente acima). Caso o mtodo de atualizao usado seja via HTTP ou FTP, ser necessrio usar o comando:
apt-get clean

Para remover os pacotes copiados para seu sistema (para detalhes veja a seo seguinte).

- 258

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Removendo pacotes baixados pelo apt


Use o comando:
apt-get clean

Para apagar qualquer arquivo baixado durante uma atualizao ou instalao de arquivos com o apt. Os arquivos baixados residem em /var/cache/apt/archives (download completo) e /var/cache/apt/archives/partial (arquivos sendo baixados - parciais). Este local de armazenamento especialmente usado com o mtodo http e ftp para armazenamento de arquivos durante o download para instalao (todos os arquivos so primeiro copiados para serem instalados e configurados). O apt-get clean automaticamente executado caso seja usado o mtodo de acesso apt do dselect.

- 259

Fundamentos de Administrao Linux

Procurando por pacotes atravs da descrio


O utilitrio apt-cache pode ser usado para esta funo. Ele tambm possui outras utilidades interessante para a procura e manipulao da lista de pacotes. Por exemplo, o comando:
apt-cache search clock

mostrar todos os pacotes que possuem a palavra clock na descrio do pacote.

- 260

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Procurando um pacote que contm determinado arquivo


Suponha que algum programa esteja lhe pedindo o arquivo perlcc e voc no tem a mnima ideia de que pacote instalar no seu sistema. O utilitrio auto-apt pode resolver esta situao. Primeiro instale o pacote auto-apt e execute o comando auto-apt update para que ele copie o arquivo Contentsi386.gz que ser usado na busca desses dados. Agora, basta executar o comando:
auto-apt search perlcc

para que ele retorne o resultado:


usr/bin/perlcc interpreters/perl

- 261

Fundamentos de Administrao Linux

O pacote que contm este arquivo o perl e se encontra na seo interpreters dos arquivos da Debian. Para uma pesquisa que mostra mais resultados (como auto-apt search a2ps), interessante usar o grep para filtrar a sada:
auto-apt search a2ps|grep bin/

usr/bin/psmandup

text/a2ps

usr/bin/pdiff text/a2ps usr/bin/psset text/a2ps usr/bin/composeglyphs text/a2ps usr/bin/a2psj text/a2ps-perl-ja usr/bin/a2ps text/a2ps

usr/bin/fixps text/a2ps usr/bin/ogonkify text/a2ps

usr/bin/fixnt text/a2ps usr/bin/card text/a2ps

usr/bin/texi2dvi4a2ps text/a2ps

Sero mostrados somente os binrios, diretrios de documentao, manpages, etc. no sero mostradas.

- 262

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Corrigindo problemas de dependncias e outros erros


Use o comando apt-get -f install (sem o nome do pacote) para que o apt-get verifique e corrija problemas com dependncias de pacotes e outros problemas conhecidos.

- 263

Fundamentos de Administrao Linux

Usando o editor vi

Um editor de textos um programa usado para editar arquivos que so compostos de textos: uma carta, um programa C, ou um arquivo de configurao do sistema. Ainda que existam vrios desses editores disponveis para o Linux, o nico que voc garantidamente vai encontrar em qualquer UNIX ou sistema Linux, o vi (do ingls, "visual editor"). O vi no o editor mais fcil de usar, nem muito autoexplicativo. Entretanto, como o vi to comum em sistemas UNIX/Linux, e muitas vezes necessrio, ele merece um pouco de nossa ateno. Sua escolha por um editor mais uma questo pessoal de gosto e estilo. Muitos usurios preferem o barroco, autoexplicativo e poderoso Emacs - um editor com mais funes que qualquer outro programa no mundo UNIX. Por exemplo, o Emacs tem o seu prprio dialeto da linguagem de programao LISP embutido, e tem muitas outras extenses (uma das quais um tipo Eliza - um programa de inteligncia artificial). No entanto, como o Emacs e seus arquivos de suporte so relativamente grandes, ele no pode ser instalado em alguns sistemas. O vi, por outro lado, pequeno e poderoso, mas mais difcil de usar. Entretanto, uma vez que voc saiba lidar com ele, ser muito fcil. Esta seo apresenta uma introduo ao vi - no vamos discutir todas os seus atributos, somente aqueles que voc precisa saber para comear a us-lo. Voc pode verificar a pgina de manual do vi se estiver interessado em aprender mais sobre o editor e suas funes. Alternativamente, voc pode ler o livro Learning the vi Editor, da editora OReilly and Associates, ou Vi Tutorial, da Specialized Systems Consultants (SSC) Inc.

- 264

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Conceitos.
Enquanto estiver usando o vi, em qualquer momento voc est em um dos trs modos de operao. Esses modos so chamados: modo de comando, modo de insero, e modo ltima linha. Quando voc inicia o vi, voc est no modo de comando. Esse mode permite que voc use comandos para editar arquivos ou para trocar para outros modos. Por exemplo, digitando "x" no modo comando apaga o caractere que est sob o cursor. As teclas de setas movem o cursor pelo arquivo que voc est editando. Geralmente, os comandos usados no modo de comando so de um ou dois caracteres. Voc pode inserir ou editar textos no modo de insero. Quando estiver usando o vi, vai provavelmente usar a maior parte do tempo neste modo. Voc inicia o modo de insero pressionando o comando "i" (de "inserir") no modo de comando. Enquanto estiver em modo de insero, voc pode inserir texto no documento na posio do cursor. Para sair do modo de insero e retornar ao modo de comando, pressione <Esc>. O modo de ltima linha um modo especial que permite alguns comandos estendidos do vi. Ao digitar esses comandos, eles aparecem na ltima linha da tela (da o nome). Por exemplo, quando voc digita ":" no modo de comando, voc pula para o modo de ltima linha e pode usar os comandos "wq" (gravar e sair - do ingls, write and quit), ou "q!" (para sair sem salvar). O modo de ltima linha geralmente usado para comandos do vi que so mais longos do que um caractere. No modo de ltima linha, voc entra um comando de uma linha e pressiona <Enter> para execut-lo.

- 265

Fundamentos de Administrao Linux

Iniciando o vi
A melhor maneira de compreender estes conceitos chamar o vi e editar um arquivo. O exemplo "screens" abaixo mostra algumas linhas de texto, como se a tela tivesse somente seis linhas de altura, ao invs de vinte e quatro. A sintaxe do vi
vi arquivo

onde arquivo o nome do arquivo a editar. Chame o vi digitando:


/home/larry# vi test

para editar o arquivo "test". Voc deve ver algo parecido com:
~ ~ ~ ~ ~ ~ ~ "test" [New file]

A coluna de caracteres "~" indicam que voc est no fim do arquivo. No exemplo, o caractere "_" representa o cursor.

- 266

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Inserindo texto
O programa vi est agora no modo de comando. Insira um texto no arquivo - pressionando "i" voc coloca o editor em modo de insero. A partir da, comece a digitar.

Now is the time for all good men to come to the aid of the party ~ ~ ~ ~ ~ ~ ~

Digite quantas linhas voc quiser (pressionando <Enter> depois de cada uma). Voc pode corrigir erros com a tecla <Back Space>. Para terminar o modo de insero e retornar ao modo de comando, pressione <Esc>. No modo de comando voc pode usar as setas para mover pelo arquivo. (Se voc tem somente uma linha de texto, e tentar usar as teclas para cima e para baixo, vai sentir que vi vai tocar um bip). H muitas maneiras de inserir um texto que no o comando "i". O comando "a" insere um texto comeando aps a posio atual do cursor, ao invs de na posio atual do cursor. Por exemplo, use a seta da esquerda para mover o cursor entre as palavras "good" e "men".

Now is the time for all good_men to come to the aid of the party ~ ~ ~ ~ ~ ~ ~

- 267

Fundamentos de Administrao Linux

Pressione "a" para entrar no modo de insero, digite "wo", e ento pressione <Esc> para retornar ao modo comando.

Now is the time for all good women to come to the aid of the party ~ ~ ~ ~ ~

Para comear a inserir texto na prxima linha, use o comando "o". Pressione "o" e entre uma ou duas linhas mais:

Now is the time for all good humans to come to the aid of the party. Afterwards, well go out for pizza and beer. ~ ~ ~ ~ ~ ~ ~

- 268

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Apagando texto
A partir do modo de comando, o comando "x" apaga o caractere sob o cursor. Se voc pressionar cinco vezes "x", vai chegar em:

Now is the time for all good humans to come to the aid of the party. Afterwards, well go out for pizza and_ ~ ~ ~ ~ ~ ~ ~

- 269

Fundamentos de Administrao Linux

Agora pressione "a" e insira algum texto, seguido de <esc>:

Now is the time for all good humans to come to the aid of the party. Afterwards, well go out for pizza and diet coke. ~ ~ ~ ~ ~ ~ ~

Voc pode apagar linhas inteiras usando o comando "dd" (isso mesmo, pressione "d" duas vezes seguidas), Se o cursor est na segunda linha, e voc pressionar "dd", ver:

Now is the time for all good humans to come to the aid of the party. ~ ~ ~ ~ ~ ~ ~

Para apagar a palavra onde est o cursor, use o comando "dw". Coloque o cursor no incio da palavra good, e digite "dw".

Now is the time for all humans to come to the aid of the party. ~ ~

- 270

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

~ ~ ~ ~ ~

- 271

Fundamentos de Administrao Linux

Modificando texto
Voc pode substituir sees de texto usando o comando "R" (maisculo). Posicione o cursor na primeira letra da palavra "party", pressione "R" e digite a palavra "hungry".

Now is the time for all humans to come to the aid of the hungry. ~ ~ ~ ~ ~ ~ ~

Usando "R" para editar um texto como usar "i" ou "a", mas o "R" sobrescreve, ao invs de inserir. O comando "r" (minsculo) substitui o caractere sob o cursor. Por exemplo, mova o cursor para o incio da palavra "Now" e pressione "r", depois "C", voc ver:

Cow is the time for all humans to come to the aid of the hungry. ~ ~ ~ ~ ~ ~ ~

- 272

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando "~" troca a caixa da letra que est sob o cursor de alta para baixa e vice-versa. Por exemplo, se voc posiciona o cursor no "o", na palavra "Cow" acima e repetidamente pressiona "~", ter:

COW ~ ~ ~ ~ ~ ~ ~

IS THE TIME FOR ALL HUMANS TO COME TO THE AID OF THE HUNGRY.

Nota: em teclados programados para o portugus, voc ter que pressionar "~" seguido da tecla de espao para ter o mesmo efeito.

- 273

Fundamentos de Administrao Linux

Comandos para movimentar o cursor


Voc j sabe como usar as setas para se movimentar pelo documento. Alm disso, voc pode usar os comandos "h", "j", "k" e "l" para mover o cursor para a esquerda, baixo, cima e direita, respectivamente. Isso til quando (por alguma razo) suas teclas de setas no funcionam corretamente. O comando "w" move o cursor para o incio da prxima palavra, o comando "b" para o incio da palavra anterior. O comando "0" (tecla zero) move o cursor para o incio da linha corrente, e o comando "$" para o fim da linha. Quando editar arquivos grandes, voc vai querer avanar e retroceder atravs do arquivo uma tela por vez. Pressionado "Ctrl-F" move o cursor uma tela para a frente, e Ctrl-B, uma tela para trs. Para mover o cursor para o fim do arquivo, pressione "G". Voc tambm pode mov-lo para uma linha arbitrria; por exemplo, digite o comando "10G" para mover o cursor para a linha 10 no arquivo. Para mov-lo para a primeira linha, use "1G". Voc pode combinar comandos de movimentao com outros comandos, como aqueles usados para apagar texto. Por exemplo, o comando "d$" apaga tudo do cursor at o fim da linha; "dG" apaga tudo do cursor at o fim do arquivo, e assim por diante.

- 274

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Salvando arquivos e saindo do vi


Para sair do vi sem salvar mudanas no arquivo, use o comando ":q!". Quando voc pressiona ":", o cursor se move para a ltima linha da tela e voc estar no modo de ltima linha.

COW ~ ~ ~ ~ ~ ~ :_

IS THE TIME FOR ALL HUMANS TO COME TO THE AID OF THE HUNGRY.

No modo de ltima linha, certos comandos estendidos esto disponveis. Um deles o "q!", que sai do vi sem salvar. O comando ":wq" salva o arquivo e sai do vi. O comando "ZZ" (do modo comando, sem os ":") equivalente a ":wq". Se o arquivo no foi modificado desde a ltima vez que foi salvo, o comando s sai, preservando a data de modificao da ltima mudana. Lembre-se que voc deve pressionar <Enter> depois de um comando entrado no modo de ltima linha. Para salvar o arquivo sem sair do vi, use ":w".

- 275

Fundamentos de Administrao Linux

Editando outro arquivo


Para editar outro arquivo, use o comando ":e". Por exemplo, para parar a edio do arquivo "test" e editar o arquivo "foo" no lugar, use o comando:

COW ~ ~ ~ ~ ~ ~

IS THE TIME FOR ALL HUMANS TO COME TO THE AID OF THE HUNGRY.

:e foo_

Se voc usa ":e" sem salvar o primeiro arquivo, voc vai receber a mensagem de erro: No write since last change (":edit!" overrides)

- 276

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Que significa que o vi no quer editar outro arquivo at que voc salve o primeiro. Neste ponto, voc pode usar ":w" para salvar o arquivo original, e depois o ":e", ou pode usar o comando:

COW ~ ~ ~ ~ ~ ~

IS THE TIME FOR ALL HUMANS TO COME TO THE AID OF THE HUNGRY.

:e! foo_

O sinal "!" diz ao vi que voc realmente quer fazer isso - editar o novo arquivo sem salvar as mudanas do primeiro.

- 277

Fundamentos de Administrao Linux

Incluindo outros arquivos


Se voc usar o comando ":r", pode incluir o contedo de outro arquivo no arquivo corrente. Por exemplo, o comando
:r foo.txt

insere o contedo do arquivo "foo.txt" no texto atul na localizao do cursor.

- 278

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Rodando comandos do shell


Voc tambm pode rodar comandos do shell de dentro do vi. O comando ":r!" funciona como ":r", mas ao invs de ler um arquivo, ele insere a sada do comando dado na posio corrente do cursor. Por exemplo, se voc usar o comando:
:r! ls -F

voc vai terminar com:

COW

IS THE TIME FOR ALL HUMANS TO COME TO THE AID OF THE HUNGRY.

letters/ misc/ papers/ ~ ~

Voc tambm pode rodar um comando do shell de dentro do vi sem que o texto seja inserido no arquivo em edio. Por exemplo, se usar o comando
:! ls -F

O "ls -F" ser executado e o resultado mostrado na tela, mas no inserido no arquivo que voc est editando.

- 279

Fundamentos de Administrao Linux

Se voc usar o comando


:shell

O vi inicia uma instncia do shell, permitindo que voc ponha o vi temporariamente em segundo plano, enquanto executa outros comandos. Simplesmente d um logout (usando o comando exit) do shell para retornar ao vi.

- 280

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Ajuda no vi
O vi no fornece muita ajuda interativa (a maioria dos programas Linux tambm no), mas voc sempre pode ler a pgina do manual para o vi. O vi uma fachada para o editor "ex", que manipula muitos dos comandos do modo de ltima linha do vi. Assim, alm de ler a pgina de manual para o vi, veja tambm para o "ex". Voc tambm pode usar o comando ":help" para ver uma ajuda dos comandos bsicos na tela.

- 281

Fundamentos de Administrao Linux

Expresso Regulares

- 282

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Apresentando as Expresses Regulares


Expresses regulares so elementos de texto, palavras chave e modificadores que formam um padro, usado para encontrar e opcionalmente alterar um padro correspondente. Muitos programas suportam o uso de expresses regulares. Resumido, uma composio de smbolos, caracteres com funes especiais, que, agrupados entre si e com caracteres literais, formam uma sequncia, uma expresso. Essa expresso interpretada como uma regra, que indicar sucesso se uma entrada de dados qualquer casar com essa regra, ou seja, obedecer exatamente a todas as suas condies.

- 283

Fundamentos de Administrao Linux

Terminologia
O termo expresses regulares, doravante ser chamado apenas, ER (-rre) para simplificar a leitura. Outras nomenclaturas que podem ser encontradas em outras fontes so expreg, "regexp", "regex" e "RE". Particularmente "regex" a mais conhecida para busca na Internet. As expresses so formadas por smbolos e caracteres literais, esses smbolos so chamados de metacaracteres, pois possuem funes especiais, que veremos detalhadamente adiante. Outro termo que interessante o casar ("match") ato de bater, conferir, combinar, igualar, encontrar, encaixar, equiparar. como em um caixa 24 horas, em que voc s retirar o dinheiro se sua senha digitada casar com aquela j cadastrada no banco. Tambm temos o padro ("pattern"), que nosso objetivo quando fazemos uma ER: casar um padro. Esse padro pode ser uma palavra, vrias, uma linha vazia, um nmero, ou seja, o que quer que precise ser encontrado pela nossa ER. E ainda tem o robozinho, que uma referncia ao compilador e interpretador das expresses regulares, o cdigo que vai ler, checar, entender e aplicar sua ER no texto desejado. Como exemplo, para programas em C o robozinho a biblioteca regex , que faz todo o servio.

- 284

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Na prtica as expresses regulares servem para uma infinidade de tarefas, difcil fazer uma lista, pois elas so teis sempre que voc precisar buscar ou validar um padro de texto que pode ser varivel, como: data horrio nmero IP nome de pessoa endereo de e-mail endereo de Internet nome de usurio e senha declarao de uma funo() dados na coluna N de um texto dados que esto entre <tags></tags> campos especficos de um texto tabulado nmero de telefone, RG, CPF, carto de crdito dados que esto apenas no comeo ou no fim da linha E mais uma infinidade de outros padres que no podem ser especificados com caracteres literais. Um exemplo prtico: voc tem uma lista diria de acesso de usurios que entraram em seu sistema, onde consta em cada linha, o horrio do acesso e o "login" do usurio, algo como: 05:15 ernesto 08:39 ricardo 10:32 patricia 14:59 gabriel 16:27 carla 22:23 marcelo Como fazer para buscar automaticamente apenas os usurios que acessaram o sistema no perodo da tarde (meio-dia s seis)? Voc tem vrias opes, desde procurar uma a uma manualmente at fazer um programa que compare os primeiros caracteres de cada linha, mas falando de algo prtico e rpido, que no exija conhecimentos de programao, a ER simplesmente ^1[2-8].

- 285

Fundamentos de Administrao Linux

Metacaracteres
Os metacaracteres-padro so: . ? * + ^ $ | [ ] { } ( ) \. Cada smbolo desses tem sua funo especfica, que pode mudar dependendo do contexto no qual est inserido, e podemos agreg-los uns com os outros, combinando suas funes e fazendo construes mais complexas. Alm destes, temos outros metacaracteres estendidos que foram criados posteriormente, pois tarefas mais complexas requisitavam funes mais especficas ainda, sua sintaxe de utilizao no a mesma para todos os programas que suportam expresses regulares. So eles:
meta mnemnico

-----------------------------. [] [^] ? * + {} ^ $ \b \ | () \1 ponto lista lista negada opcional asterisco mais chaves circunflexo cifro borda escape ou grupo retrovisor

Os metacaracteres esto divididos em quatro grupos distintos, de acordo com caractersticas comuns entre eles.

- 286

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Representantes
meta mnemnico funo

--------------------------------------------------------------. [...] [^...] lista lista negada ponto um caractere qualquer lista de caracteres permitidos lista de caracteres proibidos

So metacaracteres cuja funo representar um ou mais caracteres. Tambm podem ser encarados como apelidos, links, ou qualquer outra coisa que lhe lembre essa associao entre elementos.

- 287

Fundamentos de Administrao Linux

Ponto Todos os metacaracteres deste tipo casam a posio de um nico caractere, e no mais que um. O ponto o curinga solitrio, que est sempre procura de um casamento, no importa com quem seja. Pode ser um nmero, uma letra, um TAB ou um. Suponhamos uma ER que contenha os caracteres "fala" e o metacaractere ponto, assim: fala.. No texto a seguir, essa ER casaria tudo o que est sublinhado: "Olha, com vocs me pressionando a fala no vai sair natural. Eu no consigo me concentrar na minha fala. Alis, isso um falatrio, pois nunca vi um comercial com tantas falas assim. Vou me queixar com o problemasnafala@medicos.com.br" Nesse pequeno trecho de texto, nossa ER casou 5 vezes, tendo o ponto casado com os seguintes caracteres: " .ts@". O metacaractere ponto casa, entre outros, o caractere ponto. Como exemplos de uso do ponto, em um texto normal em portugus, voc pode procurar palavras que no lembra se acentuou ou no, que podem comear com maisculas ou no, ou que foram escritas errado:
n.o .eclado e.tendido no, nao, ... teclado, Teclado, ... estendido, extendido, eztendido, ...

Ou para tarefas mais especficas, procurar horrio com qualquer separador, ou marcaes ("tags") HTML:
12.45 <.> 12:45, 12 45, 12.45, ... <B>, <i>, <p>, ...

Logo:

O ponto casa com qualquer coisa. O ponto casa com o ponto. O ponto um curinga para casar um caractere.

- 288

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Lista [...] Diferente do ponto, a lista no casa com qualquer caractere. Ela guarda dentro de si os caracteres permitidos para casar, ento algo como [aeiou] limita nosso casamento a apenas letras vogais. No exemplo anterior do ponto, sobre acentuao, tnhamos a ER n.o. Alm dos casamentos desejados, ela muito abrangente, e tambm casa coisas indesejveis como neo, n-o, n5o e n o. Para que nossa ER fique mais especfica, trocamos o ponto pela lista, para casar apenas o no e nao desejados, veja:

n[a]o

- 289

Fundamentos de Administrao Linux

E assim como o n.o, todos os outros exemplos anteriores do ponto casam muito mais que o desejado, justo pela sua natureza "promscua". Por isso que nos exemplos tinha os trs pontinhos. Exatamente, eles indicam que havia mais possibilidades de casamento. Como o ponto casa com qualquer coisa, ele nada especfico. Ento vamos impor limites s ERs:

n[a]o [Tt]eclado e[sx]tendido 12[:. ]45 <[BIP]>

no, nao Teclado, teclado estendido, extendido 12:45, 12.45, 12 45 <B>, <I>, <P>

Mas e aquele ponto na ER da hora, no casa com qualquer coisa?


No. Dentro da lista, todo mundo normal. Ento aquele ponto simplesmente um ponto normal e no um metacaractere. No exemplo de marcao <[BIP]>, vemos que as ERs so sensveis a maisculas e minsculas, ento se quisermos mais possibilidades, basta inclu-las:

<[BIPbip]>

<B>, <I>, <P>, <b>, <i>, <p>

- 290

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Intervalos em listas
Por enquanto, vimos ento que a lista abriga todos os caracteres permitidos em uma posio. No exemplo abaixo vemos uma lista que em uma determinada posio s listar nmeros.
[0123456789].

Ento para casar uma hora, qualquer que ela seja com o formato hh:mm.
[0123456789][0123456789]:[0123

Para evitar esse tipo de listagem extensa, temos somente dentro da lista o conceito de intervalo. Note que se tivermos um trao (-) entre dois caracteres, isso representa todo o intervalo entre eles.
[0123456789] igual a [0-9]

O trao indica um intervalo, 0-9 se l: "de zero a nove". Voltando a nossa ER da hora, poderamos fazer [0-9][0-9]:[0-9][0-9], mas veja que no especfico o bastante, pois permite uma hora como 99:99, que no existe. Qualquer intervalo vlido, como a-z, A-Z, 5-9 , a-f, :-@, etc. Por exemplo, se eu quiser uma lista que case apenas letras maisculas, minsculas e nmeros: [A-Za-z0-9]. Como o trao especial dentro da lista, basta colocar o trao no final da lista, assim [0-9-] casa nmeros ou um trao.

Os colchetes, que so os delimitadores da lista. Como inclu-los dentro dela? O colchete que abre no tem problema, pode coloc-lo em qualquer lugar na lista, pois ela j est aberta mesmo e no se pode ter uma lista dentro da outra. O colchete que fecha deve ser colocado no comeo da lista, ser o primeiro item dela, para no confundir com o colchete que termina a lista. Ento []-] casa um ] ou um -. Vamos juntar tudo e fazer uma lista que case ambos os colchetes e o trao: [][-]. Vamos l-la um por um: o primeiro [ significa que o comeo de uma lista, j dentro da lista, temos um ] literal, seguido de um [ literal, seguido de um - literal, e por ltimo o ] que termina a lista. Nesse intervalo tem : ; < = > ? @ . Os intervalos respeitam a ordem numrica da tabela ASCII, ento basta t-la em mos para ver que um intervalo como A-z no pega somente as maisculas e minsculas como era de se esperar. Para sua comodidade, a tabela est no fim do guia, e nela podemos ver que A-z pega tambm "[\]^_`" e no pega os caracteres acentuados como "". Infelizmente, no h um intervalo vlido para pegarmos todos os caracteres acentuados de uma vez. Mas j j veremos a soluo...

No use o intervalo A-z, prefira A-Za-z

- 291

Fundamentos de Administrao Linux

Dominando caracteres acentuados (POSIX)


As classes de caracteres POSIX so grupos definidos por tipo, e POSIX um padro internacional que define esse tipo de regra. As classes:

classe POSIX

similar

significa

----------------------------------------[:upper:] [:lower:] [:alpha:] [:alnum:] [:digit:] [:xdigit:] [:punct:] [:blank:] [:space:] [:cntrl:] [:graph:] [:print:] [A-Z] [a-z] [A-Za-z] [A-Za-z0-9] [0-9] [0-9A-Fa-f] [.,!?:...] [ \t] [ \t\n\r\f\v] c letras maisculas letras minsculas maisculas/minsculas letras e nmeros nmeros nmeros hexadecimais

sinais de pontuao espao e TAB caracteres brancos aracteres de controle caracteres imprimveis imprimveis e o espao

[^ \t\n\r\f\v] [^\t\n\r\f\v]

Note que os colchetes fazem parte da classe e no so os mesmos colchetes da lista. Para dizer maisculas, fica [[:upper:]], ou seja um [:upper:] dentro de uma lista [].

O [[:upper:]] uma classe POSIX dentro de uma lista.


O [:upper:] o mesmo que A-Z, letras maisculas. Mas a diferena que essas classes POSIX levam em conta a localidade do sistema. Ateno para essa diferena, pois a literatura na lngua inglesa sempre fala sobre esse assunto muito superficialmente, pois eles no utilizam acentuao e deve ser s vezes at difcil para quem est escrevendo o documento entender isso. Como nossa situao inversa, e nossa lngua rica em caracteres acentuados, entender essa diferena de suma importncia. Como estamos no Brasil, geralmente nossas mquinas esto configuradas como tal, usando nmeros no formato nnn.nnn,nn , a data no formato dd/mm/aaaa, medidas de distncia so em centmetros e outras coisinhas que so diferentes nos demais pases.
- 292 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Entre outros, tambm est definido que so caracteres vlidos em nosso alfabeto, bem como . Ento, toda essa volta foi para dizer que o [:upper:] leva isso em conta e inclui as letras acentuadas tambm na lista. O mesmo para o [:lower:], o [:alpha:] e o [:alnum:]. Nos Estados Unidos, [[:upper:]] igual a [A-Z]. No Brasil, [[:upper:]] igual [A-Z...] Por isso para ns essas classes POSIX so importantssimas, e sempre que voc tiver de fazer ERs que procuraro em textos em portugus, prefira [:alpha:] em vez de A-Za-z, sempre. Ento refazendo a ER que casava maisculas, minsculas e nmeros, temos: [[:upper:][:lower:][:digit:]], ou melhor: [[:alpha:][:digit:]], ou melhor ainda: [[:alnum:]]. Todas so equivalentes. A lista o nico metacaractere que tem suas prprias regras, funcionando como uma minilinguagem dentro das expresses regulares. Logo

A lista casa com quem ela conhece e tem suas prprias regras. Dentro da lista, todo mundo normal. Dentro da lista, trao indica intervalo. Um - literal deve ser o ltimo item da lista. Um ] literal deve ser o primeiro item da lista. Os intervalos respeitam a tabela ASCII (no use A-z). [:classes POSIX:] incluem acentuao, A-Z no.

- 293

Fundamentos de Administrao Linux

Lista negada: [^...]


A lista negada exatamente igual lista, podendo ter caracteres literais, intervalos e classes POSIX. Tudo o que se aplica a lista normal, se aplica negada tambm. A nica diferena que ela possui lgica inversa, ou seja, ela casar com qualquer coisa, fora os componentes listados. Observe que a diferena em sua notao que o primeiro caractere da lista um circunflexo, ele indica que esta uma lista negada. Ento se [0-9] so nmeros, [^0-9] qualquer coisa fora nmeros. Pode ser letras, smbolos, espao em branco, qualquer coisa, menos nmeros. Se voc diz "qualquer coisa fora nmeros", deve haver outra coisa no lugar dos nmeros e no simplesmente "se no houver nmeros". Ento essa ER no casaria uma linha vazia por exemplo.

"Qualquer coisa fora alguns caracteres" no inclui "nenhum caractere".


Como o trao e o colchete que fecha, o circunflexo especial, ento para colocarmos um ^ literal em uma lista, precisamos p-lo em qualquer posio que no seja a primeira. Assim [A-Z^] casa maisculas e o circunflexo e [^A-Z^] casa tudo fora isso.

- 294

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

As classes POSIX tambm podem ser negadas, ento [^[:digit:]] casa "qualquer coisa fora nmeros". A lista negada muito til quando voc sabe exatamente o que no pode ter em uma posio, como um erro ortogrfico ou de escrita. Por exemplo, como mandam as regras da boa escrita, sempre aps caracteres de pontuao como a vrgula ou o ponto, devemos ter um espao em branco os separando do resto do texto. Ento vamos procurar por qualquer coisa que no o espao aps a pontuao:
[:;,.!?][^ ]

Ou, ainda, explicitando melhor nosso objetivo:


[[:punct:]][^ ]

Logo

Uma lista negada segue todas as regras de uma lista normal. Um ^ literal no deve ser o primeiro item da lista. [:classes POSIX:] podem ser negadas. A lista negada sempre deve casar algo.

- 295

Fundamentos de Administrao Linux

Quantificadores
meta mnemnico funo

--------------------------------------------------------------? * + {n,m} opcional zero ou um

asterisco zero, um ou mais mais chaves um ou mais de n at m

Servem para indicar o nmero de repeties permitidas para a entidade imediatamente anterior. Essa entidade pode ser um caractere ou metacaractere.

Em outras palavras, eles dizem a quantidade de repeties que o tomo anterior pode ter, quantas vezes ele pode aparecer. Os quantificadores no so quantificveis, ento dois deles seguidos em uma ER um erro, salvo quantificadores, que veremos depois.

- 296

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Opcional
O opcional um quantificador que pode ter ou no a ocorrncia da entidade anterior, pois ele a repete 0 ou 1 vez. Por exemplo, a ER 6? significa zero ou uma ocorrncia do nmero 6. Se tiver um 6, o casamento efetuado. Se no tiver, tambm. Isso torna o 6 opcional (da o nome), que tendo ou no, a ER casa. Veja mais um exemplo, o plural. A ER ondas? tem a letra s marcada como opcional, ento ela casa onda e ondas.

Cada letra normal um tomo da ER, ento o opcional aplicado somente ao s e no palavra toda.
fala[r!]? falar, fala!, fala

Logo

O opcional opcional. O opcional til para procurar palavras no singular e plural. Podemos tornar opcionais caracteres e metacaracteres. Leia a ER tomo por tomo, da esquerda para a direita. Leia a ER, entenda o todo e analise as possibilidades.

- 297

Fundamentos de Administrao Linux

Asterisco
No asterisco a entidade anterior pode aparecer em qualquer quantidade.
6*0 bi*p b[ip]* 0, 60, 660, 6660, ..., 666666666660, ... bp, bip, biip, biiip, biiiip... b, bi, bip, biipp, bpipipi, biiiiip, bppp, ...

Como HTML sempre um timo exemplo, voltamos ao nosso exemplo das marcaes, que podem ter vrios espaos em branco aps o identificador, ento <b > e </b > so vlidos. Vamos colocar essa condio na ER:
</?[BIPbip] *> </B>, </B >, </B >, ..., <p >, ...

Note que agora com o asterisco, nossa ER j no tem mais um nmero finito de possibilidades. Vejamos como fica a leitura dessa ER: um <, seguido ou no de uma /, seguido de: ou B, ou I, ou P, ou b , ou i, ou p, seguido ou no de vrios espaos, seguido de >.

No confunda! Os curingas usados na linha de comando para especificar nomes de arquivos, como *.txt, relatorio.{txt,doc} e guia-??.html no so expresses regulares. So curingas especficos de nomes de arquivo, e apesar de parecidos, so outra coisa e os significados de seus smbolos so diferentes dos das expresses, ento o melhor que voc faz agora esquecer esses curingas, seno eles podem confundi-lo e atrapalhar seu aprendizado.

- 298

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Vimos at agora que temos dois metacaracteres extremamente abrangentes, como o ponto (qualquer caractere) e o asterisco (em qualquer quantidade). E se juntarmos os dois? Teremos qualquer caractere, em qualquer quantidade. Assim, uma ER que seja simplesmente .* sempre ser vlida e casar mesmo uma linha vazia.

O curinga .* qualquer coisa!


Assim, temos aqui o curinga das ERs, uma carta para se usar em qualquer situao. muito comum ao escrever uma expresso regular, voc definir alguns padres que procura, e l no meio, em uma parte que no importa, pode ser qualquer coisa, voc coloca um .* e depois continua a expresso normalmente. Por exemplo, para procurar ocorrncia de duas palavras na mesma linha, relatrio.*amanh serve para achar aquela linha maldita em que lhe pediram um trabalho "pra ontem". Ou, ainda, procurar acessos de usurios em uma data qualquer: 22/11/2001.*login. Logo

O asterisco repete em qualquer quantidade. Quantificadores so gulosos. O curinga .* o tudo e o nada, qualquer coisa.

- 299

Fundamentos de Administrao Linux

Mais +
O mais tem funcionamento idntico ao do asterisco, tudo o que vale para um, se aplica ao outro. A nica diferena que o mais no opcional, ento a entidade anterior deve casar pelo menos uma vez, e pode ter vrias. Sua utilidade quando queremos no mnimo uma repetio.
6+0 bi+p b[ip]+ 60, 660, 6660, ..., 666666660, ... bip, biip, biiip, biiiip... bi, bip, biipp, bpipipi, biiiiip, bppp, ...

Logo

O mais repete em qualquer quantidade, pelo menos uma vez. O mais igual ao asterisco, s mais exigente.

- 300

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Chaves: o controle {n,m}


As chaves so a soluo para uma quantificao mais controlada, onde se pode especificar exatamente quantas repeties se quer da entidade anterior. Basicamente, {n,m} significa de n at m vezes, assim algo como 6{1,4} casa 6, 66, 666 e 6666. Temos tambm a sintaxe relaxada das chaves, em que podemos omitir a quantidade final, ou ainda, especificar exatamente um nmero:
{1,3} {3,} {0,3} {3} {1} {0,1} {0,} {1,} de 1 a 3 pelo menos 3 (3 ou mais) at 3 exatamente 3 exatamente 1 zero ou 1 (igual ao opcional)

zero ou mais (igual ao asterisco) um ou mais (igual ao mais)

Note que o {1} tem efeito nulo, pois 6{1} igual a 6. Mas observe os trs ltimos exemplos. Com as chaves, conseguimos simular o funcionamento de outros trs metacaracteres, o opcional, o asterisco e o mais. Logo Chaves so precisas. Voc pode especificar um nmero exato, um mnimo, um mximo, ou uma faixa numrica. As chaves simulam o *, o + e a ?.

- 301

Fundamentos de Administrao Linux

ncoras
Por que ncora? Porque eles no casam caracteres ou definem quantidades, ao invs disso eles marcam uma posio especfica na linha. Assim, eles no podem ser quantificados, ento o mais, o asterisco e as chaves no tm influncia sobre ncoras.
meta mnemnico funo

--------------------------------------------------------------^ $ \b circunflexo cifro borda incio da linha fim da linha incio ou fim de palavra

- 302

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Circunflexo: o incio ^
O circunflexo marca o comeo de uma linha. Nada mais. Diferentemente de sua funo na lista negada, apenas dentro da lista (e no comeo), fora dela ele a ncora que marca o comeo de uma linha, veja:
^[0-9]

Isso quer dizer: a partir do comeo da linha, case um nmero, ou seja, procuramos linhas que comeam com nmeros. O contrrio seria:
^[^0-9]

Ou seja, procuramos linhas que no comeam com nmeros. O primeiro circunflexo a ncora e o segundo o "negador" da lista. E como no poderia deixar de ser, claro que o circunflexo como marcador de comeo de linha s especial se estiver no comeo da ER. No faz sentido procurarmos uma palavra seguida de um comeo de linha, pois se tiver uma palavra antes do comeo de uma linha, ali no o comeo da linha! Desse modo, a ER:
[0-9]^

Casa um nmero seguido de um circunflexo literal, em qualquer posio da linha. Com isso em mente, voc pode me dizer o que casa a ER: ^^

Logo

Circunflexo um nome chato, porm chapeuzinho legal. Serve para procurar palavras no comeo da linha. S especial no comeo da ER.

- 303

Fundamentos de Administrao Linux

Cifro: $
Similar e complementar ao circunflexo, o cifro marca o fim de uma linha e s vlido no final de uma ER. Como o exemplo anterior, [0-9]$ casa linhas que terminam com um nmero.
^$

A ER procura por linhas vazias. Essa uma tarefa comum nas mais diversas situaes. Podemos tambm casar apenas os cinco ltimos caracteres de uma linha. .....$ Ou, ainda, que tal casarmos linhas que tenham entre 20 e 60 caracteres? ^.{20,60}$ Logo

Serve para procurar palavras no fim da linha. S especial no final da ER. cifro e no dlar.

- 304

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Borda: a limtrofe \b
A outra ncora que temos a borda, que como o prprio nome j diz, marca uma borda, mais especificamente, uma borda de palavra. Ela marca os limites de uma palavra, ou seja, onde ela comea e/ou termina. Muito til para casar palavras exatas, e no partes de palavras. Veja como se comportam as ERs nas palavras dia, diafragma, radial, melodia e bom-dia!: dia dia, diafragma, radial, melodia, bom-dia! \bdia dia, diafragma, bom-dia! dia\b dia, melodia, bom-dia! \bdia\b dia, bom-dia! Assim vimos que a borda fora um comeo ou termino de palavra. Entenda que "palavra" aqui um conceito que engloba [A-Za-z0-9_] apenas, ou seja, letras, nmeros e o sublinhado. Por isso \bdia\b tambm casa bom-dia! pois o trao e a exclamao no so parte de uma palavra. Dependendo do aplicativo, o sublinhado no faz parte de uma palavra. Logo

A borda marca os limites de uma palavra O conceito "palavra" engloba letras, nmeros e o sublinhado A borda til para casar palavras exatas e no parciais

- 305

Fundamentos de Administrao Linux

Outros
meta mnemnico funo

--------------------------------------------------------------\c | (...) \1...\9 escape ou grupo retrovisor torna literal o caractere c ou um ou outro delimita um grupo texto casado nos grupos 1...9

Os outros metacaracteres, tm funes especficas e no relacionadas entre si, portanto no podem ser agrupados em outra classe fora a tradicional "outros". Mas ateno, isso no quer dizer que eles so inferiores, pelo contrrio, o poder das ERs multiplicado com seu uso e um mundo de possibilidades novas se abre a sua frente.

- 306

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Escape: \ No caso da necessidade do uso do * literal, o que fazer? Se voc est atento, lembrar que a lista tem suas prprias regras e que dentro da lista, todo mundo normal! Para no precisar ficar toda hora criando listas de um nico componente s para tirar seu valor especial, temos o metacaractere \, que "escapa" um metacaractere. Escapando, \* igual a [*] que igual a um asterisco literal. Similarmente podemos escapar todos os metacaracteres j vistos: \., \[ , \], \?, \+ , \{, \}, \^ e \$. E para voc ver como so as coisas, o escape to poderoso que pode escapar a si prprio! O \\ casa uma barra invertida \ literal. Escapar um circunflexo ou cifro somente necessrio caso eles estejam em suas posies especiais, como casar o texto ^destaque^, em que ambos os circunflexos so literais, mas o primeiro ser considerado uma ncora de comeo de linha caso no esteja escapado. Logo:

O escape escapa um metacaractere, tirando seu poder. \* = [*] = asterisco literal. O escape escapa o escape, escapando-se a si prprio simultaneamente.

- 307

Fundamentos de Administrao Linux

Ou: |
muito comum em uma posio especfica termos mais de uma alternativa possvel. boa-tarde|boa-noite O ou, representado pela barra vertical |, serve para esses casos em que precisamos dessas alternativas. Essa ER se l: "ou boa-tarde, ou boa-noite", ou seja "ou isso ou aquilo". Lembre que a lista tambm uma espcie de ou, mas apenas para uma letra, ento: [gpr]ato e gato|pato|rato So similares, embora nesse caso em que apenas uma letra muda entre as alternativas, a lista a melhor escolha. Em outro exemplo, o ou til tambm para casarmos um endereo de Internet, que pode ser uma pgina, ou um stio FTP http://|ftp://

Logo

O ou indica alternativas. Lista para um caractere, ou para vrios. O grupo multiplica o poder do ou.

- 308

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Grupo: (...)
Dentro de um grupo podemos ter um ou mais caracteres, metacaracteres e inclusive outros grupos! Como em uma expresso matemtica, os parnteses definem um grupo, e seu contedo pode ser visto como um bloco na expresso. Todos os metacaracteres quantificadores que vimos anteriormente, podem ter seu poder ampliado pelo grupo, pois ele lhes d mais abrangncia. E o ou, pelo contrrio, tem sua abrangncia limitada pelo grupo, e pode parecer estranho, mas essa limitao que lhe d mais poder. Note que o grupo no altera o sentido da ER, apenas serve como marcador. Podemos criar subgrupos tambm, ento imagine que voc esteja procurando o nome de um supermercado em uma listagem e no sabe se este um mercado, supermercado ou um hipermercado.
(super|hiper)mercado

Consegue casar as duas ltimas possibilidades, mas note que nas alternativas super e hiper temos um trecho per comum aos dois, ento poderamos colocar apenas as diferenas su e hi:
(su|hi)permercado

Precisamos tambm casar apenas o mercado sem os aumentativos, ento temos de agrup-los e torn-los opcionais:
((su|hi)per)?mercado

No caso de minimercado:
(mini|(su|hi)per)?mercado

Logo

Grupos servem para agrupar. Grupos so muito poderosos. Grupos podem conter grupos. Grupos so quantificveis.

- 309

Fundamentos de Administrao Linux

Retrovisor: \1 ... \9
J vimos o poder do grupo, e vrias utilidades em seu uso. Ao usar um (grupo) qualquer, voc ganha um brinde, e muitas vezes nem sabe. O brinde o trecho de texto casado pela ER que est no grupo, que fica guardado em um cantinho especial, e pode ser usado em outras partes da mesma ER! Como o nome diz, retrovisor porque ele "olha pra trs", para buscar um trecho j casado. Isso muito til para casar trechos repetidos em uma mesma linha. Veja bem, o trecho de texto, e no a ER. Como exemplo, em um texto sobre passarinhos, procuramos o quero-quero. Podemos procurar literalmente por quero-quero , mas vamos usar o grupo e o retrovisor para fazer isso:
(quero)-\1

Ento o retrovisor \1 uma referncia ao texto casado do primeiro grupo, nesse caso quero. O retrovisor pode ser lembrado tambm como um link ou um ladro, pois copia o texto do grupo. Mas esse \1 no o tal do escape? Acima vimos que o escape \ servia para tirar os poderes do metacaracter seguinte. Ento, a essa definio agora inclumos: a no ser que este prximo caractere seja um nmero de 1 a 9, ento estamos lidando com um retrovisor. Podemos ter no mximo 9 retrovisores por ER, ento \10 o retrovisor nmero 1 seguido de um zero. Alguns aplicativos novos permitem mais de nove. O verdadeiro poder do retrovisor quando no sabemos exatamente qual texto o grupo casar. Vamos estender nosso quero para "qualquer palavra":
([A-Za-z]+)-\1

Mais detalhes Como j dito, podemos usar no mximo nove retrovisores.


(lenta)(mente) \2 \1 ((band)eira)nte \1 \2a in(d)ol(or) sem \1\2 lentamente mente lenta bandeirante bandeira banda indolor sem dor

((((a)b)c)d)-1 = \1,\2,\3,\4 abcd-1 = abcd,abc,ab,a

Conte somente os parnteses que abrem, da esquerda para a direita. Este vai ser o nmero do retrovisor. E o contedo o texto casado pela ER do parntese que abre at seu correspondente que fecha.

O retrovisor referencia o texto casado e no a ER do grupo.


Nos nossos exemplos acima ocorre a mesma coisa porque a ER dentro do grupo j o prprio texto, sem
- 310 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

metacaracteres. Veja, entretanto, que ([0-9])\1 casa 66 mas no 69. Apenas como lembrete, algumas linguagens e programas, alm da funo de busca, tm a funo de substituio. O retrovisor muito til nesse caso, para substituir "alguma coisa" por "apenas uma parte dessa coisa", ou seja, extrair trechos de uma linha.

- 311

Fundamentos de Administrao Linux

Logo

O retrovisor s funciona se usado com o grupo. O retrovisor serve para procurar palavras repetidas. Numeram-se retrovisores contando os grupos da esquerda para a direita. Temos no mximo 9 retrovisores por ER.

- 312

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Linguagens de programao
Vrias linguagens de programao possuem suporte s expresses regulares, seja nativo, como mdulo importvel, como biblioteca carregvel, como objeto instancivel, como ... Ou seja, opes h vrias. Como cada linguagem tem sua maneira especfica de receber e tratar ERs, vamos dar uma geral nas mais usadas.

- 313

Fundamentos de Administrao Linux

Awk
caracterstica como fazer

-------------------------------------busca substituio diviso ER crua ignore M/m global funo match funes sub, gensub funo split /entre barras/ varivel IGNORECASE funo gsub, opo "g"

AWK uma linguagem antiga (1977) que combina processamento de texto com estruturas de uma linguagem genrica, possuindo condicionais, operaes aritmticas e afins. Temos cinco funes que utilizam ERs no AWK: match, sub, gsub, gensub e split. Em todas elas, para ignorar a diferena entre maisculas e minsculas, basta definir algum valor para a varivel IGNORECASE, que vazia por padro e, para colocar a ER no formato cru basta coloc-la entre /barras/. As funes sub e gsub no retornam o texto alterado, e sim o nmero de substituies efetuadas. E ainda, o texto alterado gravado diretamente na prpria varivel que continha o texto original. Uma grande limitao de ambas as funes que elas no tm suporte a retrovisores.
texto = "a1b2c3" n = gsub("[0-9]", ".", texto) print n,texto

Esse trecho de cdigo imprime 3 a.b.c., ou seja, o nmero de substituies efetuadas, seguido do texto modificado. A diferena entre as duas que sub troca s a primeira ocorrncia e gsub global, troca todas. Mas como essas funes so muito chatas de usar, no AWK da GNU tem uma melhor, a gensub. Esta normal, retorna o texto modificado, no regrava a varivel com o texto original, a globalidade do comando definida com um argumento (g ou um nmero), e tem suporte a retrovisores. Veja um exemplo completo:
print gensub(/(\w)/, "\\1.", "g", "abc")

A ER \w, que casa um caractere componente de uma palavra, est no formato cru, alm de agrupada. A substituio do trecho casado feita pelo contedo do grupo 1, seguido de um ponto literal. Note que o escape do nmero um est duplicado, pois como apenas a ER pode ser colocada no formato cru, esse texto primeiro ser interpretado pela linguagem, para depois ser mandado funo gensub. Segue o g que indica que uma substituio global e por fim, o texto original a ser alterado. O resultado da substituio a.b.c., O AWK da GNU encontrada no repositrio da GNU:

- 314

http://www.gnu.org/software/gawk/gawk.html news://comp.lang.awk
2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

grep
O comando

grep o mais comum para realizar buscas por expresses regulares em textos. Carcteres especiais em expresses regulares: ^ Comeo de linha $ Fim de linha . Qualquer carcter * Qualquer sequencia de zero ou mais caracteres [ ] Qualquer carcter que esteja presente nos colchetes Exemplos - Mostra apenas as linhas que comeam com o carcter # do arquivo: /etc/lilo.conf.
$ grep '^#' /etc/lilo.conf

Mostra linhas de /etc/lilo.conf que contenham o termo hda ou hdb:


$ grep 'hda[ab]' /etc/lilo.conf

- 315

Fundamentos de Administrao Linux

Mais opes de grep: -c Conta as linhas contendo o padro. -i Ignora a diferena entre maisculas ou minsculas. -f Usa a expresso regular contida no arquivo indicado por essa opo. -n Procurar somente na linha indicada por essa opo. -v Mostra todas as linhas exceto a que corresponder ao padro. Exemplo: Mostrar apenas linhas contendo caracteres (inverter a busca por linhas que no possuam caracteres)
$ grep -v '^$' /etc/lilo.conf

- 316

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

sed
O comando sed mais utilizado para procurar e substituir padres em textos, mostrando o resultado em stdout. Sintaxe do sed: sed [opes] comando e expresso regular [arquivo original] No sed, a expresso regular fica circunscrita entre barras /. Exemplo:
$ sed -e '/^#/d' /etc/lilo.conf

Mostra o arquivo /etc/lilo.conf sem linhas comeadas por # (linhas de comentrio). A letra d ao lado da expresso regular e um comando sed que indica a excluso de linhas contendo o respectivo padro. Exemplo: substituir o termo hda por sdb: $ sed -e 's/hda/sdb/g' /etc/lilo.conf

- 317

Fundamentos de Administrao Linux

Exemplo: Entre as linhas 14 e 21, substituir a palavra runlevel por rl:


$ sed -n -e '14,21s/runlevel/rl/p' /etc/inittab # These are the default rls in Slackware: # 2 = unused (but configured the same as rl 3) # 3 = multiuser mode (default Slackware rl) # 5 = unused (but configured the same as rl 3)

Devido a opo -n, as linhas que no contem a expresso regular no foram mostradas. Opes comuns de sed: -e Executa a expresso e comando a seguir. -f L expresses e comandos do arquivo indicado pela opo. -n No mostrar as linhas que no correspondam a expresso. Comandos comuns do sed: s Substituir. d Apagar a linha. r Insere o contedo do arquivo indicado na ocorrncia da expresso. w Escreve a sada no arquivo indicado. g Substitui todas as ocorrncias da expresso na linha atual.

- 318

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Diferenas de Metacaracteres entre aplicativos


prog opc mais chaves borda ou grupo

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

awk

()

ed

\?

\+

\{,\}

\b

\|

\(\)

egrep

{,}

\b

()

emacs

\b

\|

\(\)

expect

()

find

\b

\|

\(\)

gawk

{,}

\<\>

()

grep

\?

\+

\{,\}

\b

\|

\(\)

javascript

{,}

\b

()

lex

{,}

()

mawk

()

perl

{,}

\b

()

php

{,}

\b

()

- 319

Fundamentos de Administrao Linux

python

{,}

\b

()

sed

\?

\+

\{,\}

\<\>

\|

\(\)

tcl

()

vbscript

{,}

\b

()

vim

\=

\+

\{,}

\<\>

\|

\(\)

NOTA1: . * [] [^] ^ $ e \ so iguais pra todos.

- 320

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Resumo dos Metacaracteres e seus detalhes


meta mnemnico dicas

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~

. ponto [] lista

curinga de um caractere dentro todos so normais, trao intervalo ASCII, [:POSIX:] tem acentuao

[^] lista negada sempre casa algo, [^[:POSIX:]] ? opcional * asterisco guloso, 0 ou 1, pode ter ou no guloso, 0 ou mais, repete em qualquer quantidade + mais guloso, 1 ou mais, repete em qualquer quantidade, pelo menos uma vez {,} chaves guloso, nmero exato, mnimo, mximo, ou uma faixa numrica ^ circunflexo casa o comeo da linha,

especial no comeo da ER $ cifro casa o fim da linha, especial no fim da ER \b borda limita uma palavra (letras, nmeros e sublinhado) \ escape escapa um meta, tira seu poder escapa a si mesmo \\ | ou indica alternativas, poder multiplicado pelo grupo () grupo agrupa, quantificvel,

- 321

Fundamentos de Administrao Linux

pode conter outros grupos \1 retrovisor usado com o grupo, mximo 9,

conta da esquerda para direita .* curinga ?? opcional qualquer coisa, o tudo e o nada no-guloso, 0 ou 1, casa o mnimo possvel *? asterisco no-guloso, 0 ou mais,

casa o mnimo possvel +? mais no-guloso, 1 ou mais, casa o mnimo possvel {}? chaves no-guloso, numrico, casa o mnimo possvel

- 322

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Caracteres ASCII imprimveis


32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 ` a b c d e f g h i j k l m n o p q r s t u v w x y z { 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 o 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253

- 323

Fundamentos de Administrao Linux

60 61 62 63

< = > ?

92 93 94 95

\ ] ^ _

124 125 126 161

| } ~

190 191 192 193

222 223 224 225

254 255

- 324

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Backup

Os Backups so parte importante da administrao de qualquer servidor. Por mais confivel que seja a mquina, desastres acontecem, sem falar na possibilidade de erro humano. Diferente de um desktop onde voc pode simplesmente fazer uma imagem do seu HD usando ferramentas de particionamento, nos servidores os backups na maioria das vezes, so feito a quente, isto , com o servidor em pleno funcionamento, sem a possibilidade de uma parada e com a carga total. A dificuldade cresce quando alm dos arquivos e pastas, tambm se faz necessrio salvar arquivos de configurao, bases de dados do MySQL entre outros. As principais pastas que recomendamos o backup so: /var/www: Em servidor web, a pasta com as pginas sempre o diretrio mais importante, j que nele que residem a maior parte dos arquivos dos usurios. /var/lib/mysql: Este o diretrio padro para as bases de dados do MySQL, que em muitos casos so to ou mais importantes que as pastas dos sites propriamente ditos. Embora seja associado ao uso em servidores web, o MySQL pode ser usado para os mais diversos tipos de tarefas. /home: Se voc configurou os virtuais hosts do Apache para utilizarem pastas dentro do diretrio home dos usurios, ele assume o posto de diretrio essencial, no lugar da pasta /var/www. O home tambm importante caso seja usado para armazenar o spool de e-mails, no caso de servidores de arquivos ou em servidores de acesso remoto. /etc: importante por conter as configuraes do servidor, todas concentradas na pasta /etc, caso contrrio voc vai passar trabalho tentando se lembrar das configuraes, contas de usurios e outras informaes ao reconfigurar o servidor aps algum desastre. /var/log: Os logs do sistema tambm so importantes. Em muitos casos existem normas administrativas ou at mesmo normas legais que tornam obrigatrio a manuteno das logs de acesso por longos perodos, da a necessidade de inclu-los.
- 325

Fundamentos de Administrao Linux

A documentao do servidor de suma importncia na hora da recupeo, mantenha sempre atualizada sua documentao tais como: tamanho e nome das parties (VGS), relao dos discos e seus tamanhos, nome dos file systems, listagem de usurios, cron etc.. Aps definirmos os diretrios, falta definir o tipo de mdia qu iremos utilizar. Antigamente as unidades de fita eram as mais utilizadas para bacups de grande volume. Suas principais caractersticas eram a grande capacidade, combinada coma confiabilidade a um custo relativamente baixo. Utilitrios como o tar foram originalmente desenvolvidos para facilitarem os backups em fita, gerando um nico arquivo contendo todos os dados, que ra ento gravado na fita de forma sequencial. Um exemplo do tar
# tar cvf /dev/sto /var/www

Isso prtico enquanto pudermos armazenar os backups dirios em uma nica fita, ou na possibilidade de ter uma unidade com carregador automtico. Claro sempre podemos dividir o backup em vrios volumes e salv-lo em fitas separadas, mas aumenta a complexidade de administrao e o custo. J podemos encontrar no mercado solues com mdias de at 800Gb reais ( ou 1.6TB comprimidos, mas ainda sim o seu custa bem elevado, o que torna a soluo de cpia em HDs uma opo muito mais atrativa, j que existem no mercado HDs de 1 TB a preos competitivos. Surge ento o NAS (Network-Attached Storage), um servidor de arquivos dedicado, que frequentemente utiliza vrios HDs em RAID (Redundant Array of Inexpensive Disks) para recebimento dos arquivos. Com isso todo o trabalho manual de trocar as fitas ou plugar e desplugar HDs externos eliminado e as rotinas de backup tornam-se um processo altamente automatizado. Exitem tambm casos em que os volumes de dados a armazenar so pequenos, o que torna vivel utilizar DVDs ou mesmo CD-ROMs para a realizao dos backups. Outra vantagem que este tipo de mdia possue uma boa longevidade, que quando armazenadas adequadamente (em ambientes sem luz e com baixa umidade) podem durar perto de 20 anos.

- 326

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Raid

- 327

Fundamentos de Administrao Linux

Diviso de Dados
No mercado exitem hoje vrios modelos de placas-mes com um recurso adicional chamado RAID que significa Redundant Array of Independent Disks, ou conjunto reduntante de discos independentes. O sistema RAID consiste em um conjunto de dois ou mais discos rgidos com dois objetivos bsicos: tornar o sistema de disco mais rpido (isto , acelerar o carregamento de dados do disco), atravs de uma tcnica chamada diviso de dados (data stripping ou RAID 0) e/ou tornar o sistema de disco mais seguro, atravs de uma tcnica chamada espelhamento (mirroring ou RAID 1). Essas duas tcnicas podem ser usadas isoladamente ou em conjunto. Vamos falar primeiro na diviso de dados. Imagine um servidor equipado com dois discos rgidos iguais. Em um servidor comum, sem RAID, um disco acessado independentemente do outro. Na tcnica de diviso de dados, os dois discos rgidos faro parte de um mesmo conjunto, fazendo com que o servidor "pense" que os dois discos rgidos um s disco maior. Se os dois discos so de 20 GB, ento o servidor "pensar" que existe um disco rgido nico de 40 GB instalado no servidor. Na hora de gravar um arquivo no disco, o sistema RAID ir dividi-lo entre os dois discos rgidos, gravando metade em um disco e a outra metade no outro disco. Tudo isso feito sem que o usurio perceba. No sistema de disco tradicional, um arquivo de 200 KB ser gravado por inteiro em um s disco, usando o nico canal de comunicao existente. No caso da diviso de dados, esse arquivo ser dividido em dois de 100 KB, sendo que cada um ser gravado em um dos discos existentes ao mesmo tempo. Logo, o ganho ser no tempo de gravao desse arquivo que levar metade do tempo para ser gravado. S que o sistema RAID no limitado a apenas dois discos rgidos. Podemos, em princpio, colocar quantos discos quisermos. Nesse mesmo exemplo, se usarmos quatro discos iguais em vez de um, o servidor "pensar" que os quatro discos so apenas um e dividir automaticamente o arquivo em quatro, quadruplicando a velocidade de leitura e gravao do arquivo. claro que quanto mais discos colocarmos, mais caro fica o sistema. Mas aplicaes que manipulam arquivos grandes, como a edio profissional de udio e vdeo, esse sistema torna-se realmente muito vantajoso, pois a mquina passa a ficar muito mais rpida para ler e gravar os arquivos. Lembramos que toda essa diviso feita "por debaixo dos panos" e o usurio no toma conhecimento que o seu arquivo foi dividido.

- 328

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Espelhamento
O espelhamento, tambm chamado RAID 1, faz com que o contedo de um disco rgido seja inteiramente copiado para outro disco rgido, de forma automtica. Ou seja, se voc montar um sistema desse em seu servidor, o segundo disco rgido ser cpia fiel do primeiro disco. Se o seu disco rgido principal queimar, o segundo entra em ao automaticamente. O espelhamento um backup automtico feito por hardware, aumentando a segurana do seu servidor. claro que esse sistema no dispensa o backup (j que pode acontecer de os dois discos rgidos queimarem ao mesmo tempo, embora essa probabilidade seja muito baixa - mas existe). Essa tcnica feita por hardware automaticamente pela placa-me ou placa controladora, no sendo necessrio nenhum tipo de configurao no sistema operacional para que o backup seja efetuado (o sistema "acha" que s h um disco rgido no servidor). A configurao do RAID 1 no precisa ser feita no momento da formatao do disco rgido ou na instalao do sistema operacional. Voc pode pegar um disco contendo dados de anos e iniciar o espelhamento, o contedo do disco rgido principal ser copiado para o disco rgido de backup (procedimento que dispende algum tempo). A diviso de dados e o espelhamento podem ser combinados ao mesmo tempo, em uma configurao normalmente chamada RAID 0+1. Essa configurao necessita de, no mnimo, quatro discos rgidos. A diviso de dados ser usada em dois discos para aumentar a velocidade, enquanto que os outros dois discos sero backup dos dois primeiros. Se um dos discos falhar, o sistema comea agir como um sistema RAID0, ou seja, diviso de dados. Outro sistema, chamado RAID10, combina as caractersticas do RAID0 e RAID1. Ele funciona como o RAID0+1, mas se um disco falhar, o RAID10 faz com que o sistema se torne um sistema RAID1, ou seja, espelhamento. Computadores modernos permitem o uso do RAID0+1 usando apenas dois discos rgidos. Essa configurao chamada JBOD (Just a Bunch of Disk) e funciona usando apenas metade da capacidade de cada disco, simulando assim quatro discos rgidos. Por exemplo, usando dois discos rgidos de 40 GB com configurao RAID JBOD, a capacidade total disponvel ser 20 GB (os outros 20 GB sero usados para fazer o backup dos dados da primeira metade do disco). Claro que o servidor ficar mais lento do que o RAID0+1.

- 329

Fundamentos de Administrao Linux

Outros Sistemas RAID


Vimos o bsico: RAID0 (diviso de dados) e RAID1 (espelhamento e que pode ser combinado como RAID0+1, RAID10 ou JBOD). Existem mais opes de RAID, mas que no so to comuns em sistemas RAID IDE, isto , sistemas RAID disponveis em placas-mes voltadas para usurios domsticos. Os sistemas RAID podem ser classificados ainda como: RAID 2: Igual ao RAID 0, porm com esquema de correo de erros (ECC). RAID 3: Igual ao RAID 0, porm usando um disco rgido extra para armazenamento de informaes de paridade, aumentando a confiabilidade dos dados gravados. RAID 4: Similar ao RAID 3, s que mais rpido por usar blocos de dados maiores, isto , os arquivos so divididos em pedaos maiores. RAID 5: Similar ao RAID 3 e 4, s que gravando as informaes de paridade dentro dos prprios discos, isto , sem a necessidade de um disco rgido extra. RAID 53: Igual ao RAID 3, porm usando, no mnimo, 5 discos rgidos para aumento de desempenho. RAID 6: Baseado no RAID 5, o RAID 6 grava uma segunda informao de paridade em todos os discos do sistema, aumentando a confiabilidade. RAID 7: Marca registrada da empresa Storage Computer Corporation, usa um disco extra para armazenamento de informaes de paridade. Sua principal vantagem o alto desempenho, usando cache de disco. Pode ser considerado como um RAID 4 com cache de disco.

- 330

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Implementao
Antigamente o RAID estava disponvel somente para discos rgidos SCSI, que so caros. Nos ltimos anos, empresas como HighPoint, Promise, SiliconImage e ITE lanaram uma srie de chips RAID IDE permitindo que discos rgidos IDE pudessem ser utilizados em sistemas RAID. Os discos rgidos IDE so mais populares e baratos do que os discos SCSI. Esses chips podem ser encontrados em placas de expanso ou embutidos na prpria placa-me. Assim, mesmo que a sua placa-me no possua funo RAID, voc pode instalar uma placa de expanso para aumentar o desempenho e a confiabilidade do seu sistema. Alguns chipsets possuem funo RAID integrada, como o caso dos chipsets mais modernos da Intel (por exemplo, no chipset Intel 915P, mas a ponte sul tem que ser a ICH6R ou ICH6RW para ter este recurso habilitado) e VIA (ponte sul VT8237). Uma placa-me com RAID on-board, possui quatro portas IDE, duas controladas pelo chipset (que no tem a funo RAID, como ocorre com a grande maioria das placas-mes disponveis no mercado) e outras duas portas controladas por um chip extra da ITE chamado GigaRAID IT8212F, e tambm duas portas Serial ATA controlada pelo chip SiliconImage SiI3112. Essas duas portas controladas pelo chip GigaRAID suportam RAID0, RAID1 e RAID0+1. Assim, se voc quiser usar o RAID seu disco rgido tem que ser instalado nessas portas. Voc tambm pode usar estas portas extras como portas IDE convencionais, sem usar a funo RAID que elas oferecem.

- 331

Fundamentos de Administrao Linux

Todos os nossos exemplos foram dados usando discos rgidos IDE, mas o RAID tambm est disponvel em discos rgidos Serial ATA. Outra opo o RAID atravs de software. Em vez de um chip RAID especial controlando o disco rgido, possvel habilitar um sistema RAID usando um programa apropriado de RAID. A vantagem que barato usar uma soluo RAID baseada em software. Por outro lado, menos confivel do que solues RAID baseadas em hardware. Abaixo voc pode ver uma tabela com os chips RAID mais comuns que vm com placas-mes que implementam esta funo.

Chip HighPoint HPT370 HighPoint HPT372 HighPoint HPT374 Promise PDC20275 Promise PDC20276 Promise PDC20378 ITE IT8212F

Portas 2x ATA-100 2x ATA-133 4x ATA-133 2x ATA-100 2x ATA-133 1x ATA-133,2x SATA-150

Tipos de RAID 0, 1, 0+1 0, 1, 0+1 0, 1, 0+1, JBOD 0, 1 0, 1 0, 1, 0+1 0, 1, 0+1

GigaRAID 2x ATA-133

O fake-RAID o modo utilizado pela maioria das controladoras RAID onboard, sobretudo nos servidors desktop. Nele utilizada uma combinao de funes adicionais no BIOS da placa e um driver que roda pelo sistema operacional. No final tudo processadovia software, de forma que no existe ganho de desempenho em relao a urilizar RAID via software. Apenas a configurao simplificada. O procedimento de troca de HDs defeituosos varia de acordo com os recursos oferecidos pela controladora. Ao utilizar RAID via software ou uma controladora fake-RAID, o processo de substituio do HD inteiramente manual. Voce precisa desligar o servidor, substituir o HD, ligar novamente o servidor acessar a interface de gerenciamento e recriar o array, processo bi qual a controladora reconstri os dados usando bits de paridade ( no caso do RAID %) ou copia os dados armazenados no segundo HD (no caso de RAID 1). Ou seja, os dados so presenvados, mas
- 332 2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

necessrio desativar o servidor temporariamente, o que resulta em downtime. Para permitir que o servidor continue funcionando continuamente, necessrio usar uma controladora dedicada, que oferea suporte hot-swap e seja capaz de reconstruir o array automaticamente aps a substituio do HD defeituoso (recurso chamado de automatic array rebuilding) alm de um gabinete que oferea baias removveis para os HDs. As tr coisas somadas permitem que os HDs sejam substitudos rapidamente, sem desligar o servidor e sem interrupo no servio. Outro recurso desejado o hot drive sparing, que permite utilizar um drive extra (hot-spare), usado automaticamente pela pcntroladora em caso de falha de qualquer um dos drives do array, minimizando a possibilidade de perda de dados.

- 333

Fundamentos de Administrao Linux

Logs

- 334

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Introduo

Nos sistemas computacionais, quando invadidos, pistas so deixadas, porm, diferente do "mundo real", as pistas esto nos registros de atividades do sistema, o qual denominamos de logs. Melhor ainda, os logs podem desempenhar um papel preventivo, na medida em que podem registrar as eventuais tentativas de ataque. Em sistemas configurados de forma correta, tais "pistas" podero indicar como um atacante invadiu (ou tentou invadir) seu sistema e, eventualmente, lhe dar uma idia de sua identidade.

- 335

Fundamentos de Administrao Linux

logs bsicos
Os diretrios comumente usados pelo *UNIX para armazenar logs so: /usr/adm, /var/adm, /var/log, /etc e /etc/security. A localizao exata depende do tipo e da verso do sistema operacional utilizado. A seguir, sero apresentados alguns dos arquivos de logs encontrados em tais diretrios. dada nfase aqueles considerados mais importantes no processo de deteco de intruso.

- 336

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

lastlog
Arquivo binrio que registra o horrio da ltima vez que o usurio tentou acessar o sistema seja com ou sem sucesso. O seu contedo muda a cada login e reportado toda vez que o usurio entrar no sistema ou o comando finger for executado. No Linux, estes registros devem ser explicitamente habilitados configurando a varivel LASTLOG_ENAB do arquivo /etc/login.defs. Recomenda-se configurar as permisses deste arquivo para 644, tendo como dono o usurio root.

- 337

Fundamentos de Administrao Linux

utmp/utmpx
Estes arquivos registram informaes, relacionadas aos usurios locais que se encontram conectados no sistema nesse momento. Os dados contidos nestes arquivos so armazenados em formato binrio. Portanto, devero ser lidos usando comandos especficos, tais como: who, whodo, write, finger e ps, os quais reportam as informaes contidas neste arquivo. Recomenda-se configurar como dono o usurio root e as permisses de acesso para 644. Abaixo, mostrado um exemplo de execuo do comando who:

maq0:nina[5]> who nina console Feb 10 15:23 raul pts/1 Feb 10 18:46 (maqA.rnp.br) marcio pts/2 Feb 11 07:42 (maqB.rnp.br) nina pts/3 Feb 11 11:29 (maq1.dominio.rnp.br) nina pts/4 Feb 11 16:04 (maq2.dominio.rnp.br)

- 338

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

wtmp/wtmpx
Registram dados detalhados sobre uma determinada sesso de usurio. Da mesma forma que os arquivos descritos anteriormente, os dados contidos nestes arquivos so armazenados em formato binrio e legveis unicamente atravs de comandos do tipo: last, acctcom, etc. Recomenda-se configurar as permisses destes arquivos para 644, tendo como dono o usurio root. Parte da sada da execuo do comando last mostrada a seguir:
ftp ftp 200.252.2.100 Mon Feb 12 19:49 - 19:55 (00:06) nina pts/0 maq3.dominio.rnp. Mon Feb 12 18:05 - still logged in reboot system boot Mon Feb 12 18:03 usuario1 pts/3 maq3.dominio.rnp. Mon Feb 12 17:36 - 18:02 (00:25) ftp ftp site1.qqdominio.d Mon Feb 12 15:57 - 16:04 (00:07)

- 339

Fundamentos de Administrao Linux

sulog
Registra tentativas de execuo do comando su, tenham sido estas bem ou mal sucedidas. Estes registros so habilitados atravs dos arquivos: /etc/default/su, no Solaris (varivel SULOG) e /etc/login.defs, no Linux (varivel SULOG_FILE). Recomenda-se que este arquivo tenha como dono o usurio root e suas permisses de acesso configuradas para 600.

- 340

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

As seguintes linhas contidas em um arquivo sulog de um sistema Linux, mostram, respectivamente, a execuo mal (-) e bem (+) sucedida do comando su. O usurio admin1 tornou-se root aps uma tentativa falha e o usurio usuario1 tornou-se o usuario2.
SU 02/11 12:24 - ttyp3 admin1-root SU 02/11 12:25 + ttyp3 admin1-root SU 02/11 12:30 + ttyp4 usuario1-usuario2

- 341

Fundamentos de Administrao Linux

messages
Arquivo que registra qualquer mensagem enviada ao console, tendo sido ela gerada pelo kernel do sistema ou por algum mecanismo de logging tal como o syslog. Recomenda-se que este arquivo tenha como dono o usurio root e suas permisses de acesso configuradas para 400. A seguir, mostra-se parte de um arquivo messages:

Aug 26 11:27:47 maq5 lpd[102]: restarted Aug 26 11:27:48 maq5 /kernel: ed1: device timeout Aug 26 11:28:03 maq5 last message repeated 2 times Aug 27 02:04:44 maq5 inetd[835]: login_getclass: unknown class 'root' Aug 27 15:54:35 maq5 login: login_getclass: unknown class 'root' Aug 27 15:54:37 maq5 login: ROOT LOGIN (root) ON ttyv0

- 342

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

loginlog
Registra tentativas falhas de acesso a um sistema o Linux, preciso configurar a varivel FAILED_LOG do arquivo /etc/login.defs. Para gerar logs de entrada neste arquivo, preciso indicar o nmero mnimo de tentativas consecutivas sem sucesso. "Por default," este nmero de cinco, mas ele pode ser alterado. No Linux isto feito atravs do arquivo /etc/login.defs (varivel LOGIN RETRIES). Recomenda-se configurar as permisses deste arquivo como 600, tendo como dono o usurio root.

- 343

Fundamentos de Administrao Linux

A seguir, mostrado parte do contedo de um arquivo loginlog, onde foi configurado como sendo trs, o nmero mnimo de tentativas sem sucesso.
usuario1:/dev/pts/9:Wed Dec 2 16:06:12 1998 usuario1:/dev/pts/9:Wed Dec 2 16:06:19 1998 usuario1:/dev/pts/9:Wed Dec 2 16:06:26 1998 usuario5:/dev/pts/9:Wed Apr 01 09:06:33 1999 usuario5:/dev/pts/9:Wed Apr 01 09:06:39 1999 usuario5:/dev/pts/9:Wed Apr 01 09:06:39 1999

- 344

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Syslog
Sistema de registro de mensagens de logs incorporado em todas as verses modernas de *UNIX. O syslog implementa um mecanismo onde cada mensagem de log est associada a uma facilidade e a uma prioridade. A primeira especifica o programa ou aplicao que gera tal mensagem, enquanto que a segunda indica a prioridade com a qual a mesma deve ser atendida. Ao ser inicializado o daemon syslogd, ele l seu arquivo de configurao (geralmente, o /etc/syslog.conf), a fim de determinar o tipo de eventos que o syslog dever registrar e o lugar onde estes eventos devero ser registrados. O arquivo syslog.conf composto por entradas que seguem o formato abaixo (vale lembrar que os campos devem, necessariamente, estar separados por caracteres de tabulao - TABs): facilidade.prioridade destino De acordo com o tipo e a prioridade da mensagem recebida, o daemon syslogd executar a ao indicada no campo destino: armazenando tal mensagem em um arquivo especfico, enviando alertas a um determinado usurio (ou ao console), ou, ainda, enviando a mensagem a outro servidor de logs remoto (conhecido como loghost ). No inteno de este artigo aprofundar-se na variedade de "prioridades" e "facilidades" suportadas pelo syslog e, de modo geral, na configurao do arquivo syslog.conf, mesmo porque existem nuances entre as diversas implementaes UNIX. Cabe ao leitor consultar as pginas do manual que tratam deste arquivo para obter maiores detalhes. Para fins de ilustrao, apresentado o contedo de um arquivo de configurao tpico:
# Exemplo de um arquivo de configurao do syslog # em uma mquina com Solaris. # # /etc/syslog.conf

- 345

Fundamentos de Administrao Linux

# *.err;kern.notice;auth.notice /dev/console *.alert; user.none root *.emerg; user.none * *.debug @loghost

A primeira linha indica que todas as mensagens de erros [prioridade err] (ou de prioridade maior) sero enviadas ao console do sistema, junto com as mensagens geradas pelo kernel [kern] e pelo processo de autorizao/segurana [auth] que tenham prioridade notice [notice] (ou de prioridade maior). A segunda entrada do arquivo indica que todas as mensagens de alerta [alert] (ou de prioridade maior), exceto as geradas pelo usurio [user], sero enviadas ao terminal do usurio root. Adicionalmente, qualquer mensagem de emergncia [emerg] ser difundida a todos os usurios que estiverem conectados nesse momento. Por ltimo, qualquer outra mensagem ser enviada ao loghost (mquina que centraliza os logs).

- 346

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

logs gerados por alguns servios de rede


Nesta seo, pretende-se apresentar alguns dos arquivos de logs especficos que so utilizados por servios de rede, atendo-se em explicar brevemente como habilitar os logs nestes servios. A ttulo de ilustrao, sero considerados apenas os servios mais "expostos" (e, portanto, mais vulnerveis) na Internet. Em particular, para este artigo, se trabalhar com os seguintes servidores: Apache (HTTP), Sendmail (MAIL), Bind8 (DNS) e WU-FTP (FTP).

- 347

Fundamentos de Administrao Linux

Servio de transferncia de arquivos (ftp) (20/21)


Em particular, o servidor WU-FTP permite registrar informaes bastante teis. Dentre elas, destacam-se por auxiliar na tarefa de deteco de intruso, os seguintes tipos de logs: * logs dos arquivos transferidos de/para o sistema (informaes armazenadas no arquivo xferlog); * logs dos comandos FTP executados durante uma sesso; * logs dos usurios que estiveram ou esto atualmente acessando o servidor FTP. O exemplo a seguir representa uma entrada registrada no arquivo xferlog aps a transferncia de um arquivo. Nela um usurio annimo, a partir da mquina maq.dominio.com.br, faz o download do arquivo security_tools, disponibilizado no servidor FTP pblico.

Fri May 8 21:45:30 1998 1 maq.dominio.com.br 12422 /pub/info/papers/cert/security_tools b _ o a mozilla@ ftp 0 *

Se as mensagens de logs, geradas via syslog, so enviadas a um arquivo especfico, tal como o ftplog, recomenda-se que este tenha como dono o usurio root e as suas permisses de acesso configuradas para 600. O mesmo vale para o arquivo xferlog.

- 348

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Servio de correio eletrnico (mail)


O mecanismo utilizado pelo Sendmail para gerar as suas mensagens de logs o syslog , descrito anteriormente. A facilidade padro destas mensagens mail (varivel LOG_MAIL). A prioridade definida pela opo LogLevel, a qual, a partir das verses 8.9.X, vem configurada para 9, o que equivale prioridade info. Considera-se esta configurao default, no mnimo, adequada. A seguir, so mostradas as duas entradas de logs geradas pelo Sendmail ao ser enviada uma mensagem electrnica pelo usurio nina@cais.rnp.br para o usurio billgates@microsoft.com. Estes logs foram registrados no maillog, arquivo geralmente usado pelo syslog para armazenar mensagens geradas pelo Sendmail.

Apr 18 15:50:14 mx-cais sendmail[25838]: PAA25838: from=< nina@cais.rnp.br >, size=1127, class=0, pri=61127, nrcpts=2, msgid= < Pine.SOL.3.96.990518154928.25280D-100000@cais1 >, proto=SMTP, relay=nina@mx.cais.rnp.br [200.144.121.33]

Apr 18 15:50:59 mx-cais sendmail[25840]: PAA25838: to=< billgates@microsoft.com >, ctladdr=< nina@cais.rnp.br > (101/100), delay=00:00:45, xdelay=00:00:44, mailer=esmtp, relay=mx.microsoft.com. [131.107.3.125], stat=Sent (PAA18294 Message accepted for delivery)

Se as mensagens de logs forem enviadas para um arquivo especfico, tal como o maillog, recomendase que este arquivo tenha como dono o usurio root e as suas permisses de acesso configuradas para 600.

- 349

Fundamentos de Administrao Linux

Servio de resoluo de nomes (dns) (53)


Um dos aspectos que recebeu mais ateno na verso Bind8 foi, justamente, o relacionado ao mecanismo de logging. Esta verso implementa um sistema totalmente categorizado. Atravs da diretiva logging possvel configurar uma srie de opes no servidor de nomes. ela que especifica o que o servidor DNS dever registrar e onde tais mensagens de logs devero ser enviadas. No se pretende entrar em detalhes de como configurar esta diretiva, cabe ao leitor consultar a documentao que acompanha a distribuio do pacote Bind8, ou a documentao on line na seguinte URL: http://www.isc.org/bind8.2/logging.html.

- 350

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

No entanto, para fins de ilustrao, apresentado a seguir um exemplo de configurao desta diretiva: // // Arquivo /etc/named.conf // // ... // // [incio do trecho] // logging { channel default_log { file "/var/log/bindlog" size 5M versions 4; severity info; print-time yes; print-category yes; print-severity yes; }; category lame-servers { null; }; category cname { null; }; category default { default_log; }; }; // [fim do trecho] As linhas acima especificam que, exceto as mensagens da categoria "lame-servers" e "cname" que sero descartadas, todas as outras mensagens sero enviadas ao arquivo /var/log/bindlog. As mensagens de logs devero incluir o horrio, categoria e severidade respectivos. A seguir, apresentado um exemplo dos logs gerados pela configurao acima:

16-Apr-1999 07:13:57.425 response-checks: info: bad referral (arpa !<<br/> 52.136.200.in-addr.arpa) 16-Apr-1999 08:03:48.463 maintenance: info: Cleaned cache of 5 RRs 16-Apr-1999 08:03:48.468 statistics: info: USAGE 924260628 923951026 CPU=6.35801u/2.85031s

Se as mensagens de logs geradas via syslog forem enviadas para um arquivo especfico, tal como o
- 351

Fundamentos de Administrao Linux

bindlog, recomenda-se que este arquivo tenha como dono o usurio root e as suas permisses de acesso configuradas para 600.

- 352

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Servio de web (http) (80)


O servidor Apache prov dois arquivos de logs: access_log e error_log. Atravs do arquivo access_log, possvel determinar os hosts e usurios que acessaram o servidor Web, os arquivos requisitados, os horrios em que tais requisies foram feitas e, ainda, o estado de tais requisies. O arquivo error_log contm informao respeito dos erros encontrados e o estado do servidor Web (inicializao e finalizao). Ambos podem ser habilitados e desabilitados a partir de diretivas especficas no arquivo de configurao httpd.conf. O servidor httpd permite definir onde sero armazenados estes arquivos. Geralmente, eles ficam no diretrio logs. Recomenda-se, por um lado, que este diretrio tenha como dono e grupo o root, e suas permisses de acesso configuradas para 755; por outro lado, que os arquivos contidos nele tenham igualmente o usurio root como dono e as suas permisses de acesso configuradas para 600. A seguir, um exemplo de uma entrada no arquivo de logs (access_log) do servidor www.cais.rnp.br, onde o documento index.html foi acessado com sucesso a partir da mquina cache.dominio.rnp.br.

cache.dominio.rnp.br - - [02/Dec/1998:16:37:24 -0200] "GET /index.html HTTP/1.0" 200 4169

Por outro lado, num acesso mal sucedido a um outro documento (index2.html), o arquivo error_log registrou a seguinte entrada:

[Wed Dec 02 16:37:25 1998] access to /dir_raiz_doc/index2.html failed for cache.dominio.rnp.br, reason: File does not exist

De modo geral, qualquer servio de rede inicializado pelo super daemon inetd (tais como: popd, imapd, ftpd, telnetd, sshd, etc) podem gerar suas mensagens de logs atravs da conhecida ferramenta TCP Wrappers, via syslog. Complementando as sees anteriores, importante mencionar que existem diversos tipos de logs que auxiliam na tarefa de deteco de intruso, tais como: * Logs de firewall (logs do IPFW, logs do IP-Filter, logs do IP Chains, logs do Cisco, etc) * Logs de atividade do usurio (.bash_history, .history, sh_history, etc)
- 353

Fundamentos de Administrao Linux

* Logs gerados por um analisador de trfego (tcpdump, por exemplo) * Logs gerados por sistemas de deteco de intruso (nfr, por exemplo)

- 354

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Inicializao

Quando um sistema efetua boot pela primeira vez, o processador executa um cdigo em um local conhecido. Em um Computador Pessoal (PC), esse local o Sistema Bsico de Entrada/Sada (BIOS), que est armazenado na memria flash, na placa-me. A Unidade Central de Processamento (CPU) em um sistema embarcado solicita ao vetor de reconfigurao que inicie um programa em um endereo conhecido em flash/ROM. Nos dois casos, o resultado o mesmo. Como os PCs oferecem bastante flexibilidade, o BIOS precisa determinar quais dispositivos so candidatos ao boot. Examinaremos isso posteriormente com mais detalhes. Quando um dispositivo de boot encontrado, o loader de boot de primeiro estgio carregado na RAM e executado. Esse loader de boot tem menos de 512 bytes (um nico setor), e sua tarefa carregar o loader de boot de segundo estgio. Quando o loader de boot de segundo estgio est na RAM e em execuo, uma tela inicial geralmente exibida e o Linux e o disco RAM inicial opcional (sistema de arquivo raiz temporrio) so carregados na memria. Quando as imagens so carregadas, o loader de boot de segundo estgio passa o controle para a imagem do kernel e o kernel descompactado e inicializado. Neste estgio, o loader de boot de segundo estgio verifica o hardware do sistema, enumera os dispositivos de hardware anexados, monta o dispositivo raiz e, em seguida, carrega os mdulos de kernel necessrios. Ao ser concludo, o primeiro programa de espao de usurio (init) inicia e a inicializao do sistema de alto nvel executada. Em resumo, assim que funciona o boot do Linux. Agora vamos prosseguir e explorar alguns dos detalhes do processo de boot do Linux.

- 355

Fundamentos de Administrao Linux

Inicializao do Sistema
O estgio de inicializao do sistema depende do hardware no qual o Linux est efetuando boot. Em uma plataforma integrada, um ambiente de autoinicializao utilizado quando o sistema ligado ou reconfigurado. Como exemplos, temos U-Boot, RedBoot e MicroMonitor da Lucent. As plataformas integradas normalmente vm de fbrica com um monitor de boot. Esses programas residem em uma regio especial da memria flash no hardware de destino e fornecem os meios para fazer download de uma imagem do kernel Linux na memria flash e, em seguida, execut-la. Alm da capacidade de armazenar e executar boot em uma imagem do Linux, esses monitores de inicializao executam alguns nveis de teste do sistema e a inicializao do hardware. Em um destino embarcado, esses monitores de inicializao costumam abranger os loaders de boot de primeiro e de segundo estgios. Para inicializar um sistema operacional, o tempo de execuo do BIOS procura por dispositivos ativos e inicializveis na ordem de preferncia definida pelas configuraes de Complementary Metal Oxide Semiconductor (CMOS). Um dispositivo de boot pode ser um disco flexvel, um CD-ROM, uma partio de um disco rgido, um dispositivo na rede ou at mesmo um memory stick flash USB. Normalmente, o Linux tem boot executado a partir de um disco rgido, onde Master Boot Record (MBR) contm o loader de boot primrio. O MBR um setor de 512 bytes, localizado no primeiro setor do disco (setor 1 do cilindro 0, cabeote 0). Depois que o MBR carregado na RAM, os campos do BIOS o controlam.

- 356

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Loader de Boot de Estgio 1


O loader de boot primrio, que reside no MBR, uma imagem de 512 bytes contendo o cdigo do programa e uma pequena tabela de partio. Os primeiros 446 bytes so o loader de boot primrio, que contm o cdigo executvel e um texto de mensagem de erro. Os 64 bytes seguintes formam a tabela de partio, que contm um registro para cada uma das quatro parties (cada uma com 16 bytes). O MBR termina com dois bytes, que so definidos como o nmero mgico (0xAA55). O nmero mgico funciona como verificao de validao do MBR. A funo do loader de boot primrio encontrar e carregar o loader de boot secundrio (estgio 2). Isso feito consultando a tabela particionada de uma partio ativa. Ao localizar uma partio ativa, ele faz uma varredura das parties restantes na tabela, a fim de certificar-se de que todas esto inativas. Quando isso verificado, o registro de boot da partio ativa lido a partir do dispositivo para a RAM e executado.

- 357

Fundamentos de Administrao Linux

Loader de Boot de Estgio 2


O loader de boot secundrio, ou de segundo estgio, pode ser chamado de loader de kernel. Neste estgio, sua tarefa carregar o kernel Linux e o disco RAM inicial opcional. Os loaders de boot de primeiro e segundo estgios combinados so chamados de Linux Loader (LILO) ou GRand Unified Bootloader (GRUB) no ambiente x86 do PC. Como o LILO apresenta algumas desvantagens que foram corrigidas no GRUB, vejamos o GRUB. O GRUB inclui o conhecimento dos sistemas de arquivo Linux. Em vez de utilizar setores brutos no disco, como o LILO faz, o GRUB pode carregar um kernel Linux a partir de um sistema de arquivos ext2 ou ext3. Quando o estgio 2 estiver carregado, o GRUB poder, mediante solicitao, exibir uma lista dos kernels disponveis (definidos em /etc/grub.conf, com soft links de /etc/grub/menu.lst e /etc/grub.conf). possvel selecionar um kernel e at edit-lo com parmetros adicionais de kernel. Opcionalmente, possvel utilizar shell de linha de comandos para obter um maior controle manual sobre o processo de boot. Com o loader de boot de segundo estgio na memria, o sistema de arquivos consultado e a imagem de kernel padro e a imagem initrd so carregadas na memria. Com as imagens prontas, o loader de boot de estgio 2 chama a imagem de kernel.

- 358

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Grub - gerenciador de inicializao no Linux


O GRUB (GRand Unified Bootloader), assim como o LILO um gerenciador de boot. Seu trabalho carregar o kernel do Linux ou iniciar outros sistemas operacionais. Ele surgiu da necessidade de um gerenciador de boot livre e por isso foi criado sob o guarda-chuva do projeto GNU. Com o GRUB, voc consegue iniciar vrios sistemas diferentes, seja Linux, BSDs, Mac, entre outros. O GRUB tem algumas diversas vantagens sobre o LILO e por isso que a maioria das distribuies est substituindo o LILO pelo uso do GRUB. Alm do menu amigvel para a escolha do sistema operacional, tecnicamente o GRUB tem algumas boas vantagens: Ele acessa diretamente o sistema de arquivos e carrega o kernel atravs dele. Com isso voc no precisa ficar reinstalando o gerenciador na MBR toda vez que fizer alguma alterao. Possui uma shell-interativa, ao estilo do bash, que permite o usurio a flexibilidade de controlar todo o gerenciador de boot como queira na inicializao. Atravs do menu interativo de escolha do sistema operacional, voc pode editar as linhas de boot j pr-definidas e alterar caso haja algum contra-tempo.

Permite colocar senha tanto para a edio da linha de boot de um sistema, quanto para iniciar este sistema. Suporta boot remoto via o protocolo TFTP.

- 359

Fundamentos de Administrao Linux

Configurando o Grub O arquivo de configurao do GRUB geralmente est fixo em um lugar, que o /boot/grub/menu.lst. Muitas distribuies fazem um link para /etc/grub.conf, ento editar os dois arquivos funcionam. A seguir, um exemplo de configurao para dois sistemas operacionais: Linux e Windows:

# Exemplo para dois sistemas Operacionais: Linux e Windows! # default=0 timeout=5 splashimage=(hd0,1)/boot/grub/splash.xpm.gz

# Partio Linux title Fedora Core root (hd0,1) kernel /boot/vmlinuz-2.6.13-1.1532_FC4 ro root=/dev/hda1 vga=791 initrd /boot/initrd-2.6.13-1.1532_FC4.img

# Partio Windows title Windows rootnoverify (hd1,0) chainloader +1

No exemplo acima, assim como no LILO temos duas partes: uma global com as configuraes do funcionamento geral do GRUB e uma parte com as definies dos sistemas. Na seo global, podemos definir muitas coisas como senhas, imagem do menu, cores, entre outros. Antes de qualquer coisa, preciso notar que o GRUB trata as parties de um modo diferente que o Linux. Por exemplo, ao invs de /dev/hda1 ele usa (hd0,0). Veja a tabela abaixo:

Dispositivo
- 360

Equivalente no GRUB
2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

/dev/hda1 /dev/hda2 /dev/hdb1 /dev/hdc3 Master /dev/hdd2 Slave

(hd0,0) - Partio 1 da IDE Primria Master (hd0,1) - Partio 2 da IDE Primria Master (hd1,0) - Partio 1 da IDE Primria Slave (hd2,2) - Partio 3 da IDE Secundria (hd3,2) - Partio 2 da IDE Secundria

Nota : O GRUB detecta e identifica seus HDs automaticamente, fazendo a converso mostrada acima. Caso voc tenha dvidas quanto essa equivalncia, utilize o seguinte comando para verificar:
# cat /boot/grub/device.map

- 361

Fundamentos de Administrao Linux

Instalando o GRUB

Na maioria das vezes a distribuio quando instalada, instala o GRUB como gerenciador de boot. Com o grub instalado na MBR do HD, no ser mais preciso ficar re-instalando, como o caso do LILO. Mas se a primeira vez que voc configurou o GRUB e est instalando, a tudo bem. Para instalar na MBR do HD Master Primrio:
# grub-install /dev/hda

Se por acaso voc quiser instalar em um disquete:


# grub-install /dev/fd0

Assim voc ter um GRUB no disquete para quaisquer eventualidades. Para desinstalar o GRUB da MBR, basta voc instalar outra coisa por cima, LILO ou utilizando o comando fdisk \mbr no DOS/Windows. Depois da descompresso e carregamento do sistema, comearo a surgir mensagens do kernel, avisando sobre o que est acontecendo, como testes de portas seriais, entre outros. Todas as mensagens do kernel so teis e devem sempre ser observadas. Caso voc precise ver as mensagens do kernel aps o boot completo do sistema, no precisa reinici-lo, basta digitar dmesg no shell.

- 362

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Scripts de Inicializao
Aps a inicializao completa do kernel, o sistema passa o controle para alguns scripts, conhecidos como scripts de inicializao ao estilo Sys V. Os scripts podem ser encontrados geralmente no diretrio /etc/rc.d, so normalmente trs:

- 363

Fundamentos de Administrao Linux

rc.sysinit Executado apenas uma vez, durante o boot do sistema. Ajusta algumas coisas, como o relgio e data do sistema, entre outras coisas.

- 364

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

rc: executado

Quando o runlevel alterado. Runlevels sero explicados posteriormente. O rc "mata" os processos do atual runlevel, levando em considerao alguns detalhes que sero descritos posteriormente, e inicia os novos processos, caractersticos do runlevel atual.

- 365

Fundamentos de Administrao Linux

rc.local

Executado logo aps todos os outros scripts de inicializao. til para ajustar alguns parmetros do sistema que devem ser inicializados, mas no necessitam da criao de um script completo ao estilo Sys V. Alguns exemplos de programas normalmente incializados nesse script so servidores de fontes "incomuns", restauradores de som, entre outros. Outra funo desse script recriar os arquivos /etc/issue e /etc/issue.net, que so responsveis pelas mensagens exibidas enquanto o sistema aguarda o login e senha do usurio (nos sistemas Conectiva comum a presena da imagem gerada pelo linux_logo, com algumas informaes sobre o sistema). Agora o sistema j est inicializado, ento o controle passado para o gerenciador de login, que ficar aguardando a ao do usurio. Se algum usurio realizar o login no sistema, o controle ser passado para o shell padro do usurio, por exemplo o bash. Outras formas de login so discutidas abaixo, junto com a explicao sobre os runlevels.

- 366

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Runlevels
Toda a inicializao do sistema baseada em runlevels, ou seja, nveis de execuo. Os sistemas Linux possuem 6 runlevels: 1 2 Conhecido como halt, o runlevel que desliga o sistema; Monousurio, inicilializa o sistema sem opes de segurana, no modo monousurio sem rede; Multiusurio, inicializa o sistema com todas as opes de multiusurios e segurana; Multiusurio com rede, o mesmo do runlevel 2, mas com opes de rede ativas, o runlevel mais comum; No utilizado; Multiusurio em modo grfico, igual ao runlevel 3, mas inicia o servidor X automaticamente; Reboot reinicializa o sistema.

5 6

Alguns sistemas podem variar, mas o padro esse. A descrio do sistema de runlevels normalmente pode ser encontrada no arquivo /etc/inittab, onde voc tambm poder alterar o runlevel padro do sistema. Alguns runlevels que merecem destaque so o 1, 3 e 5. O runlevel 1 nunca deve ser utilizado, a no ser para manuteno do sistema, devido falta total de segurana. O runlevel 3 o mais comum. O runlevel 5 o mais indicado para usurios novatos, que dependem completamente do sistema grfico para trabalhar.

- 367

Fundamentos de Administrao Linux

- 368

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Runlevels e os scripts Sys V

O sistema de init, como foi citado anteriormente, procurar os scripts de incializao em /etc/rc.d. Existem, alm dos scripts j citados, muitos outros, dentro do diretrio /etc/rc.d/init.d. Existe um alias pr-definido que move o seu diretrio atual para o diretrio dos scripts do sistema, o cds, ele um resumo dos comandos "cd /etc/rc.d/init.d && ls", portanto esse alias muito prtico, acostume-se a us-lo sempre que precisar alterar alguma coisa a ver com os runlevels. Os scripts encontrados dentro do diretrio /etc/rc.d/init.d possuem um modelo a ser seguido, onde eles devem aceitar no mnimo quatro parmetros, a saber: stop, start, restart, status. O init possui um sistema interessante para verificar quais os scripts que devem ser executados em cada runlevel. Dentro do diretrio /etc/rc.d existem vrios subdiretrios, com os nomes seguindo o modelo rcX.d, onde X o numero do runlevel atendido pelo diretrio. Isso significa que normalmente temos 6 diretrios seguindo esse modelo, de rc0.d a rc6.d. O script de inicializao, rc, verificar o runlevel atual e, segundo ele, entrar no diretrio correto, por exemplo, para um runlevel 3, o diretrio rc3.d. Dentro dos diretrios esto links simblicos para os scripts em init.d que devem ser executados no runlevel. Os links simblicos possuem a seguinte nomenclatura: EXXnome, onde E pode ser S, de start ou K, de kill, XX indica qual a ordem de execuo do script na hierarquia de scripts e nome indica o nome do script na pasta init.d. Quem cria ou destri os links um aplicativo, chamado chkconfig. O chkconfig l algumas informaes no cabealho dos scripts Sys V e determina qual a ordem de execuo do script, quais os runlevels onde o script ser executado com o parmetro start e quais os runlevels onde o parmetro utilizado ser stop. Para indicar qual parmetro usar ele cria o link com um prefixo K, de kill, para o parmetro stop, e S, de start, para o parmetro start. As pginas do manual do chkconfig explicam corretamente cada parmetro do mesmo e como utiliz-lo corretamente.

Observe que no porque voc possui um script em /etc/rc.d/init.d que ele ser executado, para ele ser executado, deve ser adicionado ao init via chkconfig ou ntsysv (ou outro aplicativo equivalente). Algumas informaes sobre os servios tambm podem ser visualizadas, essas informaes so inseridas no cabealho dos scripts e normalmente tem suporte a vrios idiomas, descrevendo o que aquele servio inicializado pelo script far no seu sistema.

- 369

Fundamentos de Administrao Linux

O shutdown do sistema tambm determinado por um runlevel, ou o runlevel 0 (halt) ou o 6 (reboot), permitindo assim que alguns servios possam ser devidamente desligados antes da queda do sistema, como por exemplo, um servidor em impresso ou um gravador de configuraes do misturador de som.

- 370

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O kernel do Linux

- 371

Fundamentos de Administrao Linux

O kernel Linux o ncleo do Sistema Operacional.


de responsabilidade do kernel controlar o hardware, reforar a segurana e alocar recursos tais como CPU e memria. A maior parte do sistema operacional no o Linux, mas sim um conjunto de aplicaes que fazem uso das facilidades oferecidas pelo kernel do Linux. O cdigo do kernel dividido em funcionalidades bsicas, tais como programao e mdulos do kernel para drivers de dispositivos, sistemas de arquivos, e cdigos especficos para outros sistemas. A documentao pode */Documentation. ser encontrada em /usr/share/doc/kernel-doc-

- 372

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

As imagens do kernel e suas variantes

- 373

Fundamentos de Administrao Linux

Arquiteturas suportadas

Intel e AMD x86/x86_64 Intel Itanium2 IBM POWER IBM System z and S/390

Trs verses de Kernel esto disponveis para x86: Regular: um ou mais processadores at 4GB de RAM PAE: at 32 processadores e 16GB de RAM Xen: usado para virtualizao.

Duas verses de kernel esto disponveis para x86_64: Regular: at 64 processadores e 250GB de RAM Xen: usado para virtualizao.

Kernels sempre so instalados no duretrio /boot/vmlinuz-*

- 374

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

Mdulos do Kernel

O modulo do kernel uma parte opcional de cdigo do kernel que pode ser carregado depois do kernel ser inicializado. Apenas alguns mdulos que so essenciais para todos os sistemas so compilados diretamente no kernel. Mdulos dinmicos que so necessrios em tempo de boot so carregados pelo grub atravs do initrd (initial RAM disk). Outros mdulos podem ser carregados se necessrio mais tarde e so encontradas no arquivo / lib/modules/directory. Os Modulos so usados por razes de: Reduz o espao de memria: a memria no usada por drivers que no so necessrios. Flexibilidade: Os mdulos podem ser adicionados ao sistema depois de ter sido instalado. Estes mdulos so freqentemente chamados de drivers de terceiros. Maximizando o tempo: um mdulo pode ser descarregado e recarregado quantas vezes quisesse, sem reinicializao.

- 375

Fundamentos de Administrao Linux

Utilizando e configurando Mdulos do kernel

lsmod modinfo modprobe /etc/modprobe.conf

mostra a lista de mdulos carregados mostra os moduloes disponveis carrega e descarrega mdulos arquivo de configurao de mdulos

o parmetros para passar para um mdulo sempre que for carregado o aliases para representar um nome de mdulo o comandos para executar quando o mdule carrega ou descarregado O utilitrio lsmod fornece uma lista de todos os mdulos carregados, juntamente com o tamanho correspondente e contagem de uso.
[root@stationx ~] # lsmod | grep usb_storage usb_storage 72609 1

Mdulos podem ser carregados e descarregados utilizando o comando modprobe. Ao contrrio do comando insmod, o modprobe carregar as dependncias necessrias no filesystems. O comando abaixo carregar o mdulo do usb
modprobe usb_storage

Para remover o modulo use:


modprobe r usb_storage

O mdulo poder ser removido somente se no estiver em uso.

- 376

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

O comando modinfo pode ser passado com um nome de mdulo ou nome de arquivo. Ele ir exibir a informao associada, tais como nome do autor, a licena, descrio, verso do mdulo, dependncias paramiters, etc.

[root@gdbhx01a ~]# modinfo usb_storage filename: license: description: author: srcversion: alias: alias: alias: depends: vermagic: parm: /lib/modules/2.6.18-194.el5/kernel/drivers/usb/storage/usb-storage.ko GPL USB Mass Storage driver for Linux Matthew Dharm <mdharm-usb@one-eyed-alien.net> 686F82C05F6C36BAAC00670 usb:v*p*d*dc*dsc*dp*ic08isc06ip50* usb:v*p*d*dc*dsc*dp*ic08isc05ip50* usb:v*p*d*dc*dsc*dp*ic08isc04ip50* scsi_mod 2.6.18-194.el5 SMP mod_unload gcc-4.1 delay_use:seconds to delay before using a new device (uint)

O arquivo de configurao /etc/modprobe.conf contm as configuraes persistentes que se aplicam aos mdulos carregado no sistema. Definies que foram adicionados no momento da instalao. Novas linhas tambm podem ser adicionadas conforme necessrio. Exemplo:
[root@gdbhx01a ~]# more /etc/modprobe.conf alias scsi_hostadapter megaraid_sas alias scsi_hostadapter1 ata_piix alias scsi_hostadapter2 qla2xxx alias eth0 bnx2 alias eth2 bnx2 alias eth1 bnx2 alias eth3 bnx2 alias eth4 igb alias eth5 igb

- 377

Fundamentos de Administrao Linux

- 378

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

initrd
Um initrd especfico para um determinado tipo de hardware e software. Normalmente, ele criado durante a instalao e apenas os mdulos necessrios para montar sistemas de arquivos para o sistema esto includos. O initrd precisa ser recriado quando h alteraes de hardware ou de software. Por exemplo, se o sistema contm filesystems com o formato ext2 e esse necessita ser alterado para ext3. Exemplo

mkinitrd /boot/initrd-2.6.18-53.1.4.e15.img 2.6.18-53.1.4.e15

Especificar manualmente o nmero da verso do kernel se estiver inicializado com uma verso diferente, como foi feito acima.

- 379

Fundamentos de Administrao Linux

possvel forar um mdulo especfico para ser colocado em um initrd. Trs mtodos podem ser usados para forar um mdulo para o disco RAM inicial 1 - Usando a opo with

mkinitrd with=scsi_mod /boot/initrd-$(uname r).img $(uname r)

Nem o sufixo ko. nem o nome completo do caminho para o mdulo so necessrios. 2 Adio de loinhas no /etc/modprobe.conf

echo alias scsi_hostadapter qla2300 >> /etc/modprobe.conf mkinitrd with=scsi_mod /boot/initrd-$(uname r).img $(uname r)

O comando acima ir incluir o mdulo qla2300 (mais todos os mdulos dependentes) para ser carregado no initrd. 3 - Colocao de um arquivo executvel em /etc/sysconfig/mkinitrd:

Echo MODULES=$MODULES raid1 > etc/sysconfig/mkinitrd/raid1 Chmod +x etc/sysconfig/mkinitrd/raid1 mkinitrd with=scsi_mod /boot/initrd-$(uname r).img $(uname r)

Inclui o modulo deo raid1 para ser carregado no initrd.

- 380

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

sysctl
uma interface que permite que voc faa mudanas em tempo real no sistema operacional. Isto inclui muitas opes avanadas da pilha TCP/IP e sistema de memria virtual. O comando sysctl usado para verificar os parmetros de kernel. Para visualizar todo a lista use o comando abaixo:
sysctl -a

Para adicionar dinamicamente parmetros:


sysctl w net.ipv4.tcp_syncookies

Para que os parmetros tornem-se permanents a entreda dever ser colocada no arquivo /etc/sysctl.conf. Quando isso for feito a nova configurao dever ser atualizada no kernel usando o comando:
sysctl -p

- 381

Fundamentos de Administrao Linux

Servios de Impresso

O CUPS (Common Unix Printing System) um gerenciador de impresso para sistemas tipo *nix, ou seja, um ambiente de sistemas operacionais de software Livre / open source inspirado pelo Unix. Objetivo: permitir que um computador seja um servidor de impresso na qual o gerenciador de impresso CUPS (hospedeiro) nativo no servidor receba diversas impresses dos PCs (clientes) processe-os e envie para a impressora correspondente. Alm disso, possvel monitorar impresses, relatar erros de impresses, visualizar relatrios sobre nmero de pginas impressas, data e horrio da mesma. Desenvolvimento: seu desenvolvimento se deu com o protocolo LDP, que permite que trabalhos de impresso sejam impressos atravs da rede utilizando TCP/IP. Porm com o avano da tecnologia CUPS, o protocolo LDP foi ficando ultrapassado, lento e incompatvel com padres de alguns fabricantes. Logo o gerenciador de impresso CUPS aderiu o IPP (Internet Printing Protocol) e foi adotado pela maioria das distribuies Linux como gerenciador de impresso padro. Hoje o gerenciador CUPS mantido pela Apple, que em 2007 contratou Michael Sweet e comprou o cdigo fonte. Prtica: para agregar um gerenciador de impresso CUPS necessrio ter em mente que estamos falando de um servidor para no mnimo 2 ou mais impressoras, caso contrrio no seria vivel a utilizao de um servidor deste porte para pequenas rotinas de impresses.

- 382

2005 Processor Alfamidia LTDA.

Fundamentos de Administrao Linux

system-config-printers
um utilitrio grfico que facilmente configura impressoras remotas ou locais. Os comandos usados na linha de comando so: lpadmin gerenciamento de impressoras. lp ou lpr - imprime lpstat - mostra informaes sobre filas locais.

- 383

Fundamentos de Administrao Linux

O X11 Server

"X Window System, X-Window, X11 ou simplesmente X uma interface grfica com o conceito de janelas. Originalmente chamado simplesmente de X, foi desenvolvido no MIT em 1984. Atualmente est na verso 11, por isso carrega no nome este nmero. X-Window o toolkit e protocolo standard para GUI nos sistemas Unix e assemelhados, como o Linux, mas existem verses para outros sistemas operacionais, como o Microsoft Windows e o Mac OS, por exemplo. Os servidores do sistema X-Window so executados em computadores com displays baseados em mapas de bits. O servidor distribui as aes de entrada do usurio (mouse e teclado) e aceita os pedidos de sada atravs de vrios programas clientes atravs de uma variedade de diferentes canais de comunicao entre processos. Mesmo sabendo que o caso mais comum de uso de programas clientes rodando na mesma mquina do servidor, os clientes podem rodar de forma transparente em mquinas diferentes (inclusive com arquiteturas e sistemas operacionais diferentes). X funciona segundo o modelo cliente-servidor : o servidor X recebe os pedidos via uma porta, um cliente X se conecta ao servidor X e envia-lhe seus pedidos utilizando o protocolo X atravs da biblioteca X (Xlib). Este modelo de comunicao permite o uso de janelas de modo transparente via rede. X (como comumente chamado) suporta operaes de janelas (overlapping hierarchical subwindows) e operaes de texto e grficos, em displays preto e branco ou coloridos. O nmero de programas que utilizam o X enorme."

- 384

2005 Processor Alfamidia LTDA.

You might also like